Versões comparadas

Chave

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

Neste documento são demonstradas as formas de utilização dos endpoints de mensagem padronizada.

Índice

Âncora
transactions
transactions
Endpoint /transactions

Submeter mensagens em lote

POST /totvseai/standardmessage/v1/transactions?batchType={batchType}

Onde batchType indica o tipo de lote sendo enviado

  • simpleBatch: Este é o tipo default, quando o parâmetro não for informado, e indica que as transações podem ser processadas individualmente. Eventuais erros não comprometem as demais;
  • businessTransaction: indica que as transações dentro do lote devem ser processadas de forma atômica: ou processa tudo ou não aceita nenhuma. O lote pode conter mensagens de uma mesma transação e versão.

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
languagejs
titleLote de mensagens - batchType = simpleBatch
POST /totvseai/standardmessage/v1/transactions	// batchType = simpleBatch é implícito

{
    "items" : [
		{
            "header" : {
                "UUID" : "",
                "type" : "BusinessMessage",
                "subType" : "event",
                "transaction" : "customerVendor",
                "version" : "2.001",
                "sourceApplication": "",
                "productName" : "",
                "productVersion" : "",
                "generatedOn" : "",
                "deliveryType" : "async",
            },
            "content" : {
                "atributo1" : "",
                "atributo2" : "",
                ...
                "atributoN" : ""
            }
        },{
            "header" : {
                "UUID" : "",
                ...
                "transaction" : "customerVendor",
                "version" : "2.001",
                ...
                "deliveryType" : "async" 
            },
            "content" : {
                "atributo1" : "",
                "atributo2" : "",
                ...
                "atributoN" : ""
            }
        }
    ]
}
Bloco de código
languagejs
titleLote de mensagens - batchType = businessTransaction
POST /totvseai/standardmessage/v1/transactions?batchType=businessTransaction

{
    "items" : [
		{
            "header" : {
                "UUID" : "",
                "type" : "BusinessMessage",
                "subType" : "event",
                "transaction" : "customerVendor",
                "version" : "2.001",
                "sourceApplication": "",
                "productName" : "",
                "productVersion" : "",
                "generatedOn" : "",
                "deliveryType" : "async",
            },
            "content" : {
                "atributo1" : "",
                "atributo2" : "",
                ...
                "atributoN" : ""
            }
        },{
            "header" : {
                "UUID" : "",
                ...
                "transaction" : "item",
                "version" : "3.001",
                ...
                "deliveryType" : "sync" // Rejeitar toda a requisição e informar que só aceita assíncrono
            },
            "content" : {
                "atributo1" : "",
                "atributo2" : "",
                ...
                "atributoN" : ""
            }
        }
    ]
}

Submeter uma única mensagem

POST /totvseai/standardmessage/v1/transactions

O parâmetro batchType não é relevante para esta situação. Logo, se for informado, deve ser ignorado.

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

{
    "header" : {
        "UUID" : "",
        "type" : "BusinessMessage",
        "subType" : "event",
        "transaction" : "customerVendor",
        "version" : "2.001",
        "sourceApplication": "",
        "productName" : "",
        "productVersion" : "",
        "companyId" : "",
        "branchId" : "",
        "generatedOn" : "",
        "deliveryType" : "sync",
    },
    "content" : {
        "atributo1" : "",
        "atributo2" : "",
        ...
        "atributoN" : ""
    }
}

Eliminar uma mensagem

DELETE /totvseai/standardmessage/v1/transacions

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
languagejs
DELETE /totvseai/standardmessage/v1/transactions/
{
	"header" : {
    	"UUID" : "",
        "type" : "BusinessMessage",
        "subType" : "event",
        "transaction" : "customerVendor",
        "version" : "2.001",
        "sourceApplication": "",
        "productName" : "",
        "productVersion" : "",
        "companyId" : "",
        "branchId" : "",
        "generatedOn" : "",
        "deliveryType" : "sync",
    },
    "content" : {
        "atributo1" : "",
        "atributo2" : "",
        ...
        "atributoN" : ""
    }
}

