Versões comparadas

Chave

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

...

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???

...

languagejs

...

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.

Submeter uma mensagem, sem header

Não será possível pelo endpoint /transactions. O endpoint /contents existe para esta finalidade.

Submeter uma mensagem, com header

Se for informado o batchType, ignorarO batchType poderia ser businessTransaction ou simpleBatch, a principio.

Bloco de código
languagejs
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" : }
"",
        ]
}

Submeter uma mensagem, sem header

E o UUID? Onde estaria?

Tratar como síncrono ou assíncrono?

Tratar como event ou request.

Bloco de código
languagejs
POST /totvseai/standardmessage/v1/transactions/customervendor_1_000/

{
    "deliveryType" : "async",
    },
    "content" : {
        "atributo1" : "",
        "atributo2" : "",
        ...
        "atributoN" : ""
    }
}

...

Eliminar uma mensagem, com header

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
languagejs
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" : ""{
    }
}

Eliminar uma mensagem, com header

Bloco de código
languagejs
DELETE /totvseai/standardmessage/v1/transactions

{
    "headeratributo1" : {"",
        "UUIDatributo2" : "",
        "type" : "BusinessMessage", ...
        "subTypeatributoN" : "event|request",
    }
}

Eliminar um lote de mensagens, com headers

Bloco de código
languagejs
DELETE /totvseai/standardmessage/v1/transactions

{
    "transactionitems" : "customerVendor",[
        "version" : "2.001",
{
            "sourceApplicationheader" : "",{
        "productName" : "",
        "productVersionUUID" : "",
        "generatedOn" : "",
        "deliveryTypetype" : "asyncBusinessMessage",
    },
    "content" : {
        "atributo1subType" : "event|request",
        "atributo2" : "",
      "transaction"  ...
  : "customerVendor",
      "atributoN" : ""
    }
}

Eliminar um lote de mensagens, com headers

Bloco de código
languagejs
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
languagejs
{
    "contentheader" : {
                "atributo1UUID" : "",
                "atributo2type" : "Response",
        "subType"        ...
      : "",
          "atributoNtransaction" : "",
            }
      "version" : }"",
    ]
}

Formato de mensagem de resposta

O JSON equivalente a Response Message será:

Bloco de código
languagejs
{
    "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
languagejsjs
// 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
languagejs
// 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
languagejs
POST /totvseai/standardmessage/v1/contents/customervendorupdateContractParcel_12_000001/

{
    "atributo1" : "valor1",
    "atributo2" : "valor2"
}

...

Bloco de código
languagejs
POST /totvseai/standardmessage/v1/contents/customervendor_1_000/

{
    "items" : [
        {
            "atributo1" : "valorA1",
            "atributo2items" : "valorA2"
        },[
        {
            "atributo1" : "valorB1valorA1",
            "atributo2" : "valorB2"
        }
    ]
}

Eliminar uma entidade

Bloco de código
languagejs
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
languagejs
DELETE /totvseai/standardmessage/v1/contents/customervendor_1_000

{
	"items" : [
		{
		{
            "atributo1" : "valorB1",
		            "atributo2" : "valorB2"
		},
		{
			
        }
    ]
}

Alterar uma entidade


Bloco de código
languagejs
PUT /totvseai/standardmessage/v1/contents/customervendor_1_000/{internalID}

{

	"atributo1" : "valorA1",
			"atributo2" : ""
		}
	]
}valorA2"

}

Eliminar uma entidade

Bloco de código
languagejs
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.