← InicioFleetPay / Schema

DeclaracaoCiot

Estructura preservada del contrato versionado de la API.

Las descripciones técnicas se traducen del contrato versionado. Se conservan los identificadores y el JSON originales; se omiten los ejemplos de datos.

referencia_externastring | nullOpcional

Identificador de su sistema para este viaje. Es opcional y único por empresa: es la clave de idempotencia que impide que un reintento de red genere un segundo CIOT para el mismo flete.

No se envía a ANTT.

maxLength64
tipo_operacaostringObligatorio

lotacao para una carga que ocupa toda la operación; fracionado para cargas de varios contratantes en el mismo viaje. TAC agregado sigue fuera del alcance de esta versión.

"lotacao" · "fracionado"
contratadoobjectObligatorio

Quién transporta. Debe ser la empresa autenticada: esta ruta declara operaciones en nombre propio. Un contratado diferente devuelve 422 declaracao_bloqueada.

viagemobjectObligatorio
rotaobjectObligatorio
cargaobjectObligatorio
veiculosarrayObligatorio

De uno a diez vehículos por operación.

minItems1
maxItems10
motoristaobjectObligatorio
valoresobjectObligatorio
Definición JSON Original (Descripciones en Portugués)
{
  "type": "object",
  "required": [
    "tipo_operacao",
    "contratado",
    "viagem",
    "rota",
    "carga",
    "veiculos",
    "motorista",
    "documentos",
    "valores"
  ],
  "allOf": [
    {
      "if": {
        "properties": {
          "tipo_operacao": {
            "const": "fracionado"
          }
        },
        "required": [
          "tipo_operacao"
        ]
      },
      "then": {
        "properties": {
          "carga": {
            "required": [
              "contratantes"
            ]
          }
        }
      }
    }
  ],
  "properties": {
    "referencia_externa": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 64,
      "description": "O identificador **do seu sistema** para esta viagem. Opcional, e **único por\nempresa**: é a chave de idempotência que impede um retry de rede virar um segundo\nCIOT para o mesmo frete.\n\nNão vai para a ANTT.\n"
    },
    "tipo_operacao": {
      "type": "string",
      "enum": [
        "lotacao",
        "fracionado"
      ],
      "description": "`lotacao` para uma carga que ocupa a operação inteira; `fracionado` para cargas de\nvários contratantes na mesma viagem. TAC agregado continua fora desta versão.\n"
    },
    "contratado": {
      "type": "object",
      "required": [
        "documento",
        "nome",
        "rntrc"
      ],
      "description": "Quem transporta. **Tem de ser a empresa autenticada**: esta rota declara em nome\npróprio. Um contratado diferente responde `422 declaracao_bloqueada`.\n",
      "properties": {
        "documento": {
          "type": "string",
          "pattern": "^([0-9]{11}|[0-9]{14})$"
        },
        "nome": {
          "type": "string",
          "maxLength": 120
        },
        "rntrc": {
          "type": "string",
          "pattern": "^[0-9]{8,9}$"
        }
      }
    },
    "viagem": {
      "type": "object",
      "required": [
        "data_inicio",
        "data_fim",
        "distancia_percorrida"
      ],
      "properties": {
        "data_inicio": {
          "type": "string",
          "format": "date"
        },
        "data_fim": {
          "type": "string",
          "format": "date",
          "description": "Não pode ser anterior a `data_inicio`."
        },
        "distancia_percorrida": {
          "type": "integer",
          "minimum": 1,
          "description": "Em quilômetros."
        },
        "alto_desempenho": {
          "type": "boolean",
          "default": false
        },
        "retorno_vazio": {
          "type": "boolean",
          "default": false
        },
        "composicao_veicular": {
          "type": "boolean",
          "default": false
        }
      }
    },
    "rota": {
      "type": "object",
      "required": [
        "origem",
        "destino"
      ],
      "properties": {
        "origem": {
          "type": "object",
          "required": [
            "codigo_municipio",
            "cep",
            "uf"
          ],
          "properties": {
            "codigo_municipio": {
              "type": "string",
              "pattern": "^[0-9]{7}$"
            },
            "cep": {
              "type": "string",
              "pattern": "^[0-9]{8}$"
            },
            "uf": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2
            }
          }
        },
        "destino": {
          "type": "object",
          "required": [
            "codigo_municipio",
            "cep",
            "uf"
          ],
          "properties": {
            "codigo_municipio": {
              "type": "string",
              "pattern": "^[0-9]{7}$"
            },
            "cep": {
              "type": "string",
              "pattern": "^[0-9]{8}$"
            },
            "uf": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2
            }
          }
        },
        "trechos": {
          "type": "array",
          "maxItems": 100,
          "description": "Coletas e entregas intermediárias. Opcional; os extremos gerais continuam em\n`origem` e `destino`.\n",
          "items": {
            "type": "object",
            "required": [
              "origem_codigo_municipio",
              "destino_codigo_municipio",
              "distancia_percorrida"
            ],
            "properties": {
              "origem_codigo_municipio": {
                "type": "string",
                "pattern": "^[0-9]{7}$"
              },
              "destino_codigo_municipio": {
                "type": "string",
                "pattern": "^[0-9]{7}$"
              },
              "distancia_percorrida": {
                "type": "integer",
                "minimum": 1,
                "maximum": 99999
              }
            }
          }
        }
      }
    },
    "carga": {
      "type": "object",
      "required": [
        "codigo_tipo_carga",
        "codigo_natureza_carga",
        "peso_carga",
        "valor_mercadoria"
      ],
      "properties": {
        "codigo_tipo_carga": {
          "type": "integer",
          "minimum": 1
        },
        "codigo_natureza_carga": {
          "type": "string",
          "maxLength": 10
        },
        "peso_carga": {
          "type": "number",
          "format": "double",
          "minimum": 0.01
        },
        "valor_mercadoria": {
          "type": "number",
          "format": "double",
          "minimum": 0.01
        },
        "contratantes": {
          "type": "array",
          "minItems": 1,
          "maxItems": 100,
          "description": "Obrigatório quando `tipo_operacao` for `fracionado`.",
          "items": {
            "type": "object",
            "required": [
              "documento"
            ],
            "properties": {
              "documento": {
                "type": "string",
                "pattern": "^([0-9]{11}|[0-9]{14})$"
              }
            }
          }
        }
      }
    },
    "veiculos": {
      "type": "array",
      "minItems": 1,
      "maxItems": 10,
      "description": "De um a dez veículos por operação.",
      "items": {
        "type": "object",
        "required": [
          "placa",
          "eixos"
        ],
        "properties": {
          "placa": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}[0-9][A-Za-z0-9][0-9]{2}$"
          },
          "rntrc": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9]{8,9}$",
            "description": "Omitido, assume-se o RNTRC do contratado."
          },
          "eixos": {
            "type": "integer",
            "minimum": 2,
            "maximum": 9
          }
        }
      }
    },
    "motorista": {
      "type": "object",
      "required": [
        "cpf",
        "nome",
        "data_nascimento",
        "telefone"
      ],
      "properties": {
        "cpf": {
          "type": "string",
          "pattern": "^[0-9]{11}$"
        },
        "nome": {
          "type": "string",
          "maxLength": 120
        },
        "data_nascimento": {
          "type": "string",
          "format": "date"
        },
        "telefone": {
          "type": "string",
          "pattern": "^[0-9]{10,11}$",
          "description": "DDD + número, somente dígitos."
        }
      }
    },
    "documentos": {
      "type": "array",
      "minItems": 1,
      "maxItems": 100,
      "items": {
        "$ref": "#/components/schemas/DocumentoCargaCiot"
      }
    },
    "valores": {
      "type": "object",
      "required": [
        "frete_bruto"
      ],
      "properties": {
        "frete_bruto": {
          "type": "number",
          "format": "double",
          "minimum": 0.01,
          "description": "O valor do frete da viagem, em reais."
        },
        "pedagio": {
          "type": [
            "number",
            "null"
          ],
          "format": "double",
          "minimum": 0,
          "description": "Valor total de pedágio, quando houver. O Vale-Pedágio com detalhe de praças\nainda não é aceito por esta rota.\n"
        }
      }
    }
  }
}