Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  • receivedMessage: conterá dados relativos à mensagem original, como o UUID e o aplicativo de origem (sentBy).
  • processingInformation: conterá dados relativos ao processamento da mensagem original, como o status geral do processamento, a data de processamento, e eventuais mensagens de erro.
  • returnContent: conterá o resultado do processamento da mensagem original, conforme definido para a transação. Além disso, pode conter também o atributo listOfInternalId, o qual conterá todos os internal Ids relacionados a mensagem. A estrutura corresponde ao internal ID terá os seguintes atributos:
    • name: mesma definição da tag Name;
    • origin: mesma definição da tag Origin;
    • destination: mesma definição da tag Destination.


Informações
titleUpsert ou Delete?

Nesta nova proposta, a indicação do tipo de operação - upsert ou delete - está vinculada ao método HTTP utilizado na requisição. Mais informações serão prestadas na seção Interface deste documento.


Uma mensagem da transação CostCenter, versão 2.000, seria expressa da seguinte forma, usando o formato JSON proposto:

Bloco de código
languagejs
{
    "header" : {
        "UUID" : "d6bbfa63-ca27-e2ac-0b14-101970f59a5b",
        "type" : "BusinessMessage",
        "subType" : "event",
        "transaction" : "CostCenter",
        "version" : "2.000",
        "sourceApplication": "P1299",
        "productName" : "PROTHEUS",
        "productVersion" : "12.1.17",
        "companyId" : "99",
        "branchId" : "01",
        "generatedOn" : "2017-11-14T11:47:00-03:00",
        "deliveryType" : "async",
    },
    "content" : {
        "CompanyId" : "99",
        "BranchId" : "01",
		"CompanyInternalId" : "99",
		"Code" : "ABC001",
		"InternalId" : "99|ABC001",
		"RegisterSituation" : "Active",
        "Name" : "Centro de Custo ABC001",
		"ShortCode" : "ABC001",
		"SPED" : ""true,
		"Class" : ""2
    }
}


A mensagem de resposta correspondente seria semelhante ao exemplo abaixo:

Bloco de código
languagejs
{
    "header" : {
        "UUID" : "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
        "type" : "Response",
        "subType" : "event",
        "transaction" : "CostCenter",
        "version" : "2.000",
        "sourceApplication" : "LGX12",
        "productName" : "LOGIX",
        "productVersion" : "12.1.15",
        "generatedOn" : "2017-11-14T11:47:15-03:00",
        "deliveryType": "async"
    },
    "content" : {
        "receivedMessage" : {
            "UUID" : "<originalMsgUUID>d6bbfa63-ca27-e2ac-0b14-101970f59a5b",
            "SentBysentBy" : "<sourceApplication>P1299",
            "event" : "upsert|delete"        
        },
        "processingInformation" : {
            "processedOn" : "2017-11-14T11:47:15-03:00",
            "status" : "OK|ERROR|WARNING",
            "details" : [
                {
                    "code" : "FE001",
                    "message" : "Mensagem padrão no formato incorreto.",
                    "detailedMessage" : ""
                },
                {
                    "helpUrlcode" : "AE004",
                    "message" : "http://<serverName>"  // Opcional
Empresa não configurada para integração.",
                    "detailedMessage" : ""
                }
            ]
        },
        "returnContent" : {            
            "listOfInternalID" : [
                {
                    "codename" : "CostCenter",
                    "messageorigin" : "99|ABC001",
                    "detailedMessagedestination" : "10|1000"
                },
                {
    "helpUrl                "name" : "Company",
          "http://<serverName>"  // Opcional          "origin" : "99",
                    "destination" : "10"
                }
            ]
        }
    }
}


A nova proposta fornece também um modelo para lote de mensagens, que corresponde a um array JSON, onde cada elemento corresponde a uma mensagem no formato JSON.

Bloco de código
languagejs
{
    "items" : [
        {
            "returnContentheader" : {
                "UUID" : "",
                "type" : "",
                "atributo1subType" : "",
                "atributo2transaction" : "customerVendor",
                "version" : "listOfInternalID" : [2.001",
                "sourceApplication": "",
           // Opcional em caso de resposta"productName" de: requests"",
                "productVersion" : {"",
                "generatedOn" : "",
  "name              "deliveryType" : "InternalIdName"async",
            },
            "content" : {
        "origin        "atributo1" : "",
                "atributo2" : "",
                ...
                "destinationatributoN" : ""
            }
        },{
            "header" : {
                {
"UUID" : "",
                ...
                "transaction" : "item",
     "name           "version" : "InternalIdName3.001",
                ...
       "origin         "deliveryType" : "async" 
            },
            "content" : {
                "atributo1" : "",
                "destinationatributo2" : "",
                }
...
                ]
"atributoN" : ""
            }
        }
    ]
}

O lote de mensagens tem algumas características importantes:

  • É válido somente para mensagens assíncronas. Caso uma das mensagens presentes no lote tenha o atributo DeliveryType igual a "sync", todo o lote deve ser rejeitado.
  • Pode conter mensagens de uma mesma transação e versão, ou mensagens de transações/versões distintas.
  • A forma como o lote deve ser tratado quanto a sua integridade é determinada pelo parâmetro batchType, informado na requisição. Mais detalhes serão fornecidos na seção a seguir.

Interface

As mensagens padronizadas em formato JSON serão recebidas por um endpoint padrão, conforme descrito abaixo:

...