Informações | ||
---|---|---|
| ||
O documento abaixo está em elaboração e será complementado ao longo do tempo. A previsão de conclusão é 9/2/2018. |
Com o objetivo de auxiliar na migração do formato SOAP/XML para o formato REST/JSON, elaboramos este documento, no qual demonstramos a equivalência de conceitos entre os formatos. Entretanto, algumas tags presentes no formato SOAP/XML não foram migradas para o novo formato, por estarem em desuso ou terem uma aplicação muito específica.
Formato SOAP/XML | Formato REST/JSON | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Endpoints | ||||||||||||||||||||||||||||||
http://<servidor>:<porta>/eai2-ws/EAIService?wsdl (DATASUL) http://<servidor>:<porta>/public/ws/EAIService.wsdl (DATASUL Novo Frame) http://<servidor>:<porta>/EAISERVICE.apw?wsdl (LOGIX/PROTHEUS) http://<servidor>:<porta>/EAIService/MEX?wsdl (RM)
| http://<servidor>:<porta>/totvseai/standardmessage/v1/transactions http://<servidor>:<porta>/totvseai/standardmessage/v1/content
| |||||||||||||||||||||||||||||
Estrutura da mensagem | ||||||||||||||||||||||||||||||
TOTVSMessage, composta de:
| Dois atributos principais:
| |||||||||||||||||||||||||||||
Tags de MessageInformation X atributos de header | ||||||||||||||||||||||||||||||
<MessageInformation version="2.000"> | "versionVersion" : "2.000" | |||||||||||||||||||||||||||||
<UUID>d6bbfa63-ca27-e2ac-0b14-101970f59a5b</UUID> | "UUID" : "d6bbfa63-ca27-e2ac-0b14-101970f59a5b" | |||||||||||||||||||||||||||||
<Type>BusinessMessage</Type> | "typeType" : "BusinessMessage" | |||||||||||||||||||||||||||||
<Transaction>CostCenter</Transaction> | "transactionTransaction" : "CostCenter" | |||||||||||||||||||||||||||||
<StandardVersion>1.000</StandardVersion> | Sem equivalente na mensagem. A versão do padrão será designada na URL do endpoint /totvseai/standardmessage/v1. | |||||||||||||||||||||||||||||
<SourceApplication>P1299</SourceApplication> | "sourceApplicationSourceApplication" : "P1299" | |||||||||||||||||||||||||||||
<CompanyId>99</CompanyId> | "companyIdCompanyId" : "99" | |||||||||||||||||||||||||||||
<BranchId>01</BranchId> | "branchIdBranchId" : "01" | |||||||||||||||||||||||||||||
<UserId>admin<UserID><UserId>admin<UserId> | "userIdUserId" : "admin" | |||||||||||||||||||||||||||||
<Enterprise></Enterprise> | Não será utilizado no formato REST/JSON | |||||||||||||||||||||||||||||
<BusinessUnit></BusinessUnit> | Não será utilizado no formato REST/JSON. | |||||||||||||||||||||||||||||
<CompanySharingMode>C</CompanySharingMode>Não será utilizado no formato REST/JSON. | "CompanySharingMode" : "C" | |||||||||||||||||||||||||||||
<BusinessUnitSharingMode>C</BusinessUnitSharingMode> | "BusinessUnitSharingMode" : "C" | |||||||||||||||||||||||||||||
<BranchSharingMode>E</BranchSharingMode> | "BranchSharingMode" : "E" | Não será utilizado no formato REST/JSON. | <BranchSharingMode>C</BranchSharingMode> | Não será utilizado no formato REST/JSON. | ||||||||||||||||||||||||||
<Product name="PROTHEUS" version="12.1.17" /> | "productNameProductName" : "PROTHEUS" "productVersionProductVersion" : "12.1.17" | |||||||||||||||||||||||||||||
<GeneratedOn>2017-11-15T12:00:30-02:00</GeneratedOn> | "generatedOnGeneratedOn" : "2017-11-15T12:00:30-02:00" | |||||||||||||||||||||||||||||
<DeliveryType>async</DeliveryType> | "deliveryTypeDeliveryType" : "async" | |||||||||||||||||||||||||||||
Outras tags e suas equivalências no modelo REST/JSON | ||||||||||||||||||||||||||||||
BusinessMessage/BusinessEvent | Atributo "subTypeSubType" do headerHeader, com valor igual a "event". Ex: "subTypeSubType" : "event". | |||||||||||||||||||||||||||||
BusinessMessage/BusinessEvent/Entity | Utilizar o atributo "transactionTransaction" do headerHeader. | |||||||||||||||||||||||||||||
BusinessMessage/BusinessEvent/Event A operação será obtida do método HTTP usado no endpoint: | Utilizar o atributo "Event" do Header. | |||||||||||||||||||||||||||||
BusinessMessage/BusinessEvent/Identification | Não será utilizado no formato REST/JSON. Foi substituído pelos internalIds internal Ids informados no conteúdo da mensagem. | |||||||||||||||||||||||||||||
BusinessMessage/BusinessRequest | Atributo "subTypeSubType" do header Header com valor igual a "request". Ex: "subType" : "request". | |||||||||||||||||||||||||||||
BusinessMessage/BusinessRequest/Operation | Usar o atributo "transactionTransaction" do headerHeader. | |||||||||||||||||||||||||||||
BusinessMessage/BusinessContent | Atributo "contentContent". Todas as tags do XML correspondentes a BusinessContent devem ser convertidas em atributos JSON, sem qualquer modificação. | |||||||||||||||||||||||||||||
ResponseMessage/ReceivedMessage e tags filhas. | Atributo "receivedMessageReceivedMessage"´de contentContent. Os atributos filhos são equivalências diretas das tags filhas de <ReceivedMessage>.
| |||||||||||||||||||||||||||||
ResponseMessage/ProcessingInformation | Atributo "processingInformationProcessingInformation" do contentContent, quando a mensagem for do tipo "Response". As tags <ProcessedOn> e <Status> tem os atributos equivalentes "processedOnProcessedOn" e "statusStatus".
| |||||||||||||||||||||||||||||
ResponseMessage/ProcessingInformation/ListOfMessages | Atributo "detailsDetails" do processingInformationProcessingInformation. | |||||||||||||||||||||||||||||
ResponseMessage/ReturnContent | Atributo "returnContentReturnContent". Todas as tags XML devem ser convertidas em atributos JSON. | |||||||||||||||||||||||||||||
ReceiptMessage | A ReceiptMessage seguirá a mesma estrutura do XML, convertendo assim para JSON e atribuindo à propriedade "Content" EX:
Obs.: A propriedade "MessageContent" não deve ser serializada para Json, visando economia no tráfego de rede. | |||||||||||||||||||||||||||||
Padrão de arrays "ListOf___" | ||||||||||||||||||||||||||||||
Listas de objetos no padrão "ListOf" como o exemplo abaixo:
| O padrão "ListOf" considera que a tag "ListOf___" é o array e, seguindo o padrão da notação JSon, terá internamente aos colchetes a lista de objetos separados por virgula, conforme exemplo abaixo.
| ReceiptMessage | Não existe mensagem de recibo no formato JSON. O indicativo de que a mensagem foi recebida é o código HTTP 202 (Accepted). |