Eliminar um lote de mensagens

DELETE /totvseai/standardmessage/v1/transactions?batchType={batchType}

A eliminação em lote utiliza o mesmo endpoint, variando apenas o corpo, onde as mensagens a eliminar estarão dentro de um array JSON. Somente mensagens assíncronas serão aceitas. O endpoint aceita o parâmetro batchType, e o comportamento será o mesmo descrito para quando um lote de mensagens é submetido. Se o parâmetro for omitido, terá valor "simpleBatch".

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

{
    "items" : [
        {
            "header" : {
                "UUID" : "",
                "type" : "BusinessMessage",
                "subType" : "event",
                "transaction" : "customerVendor",
                "version" : "2.001",
                "sourceApplication": "",
                "productName" : "",
                "productVersion" : "",
                "generatedOn" : "",
                "deliveryType" : "async",
            },
            "content" : {
                "atributo1" : "",
                "atributo2" : "",
                ...
                "atributoN" : ""
            }
        },
        {
            "header" : {
                "UUID" : "",
                "type" : "BusinessMessage",
                "subType" : "event",
                "transaction" : "customerVendor",
                "version" : "2.001",
                "sourceApplication": "",
                "productName" : "",
                "productVersion" : "",
                "generatedOn" : "",
                "deliveryType" : "async",
            },
            "content" : {
                "atributo1" : "",
                "atributo2" : "",
                ...
                "atributoN" : ""
            }
        }
    ]
}

Âncora
contents
contents
Endpoint /contents

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.

Recuperar um lote de entidades

GET /totvseai/standardmessage/v1/contents/{transactionID_version}?
page={page}&
pageSize={pageSize}&
order={orderList}&
fields={fieldList}&
{field1}={value1}&{field2}={value2}&{fieldN}={valueN}

Onde:

  • transactionID_version: indica a transação e versão para a qual se quer recuperar os itens. Parâmetro obrigatório.
  • page: Indica a página a recuperar. Valor padrão: 1.
  • pageSize: Indica a quantidade de itens por página: Valor padrão: 10.
  • order: Contém a lista de campos, separados por vírgula, que devem ser considerados para ordenar a lista de itens. Quando a ordenação for decrescente, o sinal "-" deve preceder o nome do campo. Valor padrão: ordenação definida pelo backend.
    Ex: order=-description,code.
  • fields: Contem a lista de campos, separados por vírgula, que deve constar no retorno. Valor padrão: todos os campos.
    Ex: field=code,description.
  • field1...fieldN: Indica o filtro que deve ser aplicado para selecionar os itens do retorno. Valor padrão: sem filtro.
    Ex: code=10&description=Teste.


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

{
    "hasNext" :  "true",
    "items" : [
        {
            "atributo1" : "",
            "atributo2" : ""
        },
        {
            "atributo1" : "",
            "atributo2" : ""
        }
    ]
}

Recuperar uma entidade

GET /totvseai/standardmessage/v1/contents/{transactionID_version}/{internalID}?
fields={fieldList}&
{field1}={value1}&{fieldN}={valueN}

Onde:

  • transactionID_version: parâmetro obrigatório, que identifica a transação e versão da entidade desejada.
  • internalID: parâmetro obrigatório contendo o internalID da entidade desejada.
  • fields: parâmetro opcional, contendo a lista de campos que devem constar no retorno. Valor padrão: todos os campos.
  • field1...fieldN: conjunto de parâmetros opcionais, necessários para transações do tipo request. Os parâmetros podem variar conforme a transação e versão.
     
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/10|30

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

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/updateContractParcel_2_001/

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

Submeter um lote de entidades

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

{
    "items" : [
        {
            "atributo1" : "valorA1",
            "atributo2" : "valorA2"
        },
        {
            "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

A eliminação de um lote de entidades não é possível, pois necessitaria dos internalIds, que por sua vez, deveriam constar no corpo da mensagem.