...
Submeter mensagens em lote - mesma transação
Esta proposta apresenta uma situação relevante: Um único UUID de mensagem será usado para cada uma das mensagens presentes em "content"???
Neste modelo, seria aceito o batchType businessTransaction ou seria somente simpleBatch???
...
...
Será usado o endpoint anterior, com cada mensagem tendo seu header individual.
Submeter mensagens em lote - mesma transação e versão
Neste modelo, que preve a passagem pelo engine do EAI, não temos os UUIDs das mensagens. Como rastreá-las???
Será usado o endpoint anterior. Caso não se queira o header, utilizar o endpoint /contents.
Não será possível pelo endpoint /transactions. O endpoint /contents existe para esta finalidade.
Se for informado o batchType, ignorarO batchType poderia ser businessTransaction ou simpleBatch, a principio.
Bloco de código |
---|
|
POST /totvseai/standardmessage/v1/transactions/customervendor_1_000?batchType=simpleBatch|businessTransaction
{
"itemsheader" : [
{
"atributo1UUID" : "valorA1",
"atributo2type" : "valorA2BusinessMessage",
"subType" ...: "event|request",
"atributoNtransaction" : "valorANcustomerVendor",
"version" : }"2.001",
{
"sourceApplication": "",
"atributo1productName" : "valorB1",
"atributo2productVersion" : "valorB2",
"companyId" ...
: "",
"atributoNbranchId" : "valorBN",
"generatedOn" : }
"",
]
} |
E o UUID? Onde estaria?
Tratar como síncrono ou assíncrono?
Tratar como event ou request.
Bloco de código |
---|
|
POST /totvseai/standardmessage/v1/transactions/customervendor_1_000/
{
"deliveryType" : "async",
},
"content" : {
"atributo1" : "",
"atributo2" : "",
...
"atributoN" : ""
}
} |
...
Se for informado o batchType, ignorarJustificando 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 |
---|
|
POSTDELETE /totvseai/standardmessage/v1/transactions/
{
"header" : {
"UUID" : "",
"type" : "BusinessMessage",
"subType" : "event|request",
"transaction" : "customerVendor",
"version" : "2.001",
"sourceApplication": "",
"productName" : "",
"productVersion" : "",
"generatedOn" : "",
"deliveryType" : "async",
},
"contentcompanyId" : {"",
"atributo1branchId" : "",
"atributo2generatedOn" : "",
..."deliveryType" : "async",
},
"atributoNcontent" : ""{
}
} |
Bloco de código |
---|
|
DELETE /totvseai/standardmessage/v1/transactions
{
"headeratributo1" : {"",
"UUIDatributo2" : "",
"type" : "BusinessMessage", ...
"subTypeatributoN" : "event|request",
}
}
|
Bloco de código |
---|
|
DELETE /totvseai/standardmessage/v1/transactions
{
"transactionitems" : "customerVendor",[
"version" : "2.001",
{
"sourceApplicationheader" : "",{
"productName" : "",
"productVersionUUID" : "",
"generatedOn" : "",
"deliveryTypetype" : "asyncBusinessMessage",
},
"content" : {
"atributo1subType" : "event|request",
"atributo2" : "",
"transaction" ...
: "customerVendor",
"atributoN" : ""
}
} |
Bloco de código |
---|
|
DELETE /totvseai/standardmessage/v1/transactions
{
"itemsversion" : ["2.001",
{
"headersourceApplication" : {"",
"UUIDproductName" : "",
"typeproductVersion" : "BusinessMessage",
"subTypegeneratedOn" : "event|request"",
"transactiondeliveryType" : "customerVendorasync",
},
"versioncontent" : "2.001",{
"sourceApplicationatributo1" : "",
"productNameatributo2" : "",
"productVersion" : "",...
"generatedOnatributoN" : "",
}
"deliveryType" : "async"},
},{
"contentheader" : {
"atributo1UUID" : "",
"atributo2type" : "BusinessMessage",
..."subType" : "event|request",
"atributoNtransaction" : "customerVendor",
}
"version" }: "2.001",
{
"headersourceApplication" : {"",
"UUIDproductName" : "",
"typeproductVersion" : "BusinessMessage",
"subTypegeneratedOn" : "event|request",
"transactiondeliveryType" : "customerVendorasync",
},
"versioncontent" : "2.001",{
"sourceApplicationatributo1" : "",
"productNameatributo2" : "",
"productVersion" : "",...
"generatedOnatributoN" : "",
"deliveryType" : "async",}
}
},
]
}
|
Formato de mensagem de resposta
O JSON equivalente a Response Message será:
Bloco de código |
---|
|
{
"contentheader" : {
"atributo1UUID" : "",
"atributo2type" : "Response",
"subType" ...
: "",
"atributoNtransaction" : "",
}
"version" : }"",
]
}
|
Formato de mensagem de resposta
O JSON equivalente a Response Message será:
Bloco de código |
---|
|
{
"headersourceApplication" : {"",
"UUIDproductName" : "",
"typeproductVersion" : "Response",
"subTypegeneratedOn" : "",
"transactiondeliveryType" : "",
},
"versioncontent" : "",{
"sourceApplicationreceivedMessage" : "",
{
"productNameUUID" : "<originalMsgUUID>",
"productVersionSentBy" : "<sourceApplication>",
"generatedOnevent" : "",
upsert|delete"
"deliveryType": ""
},
"contentprocessingInformation" : {
"receivedMessageprocessedOn" : {"",
"UUIDstatus" : "<originalMsgUUID>OK|ERROR|WARNING",
"SentBydetails" : "<sourceApplication>"
[
},
{
"processingInformation" : {
"processedOncode" : "",
"statusmessage" : "OK|ERROR|WARNING",
"detailsdetailedMessage" : ["",
{
"helpUrl" : "http://<serverName>" // Opcional
"code" : "",
},
"message" : "", {
"detailedMessagecode" : "",
},
"message" {: "",
"codedetailedMessage" : "",
"messagehelpUrl" : "",
http://<serverName>" // Opcional
}
]
"detailedMessage" : ""
},
"returnContent" : }{
]
"atributo1" : "",
},
"returnContentatributo2" : {"",
"listOfInternalID" : [ // Opcional em caso de resposta de requests
{
"name" : "InternalIdName",
"origin" : "",
"destination" : ""
},
{
"name" : "InternalIdName",
"origin" : "",
"destination" : ""
}
]
}
}
} |
Endpoint /contents
As requisições deste endpoint são exclusivamente síncronas.
Recuperar um lote de mensagens
O header não é necessário, só o conteúdo.
Bloco de código |
---|
|
// Permitir também os filtros por atributo
GET /totvseai/standardmessage/v1/contents/customervendor_1_000/?page={page}&pageSize={pageSize}&order={campos}
{
"hasNext" : "true",
"items" : [
{
"atributo1" : "",
"atributo2" : ""
},
{
"atributo1" : "",
"atributo2" : ""
}
]
} |
...
Importante: ao utilizar InternalID (da maneira convencional) estamos assumindo a existência de um de-para(da maneira convencional) estamos assumindo a existência de um de-para.
Para transações que são do tipo request, que necessitem de dados adicionais, os mesmos serão fornecidos como filtros na requisição, seguindo as orientações do Guia de APIs da TOTVS. (colocar esta observação no inicio do documento).
Bloco de código |
---|
|
// Todas as possibilidades de filtro e ordenação do Guia são aplicáveis.
GET /totvseai/standardmessage/v1/contents/customervendor_1_000/{internalID}
{
"atributo1" : "valor1",
"atributo2" : "valor2"
} |
Submeter uma entidade
Submeter uma entidade
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/customervendorupdateContractParcel_12_000001/
{
"atributo1" : "valor1",
"atributo2" : "valor2"
}
|
...
Bloco de código |
---|
|
POST /totvseai/standardmessage/v1/contents/customervendor_1_000/
{
"items" : [
{
"atributo1" : "valorA1",
"atributo2items" : "valorA2"
},[
{
"atributo1" : "valorB1valorA1",
"atributo2" : "valorB2"
}
]
}
|
Eliminar uma entidade
Bloco de código |
---|
|
DELETE /totvseai/standardmessage/v1/contents/customervendor_1_000/{internalID}
{
valorA2"
"atributo1" : ""},
"atributo2" : ""
} |
Eliminar um lote de entidades
Os internalID devem estar nos elementos do array "items"???
Bloco de código |
---|
|
DELETE /totvseai/standardmessage/v1/contents/customervendor_1_000
{
"items" : [
{
{
"atributo1" : "valorB1",
"atributo2" : "valorB2"
},
{
}
]
}
|
Alterar uma entidade
Bloco de código |
---|
|
PUT /totvseai/standardmessage/v1/contents/customervendor_1_000/{internalID}
{
"atributo1" : "valorA1",
"atributo2" : ""
}
]
}valorA2"
} |
Eliminar uma entidade
Bloco de código |
---|
|
DELETE /totvseai/standardmessage/v1/contents/customervendor_1_000/{internalID}
//Não necessita de corpo |
Eliminar um lote de entidades
Não é possível, pois necessita dos internalIds.