{"openapi":"3.1.0","info":{"title":"DUX Roteirização — API","description":"Contrato JSON da plataforma SaaS de roteirização de cargas da **DUX Tecnologia**.\n\nCampos em inglês (snake_case); a API é a fonte de verdade (RF-00). Autentique em `/v1/auth/login` e use o token como `Authorization: Bearer <token>`.","version":"0.1.0","x-logo":{"url":"/dux-pos.png"}},"paths":{"/v1/auth/login":{"post":{"tags":["auth"],"summary":"Login","description":"Autentica e devolve um token de acesso (demo: admin Queiroz / 123456).","operationId":"login_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/session":{"get":{"tags":["auth"],"summary":"Session Info","description":"Estado da sessão atual: usuário, tipo e organização ativa.","operationId":"session_info_v1_session_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/session/organization":{"post":{"tags":["auth"],"summary":"Select Organization","description":"Define a organização ativa da sessão. Admin de plataforma escolhe qualquer\numa (com auditoria, RF-03/decisão 2.4); usuário comum só a própria.","operationId":"select_organization_v1_session_organization_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgSelectIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customers":{"get":{"tags":["customers"],"summary":"Lookup Customer","description":"Consulta cliente por código externo (SRS RF-18a). Retorna o id se existir.","operationId":"lookup_customer_v1_customers_get","parameters":[{"name":"external_code","in":"query","required":true,"schema":{"type":"string","description":"CODCLIENTE_EXT no ERP","title":"External Code"},"description":"CODCLIENTE_EXT no ERP"},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerLookup"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/orders":{"post":{"tags":["orders"],"summary":"Create Orders","description":"Cria pedido(s) no pool. Aceita objeto único ou lista. Resolve o cliente por\n`customer_id` OU `customer_code`; rejeita se o cliente não estiver pré-cadastrado.","operationId":"create_orders_v1_orders_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/OrderIn"},{"type":"array","items":{"$ref":"#/components/schemas/OrderIn"}}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCreateResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["orders"],"summary":"List Orders","description":"Lista os pedidos do pool da organização.","operationId":"list_orders_v1_orders_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","description":"Filtra por STATUS (P,R,T,E,N,A)","title":"Status"},"description":"Filtra por STATUS (P,R,T,E,N,A)"},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrderOut"},"title":"Response List Orders V1 Orders Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/routings":{"post":{"tags":["routings"],"summary":"Create Routing","description":"Cria uma roteirização para um depósito e importa os pedidos P/N do pool.","operationId":"create_routing_v1_routings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutingIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutingOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["routings"],"summary":"List Routings","description":"Lista as roteirizações da organização (tela inicial da roteirização).","operationId":"list_routings_v1_routings_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/routing/candidates":{"get":{"tags":["routings"],"summary":"Routing Candidates","description":"Pedidos candidatos à roteirização (P/N) com os dados para a 1ª etapa do\nassistente: cliente, peso, volume, valor e prioridade.","operationId":"routing_candidates_v1_routing_candidates_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/routings/{routing_id}/execute":{"post":{"tags":["routings"],"summary":"Execute Routing","description":"Dispara a otimização. Assíncrono por contrato (retorna job_id); no demo\nexecuta em linha e já deixa o resultado pronto para GET .../result.","operationId":"execute_routing_v1_routings__routing_id__execute_post","parameters":[{"name":"routing_id","in":"path","required":true,"schema":{"type":"integer","title":"Routing Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/routings/{routing_id}/result":{"get":{"tags":["routings"],"summary":"Routing Result","description":"Resultado: ordens de carga (veículo/motorista/sequência/métricas) +\npedidos não roteirizados com o código do motivo (SRS RF-34/35).","operationId":"routing_result_v1_routings__routing_id__result_get","parameters":[{"name":"routing_id","in":"path","required":true,"schema":{"type":"integer","title":"Routing Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutingResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/depots":{"get":{"tags":["depots"],"summary":"List Depots","operationId":"list_depots_v1_depots_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vehicles":{"get":{"tags":["vehicles"],"summary":"List Vehicles","operationId":"list_vehicles_v1_vehicles_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/customers/list":{"get":{"tags":["customers"],"summary":"List Customers","description":"Lista os clientes da organização (para a tela de cadastro).","operationId":"list_customers_v1_customers_list_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/drivers":{"get":{"tags":["drivers"],"summary":"List Drivers","description":"Lista os motoristas da organização.","operationId":"list_drivers_v1_drivers_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/organizations":{"get":{"tags":["organizations"],"summary":"List Organizations","description":"Lista as organizações. Apenas administrador de plataforma (SRS RF-01).\nInclui a org 0 (Modelo) e a org 1 (Demonstração), além dos tenants (>=1000).","operationId":"list_organizations_v1_organizations_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/parameters":{"get":{"tags":["parameters"],"summary":"List Parameters","description":"Lista os parâmetros da organização, com valor atual e documentação (RF-06b).","operationId":"list_parameters_v1_parameters_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/geocode":{"get":{"tags":["geocode"],"summary":"Geocode","description":"Autocompletar de endereço (RF-00b): retorna sugestões estruturadas\n(logradouro, CEP, cidade, UF) já com coordenadas. Adapter: OpenStreetMap.","operationId":"geocode_v1_geocode_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Texto do endereço a buscar","title":"Q"},"description":"Texto do endereço a buscar"},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/{entity}/schema":{"get":{"tags":["cadastros"],"summary":"Entity Schema","description":"Esquema de campos (rótulos, tipos, editável na edição, criável no novo, PK).\nCampos 'option' trazem as opções (valor+descrição); 'address' indica o\nmapeamento do campo rico de endereço. `can_manage` diz se o usuário pode\ncriar/editar.","operationId":"entity_schema_v1_admin__entity__schema_get","parameters":[{"name":"entity","in":"path","required":true,"schema":{"type":"string","title":"Entity"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/{entity}/{rec_id}":{"get":{"tags":["cadastros"],"summary":"Entity Get","description":"Obtém um registro para edição (requer perfil de gestão da entidade).","operationId":"entity_get_v1_admin__entity___rec_id__get","parameters":[{"name":"entity","in":"path","required":true,"schema":{"type":"string","title":"Entity"}},{"name":"rec_id","in":"path","required":true,"schema":{"type":"integer","title":"Rec Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["cadastros"],"summary":"Entity Update","description":"Atualiza os campos editáveis. A PK e os campos somente-leitura são ignorados.","operationId":"entity_update_v1_admin__entity___rec_id__patch","parameters":[{"name":"entity","in":"path","required":true,"schema":{"type":"string","title":"Entity"}},{"name":"rec_id","in":"path","required":true,"schema":{"type":"integer","title":"Rec Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/{entity}":{"post":{"tags":["cadastros"],"summary":"Entity Create","description":"Cria um registro (botão \"Novo\"). Respeita o perfil de gestão da entidade.\nA PK autoincrement não é aceita no corpo; FKs e demais campos sim.","operationId":"entity_create_v1_admin__entity__post","parameters":[{"name":"entity","in":"path","required":true,"schema":{"type":"string","title":"Entity"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CustomerLookup":{"properties":{"found":{"type":"boolean","title":"Found"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","required":["found"],"title":"CustomerLookup","description":"Resposta de GET /v1/customers?external_code= (SRS RF-18a)."},"ExecuteResult":{"properties":{"routing_id":{"type":"integer","title":"Routing Id"},"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status","description":"Estado do job (assíncrono): queued/running/done"}},"type":"object","required":["routing_id","job_id","status"],"title":"ExecuteResult"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LoadOrderOut":{"properties":{"id":{"type":"integer","title":"Id"},"vehicle_id":{"type":"integer","title":"Vehicle Id"},"vehicle_plate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vehicle Plate"},"driver_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Driver Id"},"driver_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Driver Name"},"distance_km":{"type":"number","title":"Distance Km"},"duration_min":{"type":"integer","title":"Duration Min"},"weight_kg":{"type":"number","title":"Weight Kg"},"volume_m3":{"type":"number","title":"Volume M3"},"occupancy_pct":{"type":"number","title":"Occupancy Pct"},"stops":{"items":{"$ref":"#/components/schemas/StopOut"},"type":"array","title":"Stops"}},"type":"object","required":["id","vehicle_id","distance_km","duration_min","weight_kg","volume_m3","occupancy_pct","stops"],"title":"LoadOrderOut","description":"Ordem de carga: pedidos de um veículo, em sequência ótima (SRS RF-34)."},"LoginIn":{"properties":{"login":{"type":"string","title":"Login"},"password":{"type":"string","title":"Password"}},"type":"object","required":["login","password"],"title":"LoginIn"},"LoginOut":{"properties":{"token":{"type":"string","title":"Token"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"must_select_organization":{"type":"boolean","title":"Must Select Organization","description":"True para admin de plataforma: precisa escolher a organização (RF-03)","default":false},"organization_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization Id","description":"Org ativa (já definida para usuário comum)"}},"type":"object","required":["token","name","type"],"title":"LoginOut"},"OrderAddress":{"properties":{"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street","description":"Logradouro + número"},"zip_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zip Code","description":"CEP, só dígitos"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State","description":"UF (2 letras)"},"complement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Complement"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"}},"type":"object","title":"OrderAddress","description":"Endereço de entrega (sobrepõe o do cliente quando informado)."},"OrderCreateResult":{"properties":{"created":{"items":{"$ref":"#/components/schemas/OrderOut"},"type":"array","title":"Created","default":[]},"rejected":{"items":{"type":"object"},"type":"array","title":"Rejected","description":"Pedidos recusados, com motivo (ex.: cliente não resolvido)","default":[]}},"type":"object","title":"OrderCreateResult"},"OrderIn":{"properties":{"external_key":{"type":"string","title":"External Key","description":"CHAVE_EXT — chave do ERP, única por organização"},"customer_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Customer Id","description":"ID interno do cliente (nosso ID_CLIENTE)"},"customer_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Code","description":"CODCLIENTE_EXT — código do cliente no ERP"},"weight_kg":{"type":"number","minimum":0.0,"title":"Weight Kg","description":"Peso em kg","default":0},"volume_m3":{"type":"number","minimum":0.0,"title":"Volume M3","description":"Volume em m³ (ao menos um entre peso/volume > 0)","default":0},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority","description":"Maior = mais prioritário"},"expected_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Date","description":"DTPREVENT (YYYY-MM-DD)"},"service_time_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Service Time Min","description":"Tempo de serviço próprio (sobrepõe cliente/padrão)"},"depot_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Depot Id","description":"Se informado, o pedido deve sair desta empresa/depósito"},"delivery_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Note","description":"OBSLOG exibida ao motorista"},"address":{"anyOf":[{"$ref":"#/components/schemas/OrderAddress"},{"type":"null"}]}},"type":"object","required":["external_key"],"title":"OrderIn","description":"Pedido de venda enviado pelo ERP ao pool (SRS RF-20/21).","example":{"customer_code":"C001","delivery_note":"Entregar pela manhã","external_key":"PED-9001","priority":1,"volume_m3":0.7,"weight_kg":150}},"OrderOut":{"properties":{"id":{"type":"integer","title":"Id"},"external_key":{"type":"string","title":"External Key"},"customer_id":{"type":"integer","title":"Customer Id"},"customer_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Name"},"status":{"type":"string","enum":["P","R","T","E","N","A"],"title":"Status"},"weight_kg":{"type":"number","title":"Weight Kg"},"volume_m3":{"type":"number","title":"Volume M3"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"},"load_order_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Load Order Id"},"delivery_sequence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delivery Sequence"},"unrouted_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unrouted Reason"}},"type":"object","required":["id","external_key","customer_id","status","weight_kg","volume_m3"],"title":"OrderOut"},"OrgSelectIn":{"properties":{"organization_id":{"type":"integer","title":"Organization Id"}},"type":"object","required":["organization_id"],"title":"OrgSelectIn"},"RoutingIn":{"properties":{"depot_id":{"type":"integer","title":"Depot Id","description":"Empresa de origem (obrigatório)"},"vehicle_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Vehicle Ids","description":"Veículos; omisso = todos os ativos"},"order_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Order Ids","description":"Pedidos selecionados; omisso = todos P/N"},"departure_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Departure Date","description":"DTSAIDA (YYYY-MM-DD); nula = data corrente"}},"type":"object","required":["depot_id"],"title":"RoutingIn","description":"Criação de uma roteirização (SRS RF-23/24).","example":{"depot_id":1}},"RoutingOut":{"properties":{"id":{"type":"integer","title":"Id"},"depot_id":{"type":"integer","title":"Depot Id"},"status":{"type":"string","enum":["criada","executando","concluida","falhou"],"title":"Status"},"departure_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Departure Date"},"imported_orders":{"type":"integer","title":"Imported Orders","default":0}},"type":"object","required":["id","depot_id","status"],"title":"RoutingOut"},"RoutingResult":{"properties":{"routing_id":{"type":"integer","title":"Routing Id"},"status":{"type":"string","title":"Status"},"engine":{"type":"string","title":"Engine","description":"Motor usado: ortools | heuristico"},"depot":{"type":"object","title":"Depot"},"load_orders":{"items":{"$ref":"#/components/schemas/LoadOrderOut"},"type":"array","title":"Load Orders"},"unrouted_orders":{"items":{"$ref":"#/components/schemas/UnroutedOut"},"type":"array","title":"Unrouted Orders"}},"type":"object","required":["routing_id","status","engine","depot","load_orders","unrouted_orders"],"title":"RoutingResult"},"SessionOut":{"properties":{"user":{"type":"string","title":"User"},"type":{"type":"string","title":"Type"},"organization_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organization Id"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"}},"type":"object","required":["user","type"],"title":"SessionOut"},"StopOut":{"properties":{"delivery_sequence":{"type":"integer","title":"Delivery Sequence"},"order_id":{"type":"integer","title":"Order Id"},"external_key":{"type":"string","title":"External Key"},"customer_name":{"type":"string","title":"Customer Name"},"lat":{"type":"number","title":"Lat"},"lng":{"type":"number","title":"Lng"},"weight_kg":{"type":"number","title":"Weight Kg","default":0},"volume_m3":{"type":"number","title":"Volume M3","default":0},"value":{"type":"number","title":"Value","default":0},"eta":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eta","description":"Horário previsto de chegada (HH:MM)"},"delivery_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Note"}},"type":"object","required":["delivery_sequence","order_id","external_key","customer_name","lat","lng"],"title":"StopOut"},"UnroutedOut":{"properties":{"order_id":{"type":"integer","title":"Order Id"},"external_key":{"type":"string","title":"External Key"},"customer_name":{"type":"string","title":"Customer Name"},"reason":{"type":"string","title":"Reason","description":"Código enum: SEM_CAPACIDADE, JANELA_INVIAVEL, FORA_DA_JORNADA, ..."},"reason_label":{"type":"string","title":"Reason Label"}},"type":"object","required":["order_id","external_key","customer_name","reason","reason_label"],"title":"UnroutedOut"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}