DecisionServerRS
A API DecisionServerRS é uma API REST que estabelece o interface entre sorters e o Servidor de Decisões dos CTT. Esta foi desenvolvida com recurso a produtos de integração seguros e robustos que asseguram uma comunicação transparente entre ambientes produtivos com sistemas e tecnologias heterogênias.
Este interface tem como objetivo possibilitar a pesquisa de destinos possíveis no servidor de decisões referentes à divisão de objetos, assim como notificar a correta classificação de objetos em tempo real.
Através da presente API é possível realizar as seguintes operações:
- Consulta de destinos possíveis obtidos do servidor de decisões;
- Notificar a classificação de objetos;
- Ping de serviço;
- Abertura/fecho de UATs;
- Associação de um objecto a uma UAT em real-time;
- Pedido de movimento de um objecto para posição de saída;
A definição destas operações expostas nos interfaces seguem a norma RESTful e um modelo de comunicação síncrono, o que exige a necessidade de manter a comunicação entre a realização dos pedidos e obtenção das respostas.
Especificação de modelos
A definição das entidades e modelos definidos está disponível em Swagger de acordo com a especificação OpenAPI versão 2.0.
Modelos de Input
Modelo | Tipo de Dados | Obrigatório | Descrição |
---|---|---|---|
ClassificationInfo | JSON.Object | Sim | Informação da classificação. |
pic | String | Sim | Código único recebido pelo classificador. |
parcelCodes | JSON.Array de BarcodeInfo | Sim | Lista de códigos lidos. |
barcode | String | Sim | Código lido. |
x | String | Não | Posição na máquina. |
y | String | Não | Posição na máquina. |
z | String | Não | Posição na máquina. |
parcelCodesSize | String | Sim | Número de códigos na lista parcelCodes. |
objectMeasurements | JSON.Object | Sim | Dimensões do objeto. |
length | String | Sim | Comprimento do objeto (mm) |
height | String | Sim | Altura do objeto (mm) |
width | String | Sim | Largura do objeto (mm) |
volume | String | Sim | Volume do objeto (cm3) |
weight | String | Sim | Peso do objeto (gr). |
sortingMachineID | String | Sim | Identificador da máquina de classificação. |
sortingPlanID | String | Sim | Identificador do plano de divisão ativo. |
sortingEntryType | String | Sim | Tipo de alimentação. |
sortingEntryID | String | Não | ID da linha de indução (Se ind. manual). |
sortingStationID | String | Não | ID da estação de alimentação (Se ind. manual). |
postalCode | String | Não | Código postal de destino do objeto (Se ind. manual). |
requestTime | String | Não | Data/hora do pedido. |
DestinationNotification | JSON.Object | Sim | Informação da classificação para notificar. |
pic | String | Sim | Código único recebido pelo classificador. |
parcelCode | JSON.Array | Sim | Código usado para classificar. |
sortingMachineID | String | Sim | Identificador da máquina de classificação. |
sortingExitID | String | Sim | Identificador da saída da máquina de classificação. |
reason | String | Sim | Motivo da classificação. |
sortingType | String | Sim | ID da estação de alimentação (Se ind. manual). |
sortingDateTime | String | Sim | Data/hora da classificação do objecto (yyyyMMddHHmmss). |
sortingEntryType | String | Não | Tipo de alimentação: “Manual” ou "Automatic". |
sortingEntryID | String | Não | ID da linha de indução (Se ind. manual). |
sortingStationID | String | Não | ID da estação de alimentação (Se ind. manual). |
containerID | String | Sim | Identificador do container de saída. |
sortingPlanID | String | Sim | Identificador do plano de divisão ativo. |
objectMeasurements | JSON.Object | Sim | Dimensões do objeto. |
length | String | Sim | Comprimento do objeto (mm) |
height | String | Sim | Altura do objeto (mm) |
width | String | Sim | Largura do objeto (mm) |
volume | String | Sim | Volume do objeto (cm3) |
weight | String | Sim | Peso do objeto (gr). |
objectInformation | JSON.Object | Sim | Informação do objeto. |
parcelCode | String | Sim | Código do objeto. |
clientCode | String | Não | Número do cliente. |
contractCode | String | Sim | Número do contrato. |
senderPostalCode4 | String | Sim | Código postal do remetente (CP4) |
senderPostalCode7 | String | Não | Código postal do remetente (CP7) |
senderPostalCodeInt | String | Não | Código postal do remetente (Internacional) |
addresseePostalCode4 | String | Não | Código postal do remetente (CP4) |
addresseePostalCode7 | String | Não | Código postal do destinatário (CP7) |
addresseePostalCode10 | String | Não | Código postal do destinatário (CP10) |
addresseePostalCodeInt | String | Não | Código postal do destinatário (Internacional) |
class | String | Não | Primeiro caracter do código de barras (classe) |
subclass | String | Não | Segundo caracter do código de barras (subclasse) |
product | String | Não | |
customizedField1 | String | Não | Campo personalizado 1 |
customizedField2 | String | Não | Campo personalizado 2 |
customizedField3 | String | Não | Campo personalizado 3 |
customizedField4 | String | Não | Campo personalizado 4 |
customizedField5 | String | Não | Campo personalizado 5 |
customizedField6 | String | Não | Campo personalizado 6 |
customizedField7 | String | Não | Campo personalizado 7 |
customizedField8 | String | Não | Campo personalizado 8 |
customizedField9 | String | Não | Campo personalizado 9 |
customizedField10 | String | Não | Campo personalizado 10 |
objectDataExpirationDate | String | Sim | Data de expiração dos dados do objeto |
sortingMachineId | String | Não | Identificador da máquina |
sortingPlanId | String | Não | Identificador do plano |
sortingEntry | String | Não | Identificador da linha de indução. |
sortingEntryType | String | Não | Tipo de alimentação: “Manual” ou "Automatic" |
sortingExit | String | Não | Identificador da saída da máquina de classificação. |
sortingReason | String | Não | |
sortingType | String | Não | ID da estação de alimentação (Se ind. manual). |
sortingDateTime | String | Não | Data/hora da classificação do objecto (yyyyMMddHHmmss). |
routingNode | String | Não | |
destinationNode | String | Não | |
weight | String | Não | Peso do objeto (gr). |
height | String | Não | Altura do objeto (mm) |
length | String | Não | Comprimento do objeto (mm) |
width | String | Não | Largura do objeto (mm) |
volume | String | Não | Volume do objeto (cm3) |
dataSource | String | Não | Data source - Http, File. |
OpenCloseRequest | JSON.Object | Sim | Informação de abertura/fecho de UAT. |
destinationCode | String | Sim | Identificador da tulha. |
containerID | String | Sim | Identificador do container de saída. |
state | String | Sim | Estado. |
parcelCodes | JSON.Array | Sim | Lista de códigos usados para classificar. |
parcelCodes | String | Sim | Código usado para classificar. |
SortingInfo | JSON.Object | Sim | Informação de sorting para associação a UAT. |
timestamp | String | Sim | Data hora. |
sortingPlanID | String | Sim | Identificador do plano de divisão ativo. |
sortingRuleID | String | Sim | Identificador da regra para o plano de divisão. |
Exemplo ClassificationInfo:
{ "pic": "6849", "parcelCodes": [ { "barcode": "UD817750977NL", "x": 0, "y": 0, "z": 0 } ], "parcelCodesSize": 1, "objectMeasurements": { "length": "285", "height": "65", "width": "350", "volume": "6483750", "weight": "260" }, "sortingMachineID": "TAX_MACHINE", "sortingPlanID": "1", "sortingEntryType": "Manual", "sortingEntryID": "2" }
Exemplo DestinationNotification:
{ "pic": "6804", "parcelCode": "LX206767326US", "sortingMachineID": "TAX_MACHINE", "sortingPlanID": "1", "sortingExitID": "7", "reason": "1+4", "sortingType": "Online", "sortingDateTime": "20210804115120", "containerID": "72021000678" }
Exemplo OpenCloseRequest:
{ "destinationCode": "17", "containerID": "72021000673", "state": "0", "parcelCodes": [ "UD777331895NL", "UD535388624LT", "UC480028139TW", "LT884634404NL" ] }
Exemplo SortingInfo:
{ "sortingPlanID": "1", "sortingRuleID": "14", "timestamp": "20210804122039" }
Modelos de Output
Modelo | Tipo de Dados | Obrigatório | Descrição | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DestinationInfo | JSON.Object | Sim | Informação dos destinos de divisão. | ||||||||||||||||||||||||||||||||||||||||||||
pic | String | Sim | Código único recebido pelo classificador. | ||||||||||||||||||||||||||||||||||||||||||||
parcelCode | String | Sim | Código usado para classificar. | ||||||||||||||||||||||||||||||||||||||||||||
reason | String | Sim | Motivo da classificação. | ||||||||||||||||||||||||||||||||||||||||||||
destinations | JSON.Array | Sim | Lista de destinos possíveis (tulhas). | ||||||||||||||||||||||||||||||||||||||||||||
destination | String | Não | Identificador da tulha. | ||||||||||||||||||||||||||||||||||||||||||||
sortingPlanID | String | Não | Identificador do plano de divisão ativo. | ||||||||||||||||||||||||||||||||||||||||||||
sortingRuleID | String | Não | Identificador da regra para o plano de divisão. | ||||||||||||||||||||||||||||||||||||||||||||
sortingRuleDesc | String | Não | Descrição da regra para o plano de divisão. | ||||||||||||||||||||||||||||||||||||||||||||
StatusInfo | JSON.Object | Sim | Informação de status. | ||||||||||||||||||||||||||||||||||||||||||||
receptionStatusCode | String | Sim | Código de status de receção. | ||||||||||||||||||||||||||||||||||||||||||||
receptionStatusMessage | String | Sim | Mensagem de status de receção. |
Exemplo DestinationInfo:
{ "pic": "6849", "parcelCode": "UD817750977NL", "reason": "1+14", "sortingPlanID": "1", "sortingRuleID": "14", "sortingRuleDesc": "ICS2 Pendente 1 NI", "destinations": [ "13" ] }
Exemplo StatusInfo:
{ "receptionStatusCode": 2, "receptionStatusMessage": "Action was successfully received" }