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"
}
