Neste documento são demonstradas as formas de utilização dos endpoints de mensagem padronizada do padrão REST/JSON.
Índice |
---|
Âncora | ||||
---|---|---|---|---|
|
POST /totvseai/standardmessage/v1/transactions?batchType={batchType}?&batchUUID={batchUUID}
Onde:
Requisições em lote serão apenas assíncronas. Do contrário, pode acontecer timeout, prejudicando a integração. Por este motivo, se houver uma mensagem como modo de envio (deliveryType) igual a "sync", todo o lote deve ser rejeitado.
Bloco de código | ||||
---|---|---|---|---|
| ||||
POST /totvseai/standardmessage/v1/transactions?batchUUID=f0b3695c-1efc-49f2-84a7-1eeb59c5a962 // batchType = simpleBatch é implícito { "itemsItems" : [ { "headerHeader" : { "UUID" : "", "typeType" : "BusinessMessage", "subTypeSubType" : "event", "transactionTransaction" : "customerVendor", "versionVersion" : "2.001", "sourceApplicationSourceApplication": "", "productNameProductName" : "", "productVersionProductVersion" : "", "generatedOnGeneratedOn" : "", "deliveryTypeDeliveryType" : "async", }, "contentContent" : { "atributo1Atributo1" : "", "atributo2Atributo2" : "", ... "atributoNAtributoN" : "" } },{ "headerHeader" : { "UUID" : "", ... "transactionTransaction" : "customerVendor", "versionVersion" : "2.001", ... "deliveryTypeDeliveryType" : "async" }, "contentContent" : { "atributo1Atributo1" : "", "atributo2Atributo2" : "", ... "atributoNAtributoN" : "" } } ] } |
Bloco de código | ||||
---|---|---|---|---|
| ||||
POST /totvseai/standardmessage/v1/transactions?batchType=businessTransaction&batchUUID=f0b3695c-1efc-49f2-84a7-1eeb59c5a962 { "itemsItems" : [ { "headerHeader" : { "UUID" : "", "typeType" : "BusinessMessage", "subTypeSubType" : "event", "transactionTransaction" : "customerVendor", "versionVersion" : "2.001", "sourceApplicationSourceApplication": "", "productNameProductName" : "", "productVersionProductVersion" : "", "generatedOnGeneratedOn" : "", "deliveryTypeDeliveryType" : "async", }, "contentContent" : { "atributo1Atributo1" : "", "atributo2Atributo2" : "", ... "atributoNAtributoN" : "" } },{ "headerHeader" : { "UUID" : "", ... "transactionTransaction" : "item", "versionVersion" : "3.001", ... "deliveryTypeDeliveryType" : "sync" // Rejeitar toda a requisição e informar que só aceita assíncrono }, "contentContent" : { "atributo1Atributo1" : "", "atributo2Atributo2" : "", ... "atributoNAtributoN" : "" } } ] } |
POST /totvseai/standardmessage/v1/transactions
Os parâmetros batchType e batchUUID não são relevantes para esta situação. Logo, se for forem informados, deverão devem ser ignorados.
Bloco de código | ||
---|---|---|
| ||
POST /totvseai/standardmessage/v1/transactions/ { "headerHeader" : { "UUID" : "", "typeType" : "BusinessMessage", "subTypeSubType" : "event", "transactionTransaction" : "customerVendor", "versionVersion" : "2.001", "sourceApplicationSourceApplication": "", "productNameProductName" : "", "productVersionProductVersion" : "", "companyIdCompanyId" : "", "branchIdBranchId" : "", "generatedOnGeneratedOn" : "", "deliveryTypeDeliveryType" : "sync", }, "contentContent" : { "atributo1Atributo1" : "", "atributo2Atributo2" : "", ... "atributoNAtributoN" : "" } } |
...
DELETE /totvseai/standardmessage/v1/transactions/{transactionID_version}/{internalID}
Onde:
Justificando a presença de corpo na requisição de DELETE, é necessário identificar se a transação é síncrona ou não. Sem o corpo, todas as informações teriam que ser colocadas na URL da requisição.
Bloco de código | ||
---|---|---|
| ||
DELETE /totvseai/standardmessage/v1/transactions/ | ||
Bloco de código | ||
| ||
DELETE /totvseai/standardmessage/v1/transactions/customerVendor_2_001/10|ABC123 { "headerHeader" : { "UUID" : "", "typeType" : "BusinessMessage", "subTypeSubType" : "event", "transactionTransaction" : "customerVendor", "versionVersion" : "2.001", "sourceApplicationSourceApplication": "", "productNameProductName" : "", "productVersionProductVersion" : "", "companyIdCompanyId" : "", "branchIdBranchId" : "", "generatedOnGeneratedOn" : "", "deliveryTypeDeliveryType" : "sync", }, "contentContent" : { "atributo1Atributo1" : "", "atributo2Atributo2" : "", ... "atributoNAtributoN" : "" } } |
...
DELETE /totvseai/standardmessage/v1/transactions?batchType={batchType}?batchUUID={batchUUID}
...
O endpoint aceita os parâmetros batchType e batchUUIbatchUUID, e o comportamento será o mesmo descrito para quando um lote de mensagens é submetido. Se o parâmetro batchType for omitido, terá deve-se assumir o valor "simpleBatch".
Bloco de código | ||
---|---|---|
| ||
DELETE /totvseai/standardmessage/v1/transactions?batchUUID=f0b3695c-1efc-49f2-84a7-1eeb59c5a962 { "itemsItems" : [ { "headerHeader" : { "UUID" : "", "typeType" : "BusinessMessage", "subTypeSubType" : "event", "transactionTransaction" : "customerVendor", "versionVersion" : "2.001", "sourceApplicationSourceApplication": "", "productNameProductName" : "", "productVersionProductVersion" : "", "generatedOnGeneratedOn" : "", "deliveryTypeDeliveryType" : "async", }, "contentContent" : { "atributo1Atributo1" : "", "atributo2Atributo2" : "", ... "atributoNAtributoN" : "" } }, { "headerHeader" : { "UUID" : "", "typeType" : "BusinessMessage", "subTypeSubType" : "event", "transactionTransaction" : "customerVendor", "versionVersion" : "2.001", "sourceApplicationSourceApplication": "", "productNameProductName" : "", "productVersionProductVersion" : "", "generatedOnGeneratedOn" : "", "deliveryTypeDeliveryType" : "async", }, "contentContent" : { "atributo1Atributo1" : "", "atributo2Atributo2" : "", ... "atributoNAtributoN" : "" } } ] } |
...
Entende-se como ERRO quando transmissão e entendimento da mensagem foram realizados com sucesso, porém alguma regra de negócio no ERP receptor não foi cumprida.
O status HTTP retornado é 200, e a mensagem de resposta encontra-se no seguinte formato:
Bloco de código | ||
---|---|---|
| ||
{
"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" : { |
Informações |
---|
O termo entidade está sendo usado no lugar de mensagem, porque neste endpoint não haverá os controles que são feitos no endpoint /transactions. Uma mensagem implica em um remetente, um destinatário e um conteúdo. Neste caso, temos explicito apenas o conteúdo, correspondente a uma entidade no destino, que é identificada pelo seu internalID. |
GET /totvseai/standardmessage/v1/contents/{transactionID_version}?
page={page}&
pageSize={pageSize}&
order={orderList}&
fields={fieldList}&
{field1}={value1}&{field2}={value2}&{fieldN}={valueN}
Onde:
Bloco de código | ||
---|---|---|
| ||
GET /totvseai/standardmessage/v1/contents/customervendor_1_000 { "hasNext" : "true", "items" : [ { "UUID" : "d6bbfa63-ca27-e2ac-0b14-101970f59a5b", "atributo1SentBy" : "P1299", "atributo2Event" : "upsert" }, "ProcessingInformation" : { "atributo1ProcessedOn" : "2017-11-14T11:47:15-03:00", "atributo2Status" : "ERROR", } ] } |
GET /totvseai/standardmessage/v1/contents/{transactionID_version}/{internalID}?
fields={fieldList}&
{field1}={value1}&{fieldN}={valueN}
Onde:
Bloco de código | ||
---|---|---|
| ||
GET /totvseai/standardmessage/v1/contents/customervendor_1_000/10|30
{
"atributo1" : "valor1",
"atributo2" : "valor2"
} |
POST /totvseai/standardmessage/v1/contents/{transactionID_version}
Onde:
...
Para transações do tipo event, representa a criação de um registro.
Para transações do tipo request, representa a execução de um processamento.
Bloco de código | ||
---|---|---|
| ||
POST /totvseai/standardmessage/v1/contents/updateContractParcel_2_001/
{
"atributo1" : "valor1",
"atributo2" : "valor2"
}
|
POST /totvseai/standardmessage/v1/contents/{transactionID_version}
Onde:
...
Bloco de código | ||
---|---|---|
| ||
POST /totvseai/standardmessage/v1/contents/customervendor_1_000/ { "items" : ["Details" : [ { "Code" : "FE001", "Message" : "Mensagem padrão no formato incorreto.", "DetailedMessage" : "", "HelpUrl": "http://tdn.totvs.com" }, { "Code" : "AE004", "Message" : "Empresa não configurada para integração.", "DetailedMessage" : "", "HelpUrl": "http://tdn.totvs.com" } ] }, "ReturnContent" : { "ListOfInternalID" : [ { "Name" : "CostCenter", { "atributo1Origin" : "valorA199|ABC001", "atributo2" : "valorA2" "Destination" : "10|1000" }, },{ { "atributo1Name" : "valorB1Company", "atributo2Origin" : "valorB299", } ] } |
PUT /totvseai/standardmessage/v1/contents/{transactionID_version}/{internalID}
Onde:
...
Bloco de código | ||
---|---|---|
| ||
PUT /totvseai/standardmessage/v1/contents/customervendor_1_000/10|30
{
"atributo1" : "valorA1",
"atributo2" : "valorA2"
} |
DELETE /totvseai/standardmessage/v1/contents/{transactionID_version}/{internalID}
Onde:
...
Bloco de código | ||
---|---|---|
| ||
DELETE /totvseai/standardmessage/v1/contents/customervendor_1_000/10|30
//Não necessita de corpo |
...
"Destination" : "10"
}
]
}
}
}
|
Entende-se como FALHA quando transmissão e entendimento da mensagem não puderam ser realizados.
Isso pode ocorrer devido aos seguintes motivos:
O status HTTP retornado é 500, e a mensagem de resposta encontra-se no seguinte formato:
Bloco de código | ||
---|---|---|
| ||
{
"Code" : "FE001",
"Message" : "Mensagem padrão no formato incorreto.",
"DetailedMessage" : "",
"HelpUrl": "http://tdn.totvs.com"
}
|