---
title: "Consultar contrato"
method: GET
path: "/contracts/{id}"
tags: ["Contratos"]
---

# Consultar contrato

`GET /contracts/{id}`

## Request

- Base URL: `https://api.tiflux.com/api/v2`
- URL: `https://api.tiflux.com/api/v2/contracts/{id}`
- Auth: HTTP bearer

Retorna os dados de um contrato individual, incluindo o último adendo.

Os atributos do adendo variam conforme a modalidade do contrato. Grupos de contrato (modalidade Compartilhado) são consultados em `GET /contract-groups/{id}`: use o campo `kind` da listagem para saber qual rota consultar. Contratos que compõem um grupo não são consultados nesta rota e respondem 404.

> Os campos monetários do adendo e dos itens serão exibidos apenas para usuários com a permissão <span style="white-space: nowrap; margin:1px; padding:1px 8px; font-weight:bold; border-radius:12px;  background-color: var(--light-red, var(--input-bg)); color:var(--red); border:1px solid var(--red)">Visualizar valores dos tickets</span>. Caso o usuário não possua esta permissão, esses campos retornarão `"--"` na resposta.

## Response `200`

- union
  - object: Contrato gratuito
    - `id` number, required: Identificador do contrato
    - `kind` 'contract', required: Origem do registro
    - `name` string, required: Nome do contrato
    - `active` boolean, required: Indica se o contrato está ativo
    - `expiration_date` string, nullable, required: Data de expiração do contrato
    - `duration` number, nullable, required: Duração do contrato em meses
    - `automatic_renewal` boolean, required: Renovação automática
    - `permit_appointments_readjustment` boolean: Permite apontamentos quando pendente de reajuste
    - `allow_appointment` boolean: Indica se o contrato aparece como opção para novos apontamentos
    - `billing_in_batch` boolean, required: Faturamento em lote
    - `automatic_billing` boolean, required: Faturamento automático
    - `billing_days_before` number, nullable, required: Faturar em quantos dias antes. Nulo quando o faturamento automático está desabilitado
    - `technical_observations` string, nullable: Observações técnicas
    - `contract_group_id` number, nullable, required: Identificador do grupo de contrato, quando o contrato compõe um grupo
    - `created_at` string, required: Data de criação do contrato
    - `updated_at` string, required: Data da última alteração do contrato
    - `cancelled` boolean, required: Contrato cancelado: o cancelamento do último adendo já ocorreu
    - `cancellation_scheduled` boolean, required: Cancelamento agendado para uma data futura
    - `inactive` boolean, required: Contrato inativo: cancelado ou expirado
    - `expired` boolean, required: Contrato com a data de expiração vencida
    - `readjust` boolean, required: Contrato pendente de reajuste
    - `billed` boolean, required: Contrato com algum faturamento gerado
    - `has_appointments` boolean, required: Contrato com apontamentos lançados
    - `billing_modality` 'Free' | 'Credit' | 'Shared' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours' | 'null', nullable, required: Modalidade usada no faturamento do contrato, gravada na criação. Nula em contratos antigos
    - `files` object[], required: Arquivos anexados. A URL é assinada e expira em 72 horas
      - `id` number, required: Identificador do arquivo
      - `file_name` string, required: Nome do arquivo
      - `content_type` string, nullable, required: Tipo do arquivo
      - `size` number, nullable, required: Tamanho do arquivo em bytes
      - `url` string, required: URL temporária para download
    - `notifications` object[], required: E-mails avisados antes do vencimento e do reajuste
      - `id` number, required: Identificador da notificação
      - `email` string, required: E-mail avisado
      - `period` number, required: Antecedência do aviso, em dias
      - `cancellation` boolean, nullable, required: Avisa o vencimento do contrato?
      - `readjust` boolean, nullable, required: Avisa o reajuste do contrato?
    - `shifts` object[], required: Deslocamentos ativos. Os removidos na tela do contrato ficam de fora
      - `id` number, required: Identificador do deslocamento
      - `name` string, required: Nome do deslocamento
      - `value` union, required: Valor do deslocamento
        - number, nullable
        - '--'
      - `qtd_per_period` number, nullable, required: Quantidade de deslocamentos inclusos por período
    - `consumption_reminder` object, required: **Depreciado**: use `consumption_reminders`. Formato antigo, de um lembrete só, montado a partir do primeiro lembrete de `consumption_reminders`. Para usuário-cliente vem sem lembrete (`notification` false, `percent` e `emails` nulos).
      - `notification` boolean, required: Se o primeiro lembrete tem porcentagem e e-mail cadastrados
      - `percent` number, nullable, required: (%) Menor porcentagem do primeiro lembrete
      - `emails` string, nullable, required: E-mails do primeiro lembrete, separados por vírgula
    - `consumption_reminders` object[], required: Lembretes de consumo, do mais antigo para o mais novo. Cada lembrete avisa os e-mails quando o consumo do ciclo atinge cada porcentagem. Vazio para usuário-cliente.
      - `id` number, required: Identificador do lembrete
      - `percentages` number[], required: (%) Porcentagens de consumo que disparam o aviso
      - `emails` string[], required: E-mails que recebem o aviso
      - `alert_scope` 'contract_only' | 'shifts_only' | 'contract_and_shifts', required: Consumo avisado: `contract_only` (contrato), `shifts_only` (deslocamentos) ou `contract_and_shifts` (os dois). Deslocamentos só valem para Horas, Limite de atendimento e Horas cumulativas; nas demais modalidades é sempre `contract_only`
    - `client` object, required: Objeto contendo informações sobre o cliente associado ao contrato
      - `id` number, required: Identificador do cliente
      - `name` string, required: Nome do cliente
    - `contract_type` object, required: Objeto contendo informações sobre o tipo de contrato
      - `id` number, required: Identificador do tipo de contrato
      - `name` string, required: Nome do tipo de contrato
      - `modality` 'Free' | 'Credit' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours', required: Nome da modalidade do contrato
    - `last_rider` object, nullable, required: Último adendo do contrato
      - `id` number, required: Identificador do adendo
      - `rider_number` number, required: Número do adendo
      - `release` number, required: Número da versão do adendo
      - `due_day` number, required: Dia de vencimento
      - `description` string, nullable, required: Descrição do adendo
      - `value` union, required: Valor mensal
        - number, nullable
        - '--'
      - `discount_value` union, required: Desconto
        - number, nullable
        - '--'
      - `discount_type` string, nullable, required: Tipo de desconto
      - `start_date` string, required: Data de início da vigência do adendo
      - `cancel_date` string, required: Data de término da vigência do adendo
      - `cancelled` boolean, required: Indica se o adendo foi cancelado
      - `status` number, nullable, required: Situação do adendo
      - `duration` number, nullable, required: Duração do adendo em meses
      - `billing` number, required: Momento do faturamento: `0` antecipado, `1` posterior
      - `billing_name` string, required: Momento do faturamento por extenso
      - `period` number, required: Periodicidade do faturamento em meses
      - `period_name` string, required: Periodicidade do faturamento por extenso
      - `closing_period` number, nullable, required: Ciclo de fechamento em meses
      - `closing_period_name` string, required: Ciclo de fechamento por extenso
      - `changed_fields` string[], nullable, required: Campos alterados neste adendo
      - `expiration_date_view` string, nullable, required: Data de expiração exibida na tela do contrato
      - `contract_duration_view` number, nullable, required: Duração do contrato exibida na tela do contrato
      - `contract_group_id` number, nullable, required: Identificador do grupo de contrato
      - `created_by` object, required: Usuário que criou o adendo
        - `id` number, nullable, required: Identificador do usuário
        - `name` string, nullable, required: Nome do usuário
      - `max_equipments` number, nullable, required: Quantidade de equipamentos inclusos
      - `additional_equipment_value` union, required: Valor por equipamento adicional
        - number, nullable
        - '--'
  - object: Contrato de crédito
    - `id` number, required: Identificador do contrato
    - `kind` 'contract', required: Origem do registro
    - `name` string, required: Nome do contrato
    - `active` boolean, required: Indica se o contrato está ativo
    - `expiration_date` string, nullable, required: Data de expiração do contrato
    - `duration` number, nullable, required: Duração do contrato em meses
    - `automatic_renewal` boolean, required: Renovação automática
    - `permit_appointments_readjustment` boolean: Permite apontamentos quando pendente de reajuste
    - `allow_appointment` boolean: Indica se o contrato aparece como opção para novos apontamentos
    - `billing_in_batch` boolean, required: Faturamento em lote
    - `automatic_billing` boolean, required: Faturamento automático
    - `billing_days_before` number, nullable, required: Faturar em quantos dias antes. Nulo quando o faturamento automático está desabilitado
    - `technical_observations` string, nullable: Observações técnicas
    - `contract_group_id` number, nullable, required: Identificador do grupo de contrato, quando o contrato compõe um grupo
    - `created_at` string, required: Data de criação do contrato
    - `updated_at` string, required: Data da última alteração do contrato
    - `cancelled` boolean, required: Contrato cancelado: o cancelamento do último adendo já ocorreu
    - `cancellation_scheduled` boolean, required: Cancelamento agendado para uma data futura
    - `inactive` boolean, required: Contrato inativo: cancelado ou expirado
    - `expired` boolean, required: Contrato com a data de expiração vencida
    - `readjust` boolean, required: Contrato pendente de reajuste
    - `billed` boolean, required: Contrato com algum faturamento gerado
    - `has_appointments` boolean, required: Contrato com apontamentos lançados
    - `billing_modality` 'Free' | 'Credit' | 'Shared' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours' | 'null', nullable, required: Modalidade usada no faturamento do contrato, gravada na criação. Nula em contratos antigos
    - `files` object[], required: Arquivos anexados. A URL é assinada e expira em 72 horas
      - `id` number, required: Identificador do arquivo
      - `file_name` string, required: Nome do arquivo
      - `content_type` string, nullable, required: Tipo do arquivo
      - `size` number, nullable, required: Tamanho do arquivo em bytes
      - `url` string, required: URL temporária para download
    - `notifications` object[], required: E-mails avisados antes do vencimento e do reajuste
      - `id` number, required: Identificador da notificação
      - `email` string, required: E-mail avisado
      - `period` number, required: Antecedência do aviso, em dias
      - `cancellation` boolean, nullable, required: Avisa o vencimento do contrato?
      - `readjust` boolean, nullable, required: Avisa o reajuste do contrato?
    - `shifts` object[], required: Deslocamentos ativos. Os removidos na tela do contrato ficam de fora
      - `id` number, required: Identificador do deslocamento
      - `name` string, required: Nome do deslocamento
      - `value` union, required: Valor do deslocamento
        - number, nullable
        - '--'
      - `qtd_per_period` number, nullable, required: Quantidade de deslocamentos inclusos por período
    - `consumption_reminder` object, required: **Depreciado**: use `consumption_reminders`. Formato antigo, de um lembrete só, montado a partir do primeiro lembrete de `consumption_reminders`. Para usuário-cliente vem sem lembrete (`notification` false, `percent` e `emails` nulos).
      - `notification` boolean, required: Se o primeiro lembrete tem porcentagem e e-mail cadastrados
      - `percent` number, nullable, required: (%) Menor porcentagem do primeiro lembrete
      - `emails` string, nullable, required: E-mails do primeiro lembrete, separados por vírgula
    - `consumption_reminders` object[], required: Lembretes de consumo, do mais antigo para o mais novo. Cada lembrete avisa os e-mails quando o consumo do ciclo atinge cada porcentagem. Vazio para usuário-cliente.
      - `id` number, required: Identificador do lembrete
      - `percentages` number[], required: (%) Porcentagens de consumo que disparam o aviso
      - `emails` string[], required: E-mails que recebem o aviso
      - `alert_scope` 'contract_only' | 'shifts_only' | 'contract_and_shifts', required: Consumo avisado: `contract_only` (contrato), `shifts_only` (deslocamentos) ou `contract_and_shifts` (os dois). Deslocamentos só valem para Horas, Limite de atendimento e Horas cumulativas; nas demais modalidades é sempre `contract_only`
    - `client` object, required: Objeto contendo informações sobre o cliente associado ao contrato
      - `id` number, required: Identificador do cliente
      - `name` string, required: Nome do cliente
    - `contract_type` object, required: Objeto contendo informações sobre o tipo de contrato
      - `id` number, required: Identificador do tipo de contrato
      - `name` string, required: Nome do tipo de contrato
      - `modality` 'Free' | 'Credit' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours', required: Nome da modalidade do contrato
    - `last_rider` object, nullable, required: Último adendo do contrato
      - `id` number, required: Identificador do adendo
      - `rider_number` number, required: Número do adendo
      - `release` number, required: Número da versão do adendo
      - `due_day` number, required: Dia de vencimento
      - `description` string, nullable, required: Descrição do adendo
      - `value` union, required: Valor mensal
        - number, nullable
        - '--'
      - `discount_value` union, required: Desconto
        - number, nullable
        - '--'
      - `discount_type` string, nullable, required: Tipo de desconto
      - `start_date` string, required: Data de início da vigência do adendo
      - `cancel_date` string, required: Data de término da vigência do adendo
      - `cancelled` boolean, required: Indica se o adendo foi cancelado
      - `status` number, nullable, required: Situação do adendo
      - `duration` number, nullable, required: Duração do adendo em meses
      - `billing` number, required: Momento do faturamento: `0` antecipado, `1` posterior
      - `billing_name` string, required: Momento do faturamento por extenso
      - `period` number, required: Periodicidade do faturamento em meses
      - `period_name` string, required: Periodicidade do faturamento por extenso
      - `closing_period` number, nullable, required: Ciclo de fechamento em meses
      - `closing_period_name` string, required: Ciclo de fechamento por extenso
      - `changed_fields` string[], nullable, required: Campos alterados neste adendo
      - `expiration_date_view` string, nullable, required: Data de expiração exibida na tela do contrato
      - `contract_duration_view` number, nullable, required: Duração do contrato exibida na tela do contrato
      - `contract_group_id` number, nullable, required: Identificador do grupo de contrato
      - `created_by` object, required: Usuário que criou o adendo
        - `id` number, nullable, required: Identificador do usuário
        - `name` string, nullable, required: Nome do usuário
      - `external_value` union, required: Valor hora externo
        - number, nullable
        - '--'
      - `internal_value` union, required: Valor hora interno
        - number, nullable
        - '--'
      - `remote_value` union, required: Valor hora remoto
        - number, nullable
        - '--'
      - `tax` union, required: Valor fixo mensal
        - number, nullable
        - '--'
  - object: Contrato de horas
    - `id` number, required: Identificador do contrato
    - `kind` 'contract', required: Origem do registro
    - `name` string, required: Nome do contrato
    - `active` boolean, required: Indica se o contrato está ativo
    - `expiration_date` string, nullable, required: Data de expiração do contrato
    - `duration` number, nullable, required: Duração do contrato em meses
    - `automatic_renewal` boolean, required: Renovação automática
    - `permit_appointments_readjustment` boolean: Permite apontamentos quando pendente de reajuste
    - `allow_appointment` boolean: Indica se o contrato aparece como opção para novos apontamentos
    - `billing_in_batch` boolean, required: Faturamento em lote
    - `automatic_billing` boolean, required: Faturamento automático
    - `billing_days_before` number, nullable, required: Faturar em quantos dias antes. Nulo quando o faturamento automático está desabilitado
    - `technical_observations` string, nullable: Observações técnicas
    - `contract_group_id` number, nullable, required: Identificador do grupo de contrato, quando o contrato compõe um grupo
    - `created_at` string, required: Data de criação do contrato
    - `updated_at` string, required: Data da última alteração do contrato
    - `cancelled` boolean, required: Contrato cancelado: o cancelamento do último adendo já ocorreu
    - `cancellation_scheduled` boolean, required: Cancelamento agendado para uma data futura
    - `inactive` boolean, required: Contrato inativo: cancelado ou expirado
    - `expired` boolean, required: Contrato com a data de expiração vencida
    - `readjust` boolean, required: Contrato pendente de reajuste
    - `billed` boolean, required: Contrato com algum faturamento gerado
    - `has_appointments` boolean, required: Contrato com apontamentos lançados
    - `billing_modality` 'Free' | 'Credit' | 'Shared' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours' | 'null', nullable, required: Modalidade usada no faturamento do contrato, gravada na criação. Nula em contratos antigos
    - `files` object[], required: Arquivos anexados. A URL é assinada e expira em 72 horas
      - `id` number, required: Identificador do arquivo
      - `file_name` string, required: Nome do arquivo
      - `content_type` string, nullable, required: Tipo do arquivo
      - `size` number, nullable, required: Tamanho do arquivo em bytes
      - `url` string, required: URL temporária para download
    - `notifications` object[], required: E-mails avisados antes do vencimento e do reajuste
      - `id` number, required: Identificador da notificação
      - `email` string, required: E-mail avisado
      - `period` number, required: Antecedência do aviso, em dias
      - `cancellation` boolean, nullable, required: Avisa o vencimento do contrato?
      - `readjust` boolean, nullable, required: Avisa o reajuste do contrato?
    - `shifts` object[], required: Deslocamentos ativos. Os removidos na tela do contrato ficam de fora
      - `id` number, required: Identificador do deslocamento
      - `name` string, required: Nome do deslocamento
      - `value` union, required: Valor do deslocamento
        - number, nullable
        - '--'
      - `qtd_per_period` number, nullable, required: Quantidade de deslocamentos inclusos por período
    - `consumption_reminder` object, required: **Depreciado**: use `consumption_reminders`. Formato antigo, de um lembrete só, montado a partir do primeiro lembrete de `consumption_reminders`. Para usuário-cliente vem sem lembrete (`notification` false, `percent` e `emails` nulos).
      - `notification` boolean, required: Se o primeiro lembrete tem porcentagem e e-mail cadastrados
      - `percent` number, nullable, required: (%) Menor porcentagem do primeiro lembrete
      - `emails` string, nullable, required: E-mails do primeiro lembrete, separados por vírgula
    - `consumption_reminders` object[], required: Lembretes de consumo, do mais antigo para o mais novo. Cada lembrete avisa os e-mails quando o consumo do ciclo atinge cada porcentagem. Vazio para usuário-cliente.
      - `id` number, required: Identificador do lembrete
      - `percentages` number[], required: (%) Porcentagens de consumo que disparam o aviso
      - `emails` string[], required: E-mails que recebem o aviso
      - `alert_scope` 'contract_only' | 'shifts_only' | 'contract_and_shifts', required: Consumo avisado: `contract_only` (contrato), `shifts_only` (deslocamentos) ou `contract_and_shifts` (os dois). Deslocamentos só valem para Horas, Limite de atendimento e Horas cumulativas; nas demais modalidades é sempre `contract_only`
    - `client` object, required: Objeto contendo informações sobre o cliente associado ao contrato
      - `id` number, required: Identificador do cliente
      - `name` string, required: Nome do cliente
    - `contract_type` object, required: Objeto contendo informações sobre o tipo de contrato
      - `id` number, required: Identificador do tipo de contrato
      - `name` string, required: Nome do tipo de contrato
      - `modality` 'Free' | 'Credit' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours', required: Nome da modalidade do contrato
    - `last_rider` object, nullable, required: Último adendo do contrato
      - `id` number, required: Identificador do adendo
      - `rider_number` number, required: Número do adendo
      - `release` number, required: Número da versão do adendo
      - `due_day` number, required: Dia de vencimento
      - `description` string, nullable, required: Descrição do adendo
      - `value` union, required: Valor mensal
        - number, nullable
        - '--'
      - `discount_value` union, required: Desconto
        - number, nullable
        - '--'
      - `discount_type` string, nullable, required: Tipo de desconto
      - `start_date` string, required: Data de início da vigência do adendo
      - `cancel_date` string, required: Data de término da vigência do adendo
      - `cancelled` boolean, required: Indica se o adendo foi cancelado
      - `status` number, nullable, required: Situação do adendo
      - `duration` number, nullable, required: Duração do adendo em meses
      - `billing` number, required: Momento do faturamento: `0` antecipado, `1` posterior
      - `billing_name` string, required: Momento do faturamento por extenso
      - `period` number, required: Periodicidade do faturamento em meses
      - `period_name` string, required: Periodicidade do faturamento por extenso
      - `closing_period` number, nullable, required: Ciclo de fechamento em meses
      - `closing_period_name` string, required: Ciclo de fechamento por extenso
      - `changed_fields` string[], nullable, required: Campos alterados neste adendo
      - `expiration_date_view` string, nullable, required: Data de expiração exibida na tela do contrato
      - `contract_duration_view` number, nullable, required: Duração do contrato exibida na tela do contrato
      - `contract_group_id` number, nullable, required: Identificador do grupo de contrato
      - `created_by` object, required: Usuário que criou o adendo
        - `id` number, nullable, required: Identificador do usuário
        - `name` string, nullable, required: Nome do usuário
      - `qtd_hours` string, required: Horas por ciclo de fechamento, no formato HH:MM
      - `qtd_hours_decimal` number, nullable, required: Horas por ciclo de fechamento, em decimal
      - `surplus_hour_value` union, required: Valor da hora excedente
        - number, nullable
        - '--'
  - object: Contrato de SaaS/Produto
    - `id` number, required: Identificador do contrato
    - `kind` 'contract', required: Origem do registro
    - `name` string, required: Nome do contrato
    - `active` boolean, required: Indica se o contrato está ativo
    - `expiration_date` string, nullable, required: Data de expiração do contrato
    - `duration` number, nullable, required: Duração do contrato em meses
    - `automatic_renewal` boolean, required: Renovação automática
    - `permit_appointments_readjustment` boolean: Permite apontamentos quando pendente de reajuste
    - `allow_appointment` boolean: Indica se o contrato aparece como opção para novos apontamentos
    - `billing_in_batch` boolean, required: Faturamento em lote
    - `automatic_billing` boolean, required: Faturamento automático
    - `billing_days_before` number, nullable, required: Faturar em quantos dias antes. Nulo quando o faturamento automático está desabilitado
    - `technical_observations` string, nullable: Observações técnicas
    - `contract_group_id` number, nullable, required: Identificador do grupo de contrato, quando o contrato compõe um grupo
    - `created_at` string, required: Data de criação do contrato
    - `updated_at` string, required: Data da última alteração do contrato
    - `cancelled` boolean, required: Contrato cancelado: o cancelamento do último adendo já ocorreu
    - `cancellation_scheduled` boolean, required: Cancelamento agendado para uma data futura
    - `inactive` boolean, required: Contrato inativo: cancelado ou expirado
    - `expired` boolean, required: Contrato com a data de expiração vencida
    - `readjust` boolean, required: Contrato pendente de reajuste
    - `billed` boolean, required: Contrato com algum faturamento gerado
    - `has_appointments` boolean, required: Contrato com apontamentos lançados
    - `billing_modality` 'Free' | 'Credit' | 'Shared' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours' | 'null', nullable, required: Modalidade usada no faturamento do contrato, gravada na criação. Nula em contratos antigos
    - `files` object[], required: Arquivos anexados. A URL é assinada e expira em 72 horas
      - `id` number, required: Identificador do arquivo
      - `file_name` string, required: Nome do arquivo
      - `content_type` string, nullable, required: Tipo do arquivo
      - `size` number, nullable, required: Tamanho do arquivo em bytes
      - `url` string, required: URL temporária para download
    - `notifications` object[], required: E-mails avisados antes do vencimento e do reajuste
      - `id` number, required: Identificador da notificação
      - `email` string, required: E-mail avisado
      - `period` number, required: Antecedência do aviso, em dias
      - `cancellation` boolean, nullable, required: Avisa o vencimento do contrato?
      - `readjust` boolean, nullable, required: Avisa o reajuste do contrato?
    - `shifts` object[], required: Deslocamentos ativos. Os removidos na tela do contrato ficam de fora
      - `id` number, required: Identificador do deslocamento
      - `name` string, required: Nome do deslocamento
      - `value` union, required: Valor do deslocamento
        - number, nullable
        - '--'
      - `qtd_per_period` number, nullable, required: Quantidade de deslocamentos inclusos por período
    - `consumption_reminder` object, required: **Depreciado**: use `consumption_reminders`. Formato antigo, de um lembrete só, montado a partir do primeiro lembrete de `consumption_reminders`. Para usuário-cliente vem sem lembrete (`notification` false, `percent` e `emails` nulos).
      - `notification` boolean, required: Se o primeiro lembrete tem porcentagem e e-mail cadastrados
      - `percent` number, nullable, required: (%) Menor porcentagem do primeiro lembrete
      - `emails` string, nullable, required: E-mails do primeiro lembrete, separados por vírgula
    - `consumption_reminders` object[], required: Lembretes de consumo, do mais antigo para o mais novo. Cada lembrete avisa os e-mails quando o consumo do ciclo atinge cada porcentagem. Vazio para usuário-cliente.
      - `id` number, required: Identificador do lembrete
      - `percentages` number[], required: (%) Porcentagens de consumo que disparam o aviso
      - `emails` string[], required: E-mails que recebem o aviso
      - `alert_scope` 'contract_only' | 'shifts_only' | 'contract_and_shifts', required: Consumo avisado: `contract_only` (contrato), `shifts_only` (deslocamentos) ou `contract_and_shifts` (os dois). Deslocamentos só valem para Horas, Limite de atendimento e Horas cumulativas; nas demais modalidades é sempre `contract_only`
    - `client` object, required: Objeto contendo informações sobre o cliente associado ao contrato
      - `id` number, required: Identificador do cliente
      - `name` string, required: Nome do cliente
    - `contract_type` object, required: Objeto contendo informações sobre o tipo de contrato
      - `id` number, required: Identificador do tipo de contrato
      - `name` string, required: Nome do tipo de contrato
      - `modality` 'Free' | 'Credit' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours', required: Nome da modalidade do contrato
    - `last_rider` object, nullable, required: Último adendo do contrato
      - `id` number, required: Identificador do adendo
      - `rider_number` number, required: Número do adendo
      - `release` number, required: Número da versão do adendo
      - `due_day` number, required: Dia de vencimento
      - `description` string, nullable, required: Descrição do adendo
      - `value` union, required: Valor mensal
        - number, nullable
        - '--'
      - `discount_value` union, required: Desconto
        - number, nullable
        - '--'
      - `discount_type` string, nullable, required: Tipo de desconto
      - `start_date` string, required: Data de início da vigência do adendo
      - `cancel_date` string, required: Data de término da vigência do adendo
      - `cancelled` boolean, required: Indica se o adendo foi cancelado
      - `status` number, nullable, required: Situação do adendo
      - `duration` number, nullable, required: Duração do adendo em meses
      - `billing` number, required: Momento do faturamento: `0` antecipado, `1` posterior
      - `billing_name` string, required: Momento do faturamento por extenso
      - `period` number, required: Periodicidade do faturamento em meses
      - `period_name` string, required: Periodicidade do faturamento por extenso
      - `closing_period` number, nullable, required: Ciclo de fechamento em meses
      - `closing_period_name` string, required: Ciclo de fechamento por extenso
      - `changed_fields` string[], nullable, required: Campos alterados neste adendo
      - `expiration_date_view` string, nullable, required: Data de expiração exibida na tela do contrato
      - `contract_duration_view` number, nullable, required: Duração do contrato exibida na tela do contrato
      - `contract_group_id` number, nullable, required: Identificador do grupo de contrato
      - `created_by` object, required: Usuário que criou o adendo
        - `id` number, nullable, required: Identificador do usuário
        - `name` string, nullable, required: Nome do usuário
      - `items` object[], required: Itens (licenças) contratados no adendo
        - `id` number, required: Identificador do item
        - `name` string, required: Nome do item
        - `qtd` number, nullable, required: Quantidade contratada
        - `value` union, required: Valor unitário
          - number, nullable
          - '--'
        - `total_value` union, required: Valor total do item: quantidade x valor unitário
          - number, nullable
          - '--'
  - object: Contrato por atendimento
    - `id` number, required: Identificador do contrato
    - `kind` 'contract', required: Origem do registro
    - `name` string, required: Nome do contrato
    - `active` boolean, required: Indica se o contrato está ativo
    - `expiration_date` string, nullable, required: Data de expiração do contrato
    - `duration` number, nullable, required: Duração do contrato em meses
    - `automatic_renewal` boolean, required: Renovação automática
    - `permit_appointments_readjustment` boolean: Permite apontamentos quando pendente de reajuste
    - `allow_appointment` boolean: Indica se o contrato aparece como opção para novos apontamentos
    - `billing_in_batch` boolean, required: Faturamento em lote
    - `automatic_billing` boolean, required: Faturamento automático
    - `billing_days_before` number, nullable, required: Faturar em quantos dias antes. Nulo quando o faturamento automático está desabilitado
    - `technical_observations` string, nullable: Observações técnicas
    - `contract_group_id` number, nullable, required: Identificador do grupo de contrato, quando o contrato compõe um grupo
    - `created_at` string, required: Data de criação do contrato
    - `updated_at` string, required: Data da última alteração do contrato
    - `cancelled` boolean, required: Contrato cancelado: o cancelamento do último adendo já ocorreu
    - `cancellation_scheduled` boolean, required: Cancelamento agendado para uma data futura
    - `inactive` boolean, required: Contrato inativo: cancelado ou expirado
    - `expired` boolean, required: Contrato com a data de expiração vencida
    - `readjust` boolean, required: Contrato pendente de reajuste
    - `billed` boolean, required: Contrato com algum faturamento gerado
    - `has_appointments` boolean, required: Contrato com apontamentos lançados
    - `billing_modality` 'Free' | 'Credit' | 'Shared' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours' | 'null', nullable, required: Modalidade usada no faturamento do contrato, gravada na criação. Nula em contratos antigos
    - `files` object[], required: Arquivos anexados. A URL é assinada e expira em 72 horas
      - `id` number, required: Identificador do arquivo
      - `file_name` string, required: Nome do arquivo
      - `content_type` string, nullable, required: Tipo do arquivo
      - `size` number, nullable, required: Tamanho do arquivo em bytes
      - `url` string, required: URL temporária para download
    - `notifications` object[], required: E-mails avisados antes do vencimento e do reajuste
      - `id` number, required: Identificador da notificação
      - `email` string, required: E-mail avisado
      - `period` number, required: Antecedência do aviso, em dias
      - `cancellation` boolean, nullable, required: Avisa o vencimento do contrato?
      - `readjust` boolean, nullable, required: Avisa o reajuste do contrato?
    - `shifts` object[], required: Deslocamentos ativos. Os removidos na tela do contrato ficam de fora
      - `id` number, required: Identificador do deslocamento
      - `name` string, required: Nome do deslocamento
      - `value` union, required: Valor do deslocamento
        - number, nullable
        - '--'
      - `qtd_per_period` number, nullable, required: Quantidade de deslocamentos inclusos por período
    - `consumption_reminder` object, required: **Depreciado**: use `consumption_reminders`. Formato antigo, de um lembrete só, montado a partir do primeiro lembrete de `consumption_reminders`. Para usuário-cliente vem sem lembrete (`notification` false, `percent` e `emails` nulos).
      - `notification` boolean, required: Se o primeiro lembrete tem porcentagem e e-mail cadastrados
      - `percent` number, nullable, required: (%) Menor porcentagem do primeiro lembrete
      - `emails` string, nullable, required: E-mails do primeiro lembrete, separados por vírgula
    - `consumption_reminders` object[], required: Lembretes de consumo, do mais antigo para o mais novo. Cada lembrete avisa os e-mails quando o consumo do ciclo atinge cada porcentagem. Vazio para usuário-cliente.
      - `id` number, required: Identificador do lembrete
      - `percentages` number[], required: (%) Porcentagens de consumo que disparam o aviso
      - `emails` string[], required: E-mails que recebem o aviso
      - `alert_scope` 'contract_only' | 'shifts_only' | 'contract_and_shifts', required: Consumo avisado: `contract_only` (contrato), `shifts_only` (deslocamentos) ou `contract_and_shifts` (os dois). Deslocamentos só valem para Horas, Limite de atendimento e Horas cumulativas; nas demais modalidades é sempre `contract_only`
    - `client` object, required: Objeto contendo informações sobre o cliente associado ao contrato
      - `id` number, required: Identificador do cliente
      - `name` string, required: Nome do cliente
    - `contract_type` object, required: Objeto contendo informações sobre o tipo de contrato
      - `id` number, required: Identificador do tipo de contrato
      - `name` string, required: Nome do tipo de contrato
      - `modality` 'Free' | 'Credit' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours', required: Nome da modalidade do contrato
    - `last_rider` object, nullable, required: Último adendo do contrato
      - `id` number, required: Identificador do adendo
      - `rider_number` number, required: Número do adendo
      - `release` number, required: Número da versão do adendo
      - `due_day` number, required: Dia de vencimento
      - `description` string, nullable, required: Descrição do adendo
      - `value` union, required: Valor mensal
        - number, nullable
        - '--'
      - `discount_value` union, required: Desconto
        - number, nullable
        - '--'
      - `discount_type` string, nullable, required: Tipo de desconto
      - `start_date` string, required: Data de início da vigência do adendo
      - `cancel_date` string, required: Data de término da vigência do adendo
      - `cancelled` boolean, required: Indica se o adendo foi cancelado
      - `status` number, nullable, required: Situação do adendo
      - `duration` number, nullable, required: Duração do adendo em meses
      - `billing` number, required: Momento do faturamento: `0` antecipado, `1` posterior
      - `billing_name` string, required: Momento do faturamento por extenso
      - `period` number, required: Periodicidade do faturamento em meses
      - `period_name` string, required: Periodicidade do faturamento por extenso
      - `closing_period` number, nullable, required: Ciclo de fechamento em meses
      - `closing_period_name` string, required: Ciclo de fechamento por extenso
      - `changed_fields` string[], nullable, required: Campos alterados neste adendo
      - `expiration_date_view` string, nullable, required: Data de expiração exibida na tela do contrato
      - `contract_duration_view` number, nullable, required: Duração do contrato exibida na tela do contrato
      - `contract_group_id` number, nullable, required: Identificador do grupo de contrato
      - `created_by` object, required: Usuário que criou o adendo
        - `id` number, nullable, required: Identificador do usuário
        - `name` string, nullable, required: Nome do usuário
      - `qtd_tickets` number, nullable, required: Quantidade de atendimentos por ciclo de fechamento
      - `surplus_ticket_value` union, required: Valor do atendimento excedente
        - number, nullable
        - '--'
  - object: Contrato de horas cumulativas
    - `id` number, required: Identificador do contrato
    - `kind` 'contract', required: Origem do registro
    - `name` string, required: Nome do contrato
    - `active` boolean, required: Indica se o contrato está ativo
    - `expiration_date` string, nullable, required: Data de expiração do contrato
    - `duration` number, nullable, required: Duração do contrato em meses
    - `automatic_renewal` boolean, required: Renovação automática
    - `permit_appointments_readjustment` boolean: Permite apontamentos quando pendente de reajuste
    - `allow_appointment` boolean: Indica se o contrato aparece como opção para novos apontamentos
    - `billing_in_batch` boolean, required: Faturamento em lote
    - `automatic_billing` boolean, required: Faturamento automático
    - `billing_days_before` number, nullable, required: Faturar em quantos dias antes. Nulo quando o faturamento automático está desabilitado
    - `technical_observations` string, nullable: Observações técnicas
    - `contract_group_id` number, nullable, required: Identificador do grupo de contrato, quando o contrato compõe um grupo
    - `created_at` string, required: Data de criação do contrato
    - `updated_at` string, required: Data da última alteração do contrato
    - `cancelled` boolean, required: Contrato cancelado: o cancelamento do último adendo já ocorreu
    - `cancellation_scheduled` boolean, required: Cancelamento agendado para uma data futura
    - `inactive` boolean, required: Contrato inativo: cancelado ou expirado
    - `expired` boolean, required: Contrato com a data de expiração vencida
    - `readjust` boolean, required: Contrato pendente de reajuste
    - `billed` boolean, required: Contrato com algum faturamento gerado
    - `has_appointments` boolean, required: Contrato com apontamentos lançados
    - `billing_modality` 'Free' | 'Credit' | 'Shared' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours' | 'null', nullable, required: Modalidade usada no faturamento do contrato, gravada na criação. Nula em contratos antigos
    - `files` object[], required: Arquivos anexados. A URL é assinada e expira em 72 horas
      - `id` number, required: Identificador do arquivo
      - `file_name` string, required: Nome do arquivo
      - `content_type` string, nullable, required: Tipo do arquivo
      - `size` number, nullable, required: Tamanho do arquivo em bytes
      - `url` string, required: URL temporária para download
    - `notifications` object[], required: E-mails avisados antes do vencimento e do reajuste
      - `id` number, required: Identificador da notificação
      - `email` string, required: E-mail avisado
      - `period` number, required: Antecedência do aviso, em dias
      - `cancellation` boolean, nullable, required: Avisa o vencimento do contrato?
      - `readjust` boolean, nullable, required: Avisa o reajuste do contrato?
    - `shifts` object[], required: Deslocamentos ativos. Os removidos na tela do contrato ficam de fora
      - `id` number, required: Identificador do deslocamento
      - `name` string, required: Nome do deslocamento
      - `value` union, required: Valor do deslocamento
        - number, nullable
        - '--'
      - `qtd_per_period` number, nullable, required: Quantidade de deslocamentos inclusos por período
    - `consumption_reminder` object, required: **Depreciado**: use `consumption_reminders`. Formato antigo, de um lembrete só, montado a partir do primeiro lembrete de `consumption_reminders`. Para usuário-cliente vem sem lembrete (`notification` false, `percent` e `emails` nulos).
      - `notification` boolean, required: Se o primeiro lembrete tem porcentagem e e-mail cadastrados
      - `percent` number, nullable, required: (%) Menor porcentagem do primeiro lembrete
      - `emails` string, nullable, required: E-mails do primeiro lembrete, separados por vírgula
    - `consumption_reminders` object[], required: Lembretes de consumo, do mais antigo para o mais novo. Cada lembrete avisa os e-mails quando o consumo do ciclo atinge cada porcentagem. Vazio para usuário-cliente.
      - `id` number, required: Identificador do lembrete
      - `percentages` number[], required: (%) Porcentagens de consumo que disparam o aviso
      - `emails` string[], required: E-mails que recebem o aviso
      - `alert_scope` 'contract_only' | 'shifts_only' | 'contract_and_shifts', required: Consumo avisado: `contract_only` (contrato), `shifts_only` (deslocamentos) ou `contract_and_shifts` (os dois). Deslocamentos só valem para Horas, Limite de atendimento e Horas cumulativas; nas demais modalidades é sempre `contract_only`
    - `client` object, required: Objeto contendo informações sobre o cliente associado ao contrato
      - `id` number, required: Identificador do cliente
      - `name` string, required: Nome do cliente
    - `contract_type` object, required: Objeto contendo informações sobre o tipo de contrato
      - `id` number, required: Identificador do tipo de contrato
      - `name` string, required: Nome do tipo de contrato
      - `modality` 'Free' | 'Credit' | 'Hours' | 'Saas/Product' | 'Per ticket' | 'Cumulative Hours', required: Nome da modalidade do contrato
    - `last_rider` object, nullable, required: Último adendo do contrato
      - `id` number, required: Identificador do adendo
      - `rider_number` number, required: Número do adendo
      - `release` number, required: Número da versão do adendo
      - `due_day` number, required: Dia de vencimento
      - `description` string, nullable, required: Descrição do adendo
      - `value` union, required: Valor mensal
        - number, nullable
        - '--'
      - `discount_value` union, required: Desconto
        - number, nullable
        - '--'
      - `discount_type` string, nullable, required: Tipo de desconto
      - `start_date` string, required: Data de início da vigência do adendo
      - `cancel_date` string, required: Data de término da vigência do adendo
      - `cancelled` boolean, required: Indica se o adendo foi cancelado
      - `status` number, nullable, required: Situação do adendo
      - `duration` number, nullable, required: Duração do adendo em meses
      - `billing` number, required: Momento do faturamento: `0` antecipado, `1` posterior
      - `billing_name` string, required: Momento do faturamento por extenso
      - `period` number, required: Periodicidade do faturamento em meses
      - `period_name` string, required: Periodicidade do faturamento por extenso
      - `closing_period` number, nullable, required: Ciclo de fechamento em meses
      - `closing_period_name` string, required: Ciclo de fechamento por extenso
      - `changed_fields` string[], nullable, required: Campos alterados neste adendo
      - `expiration_date_view` string, nullable, required: Data de expiração exibida na tela do contrato
      - `contract_duration_view` number, nullable, required: Duração do contrato exibida na tela do contrato
      - `contract_group_id` number, nullable, required: Identificador do grupo de contrato
      - `created_by` object, required: Usuário que criou o adendo
        - `id` number, nullable, required: Identificador do usuário
        - `name` string, nullable, required: Nome do usuário
      - `qtd_hours` string, required: Horas por ciclo de fechamento, no formato HH:MM
      - `qtd_hours_decimal` number, nullable, required: Horas por ciclo de fechamento, em decimal
      - `accumulation_cycle` number, nullable, required: Ciclo de acúmulo das horas, em meses
      - `surplus_hour_value` union, required: Valor da hora excedente
        - number, nullable
        - '--'

