Se você é um Fornecedor de API para iniciar com o SMON você pode seguir os passos abaixo:
Passo 1: Especificação do Endpoint e do Request Body
- Crie um novo endpoint POST /smon na aplicação ou servidor que hospeda a API.
- Defina a estrutura do JSON que deve ser enviado no request body de acordo com o modelo abaixo.
{
"operation_info": {
"provider": 0,
"operation_type": 2,
"requested_by": {
"name": "fusion",
"country": 76,
"identification": {
"document_type": 20,
"document_id": "19043440000235"
}
},
"paid_by": {
"name": "fusion",
"country": 76,
"identification": {
"document_type": 20,
"document_id": "19043440000235"
}
},
"consumer_order": 1,
"hasEscort": false
},
"regional_settings": {
"language": 1,
"currency": 2,
"measurement": {
"distance": 3,
"weight": 4,
"cubage": 5
}
},
"carrier": {
"name": "AGREGADOS MEGA G",
"country": 76,
"identification": {
"document_type": 20,
"document_id": "19043440000235"
}
},
"shipper": {
"name": "AGREGADOS MEGA G",
"country": 76,
"identification": {
"document_type": 20,
"document_id": "19043440000235"
}
},
"drivers": [
{
"name": "GUSTAVO ANTUNES LUIS (NLT)",
"contract_type": 1,
"contact": {
"international_code": "+55",
"area_code": "11",
"number": "937254131"
},
"country": 76,
"identification": {
"document_type": 20,
"document_id": "50023372877"
}
},
{
"name": "ROWILSON DE ABREU CAMPOS",
"contract_type": 2,
"contact": {
"international_code": "+55",
"area_code": "11",
"number": "987654321"
},
"country": 76,
"identification": {
"document_type": 20,
"document_id": "52493075668"
}
}
],
"vehicle_structure": {
"truck": {
"license_plate": "ABC123",
"bound_with_carrier": 1,
"country": 76,
"work_type": 2,
"tracking_device": {
"id": "12345",
"type": 1,
"model": 2,
"manufacturer": 3
}
},
"trailers": [
{
"license_plate": "XYZ789",
"bound_with_carrier": 1,
"country": 76,
"work_type": 2,
"tracking_device": {
"id": "54321",
"type": 1,
"model": 2,
"manufacturer": 3
}
}
]
},
"itinerary": {
"cargo_value": 1000.50,
"waypoints": [
{
"stop_position": 1,
"name": "Local de Parada 1",
"type": 1,
"cargo_doc": 1,
"identification": {
"document_type": 20,
"document_id": "11111"
},
"address": {
"state": 1,
"city": 2,
"zipcode": "12345-678",
"neighborhood": "123",
"district": "Bairro Exemplo",
"street": "Rua Exemplo",
"number": 123,
"complement": "Complemento Exemplo",
"latitude": "123.456789",
"longitude": "12.345678"
},
"contacts": [
{
"international_code": "+1",
"area_code": "123",
"number": "123456789"
}
],
"expected_departure_time": "2023-10-12T08:00:00Z",
"expected_arrival_time": "2023-10-12T16:00:00Z"
},
{
"stop_position": 2,
"name": "Local de Parada 2",
"type": 2,
"cargo_doc": 2,
"identification": {
"document_type": 20,
"document_id": "22222"
},
"address": {
"state": 3,
"city": 4,
"zipcode": "54321-987",
"neighborhood": "123",
"district": "Outro Bairro",
"street": "Outra Rua",
"number": 456,
"complement": "Complemento Outro",
"latitude": "12.345678",
"longitude": "98.765432"
},
"contacts": [
{
"international_code": "+2",
"area_code": "789",
"number": "987654321"
}
],
"expected_departure_time": "2023-10-12T18:00:00Z",
"expected_arrival_time": "2023-10-12T22:00:00Z"
}
]
},
"cargo_tracking_devices": {
"id": "78901",
"type": 3,
"model": 4,
"manufacturer": 5
},
"contacts": [
{
"international_code": "+1",
"area_code": "123",
"number": "123456789"
},
{
"international_code": "+2",
"area_code": "234",
"number": "234567890"
}
],
"expected_departure_time": "2023-10-30T08:00:00Z",
"expected_arrival_time": "2023-10-30T22:00:00Z"
}'
Para entender o que significa cada campo consulte a documentação da Inclusão de Solicitação de Monitoramento.
Passo 2: Implementação do Middleware de Autenticação JWT
- Implemente um middleware de autenticação JWT que irá verificar a presença e validade do Bearer Token JWT no header da solicitação. Certifique-se de que esse middleware funcione antes de qualquer processamento adicional do endpoint.
Passo 3: Obtenção da Chave Pública
- Obtenha a chave pública necessária para validar os Tokens JWT. Esta chave pública será usada para verificar a autenticidade do Token. Pode ser obtida a partir da autoridade que emitiu os Tokens JWT, ou seja, a mesma que gera os Tokens JWT.
Passo 4: Validação do Token JWT
- Utilize a chave pública obtida no "Passo 3" para validar o Token JWT recebido no header da solicitação. A validação deve incluir a verificação da assinatura, da validade do token e outros parâmetros relevantes. Para saber mais sobre a chave publica clique aqui.
Passo 5: Integração com as APIs do MDM
- Implemente a integração com as APIs do MDM para obter informações a respeito dos IDs que são recebidos no payload do request. Isso envolverá a criação de requisições HTTP para as APIs do MDM, seguindo as especificações fornecidas pela documentação das APIs do MDM. Lembre-se que para utilizar o MDM você precisará estar autenticado na plataforma. Saiba mais sobre a autenticação clicando aqui.
Você pode explorar o MDM na própria documentação clicando em Try it conforme imagem abaixo.
Passo 6: Mapeamento de IDs Recebidos no Payload
- Quando receber IDs no payload da solicitação, utilize as informações obtidas nas APIs do MDM para mapear e interpretar esses IDs, garantindo que os dados associados sejam corretamente processados ou armazenados.
Passo 7: Resposta e Retorno
- Responda à solicitação de acordo com os requisitos da documentação. Isso pode envolver a criação de uma resposta JSON, a atualização de registros no sistema ou outras ações necessárias.
Passo 8: Testes
- Realize testes rigorosos para garantir que o endpoint funcione conforme o esperado, incluindo a autenticação JWT, a integração com as APIs do MDM e o processamento do request body.
Lembre-se de que a segurança é essencial ao lidar com Tokens JWT e a integração com sistemas externos, como as APIs do MDM. Portanto, certifique-se de implementar práticas recomendadas de segurança e testar exaustivamente o novo endpoint antes de disponibilizá-lo para uso em produção.