## Other responses

- `403`: ### **Problemas com permissão** Essa resposta significa que o seu usuário está autenticado corretamente, porém, não possui a permissão ou licença necessária para acessar essa rota
- `404`: ### **Contrato não encontrado**

## Changes

- **2026-10-27** `04c2680f0936`: 2 info
  - added `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5, subschema #6` to the response body `anyOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5, subschema #6` from the response body `anyOf` list for the response status `200`
- **2026-10-27** `98fe904b6118`: 2 info
  - added `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5, subschema #6` to the response body `anyOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5, subschema #6` from the response body `anyOf` list for the response status `200`
- **2026-10-20** `a3394f8abe2f`: 2 info
  - added `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5, subschema #6` to the response body `anyOf` list for the response status `200`
  - removed `subschema #1, subschema #2, subschema #3, subschema #4, subschema #5, subschema #6` from the response body `anyOf` list for the response status `200`
- **2026-10-01** `8934e614279d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/tiflux/apis/tiflux-official-api/changes/contracts/:id/get.md)

---

[API](https://skmtc.dev/tiflux/apis/tiflux-official-api.md) - [All operations](https://skmtc.dev/tiflux/apis/tiflux-official-api/llms.txt) - [OpenAPI document](https://skmtc.dev/tiflux/apis/tiflux-official-api/revisions/2936ac99a76d?raw)
