{
  "openapi": "3.1.1",
  "info": {
    "title": "V1 Partners API",
    "description": "A Partners API permite que sistemas parceiros operem contas do LetsSign: enviar documentos para\nassinatura eletrônica, acompanhar o andamento, baixar os arquivos assinados, manter contatos,\npastas, categorias e usuários, e receber notificações por webhook.\n\nEsta é a **v1**, que concentra a maior parte dos endpoints. Quatro deles estão obsoletos (as\nlistagens paginadas de documentos, categorias e usuários e o download com anexos) e têm\nsubstitutos na [Partners API v2](https://api.letssign.com.br/docs/partners/v2), que compartilha autenticação, contas e formato de\nerro com esta. Use a v2 sempre que o endpoint existir lá, e a v1 para o restante.\n\n## Ambiente\n\n| | |\n|---|---|\n| URL base | `https://api.letssign.com.br/` |\n| Documento OpenAPI (v1) | `https://api.letssign.com.br/docs/partners-v1/openapi.json` |\n| Documento OpenAPI (v2) | `https://api.letssign.com.br/docs/partners-v2/openapi.json` |\n| Coleção Postman (v1) | `https://api.letssign.com.br/docs/partners/v1.postman_collection.json` |\n| Coleção Postman (v2) | `https://api.letssign.com.br/docs/partners/v2.postman_collection.json` |\n\nSandbox e produção têm hosts e chaves distintos. A URL base acima é a do ambiente que serviu este documento.\n\n## Guias\n\nPara começar, leia o [Quickstart](https://api.letssign.com.br/docs/guides/quickstart). Os demais guias cobrem\n[autenticação e contas](https://api.letssign.com.br/docs/guides/autenticacao-e-contas), [webhooks](https://api.letssign.com.br/docs/guides/webhooks),\n[erros](https://api.letssign.com.br/docs/guides/erros), [paginação e filtros](https://api.letssign.com.br/docs/guides/paginacao-e-filtros),\n[limites e features](https://api.letssign.com.br/docs/guides/limites-e-features),\n[ferramentas e agentes de IA](https://api.letssign.com.br/docs/guides/ferramentas-e-agentes) (Postman, MCP e sandbox), a\n[migração da v1 para a v2](https://api.letssign.com.br/docs/guides/migracao-v1-para-v2) e o [changelog](https://api.letssign.com.br/docs/guides/changelog).\nCada guia também existe em Markdown, na mesma URL com `.md` no fim.\n\n## Autenticação\n\nToda requisição leva a chave de integração do parceiro no header `Authorization`, **sem prefixo**\n(não use `Bearer`):\n\n```http\nGET /partners/v1/accounts HTTP/1.1\nHost: api.letssign.com.br\nAuthorization: 3f9c0a1b2c3d4e5f6a7b8c9d0e1f2a3b\n```\n\n- A chave é emitida no cadastro do parceiro pela equipe LetsSign ou gerada pela própria conta na\n  área de integrações do aplicativo (https://app.letssign.com.br/). Regenerar a chave invalida a anterior na hora.\n- A chave identifica o **parceiro**; a **conta** vem no caminho da rota (`accountId`). Um parceiro\n  pode operar várias contas: comece por `GET /partners/v1/accounts` (`partners_v1_accounts_list`)\n  para descobrir os identificadores.\n- `401`: chave ausente ou inválida, conta não vinculada ao parceiro, período de teste da conta\n  expirado ou grupo de faturamento da conta sem plano ativo. Nos dois últimos casos o corpo é um\n  Problem Details com o motivo em `detail`.\n- `403`: o plano da conta não inclui uma feature exigida pela operação. Cada operação lista as\n  features exigidas na descrição e na extensão `x-required-features`; consulte\n  `GET /partners/v1/accounts/{accountId}/features` (`partners_v1_features_list`) para saber o que a\n  conta tem.\n\n## Conceitos\n\n- **Conta**: espaço de uma empresa ou pessoa no LetsSign. Documentos, contatos, pastas,\n  categorias, usuários e webhooks pertencem a uma conta.\n- **Documento**: arquivo PDF, DOC ou DOCX enviado para assinatura, com status do documento\n  (`EDocumentStatus`) e status de assinatura (`EDocumentSignatureStatus`).\n- **Signatário**: quem assina, identificado por e-mail, com método de autenticação\n  (`EAuthenticationMethod`: e-mail, SMS, WhatsApp, certificado digital, entre outros) e métodos\n  adicionais opcionais (`EAdditionalAuthenticationMethod`). O link de assinatura pode ir por e-mail,\n  SMS ou WhatsApp (`ESignatureLinkMethod`).\n- **Áreas de assinatura**: página e coordenadas onde assinatura e rubrica são carimbadas no PDF.\n- **Campos de informação**: dados adicionais gravados no documento, como um número de contrato.\n- **Modelos de formulário**: modelos que geram documentos a partir de campos preenchidos.\n- **Webhook**: URL da conta que recebe um `POST` a cada evento (documento enviado, signatário\n  assinou, assinaturas concluídas, status alterado, documento removido, formulário preenchido).\n\n## Fluxo típico\n\n1. Liste as contas do parceiro e escolha o `accountId`.\n2. Confira as features da conta.\n3. Crie o documento e solicite as assinaturas em uma única chamada\n   (`POST /partners/v1/accounts/{accountId}/document-signatures`,\n   `partners_v1_document_signatures_create_from_file`): o arquivo vai em base64 no campo\n   `contentFile`, junto da lista de signatários. A resposta traz o `id` do documento.\n4. Acompanhe por webhook (recomendado) ou por\n   `GET /partners/v1/accounts/{accountId}/document-signatures/{documentId}/status`.\n5. Ao concluir, obtenha a URL de download do arquivo assinado\n   (`GET /partners/v1/accounts/{accountId}/documents/{id}/download/signed`) ou com anexos\n   (`partners_v2_documents_download_with_attachments`). A resposta traz `name` e `url`; a URL é\n   temporária, então baixe logo após obtê-la.\n\n## Convenções\n\n- **Formato**: JSON em UTF-8, propriedades em `camelCase`. Enums são strings com os nomes exatos do\n  schema (ex.: `\"Email\"`, `\"WhatsApp\"`). Propriedades nulas são omitidas nas respostas.\n- **Datas**: ISO 8601 em UTC (`2026-09-03T14:05:00Z`). Envie sempre o fuso explícito.\n- **Identificadores**: UUID.\n- **Arquivos**: enviados como string base64 dentro do JSON; downloads devolvem uma URL temporária,\n  não o binário.\n- **Paginação (v2)**: parâmetros `page` (a partir de 1), `perPage`, `sortField` e `sortDirection`\n  (`Asc` ou `Desc`); cada listagem declara os campos de ordenação aceitos e o padrão. A resposta\n  traz `items`, `page`, `perPage`, `count` (total de registros), `totalPages`, `hasPreviousPage`,\n  `hasNextPage`, `previousPage` e `nextPage`. As listagens obsoletas da v1 usam `pageIndex`,\n  `pageSize`, `sortField` e `sortType`, e respondem `totalRecords`, `totalPages` e `pageSize`.\n- **Idioma**: mensagens de erro e comunicações com signatários em português do Brasil.\n- **Limites**: não há limite de requisições por chave hoje. Prefira webhooks a consultas repetidas.\n  O corpo de uma requisição aceita até 70 MB.\n- **Cache**: as listagens de pastas, grupos e modelos de formulário podem responder de um cache de\n  até 3 horas; criar uma pasta pela API invalida o cache de pastas da conta.\n\n## Erros\n\nErros seguem o padrão Problem Details (RFC 9457), com `Content-Type: application/problem+json`.\n\n| Status | Quando acontece |\n|---|---|\n| 400 | Regra de negócio não satisfeita: recurso inexistente na conta, documento em estado que não permite a operação, recurso do plano ausente, cota atingida. `errors` lista as mensagens. |\n| 401 | Ver Autenticação. Corpo vazio, exceto trial expirado e grupo sem plano ativo. |\n| 403 | Plano da conta sem a feature exigida. Corpo vazio. |\n| 404 | Recurso não encontrado, nas consultas por identificador que declaram 404. |\n| 422 | Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). `errors` lista as mensagens e `problems` aponta o campo de cada uma. |\n| 500 | Erro interno. Informe `requestId` e `traceId` ao suporte. |\n\nO corpo de erro (`ProblemDetailsResult`) tem `title`, `status`, `detail`, `instance` (método e\ncaminho), `errors` (lista de mensagens), `problems` (mensagem e `propertyName`) e os campos de\nrastreio `traceId`, `spanId` e `requestId`. Trate 400 e 422 como definitivos: repetir a mesma\nrequisição produz o mesmo erro.\n\n## Webhooks\n\nCadastre URLs em `POST /partners/v1/accounts/{accountId}/webhooks` (`partners_v1_webhooks_create`).\nCada evento é um `POST` JSON com `event`, `accountId`, `occurredAt` e `entity`. Os dez eventos,\ncom schema, exemplo e o que dispara cada um, estão no objeto `webhooks` deste documento e na\n[página inicial da documentação](https://api.letssign.com.br/docs).\n\n- Sem cabeçalho de assinatura: valide a origem pelo `accountId` e, se preciso, por um segredo na\n  própria URL.\n- Responda 2xx (200 ou 202) em até 20 segundos; falhas são repetidas em seguida, até 5\n  tentativas.\n- `occurredAt` é o instante da tentativa de envio e não há identificador de entrega: trate\n  repetições pelo conteúdo de `entity`. Não há garantia de ordem entre eventos.\n- No cadastro, um evento `Test` é enviado de imediato; o resultado fica em `available`.\n\n## Versões e obsolescência\n\nEndpoints obsoletos continuam respondendo, aparecem marcados como `deprecated` e indicam o\nsubstituto na descrição. Consulte a [Partners API v1](https://api.letssign.com.br/docs/partners/v1) e a\n[Partners API v2](https://api.letssign.com.br/docs/partners/v2).\n\n",
    "contact": {
      "name": "LetsSign",
      "url": "https://letssign.com.br"
    },
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.letssign.com.br",
      "description": "LetsSign"
    }
  ],
  "paths": {
    "/partners/v1/accounts/{accountId}/document-signature-roles": {
      "get": {
        "tags": [
          "DocumentSignatureRoles"
        ],
        "summary": "Lista de papéis de signatários (Assinar como)",
        "description": "Lista os nomes dos papéis de assinatura ativos na conta (o \"assina como\" do signatário), para uso\nem `role` ao criar ou editar signatários.\n\n- Toda conta nasce com os papéis padrão (`Parte`, `Testemunha`, `Aprovador`, `Contratante`,\n  `Contratada`, entre outros) e pode criar os seus no aplicativo.\n- `Aprovador` muda o fluxo: o signatário aprova em vez de assinar. Ele vem primeiro; os demais em\n  ordem alfabética.\n- Pode responder de um cache de até 1 hora. Somente leitura.",
        "operationId": "partners_v1_document_signature_roles_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "example": [
                  "Aprovador",
                  "Acionista",
                  "Advogado(a)",
                  "Contratada",
                  "Contratante",
                  "Parte",
                  "Testemunha"
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      }
    },
    "/partners/v1/accounts": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Lista de contas do parceiro",
        "description": "Lista as contas ativas que o parceiro pode operar com esta chave. É o ponto de partida da\nintegração: o `id` de cada conta é o `accountId` exigido nas demais rotas.\n\n- Só entram contas ativas e vinculadas ao parceiro; a ordem é alfabética por `name`.\n- Não há paginação: a lista vem completa.\n- Não exige feature de plano, apenas a chave válida.\n- Somente leitura, sem efeitos colaterais.",
        "operationId": "partners_v1_accounts_list",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartnerAccountDto"
                  }
                },
                "example": [
                  {
                    "id": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                    "name": "Imobiliária Horizonte",
                    "companyName": "Horizonte Negócios Imobiliários Ltda",
                    "createdAt": "2025-03-12T13:45:10Z",
                    "isTrial": false,
                    "initDate": "2025-03-12T00:00:00Z",
                    "personType": "Company",
                    "documentNumber": "12345678000195",
                    "active": true
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      }
    },
    "/partners/v1/accounts/{id}/change-logo": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Alterar logo da conta",
        "description": "Substitui o logotipo da conta, exibido nos e-mails enviados aos signatários e na página de\nassinatura. A imagem vai em base64 no campo `contentFile`, com o tipo MIME em `contentType`.\n\n- Formatos aceitos: PNG, JPG e JPEG. Não há limite próprio de tamanho além dos 70 MB do corpo.\n- Sobrescreve o logotipo anterior; repetir a chamada com a mesma imagem não tem efeito extra.\n- A URL devolvida em `logo` traz um parâmetro `q` que muda a cada troca, para invalidar caches.\n- A troca fica registrada na auditoria da conta. Não exige feature de plano.\n- Erros `400`: `Conta não existe`, `Parceiro não pode realizar operações na conta solicitada`,\n  `Não foi possível armazenar o logo`.",
        "operationId": "partners_v1_accounts_change_logo",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador da conta. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePartnerAccountLogo"
              },
              "example": {
                "contentType": "image/png",
                "contentFile": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerAccountLogoDto"
                },
                "example": {
                  "logo": "https://storage.exemplo.com.br/logos/0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f.png?q=638923456789012345"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/webhooks": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Lista de webhooks da conta",
        "description": "Lista as URLs de webhook cadastradas na conta, em ordem de criação. `available` reflete o\nresultado do evento `Test` enviado no cadastro.\n\n- Todas as URLs recebem todos os eventos da conta; não há filtro por evento.\n- Somente leitura, sem efeitos colaterais.\n\n**Features exigidas no plano da conta:** `integrations`.",
        "operationId": "partners_v1_webhooks_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AccountWebHookDto"
                  }
                },
                "example": [
                  {
                    "id": "0199143e-4a5b-7c6d-9e7f-8a9b0c1d2e3f",
                    "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                    "uri": "https://integracao.exemplo.com.br/letssign/webhook",
                    "available": true,
                    "createdAt": "2026-08-20T14:05:00Z"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `integrations`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "integrations"
        ]
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Adicionar webhook na conta",
        "description": "Cadastra uma URL para receber os eventos da conta por `POST` JSON: documento enviado, signatário\nadicionado, signatário assinou, assinaturas concluídas, status alterado, documento removido e\nformulário preenchido.\n\n- No cadastro, um evento `Test` é enviado de imediato; a URL deve responder `200` ou `202` em até\n  20 segundos. O resultado fica em `available`, mas a URL é gravada mesmo quando o teste falha.\n- Exige `http://` ou `https://`, host em minúsculas com TLD de 2 a 5 letras. A mesma URL não pode\n  ser cadastrada duas vezes na conta (`A URL ... já é usada como webhook na conta`, `400`).\n- Entregas com falha são repetidas até 5 vezes. Não há cabeçalho de assinatura: valide a origem\n  pelo `accountId` do payload e, se preciso, por um segredo na própria URL.\n- Os payloads de cada evento estão na página inicial da documentação.\n\n**Features exigidas no plano da conta:** `integrations`.",
        "operationId": "partners_v1_webhooks_create",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAccountWebhook"
              },
              "example": {
                "uri": "https://integracao.exemplo.com.br/letssign/webhook"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountWebHookDto"
                },
                "example": {
                  "id": "0199143e-4a5b-7c6d-9e7f-8a9b0c1d2e3f",
                  "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                  "uri": "https://integracao.exemplo.com.br/letssign/webhook",
                  "available": true,
                  "createdAt": "2026-08-20T14:05:00Z"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `integrations`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "integrations"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/webhooks/{id}": {
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Remover webhook da conta",
        "description": "Remove uma URL de webhook da conta. Eventos futuros deixam de ser enviados a ela.\n\n- Responde `400` quando o webhook não existe na conta, inclusive ao repetir a chamada.\n\n**Features exigidas no plano da conta:** `integrations`.",
        "operationId": "partners_v1_webhooks_delete",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do webhook, devolvido na criação e na listagem.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `integrations`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "integrations"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/categories": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "Lista paginada de categorias da conta",
        "description": "**Obsoleto.** Substituído por `partners_v2_categories_list` na [Partners API v2](https://api.letssign.com.br/docs/partners/v2),\ncom paginação por `page`/`perPage` e ordenação declarada. Continua respondendo, mas não recebe\nevolução.\n\nLista as categorias da conta, com filtro por nome e situação, paginada por `pageIndex` e\n`pageSize`. Somente leitura.\n\n**Features exigidas no plano da conta:** `categories`.",
        "operationId": "partners_v1_categories_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Filtra categorias cujo nome contém o texto.",
            "schema": {
              "type": "string"
            },
            "example": "Contratos"
          },
          {
            "name": "Active",
            "in": "query",
            "description": "Filtra por situação: `true` só ativas, `false` só inativas. Sem valor, ambas.",
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "pageIndex",
            "in": "query",
            "description": "Número da página, a partir de 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Quantidade de itens por página.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "Campo de ordenação.",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Id"
            }
          },
          {
            "name": "sortType",
            "in": "query",
            "description": "Sentido da ordenação: `asc` ou `desc`.",
            "required": true,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string",
              "default": "asc"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListDeprecatedOfCategoryDto"
                },
                "example": {
                  "items": [
                    {
                      "id": "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c",
                      "name": "Contratos de locação",
                      "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                      "createdAt": "2025-03-12T13:45:10Z",
                      "active": true
                    }
                  ],
                  "totalPages": 1,
                  "totalRecords": 1,
                  "pageSize": 20
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `categories`."
          }
        },
        "deprecated": true,
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "categories"
        ]
      },
      "post": {
        "tags": [
          "Categories"
        ],
        "summary": "Adicionar categoria na conta",
        "description": "Cria uma categoria na conta. Categorias classificam documentos e servem de filtro nas listagens.\n\n- O nome deve ser único na conta, sem diferenciar maiúsculas (`Este nome de categoria já existe`,\n  `400`). A categoria nasce ativa.\n- Responde `201` com a categoria e o cabeçalho `Location`.\n\n**Features exigidas no plano da conta:** `categories`.",
        "operationId": "partners_v1_categories_create",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCategory"
              },
              "example": {
                "name": "Contratos de locação"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryDto"
                },
                "example": {
                  "id": "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c",
                  "name": "Contratos de locação",
                  "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                  "createdAt": "2025-03-12T13:45:10Z",
                  "active": true
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `categories`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "categories"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/categories/{id}": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "Busca categoria da conta por id",
        "description": "Busca uma categoria da conta pelo identificador.\n\n- Responde `404` quando não existe na conta.\n- Somente leitura, sem efeitos colaterais.\n\n**Features exigidas no plano da conta:** `categories`.",
        "operationId": "partners_v1_categories_get",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Identificador da categoria.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryDto"
                },
                "example": {
                  "id": "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c",
                  "name": "Contratos de locação",
                  "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                  "createdAt": "2025-03-12T13:45:10Z",
                  "active": true
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `categories`."
          },
          "404": {
            "description": "Recurso não encontrado na conta informada."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "categories"
        ]
      },
      "put": {
        "tags": [
          "Categories"
        ],
        "summary": "Editar categoria da conta",
        "description": "Renomeia uma categoria da conta. A situação (`active`) não muda.\n\n- O novo nome deve ser único na conta; categoria inexistente ou nome repetido respondem `400`.\n- Idempotente.\n\n**Features exigidas no plano da conta:** `categories`.",
        "operationId": "partners_v1_categories_update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador da categoria.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCategory"
              },
              "example": {
                "name": "Contratos de locação residencial"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryDto"
                },
                "example": {
                  "id": "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c",
                  "name": "Contratos de locação residencial",
                  "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                  "createdAt": "2025-03-12T13:45:10Z",
                  "active": true
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `categories`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "categories"
        ]
      },
      "delete": {
        "tags": [
          "Categories"
        ],
        "summary": "Remover categoria da conta",
        "description": "Exclui uma categoria da conta.\n\n- Não é possível excluir categoria vinculada a documentos ou a modelos de documento; a resposta\n  `400` diz qual vínculo impede. Nesse caso, desative-a com `partners_v1_categories_change_status`.\n- Repetir a chamada responde `400` (`Categoria não existe`).\n\n**Features exigidas no plano da conta:** `categories`.",
        "operationId": "partners_v1_categories_delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador da categoria.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `categories`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "categories"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/categories/{id}/change-status": {
      "patch": {
        "tags": [
          "Categories"
        ],
        "summary": "Alterar status da categoria da conta",
        "description": "Inverte a situação da categoria: ativa passa a inativa e inativa passa a ativa. Não recebe corpo.\n\n- Categoria inativa deixa de ser oferecida para novos documentos, mas continua nos documentos que\n  já a têm.\n- Categoria inexistente responde `400`. Chamar duas vezes volta ao estado original.\n\n**Features exigidas no plano da conta:** `categories`.",
        "operationId": "partners_v1_categories_change_status",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador da categoria.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CategoryDto"
                },
                "example": {
                  "id": "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c",
                  "name": "Contratos de locação",
                  "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                  "createdAt": "2025-03-12T13:45:10Z",
                  "active": false
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `categories`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "categories"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/contacts/person/{cpf}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Buscar pessoa por cpf",
        "description": "Busca um contato do tipo pessoa pelo CPF.\n\n- Informe só os 11 dígitos. CPF inválido responde `400`; CPF não cadastrado na conta, ou\n  cadastrado como empresa, responde `404`.\n- Somente leitura, sem efeitos colaterais.\n\n**Features exigidas no plano da conta:** `contacts`, `integrations`.",
        "operationId": "partners_v1_contacts_get_person",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cpf",
            "in": "path",
            "description": "CPF da pessoa, somente os 11 dígitos, sem pontuação.",
            "required": true,
            "schema": {
              "maxLength": 11,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonDto"
                },
                "example": {
                  "name": "Maria da Silva",
                  "alias": "Maria",
                  "email": "maria.silva@exemplo.com.br",
                  "addressInformation": {
                    "address": "Rua das Flores",
                    "number": "120",
                    "complement": "Sala 4",
                    "district": "Centro",
                    "zipCode": "01001000",
                    "city": "São Paulo",
                    "state": "SP",
                    "formattedZipCode": "01001-000",
                    "complete": "Rua das Flores, 120, Sala 4, Centro, 01001-000, São Paulo-SP"
                  },
                  "phone1": {
                    "number": "11987654321",
                    "formated": "(11) 9-8765-4321",
                    "formatted": "(11) 9-8765-4321"
                  },
                  "cpf": "11144477735",
                  "rg": "12.345.678-9",
                  "issuingAgency": "SSP",
                  "stateIssuingAgency": "SP",
                  "nationality": "Brasileira",
                  "profession": "Arquiteta",
                  "maritalStatus": "Married"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `contacts`, `integrations`."
          },
          "404": {
            "description": "Recurso não encontrado na conta informada."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "contacts",
          "integrations"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/contacts/person": {
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Cria ou atualiza uma pessoa",
        "description": "Cria ou atualiza um contato do tipo pessoa. A chave é o CPF: se já existe na conta, o contato é\natualizado; senão, é criado.\n\n- A atualização substitui o cadastro por completo: campos omitidos ficam vazios. Envie sempre o\n  contato inteiro.\n- Responde `200` nos dois casos, com o contato gravado. Idempotente.\n- Contatos podem ser referenciados em campos de informação do tipo `Party`.\n\n**Features exigidas no plano da conta:** `contacts`, `integrations`.",
        "operationId": "partners_v1_contacts_upsert_person",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterPerson"
              },
              "example": {
                "name": "Maria da Silva",
                "alias": "Maria",
                "email": "maria.silva@exemplo.com.br",
                "cpf": "11144477735",
                "rg": "12.345.678-9",
                "issuingAgency": "SSP",
                "stateIssuingAgency": "SP",
                "nationality": "Brasileira",
                "profession": "Arquiteta",
                "maritalStatus": "Married",
                "phone1": {
                  "number": "11987654321"
                },
                "addressInformation": {
                  "address": "Rua das Flores",
                  "number": "120",
                  "complement": "Sala 4",
                  "district": "Centro",
                  "zipCode": "01001000",
                  "city": "São Paulo",
                  "state": "SP"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonDto"
                },
                "example": {
                  "name": "Maria da Silva",
                  "alias": "Maria",
                  "email": "maria.silva@exemplo.com.br",
                  "addressInformation": {
                    "address": "Rua das Flores",
                    "number": "120",
                    "complement": "Sala 4",
                    "district": "Centro",
                    "zipCode": "01001000",
                    "city": "São Paulo",
                    "state": "SP",
                    "formattedZipCode": "01001-000",
                    "complete": "Rua das Flores, 120, Sala 4, Centro, 01001-000, São Paulo-SP"
                  },
                  "phone1": {
                    "number": "11987654321",
                    "formated": "(11) 9-8765-4321",
                    "formatted": "(11) 9-8765-4321"
                  },
                  "cpf": "11144477735",
                  "rg": "12.345.678-9",
                  "issuingAgency": "SSP",
                  "stateIssuingAgency": "SP",
                  "nationality": "Brasileira",
                  "profession": "Arquiteta",
                  "maritalStatus": "Married"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `contacts`, `integrations`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "contacts",
          "integrations"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/contacts/company/{cnpj}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Buscar empresa por CNPJ ",
        "description": "Busca um contato do tipo empresa pelo CNPJ.\n\n- Informe só os 14 caracteres, sem pontuação. CNPJ inválido responde `400`; CNPJ não cadastrado\n  na conta, ou cadastrado como pessoa, responde `404`.\n- Somente leitura, sem efeitos colaterais.\n\n**Features exigidas no plano da conta:** `contacts`, `integrations`.",
        "operationId": "partners_v1_contacts_get_company",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cnpj",
            "in": "path",
            "description": "CNPJ da empresa, somente os 14 caracteres, sem pontuação.",
            "required": true,
            "schema": {
              "maxLength": 14,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyDto"
                },
                "example": {
                  "name": "Horizonte Negócios Imobiliários Ltda",
                  "alias": "Imobiliária Horizonte",
                  "email": "contato@exemplo.com.br",
                  "addressInformation": {
                    "address": "Avenida Paulista",
                    "number": "1000",
                    "complement": "Conjunto 101",
                    "district": "Bela Vista",
                    "zipCode": "01310100",
                    "city": "São Paulo",
                    "state": "SP",
                    "formattedZipCode": "01310-100",
                    "complete": "Avenida Paulista, 1000, Conjunto 101, Bela Vista, 01310-100, São Paulo-SP"
                  },
                  "phone1": {
                    "number": "1133334444",
                    "formated": "(11) 3333-4444",
                    "formatted": "(11) 3333-4444"
                  },
                  "cnpj": "11222333000181",
                  "nire": "35300012345",
                  "stateRegistration": "110.042.490.114",
                  "municipalRegistration": "1.234.567-8"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `contacts`, `integrations`."
          },
          "404": {
            "description": "Recurso não encontrado na conta informada."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "contacts",
          "integrations"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/contacts/company": {
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Cria ou atualiza uma Empresa",
        "description": "Cria ou atualiza um contato do tipo empresa. A chave é o CNPJ: se já existe na conta, o contato é\natualizado; senão, é criado.\n\n- A atualização substitui o cadastro por completo: campos omitidos ficam vazios. Envie sempre o\n  contato inteiro.\n- Responde `200` nos dois casos, com o contato gravado. Idempotente.\n- Contatos podem ser referenciados em campos de informação do tipo `Party`.\n\n**Features exigidas no plano da conta:** `contacts`, `integrations`.",
        "operationId": "partners_v1_contacts_upsert_company",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterCompany"
              },
              "example": {
                "name": "Horizonte Negócios Imobiliários Ltda",
                "alias": "Imobiliária Horizonte",
                "email": "contato@exemplo.com.br",
                "cnpj": "11222333000181",
                "nire": "35300012345",
                "stateRegistration": "110.042.490.114",
                "municipalRegistration": "1.234.567-8",
                "phone1": {
                  "number": "1133334444"
                },
                "addressInformation": {
                  "address": "Avenida Paulista",
                  "number": "1000",
                  "complement": "Conjunto 101",
                  "district": "Bela Vista",
                  "zipCode": "01310100",
                  "city": "São Paulo",
                  "state": "SP"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyDto"
                },
                "example": {
                  "name": "Horizonte Negócios Imobiliários Ltda",
                  "alias": "Imobiliária Horizonte",
                  "email": "contato@exemplo.com.br",
                  "addressInformation": {
                    "address": "Avenida Paulista",
                    "number": "1000",
                    "complement": "Conjunto 101",
                    "district": "Bela Vista",
                    "zipCode": "01310100",
                    "city": "São Paulo",
                    "state": "SP",
                    "formattedZipCode": "01310-100",
                    "complete": "Avenida Paulista, 1000, Conjunto 101, Bela Vista, 01310-100, São Paulo-SP"
                  },
                  "phone1": {
                    "number": "1133334444",
                    "formated": "(11) 3333-4444",
                    "formatted": "(11) 3333-4444"
                  },
                  "cnpj": "11222333000181",
                  "nire": "35300012345",
                  "stateRegistration": "110.042.490.114",
                  "municipalRegistration": "1.234.567-8"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `contacts`, `integrations`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "contacts",
          "integrations"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/contacts/{cpfOrCnpj}": {
      "delete": {
        "tags": [
          "Contacts"
        ],
        "summary": "Remove um contato por CPF ou CNPJ",
        "description": "Exclui um contato da conta pelo CPF ou CNPJ, informado só com dígitos.\n\n- Valor inválido responde `400` (`CPF/CNPJ é inválido`); contato inexistente responde `400`\n  (`Contato não existe`).\n- A exclusão é definitiva e não afeta documentos já assinados por essa pessoa ou empresa.\n\n**Features exigidas no plano da conta:** `contacts`, `integrations`.",
        "operationId": "partners_v1_contacts_delete",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cpfOrCnpj",
            "in": "path",
            "description": "CPF (11 dígitos) ou CNPJ (14 caracteres) do contato, sem pontuação.",
            "required": true,
            "schema": {
              "maxLength": 14,
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `contacts`, `integrations`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "contacts",
          "integrations"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Lista paginada de documentos da conta",
        "description": "**Obsoleto.** Substituído por `partners_v2_documents_list` na [Partners API v2](https://api.letssign.com.br/docs/partners/v2),\nque tem paginação por `page`/`perPage`, filtro por data de criação e ordenação declarada.\nContinua respondendo, mas não recebe evolução.\n\nLista os documentos da conta com os filtros informados, paginada por `pageIndex` e `pageSize`.\nSomente leitura.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "DocumentId",
            "in": "query",
            "description": "ID do documento",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Nome do documento contendo...",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "DeadlineDateFrom",
            "in": "query",
            "description": "Prazo do documento a partir de...",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "DeadlineDateTo",
            "in": "query",
            "description": "Prazo do documento até...",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "SignatureDateFrom",
            "in": "query",
            "description": "Data de assinatura do documento de...",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "SignatureDateTo",
            "in": "query",
            "description": "Data de assinatura do documento até...",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "Categories",
            "in": "query",
            "description": "Categorias do documento",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "DocumentStatus",
            "in": "query",
            "description": "Status do documento",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EDocumentStatus"
              }
            }
          },
          {
            "name": "DocumentSignatureStatus",
            "in": "query",
            "description": "Status de assinatura do documento",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EDocumentSignatureStatus"
              }
            }
          },
          {
            "name": "pageIndex",
            "in": "query",
            "description": "Número da página, a partir de 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Quantidade de itens por página.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "Campo de ordenação.",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Id"
            }
          },
          {
            "name": "sortType",
            "in": "query",
            "description": "Sentido da ordenação: `asc` ou `desc`.",
            "required": true,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string",
              "default": "asc"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListDeprecatedOfDocumentDto"
                },
                "example": {
                  "items": [
                    {
                      "id": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                      "name": "Contrato de locação - Apto 501",
                      "statusId": "Finished",
                      "status": "Pronto para assinar",
                      "signatureStatusId": "WaitingSignatures",
                      "signatureStatus": "Aguardando assinaturas",
                      "endDate": "2026-09-30T23:59:59Z",
                      "deadlineForSignature": "2026-09-30T12:00:00Z",
                      "categories": [
                        {
                          "id": "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c",
                          "name": "Contratos de locação"
                        }
                      ],
                      "groups": [
                        {
                          "id": "0199143d-3f40-7b5c-8d6e-7f8a9b0c1d2e",
                          "name": "Jurídico"
                        }
                      ],
                      "reminderFrequency": "ThreeDays",
                      "createdAt": "2026-08-20T14:05:00Z"
                    }
                  ],
                  "totalPages": 3,
                  "totalRecords": 48,
                  "pageSize": 20
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          }
        },
        "deprecated": true,
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/mapped-signatures": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Listagem do mapeamento das assinaturas do documento",
        "description": "Lista as posições de assinatura e rubrica mapeadas no documento: página, coordenadas e tamanho em\npercentual, e o signatário dono de cada posição (`email`, `role`, `authenticationMethod`,\n`documentSignatureId`).\n\n- Retorna lista vazia quando nenhuma posição foi informada.\n- Útil para conferir o posicionamento antes de os signatários assinarem.\n- Somente leitura, sem efeitos colaterais.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_mapped_signatures",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentSignatureAreaDto"
                  }
                },
                "example": [
                  {
                    "id": "01991448-c2d3-7e4f-9a5b-6c7d8e9f0a1b",
                    "type": "Signature",
                    "typeDescription": "Assinatura",
                    "x": 12.5,
                    "y": 78,
                    "height": 5,
                    "width": 15,
                    "page": 3,
                    "documentSignatureId": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
                    "email": "maria.silva@exemplo.com.br",
                    "role": "Parte",
                    "authenticationMethod": "Email",
                    "authenticationMethodDescription": "E-mail"
                  },
                  {
                    "id": "01991448-c2d3-7e4f-9a5b-6c7d8e9f0a1c",
                    "type": "Initials",
                    "typeDescription": "Rúbrica",
                    "x": 85,
                    "y": 92,
                    "height": 4,
                    "width": 6,
                    "page": 1,
                    "documentSignatureId": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
                    "email": "maria.silva@exemplo.com.br",
                    "role": "Parte",
                    "authenticationMethod": "Email",
                    "authenticationMethodDescription": "E-mail"
                  },
                  {
                    "id": "01991448-c2d3-7e4f-9a5b-6c7d8e9f0a1d",
                    "type": "Signature",
                    "typeDescription": "Assinatura",
                    "x": 55,
                    "y": 78,
                    "height": 5,
                    "width": 15,
                    "page": 3,
                    "documentSignatureId": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b",
                    "email": "joao.souza@exemplo.com.br",
                    "role": "Testemunha",
                    "authenticationMethod": "Email",
                    "authenticationMethodDescription": "E-mail"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/download/original": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Info para download do documento original",
        "description": "Devolve uma URL temporária para baixar o arquivo original do documento, em PDF, sem assinaturas.\n\n- A URL é pré-assinada e vale por 5 minutos; faça o download logo após obtê-la. Cada chamada gera\n  uma URL nova.\n- `name` é o nome do documento, sem extensão.\n- Responde `400` quando o documento não existe na conta ou ainda não tem arquivo disponível.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_download_original",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentUrlInfoDto"
                },
                "example": {
                  "name": "Contrato de locação - Apto 501",
                  "url": "https://s3.sa-east-1.amazonaws.com/documents/0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f/01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=300&X-Amz-Signature=3f9c0a1b2c3d4e5f"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/download/with-atachments": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Info para download do documento com anexos",
        "description": "**Obsoleto.** Substituído por `partners_v2_documents_download_with_attachments` na\n[Partners API v2](https://api.letssign.com.br/docs/partners/v2), que corrige a grafia da rota. Continua respondendo, mas não\nrecebe evolução.\n\nDevolve uma URL temporária (5 minutos) para o PDF do documento com os anexos incorporados; sem\nanexos, devolve o arquivo original.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_download_with_attachments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentUrlInfoDto"
                },
                "example": {
                  "name": "Contrato de locação - Apto 501",
                  "url": "https://s3.sa-east-1.amazonaws.com/documents/0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f/01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f-attachments.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=300&X-Amz-Signature=3f9c0a1b2c3d4e5f"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          }
        },
        "deprecated": true,
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/download/signed": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Info para download do documento assinado",
        "description": "Devolve uma URL temporária para baixar o PDF assinado eletronicamente, com a página de\nassinaturas e o carimbo de cada signatário.\n\n- Com todos os signatários assinados, entrega o arquivo final. Com assinaturas pendentes, gera e\n  entrega um PDF parcial com as assinaturas já realizadas.\n- Responde `400` enquanto nenhum signatário assinou (`Nenhum signatário assinou o documento até o\n  momento.`) ou se o documento não existe na conta.\n- A URL é pré-assinada e vale por 5 minutos; cada chamada gera uma URL nova.\n- Para documentos assinados com certificado digital, use\n  `partners_v1_documents_download_digital_certificate`.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_download_signed",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentUrlInfoDto"
                },
                "example": {
                  "name": "Contrato de locação - Apto 501",
                  "url": "https://s3.sa-east-1.amazonaws.com/documents/0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f/01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f-signed.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=300&X-Amz-Signature=3f9c0a1b2c3d4e5f"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/download/digital-certificate": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Info para download do documento com certificado digital",
        "description": "Devolve uma URL temporária para baixar o PDF assinado com certificado digital (ICP-Brasil),\ndisponível quando o documento tem ao menos um signatário com `DigitalCertificate` e todos já\nassinaram.\n\n- Antes disso responde `400` (`O documento assinado com certificado digital não está disponível\n  para download.`).\n- A URL é pré-assinada e vale por 5 minutos; cada chamada gera uma URL nova.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_download_digital_certificate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentUrlInfoDto"
                },
                "example": {
                  "name": "Contrato de locação - Apto 501",
                  "url": "https://s3.sa-east-1.amazonaws.com/documents/0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f/01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f-digital.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=300&X-Amz-Signature=3f9c0a1b2c3d4e5f"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/request-signatures": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Envio de solicitação de assinaturas para um documento existente",
        "description": "Envia a solicitação de assinaturas para um documento que já existe na conta e ainda não está em\nprocesso de assinatura: documentos criados a partir de formulário (`partners_v1_forms_create`)\nou que tiveram as assinaturas canceladas.\n\n- Aceita documentos com status de assinatura `SignatureNotSet`, `SettingUpSignatures`,\n  `SignaturesDeliveryScheduled`, `FinalizingSignatures` ou `ErrorOnFinalizingSignatures`. Em\n  `WaitingSignatures` ou `Signed` responde `400`.\n- O corpo segue as mesmas regras de `partners_v1_document_signatures_create_from_file`, sem o\n  arquivo: signatários, áreas, informações, observadores, prazo e lembretes.\n- `deadlineForSignature` substitui o prazo atual; omitido, o prazo é removido. `scheduledTo` não\n  tem efeito nesta operação.\n- Ao contrário da criação, `Part` e `1` não são convertidos para `Parte`: envie o nome do papel.\n- Dispara o webhook `DocumentSentToSignature` e notifica os signatários. Consome cota de SMS e\n  WhatsApp quando usados.\n- Repetir a chamada responde `400`, pois o documento passa a `WaitingSignatures`.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_request_signatures",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestDocumentSignatures"
              },
              "example": {
                "customMessage": "Segue a ficha cadastral preenchida para assinatura.",
                "deadlineForSignature": "2026-09-30T12:00:00Z",
                "reminderFrequency": "SevenDays",
                "signers": [
                  {
                    "email": "maria.silva@exemplo.com.br",
                    "name": "Maria da Silva",
                    "documentNumber": "11144477735",
                    "role": "Parte",
                    "authenticationMethod": "Email"
                  },
                  {
                    "email": "ana.pereira@exemplo.com.br",
                    "name": "Ana Pereira",
                    "role": "Aprovador",
                    "authenticationMethod": "Email"
                  }
                ],
                "signatureAreas": [
                  {
                    "type": "Signature",
                    "page": 2,
                    "x": 12.5,
                    "y": 80,
                    "width": 15,
                    "height": 5,
                    "email": "maria.silva@exemplo.com.br",
                    "role": "Parte",
                    "authenticationMethod": "Email"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedDocumentInfoDto"
                },
                "example": {
                  "id": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                  "uri": "https://app.letssign.com.br/app/documents/01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f/signatures"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/informations": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Lista campos de informações do documento",
        "description": "Lista os campos de informação preenchidos no documento, com o campo da conta\n(`informationField`), o valor e, para texto formatado, o valor sem marcação.\n\n- Retorna lista vazia quando o documento não tem informações.\n- Somente leitura, sem efeitos colaterais.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_informations_list",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentInformationDto"
                  }
                },
                "example": [
                  {
                    "id": "01991447-b1c2-7d3e-8f4a-5b6c7d8e9f0a",
                    "informationFieldId": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e",
                    "informationField": {
                      "id": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e",
                      "name": "Número do contrato",
                      "type": "Text",
                      "typeDescription": "Texto curto"
                    },
                    "value": "CT-2026-0451"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      },
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Adiciona/atualiza campo de informação no documento",
        "description": "Grava um campo de informação no documento. Se o documento já tem valor para o\n`informationFieldId`, o valor é substituído; caso contrário, o campo é adicionado.\n\n- Exige a feature `document_informations` no plano; sem ela responde `400`.\n- O valor deve seguir o tipo do campo: data em `YYYY-MM-DD`, números com ponto decimal, `Party`\n  com id, CPF ou CNPJ de um contato da conta. Valor fora do formato responde `400`.\n- Não altera o status do documento nem dispara webhook. Idempotente por `informationFieldId`.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_informations_upsert",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddDocumentInformation"
              },
              "example": {
                "informationFieldId": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e",
                "value": "CT-2026-0451"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentInformationDto"
                },
                "example": {
                  "id": "01991447-b1c2-7d3e-8f4a-5b6c7d8e9f0a",
                  "informationFieldId": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e",
                  "informationField": {
                    "id": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e",
                    "name": "Número do contrato",
                    "type": "Text",
                    "typeDescription": "Texto curto"
                  },
                  "value": "CT-2026-0451"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/informations/{informationFieldId}": {
      "delete": {
        "tags": [
          "Documents"
        ],
        "summary": "Remove campo de informação no documento",
        "description": "Remove o valor de um campo de informação do documento.\n\n- Responde `400` quando o documento não tem valor para o campo (`Campo de informação não existe`),\n  inclusive ao repetir a chamada.\n- Não altera o status do documento nem dispara webhook.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_informations_delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "informationFieldId",
            "in": "path",
            "description": "Identificador do campo de informação da conta (`partners_v1_information_fields_list`).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}": {
      "delete": {
        "tags": [
          "Documents"
        ],
        "summary": "Remove um documento",
        "description": "Exclui o documento da conta, com as assinaturas em andamento e os arquivos.\n\n- Documentos com status de assinatura `Signed` não podem ser excluídos (`O documento já está\n  assinado`, `400`).\n- Signatários e suplentes recebem e-mail de cancelamento. Dispara o webhook `DocumentRemoved` e,\n  quando o documento estava aguardando assinaturas, o `DocumentSignaturesCanceled`, que lista os\n  documentos atingidos.\n- A exclusão fica no registro de eventos da conta e é definitiva.\n- Repetir a chamada responde `400` (`Document não existe`).\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "404": {
            "description": "Recurso não encontrado na conta informada.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/form-fields": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Lista campos do formulário do documento",
        "description": "Lista os campos do formulário que originou o documento (criado por `partners_v1_forms_create`),\ncom tipo, tag, enunciado, obrigatoriedade, quem preenche (`filler`) e o valor preenchido.\n\n- Retorna lista vazia para documentos que não vieram de formulário.\n- Ordenado por `order`. Somente leitura.\n\n**Features exigidas no plano da conta:** `custom_models`, `default_models`, `documents`.",
        "operationId": "partners_v1_documents_form_fields_list",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FormFieldSimplifiedDto"
                  }
                },
                "example": [
                  {
                    "id": "01991446-a0b1-7c2d-9e3f-4a5b6c7d8e9f",
                    "type": "Text",
                    "tag": "nome_locatario",
                    "name": "Nome do locatário",
                    "statement": "Informe o nome completo do locatário",
                    "required": true,
                    "capitalize": false,
                    "writeOut": false,
                    "order": 1,
                    "filler": {
                      "name": "Maria da Silva",
                      "email": "maria.silva@exemplo.com.br",
                      "filledAt": "2026-08-21T09:30:00Z"
                    },
                    "value": "Maria da Silva"
                  },
                  {
                    "id": "01991446-a0b1-7c2d-9e3f-4a5b6c7d8ea0",
                    "type": "Currency",
                    "tag": "valor_aluguel",
                    "name": "Valor do aluguel",
                    "statement": "Valor mensal do aluguel",
                    "required": true,
                    "capitalize": false,
                    "writeOut": true,
                    "order": 4,
                    "value": "2500.00"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `custom_models`, `default_models`, `documents`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "custom_models",
          "default_models",
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/signatures/additional-authentication-methods": {
      "put": {
        "tags": [
          "Documents"
        ],
        "summary": "Atualiza os métodos de autenticação adicionais dos signatários do documento",
        "description": "Define as evidências adicionais exigidas na assinatura (selfie, documento com foto, biometria\nfacial) de um ou mais signatários de um documento aguardando assinaturas. A lista enviada\nsubstitui a existente em cada signatário; `[]` remove todas.\n\n- Exige status de assinatura `WaitingSignatures`; fora disso responde `400`.\n- Identificadores de signatário desconhecidos são ignorados sem erro.\n- A resposta traz todos os signatários do documento com as evidências vigentes.\n- Idempotente. Não dispara webhook nem reenvia links.\n\n**Features exigidas no plano da conta:** `documents`, `documents_signatures`.",
        "operationId": "partners_v1_documents_update_additional_authentication_methods",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateDocumentSignaturesAdditionalAuthenticationMethods"
              },
              "example": {
                "signatures": [
                  {
                    "documentSignatureId": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
                    "additionalAuthenticationMethods": [
                      "DocumentIdWithPhoto"
                    ]
                  },
                  {
                    "documentSignatureId": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b",
                    "additionalAuthenticationMethods": [ ]
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignaturesAdditionalAuthenticationMethodsUpdatedDto"
                },
                "example": {
                  "documentId": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                  "signatures": [
                    {
                      "documentSignatureId": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
                      "role": "Parte",
                      "authenticationMethod": "Email",
                      "email": "maria.silva@exemplo.com.br",
                      "name": "Maria da Silva",
                      "additionalAuthenticationMethods": [
                        "DocumentIdWithPhoto"
                      ]
                    },
                    {
                      "documentSignatureId": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b",
                      "role": "Testemunha",
                      "authenticationMethod": "Email",
                      "email": "joao.souza@exemplo.com.br",
                      "name": "João de Souza",
                      "additionalAuthenticationMethods": [ ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `documents_signatures`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "documents_signatures"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/folder": {
      "put": {
        "tags": [
          "Documents"
        ],
        "summary": "Altera pasta de um documento",
        "description": "Move o documento para outra pasta da conta, ou para a raiz quando `folderId` é nulo.\n\n- A pasta de destino precisa existir na conta (`Pasta destino não encontrada`, `400`).\n- Idempotente e sem efeitos colaterais além da mudança de pasta. Responde `200` sem corpo.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v1_documents_change_folder",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangeDocumentFolder"
              },
              "example": {
                "folderId": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/documents/{id}/groups": {
      "put": {
        "tags": [
          "Documents"
        ],
        "summary": "Substitui os grupos de acesso do documento",
        "description": "Define quais grupos de acesso da conta veem o documento. O conjunto enviado em `groups` substitui\no atual: o que está na lista fica, o que não está sai. Consulte os ids em\n`partners_v1_groups_list`.\n\n- Só aceita grupo **ativo** da própria conta; qualquer outro id responde `422` citando os ids\n  recusados. O campo `groups` é obrigatório: corpo sem ele, ou com `null`, responde `422`; para\n  remover todos os grupos, envie a lista vazia.\n- **Cuidado com read-modify-write.** O vínculo com grupo desativado no aplicativo não aparece em\n  `groups` nas leituras do documento, mas continua na base — e a substituição não o poupa: devolver\n  aqui a lista que veio da leitura remove esse vínculo em definitivo, e reativar o grupo depois não\n  devolve a visibilidade do documento. Quando um grupo do documento pode estar desativado, monte a\n  lista a partir dos ids que você controla, não do que a leitura devolveu.\n- Grupos do documento e grupos da pasta são condições **cumulativas**, não alternativas: um\n  documento com o grupo `Jurídico` dentro de uma pasta restrita a `Diretoria` é visto por quem\n  está nos dois. Remover todos os grupos do documento não o torna invisível — o acesso volta a ser\n  decidido pelos grupos da pasta, e o documento fora de pasta fica visível para toda a conta.\n- Aplica-se ao documento informado, em qualquer status. Num envelope, os documentos filhos não são\n  afetados: cada um tem os seus próprios grupos.\n- Documento que não é da conta responde `400` (`Documento não encontrado`).\n- Idempotente. Responde `204` sem corpo.\n\n**Features exigidas no plano da conta:** `documents`, `groups`.",
        "operationId": "partners_v1_documents_update_groups",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetDocumentGroups"
              },
              "example": {
                "groups": [
                  "0199143d-3f40-7b5c-8d6e-7f8a9b0c1d2e"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `groups`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "groups"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/document-signatures/{documentId}/status": {
      "get": {
        "tags": [
          "DocumentSignatures"
        ],
        "summary": "Status das assinaturas do documento",
        "description": "Situação atual das assinaturas de um documento: o status geral em `signatureStatusId` e um item\npor signatário em `signatures`, com `signed`, `signedAt` e os dados informados no ato da\nassinatura (`name`, `documentNumber`, `birthDate`).\n\n- `signatures[].id` é o `signatureId` usado para editar, remover e reenviar a solicitação.\n- `order` mostra a posição na ordenação quando o documento é ordenado.\n- Responde `404` quando o documento não pertence à conta.\n- Prefira os webhooks `DocumentSignatureMember` e `DocumentSignatureFinished` para acompanhar;\n  use esta consulta para conferir ou quando não houver webhook.\n- Somente leitura, sem efeitos colaterais.\n\n**Features exigidas no plano da conta:** `documents`, `documents_signatures`.",
        "operationId": "partners_v1_document_signatures_status",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentSignaturesStatusDto"
                },
                "example": {
                  "signatureStatusId": "WaitingSignatures",
                  "signatureStatus": "Aguardando assinaturas",
                  "deadlineForSignature": "2026-09-30T12:00:00Z",
                  "signatures": [
                    {
                      "id": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
                      "email": "maria.silva@exemplo.com.br",
                      "role": "Parte",
                      "signed": true,
                      "authenticationMethod": "Email",
                      "signatureLinkMethod": "Email",
                      "telephone": {
                        "countryCode": "55",
                        "number": "11987654321",
                        "value": "5511987654321",
                        "formatted": "+55 (11) 9-8765-4321"
                      },
                      "name": "Maria da Silva",
                      "documentNumberType": "Cpf",
                      "documentNumber": "11144477735",
                      "birthDate": "1988-05-17T00:00:00Z",
                      "handwritten": true,
                      "order": 1,
                      "signedAt": "2026-08-21T10:12:45Z",
                      "requireDocumentNumber": true
                    },
                    {
                      "id": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b",
                      "email": "joao.souza@exemplo.com.br",
                      "role": "Testemunha",
                      "signed": false,
                      "authenticationMethod": "Email",
                      "handwritten": true,
                      "order": 2,
                      "requireDocumentNumber": true
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `documents_signatures`."
          },
          "404": {
            "description": "Recurso não encontrado na conta informada."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "documents_signatures"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/document-signatures": {
      "post": {
        "tags": [
          "DocumentSignatures"
        ],
        "summary": "Criação de documento e envio de solicitação de assinaturas",
        "description": "Cria um documento a partir de um arquivo e envia a solicitação de assinatura a todos os\nsignatários em uma única chamada. É a operação principal da API.\n\n**Como montar a requisição**\n\n- `contentFile` leva o arquivo em base64 e `contentType` o tipo MIME correspondente. PDF é usado\n  como está; DOC e DOCX são convertidos para PDF. PDF com senha ou com edição bloqueada é recusado.\n- `signers` precisa de ao menos um item com `email` e `role`. Cada signatário pode ter método de\n  autenticação, canal do link, telefone, evidências adicionais, suplentes e idioma próprios.\n- `signatureAreas` posiciona assinatura e rubrica no PDF por página e coordenadas em percentual;\n  cada área aponta para um signatário por `email`, `role` e `authenticationMethod`. A página deve\n  existir no arquivo. Contas configuradas para exigir posicionamento recusam a chamada sem áreas.\n- `order` nos signatários cria a assinatura sequencial: informe para todos ou para nenhum.\n- `scheduledTo` agenda o envio; `deadlineForSignature` define o prazo; `reminderFrequency` liga\n  os lembretes automáticos por e-mail (até 3 por signatário).\n- `categories` desconhecidas são ignoradas; `folderId` inexistente responde `400`.\n- `groups` define quais grupos de acesso da conta veem o documento (`partners_v1_groups_list`).\n  Diferente de `categories`, id desconhecido não é ignorado: grupo inexistente, inativo ou de\n  outra conta responde `422` citando os ids recusados. Grupos do documento e da pasta são\n  condições cumulativas — só vê o documento quem está nos dois. Sem `groups`, o acesso é\n  decidido pelos grupos da pasta; fora de pasta, o documento fica visível para toda a conta.\n  Depois da criação, use `partners_v1_documents_update_groups`.\n\n**O que acontece**\n\n- O documento nasce com status `Finished` e status de assinatura `WaitingSignatures` (ou\n  `SignaturesDeliveryScheduled` quando agendado).\n- O webhook `DocumentSentToSignature` é disparado na criação, mesmo com agendamento.\n- Os signatários recebem o link pelo canal configurado (e-mail, SMS ou WhatsApp); com ordenação,\n  só a primeira posição é notificada. Observadores recebem o documento assinado ao final.\n- Signatários com `saveAsContact` verdadeiro, nome e CPF válido viram contatos da conta quando o\n  plano tem a feature `contacts`.\n- Consome um documento da cota do plano e, quando há SMS ou WhatsApp, a cota desses canais.\n\n**Regras que respondem `400`**\n\n- Papel inexistente na conta: `Um ou mais papéis (...) não existe(m)`. Consulte\n  `partners_v1_document_signature_roles_list`.\n- Conta sem o recurso de SMS, WhatsApp, biometria facial, informações do documento ou grupos de acesso.\n- Cota de documentos, SMS ou WhatsApp esgotada.\n- Áreas em páginas que o arquivo não tem; pasta inexistente.\n\nNão há chave de idempotência: cada chamada cria um documento novo. A resposta traz o `id` do\ndocumento e a URL da página dele no aplicativo.\n\n**Features exigidas no plano da conta:** `documents`, `documents_signatures`.",
        "operationId": "partners_v1_document_signatures_create_from_file",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDocumentWithSignaturesFromFile"
              },
              "example": {
                "documentName": "Contrato de locação - Apto 501",
                "contentType": "application/pdf",
                "contentFile": "JVBERi0xLjcKJcTl8uXrp/Og0MTGCjEgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgPj4KZW5kb2JqCg==",
                "folderId": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d",
                "categories": [
                  "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c"
                ],
                "groups": [
                  "0199143d-3f40-7b5c-8d6e-7f8a9b0c1d2e"
                ],
                "customMessage": "Olá! Segue o contrato de locação do apartamento 501 para assinatura até 30/09.",
                "deadlineForSignature": "2026-09-30T12:00:00Z",
                "reminderFrequency": "ThreeDays",
                "observers": [
                  "financeiro@exemplo.com.br"
                ],
                "signers": [
                  {
                    "email": "maria.silva@exemplo.com.br",
                    "name": "Maria da Silva",
                    "documentNumber": "11144477735",
                    "role": "Parte",
                    "order": 1,
                    "authenticationMethod": "Email",
                    "telephoneCountryCode": "55",
                    "telephone": "11987654321",
                    "additionalAuthenticationMethods": [
                      "DocumentIdWithPhoto"
                    ],
                    "language": "Portuguese",
                    "saveAsContact": true
                  },
                  {
                    "email": "joao.souza@exemplo.com.br",
                    "name": "João de Souza",
                    "role": "Testemunha",
                    "order": 2,
                    "authenticationMethod": "Email",
                    "substitutes": [
                      {
                        "email": "carla.mendes@exemplo.com.br",
                        "name": "Carla Mendes"
                      }
                    ]
                  }
                ],
                "signatureAreas": [
                  {
                    "type": "Signature",
                    "page": 3,
                    "x": 12.5,
                    "y": 78,
                    "width": 15,
                    "height": 5,
                    "email": "maria.silva@exemplo.com.br",
                    "role": "Parte",
                    "authenticationMethod": "Email"
                  },
                  {
                    "type": "Initials",
                    "page": 1,
                    "x": 85,
                    "y": 92,
                    "width": 6,
                    "height": 4,
                    "email": "maria.silva@exemplo.com.br",
                    "role": "Parte",
                    "authenticationMethod": "Email"
                  },
                  {
                    "type": "Signature",
                    "page": 3,
                    "x": 55,
                    "y": 78,
                    "width": 15,
                    "height": 5,
                    "email": "joao.souza@exemplo.com.br",
                    "role": "Testemunha",
                    "authenticationMethod": "Email"
                  }
                ],
                "informations": [
                  {
                    "informationFieldId": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e",
                    "value": "CT-2026-0451"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedDocumentInfoDto"
                },
                "example": {
                  "id": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                  "uri": "https://app.letssign.com.br/app/documents/01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f/signatures"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `documents_signatures`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "documents_signatures"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/document-signatures/{documentId}/signature": {
      "post": {
        "tags": [
          "DocumentSignatures"
        ],
        "summary": "Adicionar signatário no documento",
        "description": "Adiciona um signatário a um documento que já está aguardando assinaturas e envia a ele o link de\nassinatura.\n\n- Exige status de assinatura `WaitingSignatures` e status do documento diferente de\n  `WaitingFormFill`; fora disso responde `400`.\n- A combinação `email` + `role` não pode existir no documento; o mesmo e-mail com outro papel é\n  aceito.\n- Em documentos ordenados, o novo signatário entra na última posição e só é notificado quando\n  chegar a vez dele.\n- Se algum signatário já assinou com certificado digital, a inclusão é recusada, pois invalidaria\n  a assinatura existente.\n- `additionalAuthenticationMethods` não é aplicado nesta operação; use\n  `partners_v1_documents_update_additional_authentication_methods` em seguida.\n- Dispara o webhook `SignerAddedToDocument`. Nada é enviado quando `signatureLinkMethod` é\n  `NotSend`.\n- A resposta traz o `id` da assinatura (`signatureId`).\n\n**Features exigidas no plano da conta:** `documents`, `documents_signatures`.",
        "operationId": "partners_v1_document_signatures_add_signer",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddSigner"
              },
              "example": {
                "email": "carlos.lima@exemplo.com.br",
                "name": "Carlos Lima",
                "documentNumber": "52998224725",
                "role": "Testemunha",
                "authenticationMethod": "Sms",
                "telephoneCountryCode": "55",
                "telephone": "21998765432",
                "signatureLinkMethod": "Sms",
                "language": "Portuguese",
                "signatureAreas": [
                  {
                    "type": "Signature",
                    "page": 3,
                    "x": 55,
                    "y": 88,
                    "width": 15,
                    "height": 5
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SignerAddedDto"
                },
                "example": {
                  "id": "01991449-d3e4-7f5a-8b6c-7d8e9f0a1b2c"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `documents_signatures`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "documents_signatures"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/document-signatures/{documentId}/signature/{signatureId}/remove": {
      "delete": {
        "tags": [
          "DocumentSignatures"
        ],
        "summary": "Remover signatário do documento",
        "description": "Remove um signatário que ainda não assinou. As demais assinaturas permanecem.\n\n- Responde `400` se o signatário já assinou (`Signatário não pode ser removido pois já assinou o\n  documento`) ou não existe.\n- Em documentos ordenados, as posições seguintes são reordenadas; se o removido era o da vez, o\n  próximo é notificado.\n- Se após a remoção todos os restantes já tiverem assinado, o documento é finalizado.\n- A remoção fica na trilha de auditoria do documento. Não envia e-mail ao removido nem webhook.\n- Repetir a chamada responde `400` (`Signatário não existe`).\n\n**Features exigidas no plano da conta:** `documents`, `documents_signatures`.",
        "operationId": "partners_v1_document_signatures_remove_signer",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "signatureId",
            "in": "path",
            "description": "Identificador da assinatura (o signatário dentro do documento). Aparece em `signatures[].id` de `partners_v1_document_signatures_status` e no retorno de `partners_v1_document_signatures_add_signer`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `documents_signatures`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "documents_signatures"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/document-signatures/{documentId}/cancel": {
      "patch": {
        "tags": [
          "DocumentSignatures"
        ],
        "summary": "Cancelar assinaturas do documento e remover signatários",
        "description": "Cancela a solicitação de assinaturas em andamento: remove todos os signatários, apaga a trilha de\neventos de assinatura e volta o status de assinatura para `SignatureNotSet`. O documento continua\nna conta e pode receber uma nova solicitação com `partners_v1_documents_request_signatures`.\n\n- Exige status de assinatura `WaitingSignatures`; fora disso responde `400`.\n- Envia e-mail de cancelamento a todos os signatários e suplentes; `message` entra nesse e-mail.\n- Assinaturas já realizadas são descartadas junto com o arquivo assinado digitalmente.\n- Dispara o webhook `DocumentSignaturesCanceled`. Cancela apenas o documento informado: em um\n  envelope, os demais seguem aguardando assinaturas.\n- Para excluir o documento, use `partners_v1_documents_delete`.\n\n**Features exigidas no plano da conta:** `documents`, `documents_signatures`.",
        "operationId": "partners_v1_document_signatures_cancel",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelSignatures"
              },
              "example": {
                "message": "Contrato substituído por uma nova versão; desconsidere esta solicitação."
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `documents_signatures`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "documents_signatures"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/document-signatures/{documentId}/signature/{signatureId}/resend": {
      "post": {
        "tags": [
          "DocumentSignatures"
        ],
        "summary": "Reenviar solicitação de assinatura para os signatários",
        "description": "Reenvia a solicitação de assinatura a um signatário pelo canal configurado para ele\n(`signatureLinkMethod` ou, na falta dele, o canal do método de autenticação).\n\n- Exige documento em `WaitingSignatures`, signatário ainda não assinado e, em documentos\n  ordenados, que seja a vez dele; caso contrário responde `400`.\n- Consome cota de SMS ou WhatsApp quando o canal for um desses. Suplentes não são notificados.\n- Sem efeito quando o canal do signatário é `NotSend`.\n- Pode ser repetida à vontade: cada chamada gera um novo envio.\n\n**Features exigidas no plano da conta:** `documents`, `documents_signatures`.",
        "operationId": "partners_v1_document_signatures_resend",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "signatureId",
            "in": "path",
            "description": "Identificador da assinatura (o signatário dentro do documento). Aparece em `signatures[].id` de `partners_v1_document_signatures_status` e no retorno de `partners_v1_document_signatures_add_signer`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `documents_signatures`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "documents_signatures"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/document-signatures/{documentId}/signature/{signatureId}": {
      "put": {
        "tags": [
          "DocumentSignatures"
        ],
        "summary": "Edita um signatário do documento",
        "description": "Atualiza os dados de um signatário que ainda não assinou: e-mail, nome, CPF, papel, método de\nautenticação, telefones, canal do link, idioma e evidências adicionais. Os campos enviados\nsubstituem os gravados por completo.\n\n- Responde `400` se o signatário já assinou ou se já existe outro com o mesmo e-mail, papel e\n  método de autenticação. Documentos que fazem parte de um envelope não podem ser editados aqui.\n- `additionalAuthenticationMethods` omitido apaga as evidências adicionais existentes; envie a\n  lista completa desejada.\n- `substitutes` não é considerado nesta operação.\n- Com `resendLinkAfterEdit` verdadeiro, o link é reenviado ao signatário pelo canal atualizado.\n- A edição fica na trilha de auditoria. Não dispara webhook. Repetir com os mesmos dados é seguro.\n\n**Features exigidas no plano da conta:** `documents`, `documents_signatures`.",
        "operationId": "partners_v1_document_signatures_edit_signer",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "Identificador do documento, devolvido na criação (`id`) e nas listagens.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "signatureId",
            "in": "path",
            "description": "Identificador da assinatura (o signatário dentro do documento). Aparece em `signatures[].id` de `partners_v1_document_signatures_status` e no retorno de `partners_v1_document_signatures_add_signer`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EditSigner"
              },
              "example": {
                "email": "maria.silva@exemplo.com.br",
                "name": "Maria da Silva Santos",
                "documentNumber": "11144477735",
                "role": "Parte",
                "authenticationMethod": "WhatsApp",
                "telephoneCountryCode": "55",
                "telephone": "11987654321",
                "signatureLinkMethod": "WhatsApp",
                "additionalAuthenticationMethods": [
                  "DocumentIdWithPhoto"
                ],
                "requireDocumentNumber": true,
                "language": "Portuguese",
                "resendLinkAfterEdit": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `documents`, `documents_signatures`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents",
          "documents_signatures"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/features": {
      "get": {
        "tags": [
          "Features"
        ],
        "summary": "Lista de features da conta",
        "description": "Lista as features do plano vigente da conta. Cada item traz o `id` (o código que aparece em\n`x-required-features` e na descrição das operações) e uma descrição legível.\n\n- Consulte antes de chamar operações que exigem features: sem elas a resposta é `403`.\n- As features vêm do plano do grupo de faturamento da conta; a lista muda quando o plano muda.\n- Ordem alfabética por `description`. Não há paginação.\n- Somente leitura, sem efeitos colaterais.",
        "operationId": "partners_v1_features_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FeatureSimplifiedDto"
                  }
                },
                "example": [
                  {
                    "id": "categories",
                    "description": "Categorias"
                  },
                  {
                    "id": "contacts",
                    "description": "Contatos"
                  },
                  {
                    "id": "documents",
                    "description": "Documentos"
                  },
                  {
                    "id": "documents_signatures",
                    "description": "Assinatura de documentos"
                  },
                  {
                    "id": "integrations",
                    "description": "Integrações"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/folders": {
      "get": {
        "tags": [
          "Folders"
        ],
        "summary": "Lista pastas da conta",
        "description": "Lista todas as pastas da conta, com `parentId` para montar a árvore e `path` com o caminho\ncompleto.\n\n- Pode responder de um cache de até 3 horas; criar uma pasta por `partners_v1_folders_create`\n  invalida o cache da conta.\n- Não há paginação. Somente leitura.",
        "operationId": "partners_v1_folders_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FolderDto"
                  }
                },
                "example": [
                  {
                    "id": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d",
                    "name": "Contratos 2026",
                    "hasChildren": true,
                    "path": "Contratos 2026"
                  },
                  {
                    "id": "0199144a-e4f5-7a6b-9c7d-8e9f0a1b2c3d",
                    "name": "Locação",
                    "parentId": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d",
                    "hasChildren": false,
                    "path": "Contratos 2026/Locação"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Folders"
        ],
        "summary": "Cria uma pasta na Conta",
        "description": "Cria uma pasta na conta, na raiz ou dentro de `parentId`.\n\n- O nome deve ser único dentro da pasta pai (sem diferenciar maiúsculas) e a pasta pai precisa\n  existir na conta; ambos respondem `400`.\n- A nova pasta herda as permissões de grupos da pasta pai.\n- Repetir a chamada com o mesmo nome e pai responde `400`.\n\n**Features exigidas no plano da conta:** `folder_writer`.",
        "operationId": "partners_v1_folders_create",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFolder"
              },
              "example": {
                "name": "Contratos 2026",
                "parentId": null
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FolderDto"
                },
                "example": {
                  "id": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d",
                  "name": "Contratos 2026",
                  "hasChildren": false,
                  "path": "Contratos 2026"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `folder_writer`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "folder_writer"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/forms": {
      "post": {
        "tags": [
          "Forms"
        ],
        "summary": "Criação de formulários da conta",
        "description": "Cria um formulário a partir de um modelo da conta e o documento que será gerado com as respostas.\nO documento nasce com status `WaitingFormFill`; quando o formulário estiver completo, o PDF é\ngerado e o documento pode receber assinaturas por `partners_v1_documents_request_signatures`.\n\n- Toda tag do modelo precisa estar em `fillers[].fieldsTags` ou em `filledFields`, e cada tag só\n  pode aparecer uma vez. Faltando tag, a resposta `400` lista quais.\n- Cada pessoa em `fillers` recebe um e-mail com o link para preencher os seus campos. Campos em\n  `filledFields` já entram preenchidos; se tudo for preenchido aqui, o documento é gerado de\n  imediato.\n- `groups` restringe quais grupos de acesso da conta veem o documento gerado\n  (`partners_v1_groups_list`). Só aceita grupo **ativo** da própria conta; grupo inexistente,\n  inativo ou de outra conta responde `422` citando os ids recusados. Omitido ou vazio, o documento\n  não recebe grupo próprio e quem o vê é decidido pelos grupos da pasta.\n- Quando o formulário fica completo, os usuários em `notifiables` são avisados e o webhook\n  `FormFilled` é disparado.\n- Exige um usuário de integração definido na conta; sem ele responde `400`. Consome um documento\n  da cota do plano.\n- Não há chave de idempotência: cada chamada cria um formulário e um documento novos. A resposta\n  traz o `id` do formulário e o `documentId`.\n\n**Features exigidas no plano da conta:** `custom_models`, `default_models`.",
        "operationId": "partners_v1_forms_create",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterForm"
              },
              "example": {
                "name": "Ficha cadastral - Maria da Silva",
                "formTemplateId": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b",
                "instructions": "Preencha os dados do locatário exatamente como constam no documento de identidade.",
                "finalMessage": "Obrigado! Em breve você receberá o contrato para assinatura.",
                "folderId": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d",
                "notifiables": [
                  "financeiro@exemplo.com.br"
                ],
                "groups": [
                  "01991444-8e9f-7a0b-9c2d-3e4f5a6b7c8d"
                ],
                "fillers": [
                  {
                    "name": "Maria da Silva",
                    "email": "maria.silva@exemplo.com.br",
                    "fieldsTags": [
                      "nome_locatario",
                      "cpf_locatario",
                      "endereco_locatario"
                    ]
                  }
                ],
                "filledFields": [
                  {
                    "tag": "valor_aluguel",
                    "value": "2500.00"
                  },
                  {
                    "tag": "dia_vencimento",
                    "value": "5"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FormCreatedDto"
                },
                "example": {
                  "id": "01991443-7d8e-7f9a-8b1c-2d3e4f5a6b7c",
                  "documentId": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `custom_models`, `default_models`."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "custom_models",
          "default_models"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/form-templates": {
      "get": {
        "tags": [
          "FormTemplates"
        ],
        "summary": "Lista modelos de formulários da conta",
        "description": "Lista os modelos de formulário ativos da conta, com os campos de cada um (`fields`): tag, tipo,\nenunciado, obrigatoriedade e opções. As tags são o que `partners_v1_forms_create` espera em\n`fillers[].fieldsTags` e `filledFields[].tag`.\n\n- Pode responder de um cache de até 3 horas. Ordem alfabética. Somente leitura.\n\n**Features exigidas no plano da conta:** `custom_models`, `default_models`.",
        "operationId": "partners_v1_form_templates_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SimpleFormTemplateDto"
                  }
                },
                "example": [
                  {
                    "id": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b",
                    "source": "File",
                    "name": "Ficha cadastral de locatário",
                    "slug": "ficha-cadastral-de-locatario",
                    "instructions": "Preencha os dados conforme o documento de identidade.",
                    "finalMessage": "Obrigado! Em breve você receberá o contrato para assinatura.",
                    "fields": [
                      {
                        "id": "01991445-9fa0-7b1c-8d2e-3f4a5b6c7d8e",
                        "formTemplateId": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b",
                        "type": "Text",
                        "typeDescription": "Resposta curta",
                        "tag": "nome_locatario",
                        "name": "Nome do locatário",
                        "statement": "Informe o nome completo do locatário",
                        "required": true,
                        "capitalize": false,
                        "writeOut": false,
                        "order": 1,
                        "possibleValues": [ ]
                      },
                      {
                        "id": "01991445-9fa0-7b1c-8d2e-3f4a5b6c7d8f",
                        "formTemplateId": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b",
                        "type": "Cpf",
                        "typeDescription": "CPF",
                        "tag": "cpf_locatario",
                        "name": "CPF do locatário",
                        "statement": "Informe o CPF do locatário",
                        "required": true,
                        "capitalize": false,
                        "writeOut": false,
                        "order": 2,
                        "possibleValues": [ ]
                      },
                      {
                        "id": "01991445-9fa0-7b1c-8d2e-3f4a5b6c7d90",
                        "formTemplateId": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b",
                        "type": "LongText",
                        "typeDescription": "Parágrafo",
                        "tag": "endereco_locatario",
                        "name": "Endereço do locatário",
                        "statement": "Informe o endereço completo",
                        "required": true,
                        "capitalize": false,
                        "writeOut": false,
                        "order": 3,
                        "possibleValues": [ ]
                      },
                      {
                        "id": "01991445-9fa0-7b1c-8d2e-3f4a5b6c7d91",
                        "formTemplateId": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b",
                        "type": "Currency",
                        "typeDescription": "Moeda",
                        "tag": "valor_aluguel",
                        "name": "Valor do aluguel",
                        "statement": "Valor mensal do aluguel",
                        "required": true,
                        "capitalize": false,
                        "writeOut": true,
                        "order": 4,
                        "possibleValues": [ ]
                      },
                      {
                        "id": "01991445-9fa0-7b1c-8d2e-3f4a5b6c7d92",
                        "formTemplateId": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b",
                        "type": "Select",
                        "typeDescription": "Lista suspensa",
                        "tag": "dia_vencimento",
                        "name": "Dia de vencimento",
                        "statement": "Escolha o dia de vencimento",
                        "required": true,
                        "capitalize": false,
                        "writeOut": false,
                        "order": 5,
                        "possibleValues": [
                          "5",
                          "10",
                          "15"
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `custom_models`, `default_models`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "custom_models",
          "default_models"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/groups": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Lista grupos da conta",
        "description": "Lista os grupos ativos da conta, em ordem alfabética. Grupos controlam o acesso a pastas e\ndocumentos. Os ids daqui são os aceitos em `groups` por\n`partners_v1_document_signatures_create_from_file`, `partners_v1_forms_create` e\n`partners_v1_documents_update_groups`.\n\n- Grupo desativado no aplicativo sai desta lista e deixa de ser aceito: o id passa a\n  responder `422` nos três endpoints acima e não aparece mais em `groups` nas listagens\n  de documento. O vínculo em si continua na base: devolver em\n  `partners_v1_documents_update_groups` a lista de `groups` lida do documento remove em definitivo\n  o vínculo com o grupo desativado. Ativar e desativar é operação do aplicativo — esta API não\n  altera grupo.\n- Pode responder de um cache de até 3 horas. Não há paginação. Somente leitura.\n\n**Features exigidas no plano da conta:** `groups`.",
        "operationId": "partners_v1_groups_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GroupSimplifiedDto"
                  }
                },
                "example": [
                  {
                    "id": "01991444-8e9f-7a0b-9c2d-3e4f5a6b7c8d",
                    "name": "Comercial"
                  },
                  {
                    "id": "0199144b-f5a6-7b7c-8d8e-9f0a1b2c3d4e",
                    "name": "Jurídico"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `groups`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "groups"
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/information-fields": {
      "get": {
        "tags": [
          "InformationFields"
        ],
        "summary": "Lista campos de informação",
        "description": "Lista os campos de informação definidos na conta, com o tipo que determina o formato do valor\n(`Text`, `FormattedText`, `Date`, `Money`, `Number`, `Percentage`, `Party`). Use o `id` em\n`informations[].informationFieldId` ao criar documentos ou em\n`partners_v1_documents_informations_upsert`.\n\n- Ordem alfabética. Não há paginação. Somente leitura.\n\n**Features exigidas no plano da conta:** `document_informations`.",
        "operationId": "partners_v1_information_fields_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InformationFieldDto"
                  }
                },
                "example": [
                  {
                    "id": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e",
                    "name": "Número do contrato",
                    "type": "Text",
                    "typeDescription": "Texto curto"
                  },
                  {
                    "id": "0199144c-f6a7-7b8c-8d9e-0a1b2c3d4e5f",
                    "name": "Valor do contrato",
                    "type": "Money",
                    "typeDescription": "Moeda"
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui alguma das features exigidas: `document_informations`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "document_informations"
        ]
      }
    },
    "/partners/v1/plans": {
      "get": {
        "tags": [
          "Plans"
        ],
        "summary": "Lista de planos vínculados ao parceiro",
        "description": "Lista os planos ativos vinculados ao parceiro: os planos que a equipe LetsSign pode atribuir\nàs contas do parceiro.\n\n- Não recebe `accountId`: a lista é do parceiro, não de uma conta.\n- `name` filtra por trecho do nome, sem diferenciar maiúsculas. Ordem alfabética.\n- Somente leitura, sem efeitos colaterais.",
        "operationId": "partners_v1_plans_list",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "Filtra pelo nome contendo o texto informado, sem diferenciar maiúsculas de minúsculas.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlanSimplifiedDto"
                  }
                },
                "example": [
                  {
                    "id": "profissional",
                    "name": "Profissional",
                    "description": "Até 200 documentos por mês, com SMS e WhatsApp."
                  }
                ]
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Lista paginada de usuários da conta",
        "description": "**Obsoleto.** Substituído por `partners_v2_users_list` na [Partners API v2](https://api.letssign.com.br/docs/partners/v2), com\npaginação por `page`/`perPage`, filtro por e-mail e ordenação declarada. Continua respondendo,\nmas não recebe evolução.\n\nLista os usuários da conta, com filtros por nome, situação, visibilidade e perfil, paginada por\n`pageIndex` e `pageSize`. Somente leitura.",
        "operationId": "partners_v1_users_list",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Id",
            "in": "query",
            "description": "ID do usuário",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Nome do usuário",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Active",
            "in": "query",
            "description": "O usuário está ativo",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Visible",
            "in": "query",
            "description": "O usuário está visível",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Profile",
            "in": "query",
            "description": "Perfil do usuário",
            "schema": {
              "$ref": "#/components/schemas/EProfile"
            }
          },
          {
            "name": "pageIndex",
            "in": "query",
            "description": "Número da página, a partir de 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Quantidade de itens por página.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          },
          {
            "name": "sortField",
            "in": "query",
            "description": "Campo de ordenação.",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Id"
            }
          },
          {
            "name": "sortType",
            "in": "query",
            "description": "Sentido da ordenação: `asc` ou `desc`.",
            "required": true,
            "schema": {
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string",
              "default": "asc"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListDeprecatedOfPartnerUserAccountDto"
                },
                "example": {
                  "items": [
                    {
                      "id": "0199143f-5b6c-7d7e-8f80-9a0b1c2d3e4f",
                      "firstName": "Ana",
                      "lastName": "Pereira",
                      "fullName": "Ana Pereira",
                      "email": "ana.pereira@exemplo.com.br",
                      "addedAt": "2026-08-20T14:05:00Z",
                      "active": true,
                      "profile": "Admin",
                      "profileDescription": "Administrador"
                    },
                    {
                      "id": "0199144d-a7b8-7c9d-9e0f-1a2b3c4d5e6f",
                      "firstName": "Bruno",
                      "lastName": "Costa",
                      "fullName": "Bruno Costa",
                      "email": "bruno.costa@exemplo.com.br",
                      "addedAt": "2026-08-20T14:05:00Z",
                      "active": true,
                      "profile": "User",
                      "profileDescription": "Usuário"
                    }
                  ],
                  "totalPages": 1,
                  "totalRecords": 2,
                  "pageSize": 20
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          }
        },
        "deprecated": true,
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Adicionar usuários na conta",
        "description": "Adiciona usuários à conta e envia a cada um o e-mail de convite com o código de acesso.\n\n- Um e-mail que já existe em outra conta do LetsSign é reaproveitado; um e-mail novo cria o\n  usuário.\n- `onlyForSignature` verdadeiro cria o usuário com perfil `User` (só vê e assina os próprios\n  documentos) e exige a feature `only_signature` no plano; falso cria como `Admin`.\n- O lote é atômico: se qualquer e-mail já pertence à conta, ninguém é adicionado e a resposta\n  `400` lista os repetidos.\n- Conta inativa ou sem plano ativo responde `400`. A resposta traz os usuários adicionados.",
        "operationId": "partners_v1_users_add",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddUsersInAccount"
              },
              "example": {
                "users": [
                  {
                    "firstName": "Ana",
                    "lastName": "Pereira",
                    "email": "ana.pereira@exemplo.com.br",
                    "onlyForSignature": false
                  },
                  {
                    "firstName": "Bruno",
                    "lastName": "Costa",
                    "email": "bruno.costa@exemplo.com.br",
                    "onlyForSignature": true
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartnerUserAccountDto"
                  }
                },
                "example": [
                  {
                    "id": "0199143f-5b6c-7d7e-8f80-9a0b1c2d3e4f",
                    "firstName": "Ana",
                    "lastName": "Pereira",
                    "fullName": "Ana Pereira",
                    "email": "ana.pereira@exemplo.com.br",
                    "addedAt": "2026-08-20T14:05:00Z",
                    "active": true,
                    "profile": "Admin",
                    "profileDescription": "Administrador"
                  },
                  {
                    "id": "0199144d-a7b8-7c9d-9e0f-1a2b3c4d5e6f",
                    "firstName": "Bruno",
                    "lastName": "Costa",
                    "fullName": "Bruno Costa",
                    "email": "bruno.costa@exemplo.com.br",
                    "addedAt": "2026-08-20T14:05:00Z",
                    "active": true,
                    "profile": "User",
                    "profileDescription": "Usuário"
                  }
                ]
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      }
    },
    "/partners/v1/accounts/{accountId}/users/{id}/change-status": {
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Alterar status de um usuário da conta",
        "description": "Inverte a situação do usuário na conta: ativo passa a inativo e inativo passa a ativo. Não recebe\ncorpo.\n\n- Usuário inativo perde o acesso à conta, mas mantém o histórico.\n- Usuário inexistente ou de outra conta responde `400` (`Usuário não existe`).\n- Evite desativar o usuário de integração da conta: as operações da API que criam documentos e\n  formulários dependem dele.",
        "operationId": "partners_v1_users_change_status",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Identificador da conta operada. Obtenha a lista em `partners_v1_accounts_list`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Identificador do usuário na conta.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerUserAccountDto"
                },
                "example": {
                  "id": "0199144d-a7b8-7c9d-9e0f-1a2b3c4d5e6f",
                  "firstName": "Bruno",
                  "lastName": "Costa",
                  "fullName": "Bruno Costa",
                  "email": "bruno.costa@exemplo.com.br",
                  "addedAt": "2026-08-20T14:05:00Z",
                  "active": false,
                  "profile": "User",
                  "profileDescription": "Usuário"
                }
              }
            }
          },
          "400": {
            "description": "Regra de negócio não satisfeita: recurso inexistente na conta, estado que não permite a operação, recurso do plano ausente ou cota atingida. O corpo (`ProblemDetailsResult`) traz as mensagens em `errors`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          },
          "401": {
            "description": "Chave ausente ou inválida, conta não vinculada ao parceiro, período de teste expirado ou grupo de faturamento sem plano ativo. Nos dois últimos casos o corpo é um Problem Details com o motivo em `detail`."
          },
          "403": {
            "description": "O plano da conta não inclui uma feature exigida por esta operação."
          },
          "422": {
            "description": "Payload rejeitado: JSON malformado ou campos que não passaram na validação (obrigatórios, tamanhos, formatos, combinações). O corpo (`ProblemDetailsResult`) traz as mensagens em `errors` e, em `problems`, cada mensagem com o campo (`propertyName`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AccountWebHookDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do webhook.",
            "format": "uuid",
            "example": "0199143e-4a5b-7c6d-9e7f-8a9b0c1d2e3f"
          },
          "accountId": {
            "type": "string",
            "description": "Identificador da conta.",
            "format": "uuid",
            "example": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f"
          },
          "uri": {
            "type": "string",
            "description": "URL que recebe os eventos.",
            "example": "https://integracao.exemplo.com.br/letssign/webhook"
          },
          "available": {
            "type": "boolean",
            "description": "Verdadeiro quando a URL respondeu 2xx ao evento `Test` enviado no cadastro.",
            "example": true
          },
          "createdAt": {
            "type": "string",
            "description": "Data e hora do cadastro.",
            "format": "date-time",
            "example": "2026-08-20T14:05:00Z"
          }
        }
      },
      "AddDocumentInformation": {
        "required": [
          "informationFieldId",
          "value"
        ],
        "type": "object",
        "properties": {
          "informationFieldId": {
            "type": "string",
            "description": "Identificador do campo de informação da conta (`partners_v1_information_fields_list`).",
            "format": "uuid",
            "example": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e"
          },
          "value": {
            "type": "string",
            "description": "Valor, sempre como texto, no formato do tipo do campo: `Text` e `FormattedText` aceitam texto livre; `Date` exige `YYYY-MM-DD`; `Money`, `Number` e `Percentage` exigem número com ponto decimal (ex.: `1999.99`); `Party` exige o id, o CPF ou o CNPJ de um contato da conta.",
            "example": "CT-2026-0451"
          }
        }
      },
      "AddressInformation": {
        "type": "object",
        "properties": {
          "address": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Logradouro.",
            "example": "Rua das Flores"
          },
          "number": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Número.",
            "example": "120"
          },
          "complement": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Complemento.",
            "example": "Sala 4"
          },
          "district": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Bairro.",
            "example": "Centro"
          },
          "zipCode": {
            "maxLength": 9,
            "type": [
              "null",
              "string"
            ],
            "description": "CEP, com 8 dígitos ou no formato 00000-000.",
            "example": "01001000"
          },
          "city": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Cidade.",
            "example": "São Paulo"
          },
          "state": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Estado (sigla).",
            "example": "SP"
          },
          "formattedZipCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "CEP formatado (00000-000). Somente leitura.",
            "example": "01001-000"
          },
          "complete": {
            "type": [
              "null",
              "string"
            ],
            "description": "Endereço completo em uma linha. Somente leitura.",
            "example": "Rua das Flores, 120, Sala 4, Centro, 01001-000, São Paulo-SP"
          }
        }
      },
      "AddSigner": {
        "required": [
          "role",
          "email"
        ],
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "description": "Papel com que assina (ex.: `Parte`, `Testemunha`). Use um dos nomes de `partners_v1_document_signature_roles_list`.",
            "example": "Testemunha"
          },
          "ipAddress": {
            "type": [
              "null",
              "string"
            ],
            "description": "IP do usuário final que originou a ação no sistema do parceiro, gravado na trilha de auditoria. Se vazio, usa o IP da requisição.",
            "example": "203.0.113.10"
          },
          "signatureAreas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleSignatureAreaItem"
            },
            "description": "Posições onde a assinatura e a rubrica deste signatário são carimbadas no PDF."
          },
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "E-mail do signatário. Identifica o signatário no documento e recebe o link de assinatura quando `signatureLinkMethod` é `Email`.",
            "format": "email",
            "example": "maria.silva@exemplo.com.br"
          },
          "name": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Nome do signatário, exibido nas comunicações e pré-preenchido na assinatura.",
            "example": "Maria da Silva"
          },
          "documentNumber": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "CPF do signatário, somente dígitos ou com pontuação. Quando informado, deve ser válido; na assinatura o CPF digitado precisa coincidir.",
            "example": "11144477735"
          },
          "birthDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data de nascimento do signatário, pré-preenchida na assinatura.",
            "format": "date-time",
            "example": "1988-05-17T00:00:00Z"
          },
          "authenticationMethod": {
            "examples": [
              "Email"
            ],
            "enum": [
              "Email",
              "Sms",
              "WhatsApp",
              "DigitalCertificate",
              "NoAuthentication",
              "FaceToFace",
              null
            ],
            "type": [
              "null",
              "string"
            ],
            "description": "Como o signatário comprova a identidade ao assinar. `Sms` e `WhatsApp` exigem `telephone`; `DigitalCertificate` exige `requireDocumentNumber` verdadeiro. Sem valor, `Email`.\n\nValores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
            "default": "Email",
            "x-enum-descriptions": {
              "Email": "E-mail",
              "Sms": "SMS",
              "WhatsApp": "WhatsApp",
              "DigitalCertificate": "Certificado Digital",
              "NoAuthentication": "Sem Autenticação",
              "FaceToFace": "Assinatura presencial"
            }
          },
          "additionalAuthenticationMethods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EAdditionalAuthenticationMethod"
            },
            "description": "Evidências adicionais exigidas na assinatura (selfie, documento com foto, biometria facial). Biometria facial, com ou sem prova de vida, deve ser o único item da lista.",
            "example": [
              "SelfieWithFacialBiometrics"
            ]
          },
          "telephoneCountryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país do telefone do signatário, somente dígitos. Sem valor, `55` (Brasil).",
            "example": "55"
          },
          "telephone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Telefone do signatário com DDD, somente dígitos (mínimo 8). Obrigatório quando `authenticationMethod` é `Sms` ou `WhatsApp`: o código de confirmação vai para este número.",
            "example": "11987654321"
          },
          "signatureLinkMethod": {
            "description": "Canal pelo qual o link de assinatura é enviado. Sem valor, o link vai por e-mail; `NotSend` cria a assinatura sem notificar (o parceiro conduz o signatário).",
            "examples": [
              "WhatsApp"
            ],
            "$ref": "#/components/schemas/ESignatureLinkMethod"
          },
          "signatureLinkTelephoneCountryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país do telefone que recebe o link de assinatura por SMS ou WhatsApp. Sem valor, `55`.",
            "example": "55"
          },
          "signatureLinkTelephone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Telefone com DDD, somente dígitos, que recebe o link de assinatura quando `signatureLinkMethod` é `Sms` ou `WhatsApp`. Sem valor, usa `telephone`.",
            "example": "11987654321"
          },
          "requireDocumentNumber": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Exige que o signatário informe o CPF ao assinar. Sem valor, verdadeiro. Obrigatoriamente verdadeiro com `DigitalCertificate`.",
            "default": true,
            "example": true
          },
          "substitutes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubstituteSigner"
            },
            "description": "Suplentes que podem assinar no lugar do titular. Recebem o mesmo link; a assinatura de um deles conclui a etapa. E-mails não podem repetir nem coincidir com o titular."
          },
          "language": {
            "description": "Idioma das comunicações e da página de assinatura deste signatário. Sem valor, português.",
            "examples": [
              "Portuguese"
            ],
            "$ref": "#/components/schemas/EAppLanguage"
          },
          "saveAsContact": {
            "type": "boolean",
            "description": "Grava o signatário como contato da conta (pessoa, pelo CPF) ao criar a assinatura.",
            "example": false
          }
        }
      },
      "AddUserInAccount": {
        "required": [
          "firstName",
          "email"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 100,
            "type": "string",
            "description": "Primeiro nome do usuário.",
            "example": "Ana"
          },
          "lastName": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Sobrenome do usuário.",
            "example": "Pereira"
          },
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "E-mail do usuário. Recebe o convite de acesso; um e-mail já cadastrado em outra conta é reaproveitado.",
            "format": "email",
            "example": "ana.pereira@exemplo.com.br"
          },
          "onlyForSignature": {
            "type": "boolean",
            "description": "Verdadeiro: perfil `User`, que só visualiza e assina documentos em que é signatário (exige a feature `only_signature` no plano). Falso: perfil `Admin`, com todas as features da conta.",
            "example": false
          }
        }
      },
      "AddUsersInAccount": {
        "required": [
          "users"
        ],
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddUserInAccount"
            },
            "description": "Usuários a adicionar. Se qualquer e-mail já pertencer à conta, nenhum é adicionado."
          }
        }
      },
      "BaseDocumentInformation": {
        "required": [
          "informationFieldId",
          "value"
        ],
        "type": "object",
        "properties": {
          "informationFieldId": {
            "type": "string",
            "description": "Identificador do campo de informação da conta (`partners_v1_information_fields_list`).",
            "format": "uuid",
            "example": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e"
          },
          "value": {
            "type": "string",
            "description": "Valor, sempre como texto, no formato do tipo do campo: `Text` e `FormattedText` aceitam texto livre; `Date` exige `YYYY-MM-DD`; `Money`, `Number` e `Percentage` exigem número com ponto decimal (ex.: `1999.99`); `Party` exige o id, o CPF ou o CNPJ de um contato da conta.",
            "example": "CT-2026-0451"
          }
        }
      },
      "CancelSignatures": {
        "type": "object",
        "properties": {
          "message": {
            "type": [
              "null",
              "string"
            ],
            "description": "Mensagem opcional incluída no aviso de cancelamento enviado aos signatários.",
            "example": "Contrato substituído por uma nova versão; desconsidere esta solicitação."
          }
        }
      },
      "CategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "ID da categoria",
            "format": "uuid",
            "example": "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c"
          },
          "name": {
            "type": "string",
            "description": "Nome da categoria",
            "example": "Contratos de locação"
          },
          "accountId": {
            "type": "string",
            "description": "ID da conta",
            "format": "uuid",
            "example": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f"
          },
          "createdAt": {
            "type": "string",
            "description": "Data de criação da categoria",
            "format": "date-time",
            "example": "2025-03-12T13:45:10Z"
          },
          "active": {
            "type": "boolean",
            "description": "Categoria está ativa?",
            "example": true
          }
        }
      },
      "ChangeDocumentFolder": {
        "required": [
          "folderId"
        ],
        "type": "object",
        "properties": {
          "folderId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Id da pasta para onde o documento será movido. Vazio se a pasta for a raiz",
            "format": "uuid"
          }
        },
        "description": ""
      },
      "ChangePartnerAccountLogo": {
        "required": [
          "contentFile",
          "contentType"
        ],
        "type": "object",
        "properties": {
          "contentFile": {
            "contentEncoding": "base64",
            "type": "string",
            "description": "Conteúdo da imagem em base64 (PNG, JPG ou JPEG).",
            "format": "byte",
            "example": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="
          },
          "contentType": {
            "enum": [
              "image/png",
              "image/jpeg",
              "image/jpg"
            ],
            "type": "string",
            "description": "Tipo MIME da imagem em `contentFile`.",
            "example": "image/png"
          }
        }
      },
      "CompanyDto": {
        "type": "object",
        "properties": {
          "cnpj": {
            "type": "string",
            "description": "CNPJ, sem pontuação.",
            "example": "11222333000181"
          },
          "nire": {
            "type": [
              "null",
              "string"
            ],
            "description": "NIRE (registro na Junta Comercial).",
            "example": "35300012345"
          },
          "stateRegistration": {
            "type": [
              "null",
              "string"
            ],
            "description": "Inscrição estadual.",
            "example": "110.042.490.114"
          },
          "municipalRegistration": {
            "type": [
              "null",
              "string"
            ],
            "description": "Inscrição municipal.",
            "example": "1.234.567-8"
          },
          "name": {
            "type": "string",
            "description": "Nome completo (pessoa) ou razão social (empresa).",
            "example": "Maria da Silva"
          },
          "alias": {
            "type": [
              "null",
              "string"
            ],
            "description": "Apelido (pessoa) ou nome fantasia (empresa).",
            "example": "Maria"
          },
          "email": {
            "type": [
              "null",
              "string"
            ],
            "description": "E-mail do contato.",
            "example": "maria.silva@exemplo.com.br"
          },
          "addressInformation": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Endereço",
                "$ref": "#/components/schemas/AddressInformation"
              }
            ]
          },
          "phone1": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone 1",
                "$ref": "#/components/schemas/Phone"
              }
            ]
          },
          "phone2": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone 2",
                "$ref": "#/components/schemas/Phone"
              }
            ]
          }
        }
      },
      "CreateAccountWebhook": {
        "required": [
          "uri"
        ],
        "type": "object",
        "properties": {
          "uri": {
            "type": "string",
            "description": "URI do Webhook",
            "format": "uri"
          }
        },
        "description": ""
      },
      "CreateCategory": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "type": "string",
            "description": "Nome da categoria, único na conta (sem diferenciar maiúsculas).",
            "example": "Contratos de locação"
          }
        }
      },
      "CreatedDocumentInfoDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do documento, usado nas demais operações.",
            "format": "uuid",
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          },
          "uri": {
            "type": "string",
            "description": "URL da página do documento no aplicativo, para operadores da conta (não é o link de assinatura).",
            "example": "https://app.exemplo.com.br/app/documents/01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f/signatures"
          }
        }
      },
      "CreateDocumentWithSignaturesFromFile": {
        "required": [
          "documentName",
          "contentFile",
          "contentType",
          "signers"
        ],
        "type": "object",
        "properties": {
          "documentName": {
            "maxLength": 255,
            "type": "string",
            "description": "Nome do documento, exibido aos signatários e nas listagens.",
            "example": "Contrato de locação - Apto 501"
          },
          "contentFile": {
            "contentEncoding": "base64",
            "type": "string",
            "description": "Conteúdo do arquivo em base64. Aceita PDF, DOC e DOCX; DOC e DOCX são convertidos para PDF. PDF protegido por senha ou com edição bloqueada é recusado. O corpo da requisição aceita até 70 MB, o que dá cerca de 50 MB de arquivo.",
            "format": "byte",
            "example": "JVBERi0xLjcKJcTl8uXrp/Og0MTGCjEgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgPj4KZW5kb2JqCg=="
          },
          "contentType": {
            "enum": [
              "application/pdf",
              "application/msword",
              "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
            ],
            "type": "string",
            "description": "Tipo MIME do arquivo em `contentFile`. Deve corresponder ao conteúdo real.",
            "example": "application/pdf"
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identificadores de categorias da conta associadas ao documento (`partners_v1_categories_list`).",
            "example": [
              "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c"
            ]
          },
          "folderId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Pasta onde o documento é criado (`partners_v1_folders_list`). Sem valor, fica na raiz.",
            "format": "uuid",
            "example": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d"
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Grupos de acesso da conta que passam a ver o documento (`partners_v1_groups_list`). Sem itens, quem vê o documento é decidido pelos grupos da pasta. Com itens, exige o recurso `groups` na conta: sem o recurso, a resposta é 400.",
            "example": [
              "0199143d-3f40-7b5c-8d6e-7f8a9b0c1d2e"
            ]
          },
          "ipAddress": {
            "type": [
              "null",
              "string"
            ],
            "description": "IP do usuário final que originou a ação no sistema do parceiro, gravado na trilha de auditoria do documento. Se vazio, usa o IP da requisição.",
            "example": "203.0.113.10"
          },
          "customMessage": {
            "type": [
              "null",
              "string"
            ],
            "description": "Mensagem personalizada incluída no e-mail e na página de assinatura enviados aos signatários.",
            "example": "Olá! Segue o contrato de locação do apartamento 501 para assinatura até 30/09."
          },
          "reminderFrequency": {
            "description": "Frequência dos lembretes automáticos enviados a quem ainda não assinou. Sem valor, nenhum lembrete automático é enviado.",
            "examples": [
              "ThreeDays"
            ],
            "$ref": "#/components/schemas/EReminderFrequency"
          },
          "signers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignerItem"
            },
            "description": "Signatários do documento. Pelo menos um; a combinação e-mail + papel não pode repetir."
          },
          "observers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "E-mails de observadores: recebem cópia do documento assinado ao final, sem assinar.",
            "example": [
              "financeiro@exemplo.com.br"
            ]
          },
          "signatureAreas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignatureAreaItem"
            },
            "description": "Posições (página e coordenadas em percentual) onde assinatura e rubrica são carimbadas no PDF. Sem itens, o carimbo é aplicado no padrão do sistema."
          },
          "informations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BaseDocumentInformation"
            },
            "description": "Campos de informação gravados no documento (ex.: número do contrato). Cada campo (`informationFieldId`) pode aparecer uma vez."
          },
          "deadlineForSignature": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data limite para assinatura. Somente a data é considerada: o cancelamento automático ocorre no decorrer do dia informado, em horário de Brasília — o último dia integralmente disponível para assinar é o anterior. Informe a data sem fuso ou em UTC; um offset pode deslocar o dia. Não pode ser anterior à data atual.",
            "format": "date-time",
            "example": "2026-09-30T12:00:00Z"
          },
          "scheduledTo": {
            "type": [
              "null",
              "string"
            ],
            "description": "Agenda o envio das solicitações de assinatura para esta data e hora (deve ser futura). Sem valor, o envio é imediato.",
            "format": "date-time",
            "example": "2026-09-04T09:00:00Z"
          }
        }
      },
      "CreateFolder": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "parentId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Pasta pai (`partners_v1_folders_list`). Sem valor, a pasta é criada na raiz.",
            "format": "uuid",
            "example": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d"
          },
          "name": {
            "maxLength": 255,
            "type": "string",
            "description": "Nome da pasta, único dentro da pasta pai (sem diferenciar maiúsculas).",
            "example": "Contratos 2026"
          }
        }
      },
      "DocumentCategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador da categoria.",
            "format": "uuid",
            "example": "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c"
          },
          "name": {
            "type": "string",
            "description": "Nome da categoria.",
            "example": "Contratos de locação"
          }
        }
      },
      "DocumentDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do documento.",
            "format": "uuid",
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          },
          "name": {
            "type": "string",
            "description": "Nome do documento.",
            "example": "Contrato de locação - Apto 501"
          },
          "statusId": {
            "description": "Status do documento (código).",
            "examples": [
              "Finished"
            ],
            "$ref": "#/components/schemas/EDocumentStatus"
          },
          "status": {
            "type": [
              "null",
              "string"
            ],
            "description": "Status do documento, por extenso em português.",
            "example": "Pronto para assinar"
          },
          "signatureStatusId": {
            "description": "Status de assinatura do documento (código).",
            "examples": [
              "WaitingSignatures"
            ],
            "$ref": "#/components/schemas/EDocumentSignatureStatus"
          },
          "signatureStatus": {
            "type": [
              "null",
              "string"
            ],
            "description": "Status de assinatura, por extenso em português.",
            "example": "Aguardando assinaturas"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Fim da vigência do documento, quando definido. Campo legado, não preenchido em documentos criados pela API; o prazo de assinatura é `deadlineForSignature`.",
            "format": "date-time",
            "example": "2026-09-30T23:59:59Z"
          },
          "deadlineForSignature": {
            "type": [
              "null",
              "string"
            ],
            "description": "Prazo de assinatura definido no envio, quando há. Somente a data é considerada: o cancelamento automático ocorre no decorrer do dia informado, em horário de Brasília.",
            "format": "date-time",
            "example": "2026-09-30T12:00:00Z"
          },
          "fullSignedAt": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data e hora em que o último signatário assinou. Nulo enquanto há assinaturas pendentes.",
            "format": "date-time"
          },
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentCategoryDto"
            },
            "description": "Categorias associadas ao documento."
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentGroupDto"
            },
            "description": "Grupos de acesso vinculados ao documento. Vazio quando quem vê o documento é decidido pelos grupos da pasta."
          },
          "reminderFrequency": {
            "description": "Frequência dos lembretes automáticos, quando configurada.",
            "examples": [
              "ThreeDays"
            ],
            "$ref": "#/components/schemas/EReminderFrequency"
          },
          "createdAt": {
            "type": "string",
            "description": "Data e hora de criação do documento.",
            "format": "date-time",
            "example": "2026-08-20T14:05:00Z"
          }
        }
      },
      "DocumentGroupDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do grupo de acesso.",
            "format": "uuid",
            "example": "0199143d-3f40-7b5c-8d6e-7f8a9b0c1d2e"
          },
          "name": {
            "type": "string",
            "description": "Nome do grupo de acesso.",
            "example": "Jurídico"
          }
        }
      },
      "DocumentInformationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do registro da informação no documento.",
            "format": "uuid",
            "example": "01991447-b1c2-7d3e-8f4a-5b6c7d8e9f0a"
          },
          "informationFieldId": {
            "type": "string",
            "description": "Identificador do campo de informação da conta.",
            "format": "uuid",
            "example": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e"
          },
          "informationField": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Campo de informação da conta (nome e tipo).",
                "$ref": "#/components/schemas/InformationFieldDto"
              }
            ]
          },
          "value": {
            "type": "string",
            "description": "Valor gravado, como texto.",
            "example": "CT-2026-0451"
          },
          "unformattedValue": {
            "type": [
              "null",
              "string"
            ],
            "description": "Valor sem marcação HTML, presente só em campos `FormattedText`."
          }
        }
      },
      "DocumentRemovedWebHookDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do documento excluído.",
            "format": "uuid",
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          }
        },
        "description": "Dados do evento `DocumentRemoved`."
      },
      "DocumentSentToSignWebHookDto": {
        "required": [
          "documentId",
          "sentAt",
          "signers"
        ],
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string",
            "description": "Identificador do documento enviado para assinatura.",
            "format": "uuid"
          },
          "sentAt": {
            "type": "string",
            "description": "Data e hora (UTC) do envio da solicitação.",
            "format": "date-time"
          },
          "signers": {
            "type": "array",
            "items": {
              "required": [
                "id",
                "role",
                "authenticationMethod",
                "email",
                "name"
              ],
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identificador da assinatura (o `signatureId` das operações da API).",
                  "format": "uuid"
                },
                "role": {
                  "type": "string",
                  "description": "Papel com que assina."
                },
                "authenticationMethod": {
                  "enum": [
                    "Email",
                    "Sms",
                    "WhatsApp",
                    "DigitalCertificate",
                    "NoAuthentication",
                    "FaceToFace"
                  ],
                  "type": "string",
                  "description": "Valores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
                  "x-enum-descriptions": {
                    "Email": "E-mail",
                    "Sms": "SMS",
                    "WhatsApp": "WhatsApp",
                    "DigitalCertificate": "Certificado Digital",
                    "NoAuthentication": "Sem Autenticação",
                    "FaceToFace": "Assinatura presencial"
                  }
                },
                "email": {
                  "type": [
                    "null",
                    "string"
                  ],
                  "description": "E-mail do signatário."
                },
                "name": {
                  "type": [
                    "null",
                    "string"
                  ],
                  "description": "Nome do signatário, quando informado."
                }
              },
              "description": "Signatário como aparece nos eventos de webhook."
            },
            "description": "Signatários do documento no momento do envio."
          }
        },
        "description": "Dados do evento `DocumentSentToSignature`."
      },
      "DocumentSignatureAreaDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador da posição.",
            "format": "uuid",
            "example": "01991448-c2d3-7e4f-9a5b-6c7d8e9f0a1b"
          },
          "type": {
            "description": "O que é carimbado na posição: assinatura, rubrica ou carimbo.",
            "examples": [
              "Signature"
            ],
            "$ref": "#/components/schemas/ESignatureType"
          },
          "typeDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "Tipo por extenso em português.",
            "example": "Assinatura"
          },
          "x": {
            "type": "number",
            "description": "Posição horizontal em percentual da largura da página.",
            "format": "double",
            "example": 12.5
          },
          "y": {
            "type": "number",
            "description": "Posição vertical em percentual da altura da página.",
            "format": "double",
            "example": 78
          },
          "height": {
            "type": "number",
            "description": "Altura em percentual da altura da página.",
            "format": "double",
            "example": 5
          },
          "width": {
            "type": "number",
            "description": "Largura em percentual da largura da página.",
            "format": "double",
            "example": 15
          },
          "page": {
            "type": "integer",
            "description": "Página do documento, a partir de 1.",
            "format": "int32",
            "example": 3
          },
          "documentSignatureId": {
            "type": "string",
            "description": "Identificador da assinatura (signatário) dona da posição.",
            "format": "uuid",
            "example": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f"
          },
          "email": {
            "type": "string",
            "description": "E-mail do signatário.",
            "example": "maria.silva@exemplo.com.br"
          },
          "role": {
            "type": "string",
            "description": "Papel do signatário.",
            "example": "Parte"
          },
          "authenticationMethod": {
            "description": "Método de autenticação do signatário.",
            "examples": [
              "Email"
            ],
            "$ref": "#/components/schemas/EAuthenticationMethod"
          },
          "authenticationMethodDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "Método de autenticação por extenso em português.",
            "example": "E-mail"
          }
        }
      },
      "DocumentSignatureMemberWebHookDto": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string",
            "description": "Identificador do documento assinado.",
            "format": "uuid",
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          },
          "role": {
            "type": "string",
            "description": "Papel com que o signatário assinou.",
            "example": "Parte"
          },
          "email": {
            "type": "string",
            "description": "E-mail do signatário.",
            "example": "maria.silva@exemplo.com.br"
          },
          "name": {
            "type": "string",
            "description": "Nome informado pelo signatário ao assinar.",
            "example": "Maria da Silva"
          },
          "signedAt": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data e hora (UTC) da assinatura.",
            "format": "date-time",
            "example": "2026-08-21T10:12:45Z"
          }
        },
        "description": "Dados do evento `DocumentSignatureMember`: um signatário assinou."
      },
      "DocumentSignaturesCanceledWebHookDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do envelope a que os documentos cancelados pertencem, ou do próprio documento\nquando ele não está em um envelope.",
            "format": "uuid",
            "example": "01991447-3c4d-7e5f-8a6b-7c8d9e0f1a2b"
          },
          "documents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identificador do documento cancelado.",
                  "format": "uuid",
                  "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
                },
                "pendingSigners": {
                  "type": "array",
                  "items": {
                    "required": [
                      "id",
                      "role",
                      "authenticationMethod",
                      "email",
                      "name"
                    ],
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Identificador da assinatura (o `signatureId` das operações da API).",
                        "format": "uuid"
                      },
                      "role": {
                        "type": "string",
                        "description": "Papel com que assina."
                      },
                      "authenticationMethod": {
                        "enum": [
                          "Email",
                          "Sms",
                          "WhatsApp",
                          "DigitalCertificate",
                          "NoAuthentication",
                          "FaceToFace"
                        ],
                        "type": "string",
                        "description": "Valores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
                        "x-enum-descriptions": {
                          "Email": "E-mail",
                          "Sms": "SMS",
                          "WhatsApp": "WhatsApp",
                          "DigitalCertificate": "Certificado Digital",
                          "NoAuthentication": "Sem Autenticação",
                          "FaceToFace": "Assinatura presencial"
                        }
                      },
                      "email": {
                        "type": [
                          "null",
                          "string"
                        ],
                        "description": "E-mail do signatário."
                      },
                      "name": {
                        "type": [
                          "null",
                          "string"
                        ],
                        "description": "Nome do signatário, quando informado."
                      }
                    },
                    "description": "Signatário como aparece nos eventos de webhook."
                  },
                  "description": "Signatários que ainda não tinham assinado quando o cancelamento aconteceu, no mesmo formato\ndo evento `DocumentSentToSignature`. Vazio quando todos já haviam assinado."
                }
              },
              "description": "Documento cancelado, dentro do evento `DocumentSignaturesCanceled`."
            },
            "description": "Documentos cancelados. Em um envelope, apenas os que foram cancelados: o cancelamento pode\natingir parte deles."
          }
        },
        "description": "Dados do evento `DocumentSignaturesCanceled`: um evento por envelope, com os documentos que\ntiveram as assinaturas canceladas."
      },
      "DocumentSignaturesExpiredWebHookDto": {
        "type": "object",
        "properties": {
          "deadlineForSignature": {
            "type": [
              "null",
              "string"
            ],
            "description": "Prazo de assinatura que venceu, como valia no instante do cancelamento.",
            "format": "date-time",
            "example": "2026-09-08T00:00:00Z"
          },
          "id": {
            "type": "string",
            "description": "Identificador do envelope a que os documentos cancelados pertencem, ou do próprio documento\nquando ele não está em um envelope.",
            "format": "uuid",
            "example": "01991447-3c4d-7e5f-8a6b-7c8d9e0f1a2b"
          },
          "documents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identificador do documento cancelado.",
                  "format": "uuid",
                  "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
                },
                "pendingSigners": {
                  "type": "array",
                  "items": {
                    "required": [
                      "id",
                      "role",
                      "authenticationMethod",
                      "email",
                      "name"
                    ],
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "description": "Identificador da assinatura (o `signatureId` das operações da API).",
                        "format": "uuid"
                      },
                      "role": {
                        "type": "string",
                        "description": "Papel com que assina."
                      },
                      "authenticationMethod": {
                        "enum": [
                          "Email",
                          "Sms",
                          "WhatsApp",
                          "DigitalCertificate",
                          "NoAuthentication",
                          "FaceToFace"
                        ],
                        "type": "string",
                        "description": "Valores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
                        "x-enum-descriptions": {
                          "Email": "E-mail",
                          "Sms": "SMS",
                          "WhatsApp": "WhatsApp",
                          "DigitalCertificate": "Certificado Digital",
                          "NoAuthentication": "Sem Autenticação",
                          "FaceToFace": "Assinatura presencial"
                        }
                      },
                      "email": {
                        "type": [
                          "null",
                          "string"
                        ],
                        "description": "E-mail do signatário."
                      },
                      "name": {
                        "type": [
                          "null",
                          "string"
                        ],
                        "description": "Nome do signatário, quando informado."
                      }
                    },
                    "description": "Signatário como aparece nos eventos de webhook."
                  },
                  "description": "Signatários que ainda não tinham assinado quando o cancelamento aconteceu, no mesmo formato\ndo evento `DocumentSentToSignature`. Vazio quando todos já haviam assinado."
                }
              },
              "description": "Documento cancelado, dentro do evento `DocumentSignaturesCanceled`."
            },
            "description": "Documentos cancelados. Em um envelope, apenas os que foram cancelados: o cancelamento pode\natingir parte deles."
          }
        },
        "description": "Dados do evento `DocumentSignaturesExpired`: o mesmo do cancelamento, mais o prazo que\nvenceu."
      },
      "DocumentSignaturesStatusDto": {
        "type": "object",
        "properties": {
          "signatureStatusId": {
            "description": "Status de assinatura do documento (código).",
            "examples": [
              "WaitingSignatures"
            ],
            "$ref": "#/components/schemas/EDocumentSignatureStatus"
          },
          "signatureStatus": {
            "type": [
              "null",
              "string"
            ],
            "description": "Status de assinatura, por extenso em português.",
            "example": "Aguardando assinaturas"
          },
          "deadlineForSignature": {
            "type": [
              "null",
              "string"
            ],
            "description": "Prazo de assinatura do documento, quando há. Somente a data é considerada: o cancelamento automático ocorre no decorrer do dia informado, em horário de Brasília.",
            "format": "date-time",
            "example": "2026-09-30T12:00:00Z"
          },
          "signatures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignatureStatusDto"
            },
            "description": "Um item por signatário do documento."
          }
        }
      },
      "DocumentSignatureStatusWebHookDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do documento.",
            "format": "uuid",
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          },
          "status": {
            "enum": [
              "Draft",
              "Finished",
              "Approved",
              "Disapproved",
              "NewVersionBase",
              "WaitingFormFill"
            ],
            "type": "string",
            "description": "Valores:\n\n- `Draft`: Rascunho\n- `Finished`: Pronto para assinar\n- `Approved`: Aprovado\n- `Disapproved`: Reprovado\n- `NewVersionBase`: Base para nova versão\n- `WaitingFormFill`: Aguardando Preenchimento",
            "x-enum-descriptions": {
              "Draft": "Rascunho",
              "Finished": "Pronto para assinar",
              "Approved": "Aprovado",
              "Disapproved": "Reprovado",
              "NewVersionBase": "Base para nova versão",
              "WaitingFormFill": "Aguardando Preenchimento"
            }
          },
          "signatureStatus": {
            "enum": [
              "SignatureNotSet",
              "SettingUpSignatures",
              "SignaturesDeliveryScheduled",
              "WaitingSignatures",
              "FinalizingSignatures",
              "ErrorOnFinalizingSignatures",
              "Signed"
            ],
            "type": "string",
            "description": "Valores:\n\n- `SignatureNotSet`: Assinatura não configurada\n- `SettingUpSignatures`: Configurando assinaturas\n- `SignaturesDeliveryScheduled`: Envio de assinaturas agendada\n- `WaitingSignatures`: Aguardando assinaturas\n- `FinalizingSignatures`: Finalizando assinaturas\n- `ErrorOnFinalizingSignatures`: Erro finalizando assinaturas\n- `Signed`: Assinado",
            "x-enum-descriptions": {
              "SignatureNotSet": "Assinatura não configurada",
              "SettingUpSignatures": "Configurando assinaturas",
              "SignaturesDeliveryScheduled": "Envio de assinaturas agendada",
              "WaitingSignatures": "Aguardando assinaturas",
              "FinalizingSignatures": "Finalizando assinaturas",
              "ErrorOnFinalizingSignatures": "Erro finalizando assinaturas",
              "Signed": "Assinado"
            }
          }
        },
        "description": "Dados do evento `DocumentSignatureFinished`: o último signatário assinou."
      },
      "DocumentStatusChangedWebHookDto": {
        "type": "object",
        "properties": {
          "status": {
            "enum": [
              "Draft",
              "Finished",
              "Approved",
              "Disapproved",
              "NewVersionBase",
              "WaitingFormFill"
            ],
            "type": "string",
            "description": "Valores:\n\n- `Draft`: Rascunho\n- `Finished`: Pronto para assinar\n- `Approved`: Aprovado\n- `Disapproved`: Reprovado\n- `NewVersionBase`: Base para nova versão\n- `WaitingFormFill`: Aguardando Preenchimento",
            "x-enum-descriptions": {
              "Draft": "Rascunho",
              "Finished": "Pronto para assinar",
              "Approved": "Aprovado",
              "Disapproved": "Reprovado",
              "NewVersionBase": "Base para nova versão",
              "WaitingFormFill": "Aguardando Preenchimento"
            }
          },
          "newVersionId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Identificador da nova versão, presente quando `status` é `NewVersionBase`.",
            "format": "uuid",
            "example": "0199144e-b8c9-7d0e-8f1a-2b3c4d5e6f7a"
          },
          "id": {
            "type": "string",
            "description": "Identificador do documento excluído.",
            "format": "uuid",
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          }
        },
        "description": "Dados do evento `DocumentStatusChanged`."
      },
      "DocumentUrlInfoDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Nome do documento, sem extensão.",
            "example": "Contrato de locação - Apto 501"
          },
          "url": {
            "type": "string",
            "description": "URL pré-assinada para download (GET), válida por 5 minutos.",
            "example": "https://s3.sa-east-1.amazonaws.com/documents/0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f/01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f-signed.pdf?X-Amz-Expires=300"
          }
        }
      },
      "EAdditionalAuthenticationMethod": {
        "enum": [
          "SelfieWithoutFacialBiometrics",
          "DocumentIdWithPhoto",
          "SelfieWithFacialBiometrics",
          "SelfieWithFacialBiometricsAndLiveness",
          "ServiceProvisionEvidence"
        ],
        "type": "string",
        "description": "Valores:\n\n- `SelfieWithoutFacialBiometrics`: Selfie (sem biometria facial)\n- `DocumentIdWithPhoto`: Documento com foto\n- `SelfieWithFacialBiometrics`: Selfie (com biometria facial)\n- `SelfieWithFacialBiometricsAndLiveness`: Selfie (com biometria facial e prova de vida)\n- `ServiceProvisionEvidence`: Evidência de prestação do serviço",
        "x-enum-descriptions": {
          "SelfieWithoutFacialBiometrics": "Selfie (sem biometria facial)",
          "DocumentIdWithPhoto": "Documento com foto",
          "SelfieWithFacialBiometrics": "Selfie (com biometria facial)",
          "SelfieWithFacialBiometricsAndLiveness": "Selfie (com biometria facial e prova de vida)",
          "ServiceProvisionEvidence": "Evidência de prestação do serviço"
        }
      },
      "EAppLanguage": {
        "enum": [
          "Portuguese",
          "English",
          "Spanish",
          null
        ],
        "type": [
          "null",
          "string"
        ],
        "description": "Valores:\n\n- `Portuguese`: Português\n- `English`: Inglês\n- `Spanish`: Espanhol",
        "x-enum-descriptions": {
          "Portuguese": "Português",
          "English": "Inglês",
          "Spanish": "Espanhol"
        }
      },
      "EAuthenticationMethod": {
        "enum": [
          "Email",
          "Sms",
          "WhatsApp",
          "DigitalCertificate",
          "NoAuthentication",
          "FaceToFace"
        ],
        "type": "string",
        "description": "Valores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
        "x-enum-descriptions": {
          "Email": "E-mail",
          "Sms": "SMS",
          "WhatsApp": "WhatsApp",
          "DigitalCertificate": "Certificado Digital",
          "NoAuthentication": "Sem Autenticação",
          "FaceToFace": "Assinatura presencial"
        }
      },
      "EditSigner": {
        "required": [
          "role",
          "email"
        ],
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "description": "Papel com que assina (ex.: `Parte`, `Testemunha`). Use um dos nomes de `partners_v1_document_signature_roles_list`.",
            "example": "Parte"
          },
          "ipAddress": {
            "type": [
              "null",
              "string"
            ],
            "description": "IP do usuário final que originou a ação no sistema do parceiro, gravado na trilha de auditoria. Se vazio, usa o IP da requisição.",
            "example": "203.0.113.10"
          },
          "resendLinkAfterEdit": {
            "type": "boolean",
            "description": "Reenvia o link de assinatura ao signatário logo após a edição, pelo canal em `signatureLinkMethod`. Sem valor, não reenvia.",
            "example": true
          },
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "E-mail do signatário. Identifica o signatário no documento e recebe o link de assinatura quando `signatureLinkMethod` é `Email`.",
            "format": "email",
            "example": "maria.silva@exemplo.com.br"
          },
          "name": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Nome do signatário, exibido nas comunicações e pré-preenchido na assinatura.",
            "example": "Maria da Silva"
          },
          "documentNumber": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "CPF do signatário, somente dígitos ou com pontuação. Quando informado, deve ser válido; na assinatura o CPF digitado precisa coincidir.",
            "example": "11144477735"
          },
          "birthDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data de nascimento do signatário, pré-preenchida na assinatura.",
            "format": "date-time",
            "example": "1988-05-17T00:00:00Z"
          },
          "authenticationMethod": {
            "examples": [
              "Email"
            ],
            "enum": [
              "Email",
              "Sms",
              "WhatsApp",
              "DigitalCertificate",
              "NoAuthentication",
              "FaceToFace",
              null
            ],
            "type": [
              "null",
              "string"
            ],
            "description": "Como o signatário comprova a identidade ao assinar. `Sms` e `WhatsApp` exigem `telephone`; `DigitalCertificate` exige `requireDocumentNumber` verdadeiro. Sem valor, `Email`.\n\nValores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
            "default": "Email",
            "x-enum-descriptions": {
              "Email": "E-mail",
              "Sms": "SMS",
              "WhatsApp": "WhatsApp",
              "DigitalCertificate": "Certificado Digital",
              "NoAuthentication": "Sem Autenticação",
              "FaceToFace": "Assinatura presencial"
            }
          },
          "additionalAuthenticationMethods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EAdditionalAuthenticationMethod"
            },
            "description": "Evidências adicionais exigidas na assinatura (selfie, documento com foto, biometria facial). Biometria facial, com ou sem prova de vida, deve ser o único item da lista.",
            "example": [
              "SelfieWithFacialBiometrics"
            ]
          },
          "telephoneCountryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país do telefone do signatário, somente dígitos. Sem valor, `55` (Brasil).",
            "example": "55"
          },
          "telephone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Telefone do signatário com DDD, somente dígitos (mínimo 8). Obrigatório quando `authenticationMethod` é `Sms` ou `WhatsApp`: o código de confirmação vai para este número.",
            "example": "11987654321"
          },
          "signatureLinkMethod": {
            "description": "Canal pelo qual o link de assinatura é enviado. Sem valor, o link vai por e-mail; `NotSend` cria a assinatura sem notificar (o parceiro conduz o signatário).",
            "examples": [
              "WhatsApp"
            ],
            "$ref": "#/components/schemas/ESignatureLinkMethod"
          },
          "signatureLinkTelephoneCountryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país do telefone que recebe o link de assinatura por SMS ou WhatsApp. Sem valor, `55`.",
            "example": "55"
          },
          "signatureLinkTelephone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Telefone com DDD, somente dígitos, que recebe o link de assinatura quando `signatureLinkMethod` é `Sms` ou `WhatsApp`. Sem valor, usa `telephone`.",
            "example": "11987654321"
          },
          "requireDocumentNumber": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Exige que o signatário informe o CPF ao assinar. Sem valor, verdadeiro. Obrigatoriamente verdadeiro com `DigitalCertificate`.",
            "default": true,
            "example": true
          },
          "substitutes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubstituteSigner"
            },
            "description": "Suplentes que podem assinar no lugar do titular. Recebem o mesmo link; a assinatura de um deles conclui a etapa. E-mails não podem repetir nem coincidir com o titular."
          },
          "language": {
            "description": "Idioma das comunicações e da página de assinatura deste signatário. Sem valor, português.",
            "examples": [
              "Portuguese"
            ],
            "$ref": "#/components/schemas/EAppLanguage"
          },
          "saveAsContact": {
            "type": "boolean",
            "description": "Grava o signatário como contato da conta (pessoa, pelo CPF) ao criar a assinatura.",
            "example": false
          }
        }
      },
      "EDocumentFieldType": {
        "enum": [
          "Text",
          "FormattedText",
          "Date",
          "Money",
          "Number",
          "Percentage",
          "Party"
        ],
        "type": "string",
        "description": "Valores:\n\n- `Text`: Texto curto\n- `FormattedText`: Texto formatado\n- `Date`: Data\n- `Money`: Moeda\n- `Number`: Número\n- `Percentage`: Percentual\n- `Party`: Seleção de contato",
        "x-enum-descriptions": {
          "Text": "Texto curto",
          "FormattedText": "Texto formatado",
          "Date": "Data",
          "Money": "Moeda",
          "Number": "Número",
          "Percentage": "Percentual",
          "Party": "Seleção de contato"
        }
      },
      "EDocumentSignatureStatus": {
        "enum": [
          "SignatureNotSet",
          "SettingUpSignatures",
          "SignaturesDeliveryScheduled",
          "WaitingSignatures",
          "FinalizingSignatures",
          "ErrorOnFinalizingSignatures",
          "Signed"
        ],
        "type": "string",
        "description": "Valores:\n\n- `SignatureNotSet`: Assinatura não configurada\n- `SettingUpSignatures`: Configurando assinaturas\n- `SignaturesDeliveryScheduled`: Envio de assinaturas agendada\n- `WaitingSignatures`: Aguardando assinaturas\n- `FinalizingSignatures`: Finalizando assinaturas\n- `ErrorOnFinalizingSignatures`: Erro finalizando assinaturas\n- `Signed`: Assinado",
        "x-enum-descriptions": {
          "SignatureNotSet": "Assinatura não configurada",
          "SettingUpSignatures": "Configurando assinaturas",
          "SignaturesDeliveryScheduled": "Envio de assinaturas agendada",
          "WaitingSignatures": "Aguardando assinaturas",
          "FinalizingSignatures": "Finalizando assinaturas",
          "ErrorOnFinalizingSignatures": "Erro finalizando assinaturas",
          "Signed": "Assinado"
        }
      },
      "EDocumentStatus": {
        "enum": [
          "Draft",
          "Finished",
          "Approved",
          "Disapproved",
          "NewVersionBase",
          "WaitingFormFill"
        ],
        "type": "string",
        "description": "Valores:\n\n- `Draft`: Rascunho\n- `Finished`: Pronto para assinar\n- `Approved`: Aprovado\n- `Disapproved`: Reprovado\n- `NewVersionBase`: Base para nova versão\n- `WaitingFormFill`: Aguardando Preenchimento",
        "x-enum-descriptions": {
          "Draft": "Rascunho",
          "Finished": "Pronto para assinar",
          "Approved": "Aprovado",
          "Disapproved": "Reprovado",
          "NewVersionBase": "Base para nova versão",
          "WaitingFormFill": "Aguardando Preenchimento"
        }
      },
      "EFormFieldType": {
        "enum": [
          "Text",
          "LongText",
          "RichText",
          "Date",
          "Number",
          "Currency",
          "Percentage",
          "Cpf",
          "Cnpj",
          "Radio",
          "Checkbox",
          "Select",
          "DocumentGenerationData",
          "FileUpload",
          null
        ],
        "type": [
          "null",
          "string"
        ],
        "description": "Valores:\n\n- `Text`: Resposta curta\n- `LongText`: Parágrafo\n- `RichText`: Texto formatado\n- `Date`: Data\n- `Number`: Número\n- `Currency`: Moeda\n- `Percentage`: Percentual\n- `Cpf`: CPF\n- `Cnpj`: CNPJ\n- `Radio`: Múltipla escolha\n- `Checkbox`: Caixas de seleção\n- `Select`: Lista suspensa\n- `DocumentGenerationData`: Data da geração do documento\n- `FileUpload`: Upload de arquivo",
        "x-enum-descriptions": {
          "Text": "Resposta curta",
          "LongText": "Parágrafo",
          "RichText": "Texto formatado",
          "Date": "Data",
          "Number": "Número",
          "Currency": "Moeda",
          "Percentage": "Percentual",
          "Cpf": "CPF",
          "Cnpj": "CNPJ",
          "Radio": "Múltipla escolha",
          "Checkbox": "Caixas de seleção",
          "Select": "Lista suspensa",
          "DocumentGenerationData": "Data da geração do documento",
          "FileUpload": "Upload de arquivo"
        }
      },
      "EFormTemplateSource": {
        "enum": [
          "File",
          "Editor"
        ],
        "type": "string",
        "description": "Valores:\n\n- `File`: Modelo criado a partir de um arquivo Word (DOCX) com marcadores\n- `Editor`: Modelo criado no editor de texto do aplicativo",
        "x-enum-descriptions": {
          "File": "Modelo criado a partir de um arquivo Word (DOCX) com marcadores",
          "Editor": "Modelo criado no editor de texto do aplicativo"
        }
      },
      "EMaritalStatus": {
        "enum": [
          "NotMarried",
          "Married",
          "Widower",
          "Divorced",
          "Retracted",
          "Companion",
          "Others",
          null
        ],
        "type": [
          "null",
          "string"
        ],
        "description": "Valores:\n\n- `NotMarried`: Solteiro(a)\n- `Married`: Casado(a)\n- `Widower`: Viúvo(a)\n- `Divorced`: Divorciado(a)\n- `Retracted`: Desquitado(a)\n- `Companion`: Companheiro(a)\n- `Others`: Outros",
        "x-enum-descriptions": {
          "NotMarried": "Solteiro(a)",
          "Married": "Casado(a)",
          "Widower": "Viúvo(a)",
          "Divorced": "Divorciado(a)",
          "Retracted": "Desquitado(a)",
          "Companion": "Companheiro(a)",
          "Others": "Outros"
        }
      },
      "EPersonType": {
        "enum": [
          "Individual",
          "Company",
          null
        ],
        "type": [
          "null",
          "string"
        ],
        "description": "Valores:\n\n- `Individual`: Fisíca\n- `Company`: Jurídica",
        "x-enum-descriptions": {
          "Individual": "Fisíca",
          "Company": "Jurídica"
        }
      },
      "EProfile": {
        "enum": [
          "Owner",
          "Admin",
          "User"
        ],
        "type": "string",
        "description": "Valores:\n\n- `Owner`: Dono\n- `Admin`: Administrador\n- `User`: Usuário",
        "x-enum-descriptions": {
          "Owner": "Dono",
          "Admin": "Administrador",
          "User": "Usuário"
        }
      },
      "EReminderFrequency": {
        "enum": [
          "OneDay",
          "TwoDays",
          "ThreeDays",
          "SevenDays",
          "FourteenDays",
          null
        ],
        "type": [
          "null",
          "string"
        ],
        "description": "Valores:\n\n- `OneDay`: Lembrete a cada 1 dia\n- `TwoDays`: Lembrete a cada 2 dias\n- `ThreeDays`: Lembrete a cada 3 dias\n- `SevenDays`: Lembrete a cada 7 dias\n- `FourteenDays`: Lembrete a cada 14 dias",
        "x-enum-descriptions": {
          "OneDay": "Lembrete a cada 1 dia",
          "TwoDays": "Lembrete a cada 2 dias",
          "ThreeDays": "Lembrete a cada 3 dias",
          "SevenDays": "Lembrete a cada 7 dias",
          "FourteenDays": "Lembrete a cada 14 dias"
        }
      },
      "ErrorItemResult": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "propertyName": {
            "type": [
              "null",
              "string"
            ]
          }
        }
      },
      "ESignatureLinkMethod": {
        "enum": [
          "NotSend",
          "Email",
          "Sms",
          "WhatsApp",
          null
        ],
        "type": [
          "null",
          "string"
        ],
        "description": "Valores:\n\n- `NotSend`: Não enviar\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp",
        "x-enum-descriptions": {
          "NotSend": "Não enviar",
          "Email": "E-mail",
          "Sms": "SMS",
          "WhatsApp": "WhatsApp"
        }
      },
      "ESignatureType": {
        "enum": [
          "Signature",
          "Initials",
          "Stamp"
        ],
        "type": "string",
        "description": "Valores:\n\n- `Signature`: Assinatura\n- `Initials`: Rúbrica\n- `Stamp`: Carimbo / Selo",
        "x-enum-descriptions": {
          "Signature": "Assinatura",
          "Initials": "Rúbrica",
          "Stamp": "Carimbo / Selo"
        }
      },
      "FeatureSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Código da feature, o mesmo usado em `x-required-features`.",
            "example": "documents_signatures"
          },
          "description": {
            "type": "string",
            "description": "Descrição legível da feature.",
            "example": "Assinatura de documentos"
          }
        }
      },
      "FolderDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador da pasta.",
            "format": "uuid",
            "example": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d"
          },
          "name": {
            "type": "string",
            "description": "Nome da pasta.",
            "example": "Contratos 2026"
          },
          "parentId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Identificador da pasta pai. Nulo para pastas na raiz.",
            "format": "uuid"
          },
          "hasChildren": {
            "type": "boolean",
            "description": "Verdadeiro quando a pasta tem subpastas.",
            "example": false
          },
          "path": {
            "type": "string",
            "description": "Caminho completo, da raiz até a pasta.",
            "example": "Contratos 2026"
          }
        }
      },
      "FormCreatedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do formulário criado.",
            "format": "uuid",
            "example": "01991443-7d8e-7f9a-8b1c-2d3e4f5a6b7c"
          },
          "documentId": {
            "type": "string",
            "description": "Identificador do documento gerado a partir do formulário, usado nas operações de documento.",
            "format": "uuid",
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          }
        }
      },
      "FormFieldFillerSimplifiedDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Nome de quem preenche.",
            "example": "Maria da Silva"
          },
          "email": {
            "type": "string",
            "description": "E-mail de quem preenche.",
            "example": "maria.silva@exemplo.com.br"
          },
          "filledAt": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data e hora do preenchimento. Nulo enquanto pendente.",
            "format": "date-time",
            "example": "2026-08-21T09:30:00Z"
          }
        }
      },
      "FormFieldSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do campo no formulário do documento.",
            "format": "uuid",
            "example": "01991446-a0b1-7c2d-9e3f-4a5b6c7d8e9f"
          },
          "type": {
            "description": "Tipo do campo.",
            "examples": [
              "Text"
            ],
            "$ref": "#/components/schemas/EFormFieldType"
          },
          "tag": {
            "type": "string",
            "description": "Tag do campo no modelo.",
            "example": "nome_locatario"
          },
          "name": {
            "type": "string",
            "description": "Nome do campo.",
            "example": "Nome do locatário"
          },
          "statement": {
            "type": "string",
            "description": "Enunciado exibido a quem preenche.",
            "example": "Informe o nome completo do locatário"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Texto de apoio exibido junto ao enunciado."
          },
          "required": {
            "type": "boolean",
            "description": "Verdadeiro quando o preenchimento é obrigatório.",
            "example": true
          },
          "capitalize": {
            "type": "boolean",
            "description": "Verdadeiro quando o valor é gravado em maiúsculas no documento.",
            "example": false
          },
          "writeOut": {
            "type": "boolean",
            "description": "Verdadeiro quando números e datas também saem por extenso no documento.",
            "example": false
          },
          "order": {
            "type": "integer",
            "description": "Posição do campo no formulário.",
            "format": "int32",
            "example": 1
          },
          "filler": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Pessoa responsável por preencher o campo. Nulo para campos preenchidos na criação.",
                "$ref": "#/components/schemas/FormFieldFillerSimplifiedDto"
              }
            ]
          },
          "value": {
            "type": [
              "null",
              "string"
            ],
            "description": "Valor preenchido. Nulo enquanto pendente.",
            "example": "Maria da Silva"
          }
        }
      },
      "FormFilledWebhookDto": {
        "type": "object",
        "properties": {
          "formId": {
            "type": "string",
            "description": "Identificador do formulário.",
            "format": "uuid",
            "example": "01991443-7d8e-7f9a-8b1c-2d3e4f5a6b7c"
          },
          "documentId": {
            "type": "string",
            "description": "Identificador do documento gerado a partir do formulário.",
            "format": "uuid",
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          }
        },
        "description": "Dados do evento `FormFilled`: um formulário foi preenchido por completo."
      },
      "FormTemplateFieldDto": {
        "type": "object",
        "properties": {
          "formTemplateId": {
            "type": "string",
            "description": "Identificador do modelo de formulário ao qual o campo pertence.",
            "format": "uuid",
            "example": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b"
          },
          "id": {
            "type": "string",
            "description": "Identificador do campo.",
            "format": "uuid",
            "example": "01991445-9fa0-7b1c-8d2e-3f4a5b6c7d8e"
          },
          "type": {
            "description": "Tipo do campo, que define o formato do valor aceito.",
            "examples": [
              "Text"
            ],
            "$ref": "#/components/schemas/EFormFieldType"
          },
          "typeDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "Tipo por extenso em português.",
            "example": "Resposta curta"
          },
          "tag": {
            "type": "string",
            "description": "Tag do campo no modelo; identifica o campo no preenchimento.",
            "example": "nome_locatario"
          },
          "name": {
            "type": "string",
            "description": "Nome do campo.",
            "example": "Nome do locatário"
          },
          "statement": {
            "type": "string",
            "description": "Enunciado exibido a quem preenche.",
            "example": "Informe o nome completo do locatário"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Texto de apoio exibido junto ao enunciado.",
            "example": "Como consta no documento de identidade."
          },
          "required": {
            "type": "boolean",
            "description": "Verdadeiro quando o preenchimento é obrigatório.",
            "example": true
          },
          "capitalize": {
            "type": "boolean",
            "description": "Verdadeiro quando o valor é gravado em maiúsculas no documento.",
            "example": false
          },
          "writeOut": {
            "type": "boolean",
            "description": "Verdadeiro quando números e datas também saem por extenso no documento.",
            "example": false
          },
          "order": {
            "type": "integer",
            "description": "Posição do campo no formulário.",
            "format": "int32",
            "example": 1
          },
          "possibleValues": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "Opções dos campos de escolha (`Radio`, `Checkbox`, `Select`). Vazio nos demais tipos."
          }
        }
      },
      "GroupSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do grupo.",
            "format": "uuid",
            "example": "01991444-8e9f-7a0b-9c2d-3e4f5a6b7c8d"
          },
          "name": {
            "type": "string",
            "description": "Nome do grupo.",
            "example": "Comercial"
          }
        }
      },
      "InformationFieldDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do campo (`informationFieldId` nos documentos).",
            "format": "uuid",
            "example": "0199143d-3f4a-7b5c-8d6e-7f8a9b0c1d2e"
          },
          "name": {
            "type": "string",
            "description": "Nome do campo.",
            "example": "Número do contrato"
          },
          "type": {
            "description": "Tipo do campo, que define o formato do valor aceito.",
            "examples": [
              "Text"
            ],
            "$ref": "#/components/schemas/EDocumentFieldType"
          },
          "typeDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "Tipo por extenso em português.",
            "example": "Texto curto"
          }
        }
      },
      "PagedListDeprecatedOfCategoryDto": {
        "required": [
          "items",
          "totalRecords",
          "pageSize"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategoryDto"
            },
            "description": "Itens da página atual."
          },
          "totalPages": {
            "type": "integer",
            "description": "Total de páginas para o filtro informado.",
            "format": "int64",
            "example": 3
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total de registros para o filtro informado.",
            "format": "int64",
            "example": 48
          },
          "additionalData": {
            "description": "Dados adicionais. Sempre nulo nas listagens da Partners API."
          },
          "pageSize": {
            "type": "integer",
            "description": "Quantidade de itens por página usada na consulta.",
            "format": "int64",
            "example": 20
          }
        }
      },
      "PagedListDeprecatedOfDocumentDto": {
        "required": [
          "items",
          "totalRecords",
          "pageSize"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentDto"
            },
            "description": "Itens da página atual."
          },
          "totalPages": {
            "type": "integer",
            "description": "Total de páginas para o filtro informado.",
            "format": "int64",
            "example": 3
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total de registros para o filtro informado.",
            "format": "int64",
            "example": 48
          },
          "additionalData": {
            "description": "Dados adicionais. Sempre nulo nas listagens da Partners API."
          },
          "pageSize": {
            "type": "integer",
            "description": "Quantidade de itens por página usada na consulta.",
            "format": "int64",
            "example": 20
          }
        }
      },
      "PagedListDeprecatedOfPartnerUserAccountDto": {
        "required": [
          "items",
          "totalRecords",
          "pageSize"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartnerUserAccountDto"
            },
            "description": "Itens da página atual."
          },
          "totalPages": {
            "type": "integer",
            "description": "Total de páginas para o filtro informado.",
            "format": "int64",
            "example": 3
          },
          "totalRecords": {
            "type": "integer",
            "description": "Total de registros para o filtro informado.",
            "format": "int64",
            "example": 48
          },
          "additionalData": {
            "description": "Dados adicionais. Sempre nulo nas listagens da Partners API."
          },
          "pageSize": {
            "type": "integer",
            "description": "Quantidade de itens por página usada na consulta.",
            "format": "int64",
            "example": 20
          }
        }
      },
      "PartnerAccountDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador da conta: o `accountId` das demais rotas.",
            "format": "uuid",
            "example": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f"
          },
          "name": {
            "type": "string",
            "description": "Nome da conta.",
            "example": "Imobiliária Horizonte"
          },
          "companyName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Razão social, quando a conta é de uma empresa.",
            "example": "Horizonte Negócios Imobiliários Ltda"
          },
          "createdAt": {
            "type": "string",
            "description": "Data e hora de criação da conta.",
            "format": "date-time",
            "example": "2025-03-12T13:45:10Z"
          },
          "isTrial": {
            "type": "boolean",
            "description": "Verdadeiro quando a conta está em período de teste.",
            "example": false
          },
          "initDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Início da vigência do plano.",
            "format": "date-time",
            "example": "2025-03-12T00:00:00Z"
          },
          "endDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Fim da vigência do plano, quando há prazo definido.",
            "format": "date-time"
          },
          "personType": {
            "description": "Tipo do titular da conta: pessoa física ou jurídica.",
            "examples": [
              "Company"
            ],
            "$ref": "#/components/schemas/EPersonType"
          },
          "documentNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "CPF ou CNPJ do titular, somente dígitos.",
            "example": "11222333000181"
          },
          "active": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Verdadeiro quando a conta está ativa.",
            "example": true
          }
        }
      },
      "PartnerAccountLogoDto": {
        "required": [
          "logo"
        ],
        "type": "object",
        "properties": {
          "logo": {
            "type": "string",
            "description": "URL pública do logotipo, com um parâmetro `q` que muda a cada troca para invalidar caches.",
            "example": "https://storage.exemplo.com.br/logos/0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f.png?q=638923456789012345"
          }
        }
      },
      "PartnerUserAccountDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do usuário.",
            "format": "uuid",
            "example": "0199143f-5b6c-7d7e-8f80-9a0b1c2d3e4f"
          },
          "firstName": {
            "type": "string",
            "description": "Primeiro nome.",
            "example": "Ana"
          },
          "lastName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Sobrenome.",
            "example": "Pereira"
          },
          "fullName": {
            "type": [
              "null",
              "string"
            ],
            "description": "Nome completo.",
            "example": "Ana Pereira"
          },
          "email": {
            "type": "string",
            "description": "E-mail de acesso.",
            "example": "ana.pereira@exemplo.com.br"
          },
          "addedAt": {
            "type": "string",
            "description": "Data e hora em que o usuário foi adicionado à conta.",
            "format": "date-time",
            "example": "2026-08-20T14:05:00Z"
          },
          "active": {
            "type": "boolean",
            "description": "Verdadeiro quando o usuário está ativo na conta.",
            "example": true
          },
          "profile": {
            "description": "Perfil na conta (código).",
            "examples": [
              "Admin"
            ],
            "$ref": "#/components/schemas/EProfile"
          },
          "profileDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "Perfil por extenso em português.",
            "example": "Administrador"
          }
        }
      },
      "PersonDto": {
        "type": "object",
        "properties": {
          "cpf": {
            "type": "string",
            "description": "CPF, somente dígitos.",
            "example": "11144477735"
          },
          "rg": {
            "type": [
              "null",
              "string"
            ],
            "description": "Número do RG.",
            "example": "12.345.678-9"
          },
          "issuingAgency": {
            "type": [
              "null",
              "string"
            ],
            "description": "Órgão emissor do RG.",
            "example": "SSP"
          },
          "stateIssuingAgency": {
            "type": [
              "null",
              "string"
            ],
            "description": "UF do órgão emissor do RG.",
            "example": "SP"
          },
          "nationality": {
            "type": [
              "null",
              "string"
            ],
            "description": "Nacionalidade.",
            "example": "Brasileira"
          },
          "profession": {
            "type": [
              "null",
              "string"
            ],
            "description": "Profissão.",
            "example": "Arquiteta"
          },
          "maritalStatus": {
            "description": "Estado civil.",
            "examples": [
              "Married"
            ],
            "$ref": "#/components/schemas/EMaritalStatus"
          },
          "name": {
            "type": "string",
            "description": "Nome completo (pessoa) ou razão social (empresa).",
            "example": "Maria da Silva"
          },
          "alias": {
            "type": [
              "null",
              "string"
            ],
            "description": "Apelido (pessoa) ou nome fantasia (empresa).",
            "example": "Maria"
          },
          "email": {
            "type": [
              "null",
              "string"
            ],
            "description": "E-mail do contato.",
            "example": "maria.silva@exemplo.com.br"
          },
          "addressInformation": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Endereço",
                "$ref": "#/components/schemas/AddressInformation"
              }
            ]
          },
          "phone1": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone 1",
                "$ref": "#/components/schemas/Phone"
              }
            ]
          },
          "phone2": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone 2",
                "$ref": "#/components/schemas/Phone"
              }
            ]
          }
        }
      },
      "Phone": {
        "type": "object",
        "properties": {
          "number": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "Número com DDD, somente dígitos.",
            "example": "11987654321"
          },
          "formated": {
            "type": [
              "null",
              "string"
            ],
            "description": "Número formatado para exibição. Somente leitura.",
            "example": "(11) 9-8765-4321"
          },
          "formatted": {
            "type": [
              "null",
              "string"
            ],
            "description": "Número formatado para exibição. Somente leitura.",
            "example": "(11) 9-8765-4321"
          }
        }
      },
      "PlanSimplifiedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do plano.",
            "example": "profissional"
          },
          "name": {
            "type": "string",
            "description": "Nome do plano.",
            "example": "Profissional"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "Descrição comercial do plano.",
            "example": "Até 200 documentos por mês, com SMS e WhatsApp."
          }
        }
      },
      "ProblemDetailsResult": {
        "type": "object",
        "properties": {
          "type": {
            "type": [
              "null",
              "string"
            ],
            "description": "URI que identifica o tipo do problema (RFC 9457)."
          },
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "Resumo curto do problema."
          },
          "status": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Código HTTP da resposta.",
            "format": "int32"
          },
          "detail": {
            "type": [
              "null",
              "string"
            ],
            "description": "Explicação legível do problema."
          },
          "instance": {
            "type": [
              "null",
              "string"
            ],
            "description": "Método e caminho da requisição, no formato `POST /partners/v1/...`."
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Mensagens de erro, uma por regra violada."
          },
          "problems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorItemResult"
            },
            "description": "Detalhamento estruturado dos erros, quando disponível."
          },
          "traceId": {
            "type": "string",
            "description": "Identificador do trace distribuído. Informe ao suporte ao relatar um erro."
          },
          "spanId": {
            "type": "string",
            "description": "Identificador do span da requisição dentro do trace."
          },
          "requestId": {
            "type": "string",
            "description": "Identificador da requisição no servidor. Informe ao suporte ao relatar um erro."
          }
        },
        "description": "Corpo de erro da API (Problem Details, RFC 9457), enviado com `Content-Type: application/problem+json`."
      },
      "RegisterCompany": {
        "required": [
          "cnpj",
          "name",
          "email"
        ],
        "type": "object",
        "properties": {
          "cnpj": {
            "maxLength": 30,
            "type": "string",
            "description": "CNPJ válido, com ou sem pontuação. É a chave do contato na conta: um CNPJ já cadastrado é atualizado.",
            "example": "11222333000181"
          },
          "nire": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "NIRE (registro na Junta Comercial).",
            "example": "35300012345"
          },
          "stateRegistration": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Inscrição estadual.",
            "example": "110.042.490.114"
          },
          "municipalRegistration": {
            "maxLength": 50,
            "type": [
              "null",
              "string"
            ],
            "description": "Inscrição municipal.",
            "example": "1.234.567-8"
          },
          "name": {
            "maxLength": 255,
            "type": "string",
            "description": "Nome completo (pessoa) ou razão social (empresa).",
            "example": "Maria da Silva"
          },
          "alias": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Apelido (pessoa) ou nome fantasia (empresa).",
            "example": "Maria"
          },
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "E-mail do contato.",
            "format": "email",
            "example": "maria.silva@exemplo.com.br"
          },
          "addressInformation": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Endereço. Omitir na atualização apaga o endereço gravado.",
                "$ref": "#/components/schemas/AddressInformation"
              }
            ]
          },
          "phone1": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone principal.",
                "$ref": "#/components/schemas/Phone"
              }
            ]
          },
          "phone2": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone secundário.",
                "$ref": "#/components/schemas/Phone"
              }
            ]
          }
        }
      },
      "RegisterForm": {
        "required": [
          "name",
          "formTemplateId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 255,
            "type": "string",
            "description": "Nome do documento gerado a partir do modelo de formulário.",
            "example": "Ficha cadastral - Maria da Silva"
          },
          "formTemplateId": {
            "type": "string",
            "description": "Modelo de formulário da conta (`partners_v1_form_templates_list`). Deve estar ativo.",
            "format": "uuid",
            "example": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b"
          },
          "instructions": {
            "type": [
              "null",
              "string"
            ],
            "description": "Instruções exibidas a quem preenche o formulário.",
            "example": "Preencha os dados do locatário exatamente como constam no documento de identidade."
          },
          "finalMessage": {
            "type": [
              "null",
              "string"
            ],
            "description": "Mensagem exibida após o preenchimento do formulário.",
            "example": "Obrigado! Em breve você receberá o contrato para assinatura."
          },
          "folderId": {
            "type": [
              "null",
              "string"
            ],
            "description": "Pasta onde o documento gerado é salvo (`partners_v1_folders_list`). Sem valor, fica na raiz.",
            "format": "uuid",
            "example": "0199143c-2e3f-7a4b-9c5d-6e7f8a9b0c1d"
          },
          "notifiables": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string"
            },
            "description": "E-mails de usuários da conta notificados quando o formulário for preenchido. Cada e-mail precisa pertencer a um usuário da conta.",
            "example": [
              "financeiro@exemplo.com.br"
            ]
          },
          "groups": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Grupos da conta aos quais o documento gerado é vinculado (`partners_v1_groups_list`).",
            "example": [
              "01991444-8e9f-7a0b-9c2d-3e4f5a6b7c8d"
            ]
          },
          "fillers": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/RegisterFormFiller"
            },
            "description": "Pessoas que preenchem o formulário, cada uma com as tags dos campos sob sua responsabilidade. Recebem um e-mail com o link de preenchimento."
          },
          "filledFields": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/RegisterFormFilledField"
            },
            "description": "Campos preenchidos nesta chamada, sem depender de pessoa. Toda tag do modelo deve estar em `fillers` ou aqui; se tudo for preenchido aqui, o documento é gerado de imediato."
          }
        }
      },
      "RegisterFormFilledField": {
        "required": [
          "tag"
        ],
        "type": "object",
        "properties": {
          "tag": {
            "type": "string",
            "description": "Tag do campo no modelo de formulário (ver `fields[].tag` em `partners_v1_form_templates_list`).",
            "example": "valor_aluguel"
          },
          "value": {
            "type": "string",
            "description": "Valor do campo, sempre como texto (obrigatório se o campo é requerido no modelo). Para `Checkbox`, separe os valores com `||`, ex.: `Valor 1||Valor 2`.",
            "example": "2500.00"
          }
        }
      },
      "RegisterFormFiller": {
        "required": [
          "name",
          "email"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 255,
            "type": "string",
            "description": "Nome da pessoa que preenche o formulário.",
            "example": "Maria da Silva"
          },
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "E-mail que recebe o link de preenchimento.",
            "format": "email",
            "example": "maria.silva@exemplo.com.br"
          },
          "fieldsTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags dos campos do modelo que esta pessoa preenche. Uma tag só pode aparecer em uma pessoa ou em `filledFields`.",
            "example": [
              "nome_locatario",
              "cpf_locatario"
            ]
          }
        }
      },
      "RegisterPerson": {
        "required": [
          "cpf",
          "name",
          "email"
        ],
        "type": "object",
        "properties": {
          "cpf": {
            "maxLength": 30,
            "type": "string",
            "description": "CPF válido, com ou sem pontuação. É a chave do contato na conta: um CPF já cadastrado é atualizado.",
            "example": "11144477735"
          },
          "rg": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "Número do RG.",
            "example": "12.345.678-9"
          },
          "issuingAgency": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "Órgão emissor do RG.",
            "example": "SSP"
          },
          "stateIssuingAgency": {
            "maxLength": 2,
            "type": [
              "null",
              "string"
            ],
            "description": "UF do órgão emissor do RG (sigla com 2 letras).",
            "example": "SP"
          },
          "nationality": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Nacionalidade.",
            "example": "Brasileira"
          },
          "profession": {
            "maxLength": 100,
            "type": [
              "null",
              "string"
            ],
            "description": "Profissão.",
            "example": "Arquiteta"
          },
          "maritalStatus": {
            "description": "Estado civil.",
            "examples": [
              "Married"
            ],
            "$ref": "#/components/schemas/EMaritalStatus"
          },
          "name": {
            "maxLength": 255,
            "type": "string",
            "description": "Nome completo (pessoa) ou razão social (empresa).",
            "example": "Maria da Silva"
          },
          "alias": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Apelido (pessoa) ou nome fantasia (empresa).",
            "example": "Maria"
          },
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "E-mail do contato.",
            "format": "email",
            "example": "maria.silva@exemplo.com.br"
          },
          "addressInformation": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Endereço. Omitir na atualização apaga o endereço gravado.",
                "$ref": "#/components/schemas/AddressInformation"
              }
            ]
          },
          "phone1": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone principal.",
                "$ref": "#/components/schemas/Phone"
              }
            ]
          },
          "phone2": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone secundário.",
                "$ref": "#/components/schemas/Phone"
              }
            ]
          }
        }
      },
      "RequestDocumentSignatures": {
        "required": [
          "signers"
        ],
        "type": "object",
        "properties": {
          "ipAddress": {
            "type": [
              "null",
              "string"
            ],
            "description": "IP do usuário final que originou a ação no sistema do parceiro, gravado na trilha de auditoria do documento. Se vazio, usa o IP da requisição.",
            "example": "203.0.113.10"
          },
          "customMessage": {
            "type": [
              "null",
              "string"
            ],
            "description": "Mensagem personalizada incluída no e-mail e na página de assinatura enviados aos signatários.",
            "example": "Olá! Segue o contrato de locação do apartamento 501 para assinatura até 30/09."
          },
          "reminderFrequency": {
            "description": "Frequência dos lembretes automáticos enviados a quem ainda não assinou. Sem valor, nenhum lembrete automático é enviado.",
            "examples": [
              "ThreeDays"
            ],
            "$ref": "#/components/schemas/EReminderFrequency"
          },
          "signers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignerItem"
            },
            "description": "Signatários do documento. Pelo menos um; a combinação e-mail + papel não pode repetir."
          },
          "observers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "E-mails de observadores: recebem cópia do documento assinado ao final, sem assinar.",
            "example": [
              "financeiro@exemplo.com.br"
            ]
          },
          "signatureAreas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignatureAreaItem"
            },
            "description": "Posições (página e coordenadas em percentual) onde assinatura e rubrica são carimbadas no PDF. Sem itens, o carimbo é aplicado no padrão do sistema."
          },
          "informations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BaseDocumentInformation"
            },
            "description": "Campos de informação gravados no documento (ex.: número do contrato). Cada campo (`informationFieldId`) pode aparecer uma vez."
          },
          "deadlineForSignature": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data limite para assinatura. Somente a data é considerada: o cancelamento automático ocorre no decorrer do dia informado, em horário de Brasília — o último dia integralmente disponível para assinar é o anterior. Informe a data sem fuso ou em UTC; um offset pode deslocar o dia. Não pode ser anterior à data atual.",
            "format": "date-time",
            "example": "2026-09-30T12:00:00Z"
          },
          "scheduledTo": {
            "type": [
              "null",
              "string"
            ],
            "description": "Agenda o envio das solicitações de assinatura para esta data e hora (deve ser futura). Sem valor, o envio é imediato.",
            "format": "date-time",
            "example": "2026-09-04T09:00:00Z"
          }
        }
      },
      "SetDocumentGroups": {
        "type": "object",
        "properties": {
          "groups": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Grupos de acesso da conta que passam a ver o documento (`partners_v1_groups_list`). Obrigatório: omitir o campo ou enviar `null` responde 422. O conjunto informado substitui o atual; a lista vazia remove todos os grupos do documento.",
            "example": [
              "0199143d-3f40-7b5c-8d6e-7f8a9b0c1d2e"
            ]
          }
        }
      },
      "SignatureAdditionalAuthenticationMethodsUpdatedItemDto": {
        "required": [
          "documentSignatureId",
          "role",
          "authenticationMethod",
          "email",
          "name",
          "additionalAuthenticationMethods"
        ],
        "type": "object",
        "properties": {
          "documentSignatureId": {
            "type": "string",
            "format": "uuid"
          },
          "role": {
            "type": "string"
          },
          "authenticationMethod": {
            "$ref": "#/components/schemas/EAuthenticationMethod"
          },
          "email": {
            "type": [
              "null",
              "string"
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ]
          },
          "additionalAuthenticationMethods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EAdditionalAuthenticationMethod"
            }
          }
        }
      },
      "SignatureAreaItem": {
        "required": [
          "authenticationMethod",
          "email",
          "role",
          "type",
          "x",
          "y",
          "page",
          "height",
          "width"
        ],
        "type": "object",
        "properties": {
          "authenticationMethod": {
            "description": "Método de autenticação do signatário dono da posição; junto com `email` e `role`, identifica o item de `signers` correspondente.",
            "examples": [
              "Email"
            ],
            "$ref": "#/components/schemas/EAuthenticationMethod"
          },
          "email": {
            "type": "string",
            "description": "E-mail do signatário dono da posição (o mesmo informado em `signers`).",
            "format": "email",
            "example": "maria.silva@exemplo.com.br"
          },
          "role": {
            "type": "string",
            "description": "Papel do signatário dono da posição (o mesmo informado em `signers`).",
            "example": "Parte"
          },
          "type": {
            "description": "O que é carimbado na posição: assinatura, rubrica ou carimbo.",
            "examples": [
              "Signature"
            ],
            "$ref": "#/components/schemas/ESignatureType"
          },
          "x": {
            "type": "number",
            "description": "Posição horizontal do canto superior esquerdo, em percentual da largura da página a partir da margem esquerda (0 a 100).",
            "format": "double",
            "example": 12.5
          },
          "y": {
            "type": "number",
            "description": "Posição vertical do canto superior esquerdo, em percentual da altura da página a partir da margem superior (0 a 100).",
            "format": "double",
            "example": 78
          },
          "page": {
            "type": "integer",
            "description": "Página onde o carimbo é aplicado, a partir de 1.",
            "format": "int32",
            "example": 3
          },
          "height": {
            "type": "number",
            "description": "Altura do carimbo em percentual da altura da página. Zero usa o padrão (4). Recomenda-se proporção 1:3 entre altura e largura para assinatura e 1:1 para rubrica.",
            "format": "double",
            "example": 5
          },
          "width": {
            "type": "number",
            "description": "Largura do carimbo em percentual da largura da página. Zero usa o padrão (18 para assinatura, 6 para rubrica).",
            "format": "double",
            "example": 15
          }
        }
      },
      "SignaturesAdditionalAuthenticationMethodsUpdatedDto": {
        "required": [
          "documentId",
          "signatures"
        ],
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string",
            "format": "uuid"
          },
          "signatures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SignatureAdditionalAuthenticationMethodsUpdatedItemDto"
            }
          }
        }
      },
      "SignatureStatusDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador da assinatura (`signatureId` nas operações de editar, remover e reenviar).",
            "format": "uuid",
            "example": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f"
          },
          "email": {
            "type": "string",
            "description": "E-mail do signatário.",
            "example": "maria.silva@exemplo.com.br"
          },
          "role": {
            "type": "string",
            "description": "Papel com que assina.",
            "example": "Parte"
          },
          "signed": {
            "type": "boolean",
            "description": "Verdadeiro quando o signatário já assinou.",
            "example": true
          },
          "authenticationMethod": {
            "description": "Método de autenticação configurado para a assinatura.",
            "examples": [
              "Email"
            ],
            "$ref": "#/components/schemas/EAuthenticationMethod"
          },
          "signatureLinkMethod": {
            "description": "Canal de envio do link de assinatura. Nulo quando segue o método de autenticação.",
            "examples": [
              "Email"
            ],
            "$ref": "#/components/schemas/ESignatureLinkMethod"
          },
          "telephone": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone do signatário, quando informado.",
                "$ref": "#/components/schemas/Telephone"
              }
            ]
          },
          "signatureLinkTelephone": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Telefone que recebe o link de assinatura, quando diferente do principal.",
                "$ref": "#/components/schemas/Telephone"
              }
            ]
          },
          "name": {
            "type": [
              "null",
              "string"
            ],
            "description": "Nome informado pelo signatário ao assinar (ou o nome pré-cadastrado).",
            "example": "Maria da Silva"
          },
          "documentNumberType": {
            "type": [
              "null",
              "string"
            ],
            "description": "Tipo do documento informado ao assinar: `Cpf` ou `Cnpj`.",
            "example": "Cpf"
          },
          "documentNumber": {
            "type": [
              "null",
              "string"
            ],
            "description": "Número do documento informado ao assinar, somente dígitos.",
            "example": "11144477735"
          },
          "birthDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data de nascimento informada ao assinar.",
            "format": "date-time",
            "example": "1988-05-17T00:00:00Z"
          },
          "handwritten": {
            "type": "boolean",
            "description": "Verdadeiro quando a assinatura é desenhada à mão (há área de assinatura mapeada para o signatário).",
            "example": true
          },
          "order": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Posição na ordem de assinatura. Nulo em documentos sem ordenação.",
            "format": "int32",
            "example": 1
          },
          "signedAt": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data e hora da assinatura. Nulo enquanto pendente.",
            "format": "date-time",
            "example": "2026-08-21T10:12:45Z"
          },
          "requireDocumentNumber": {
            "type": "boolean",
            "description": "Verdadeiro quando o signatário precisa informar o CPF ao assinar.",
            "example": true
          }
        }
      },
      "SignerAddedDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador da assinatura criada (`signatureId` nas operações de editar, remover e reenviar).",
            "format": "uuid",
            "example": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b"
          }
        }
      },
      "SignerAddedToDocumentWebHookDto": {
        "required": [
          "documentId",
          "signer"
        ],
        "type": "object",
        "properties": {
          "documentId": {
            "type": "string",
            "description": "Identificador do documento que recebeu o signatário.",
            "format": "uuid"
          },
          "signer": {
            "required": [
              "id",
              "role",
              "authenticationMethod",
              "email",
              "name"
            ],
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Identificador da assinatura (o `signatureId` das operações da API).",
                "format": "uuid"
              },
              "role": {
                "type": "string",
                "description": "Papel com que assina."
              },
              "authenticationMethod": {
                "enum": [
                  "Email",
                  "Sms",
                  "WhatsApp",
                  "DigitalCertificate",
                  "NoAuthentication",
                  "FaceToFace"
                ],
                "type": "string",
                "description": "Valores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
                "x-enum-descriptions": {
                  "Email": "E-mail",
                  "Sms": "SMS",
                  "WhatsApp": "WhatsApp",
                  "DigitalCertificate": "Certificado Digital",
                  "NoAuthentication": "Sem Autenticação",
                  "FaceToFace": "Assinatura presencial"
                }
              },
              "email": {
                "type": [
                  "null",
                  "string"
                ],
                "description": "E-mail do signatário."
              },
              "name": {
                "type": [
                  "null",
                  "string"
                ],
                "description": "Nome do signatário, quando informado."
              }
            },
            "description": "Signatário como aparece nos eventos de webhook."
          }
        },
        "description": "Dados do evento `SignerAddedToDocument`."
      },
      "SignerItem": {
        "required": [
          "role",
          "email"
        ],
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "description": "Papel com que assina (ex.: `Parte`, `Testemunha`, `Aprovador`). Use um dos nomes de `partners_v1_document_signature_roles_list`; `Part` e `1` são aceitos como sinônimos de `Parte`.",
            "example": "Parte"
          },
          "order": {
            "type": [
              "null",
              "integer"
            ],
            "description": "Ordem de assinatura, a partir de 1. Informe para todos os signatários ou para nenhum; a sequência deve ser contínua e sem repetição. Signatários com a mesma ordem assinam em paralelo; a próxima ordem só é notificada quando a anterior concluir.",
            "format": "int32",
            "example": 1
          },
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "E-mail do signatário. Identifica o signatário no documento e recebe o link de assinatura quando `signatureLinkMethod` é `Email`.",
            "format": "email",
            "example": "maria.silva@exemplo.com.br"
          },
          "name": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Nome do signatário, exibido nas comunicações e pré-preenchido na assinatura.",
            "example": "Maria da Silva"
          },
          "documentNumber": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "CPF do signatário, somente dígitos ou com pontuação. Quando informado, deve ser válido; na assinatura o CPF digitado precisa coincidir.",
            "example": "11144477735"
          },
          "birthDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data de nascimento do signatário, pré-preenchida na assinatura.",
            "format": "date-time",
            "example": "1988-05-17T00:00:00Z"
          },
          "authenticationMethod": {
            "examples": [
              "Email"
            ],
            "enum": [
              "Email",
              "Sms",
              "WhatsApp",
              "DigitalCertificate",
              "NoAuthentication",
              "FaceToFace",
              null
            ],
            "type": [
              "null",
              "string"
            ],
            "description": "Como o signatário comprova a identidade ao assinar. `Sms` e `WhatsApp` exigem `telephone`; `DigitalCertificate` exige `requireDocumentNumber` verdadeiro. Sem valor, `Email`.\n\nValores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
            "default": "Email",
            "x-enum-descriptions": {
              "Email": "E-mail",
              "Sms": "SMS",
              "WhatsApp": "WhatsApp",
              "DigitalCertificate": "Certificado Digital",
              "NoAuthentication": "Sem Autenticação",
              "FaceToFace": "Assinatura presencial"
            }
          },
          "additionalAuthenticationMethods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EAdditionalAuthenticationMethod"
            },
            "description": "Evidências adicionais exigidas na assinatura (selfie, documento com foto, biometria facial). Biometria facial, com ou sem prova de vida, deve ser o único item da lista.",
            "example": [
              "SelfieWithFacialBiometrics"
            ]
          },
          "telephoneCountryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país do telefone do signatário, somente dígitos. Sem valor, `55` (Brasil).",
            "example": "55"
          },
          "telephone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Telefone do signatário com DDD, somente dígitos (mínimo 8). Obrigatório quando `authenticationMethod` é `Sms` ou `WhatsApp`: o código de confirmação vai para este número.",
            "example": "11987654321"
          },
          "signatureLinkMethod": {
            "description": "Canal pelo qual o link de assinatura é enviado. Sem valor, o link vai por e-mail; `NotSend` cria a assinatura sem notificar (o parceiro conduz o signatário).",
            "examples": [
              "WhatsApp"
            ],
            "$ref": "#/components/schemas/ESignatureLinkMethod"
          },
          "signatureLinkTelephoneCountryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país do telefone que recebe o link de assinatura por SMS ou WhatsApp. Sem valor, `55`.",
            "example": "55"
          },
          "signatureLinkTelephone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Telefone com DDD, somente dígitos, que recebe o link de assinatura quando `signatureLinkMethod` é `Sms` ou `WhatsApp`. Sem valor, usa `telephone`.",
            "example": "11987654321"
          },
          "requireDocumentNumber": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Exige que o signatário informe o CPF ao assinar. Sem valor, verdadeiro. Obrigatoriamente verdadeiro com `DigitalCertificate`.",
            "default": true,
            "example": true
          },
          "substitutes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubstituteSigner"
            },
            "description": "Suplentes que podem assinar no lugar do titular. Recebem o mesmo link; a assinatura de um deles conclui a etapa. E-mails não podem repetir nem coincidir com o titular."
          },
          "language": {
            "description": "Idioma das comunicações e da página de assinatura deste signatário. Sem valor, português.",
            "examples": [
              "Portuguese"
            ],
            "$ref": "#/components/schemas/EAppLanguage"
          },
          "saveAsContact": {
            "type": "boolean",
            "description": "Grava o signatário como contato da conta (pessoa, pelo CPF) ao criar a assinatura.",
            "example": false
          }
        }
      },
      "SimpleFormTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identificador do modelo de formulário (`formTemplateId` em `partners_v1_forms_create`).",
            "format": "uuid",
            "example": "01991442-6c7d-7e8f-9a0b-1c2d3e4f5a6b"
          },
          "source": {
            "description": "Origem do modelo: arquivo Word com marcadores ou editor do aplicativo.",
            "examples": [
              "File"
            ],
            "$ref": "#/components/schemas/EFormTemplateSource"
          },
          "name": {
            "type": "string",
            "description": "Nome do modelo.",
            "example": "Ficha cadastral de locatário"
          },
          "slug": {
            "type": "string",
            "description": "Identificador legível do modelo, único na conta.",
            "example": "ficha-cadastral-de-locatario"
          },
          "instructions": {
            "type": [
              "null",
              "string"
            ],
            "description": "Instruções padrão exibidas a quem preenche.",
            "example": "Preencha os dados conforme o documento de identidade."
          },
          "finalMessage": {
            "type": [
              "null",
              "string"
            ],
            "description": "Mensagem padrão exibida após o preenchimento.",
            "example": "Obrigado! Em breve você receberá o contrato para assinatura."
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FormTemplateFieldDto"
            },
            "description": "Campos do modelo; as tags são usadas em `fillers[].fieldsTags` e `filledFields[].tag`."
          }
        }
      },
      "SimpleSignatureAreaItem": {
        "required": [
          "type",
          "x",
          "y",
          "page",
          "height",
          "width"
        ],
        "type": "object",
        "properties": {
          "type": {
            "description": "O que é carimbado na posição: assinatura, rubrica ou carimbo.",
            "examples": [
              "Signature"
            ],
            "$ref": "#/components/schemas/ESignatureType"
          },
          "x": {
            "type": "number",
            "description": "Posição horizontal do canto superior esquerdo, em percentual da largura da página a partir da margem esquerda (0 a 100).",
            "format": "double",
            "example": 12.5
          },
          "y": {
            "type": "number",
            "description": "Posição vertical do canto superior esquerdo, em percentual da altura da página a partir da margem superior (0 a 100).",
            "format": "double",
            "example": 78
          },
          "page": {
            "type": "integer",
            "description": "Página onde o carimbo é aplicado, a partir de 1.",
            "format": "int32",
            "example": 3
          },
          "height": {
            "type": "number",
            "description": "Altura do carimbo em percentual da altura da página. Zero usa o padrão (4). Recomenda-se proporção 1:3 entre altura e largura para assinatura e 1:1 para rubrica.",
            "format": "double",
            "example": 5
          },
          "width": {
            "type": "number",
            "description": "Largura do carimbo em percentual da largura da página. Zero usa o padrão (18 para assinatura, 6 para rubrica).",
            "format": "double",
            "example": 15
          }
        }
      },
      "SubstituteSigner": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 255,
            "type": "string",
            "description": "E-mail do signatário. Identifica o signatário no documento e recebe o link de assinatura quando `signatureLinkMethod` é `Email`.",
            "format": "email",
            "example": "maria.silva@exemplo.com.br"
          },
          "name": {
            "maxLength": 255,
            "type": [
              "null",
              "string"
            ],
            "description": "Nome do signatário, exibido nas comunicações e pré-preenchido na assinatura.",
            "example": "Maria da Silva"
          },
          "documentNumber": {
            "maxLength": 30,
            "type": [
              "null",
              "string"
            ],
            "description": "CPF do signatário, somente dígitos ou com pontuação. Quando informado, deve ser válido; na assinatura o CPF digitado precisa coincidir.",
            "example": "11144477735"
          },
          "birthDate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Data de nascimento do signatário, pré-preenchida na assinatura.",
            "format": "date-time",
            "example": "1988-05-17T00:00:00Z"
          },
          "authenticationMethod": {
            "examples": [
              "Email"
            ],
            "enum": [
              "Email",
              "Sms",
              "WhatsApp",
              "DigitalCertificate",
              "NoAuthentication",
              "FaceToFace",
              null
            ],
            "type": [
              "null",
              "string"
            ],
            "description": "Como o signatário comprova a identidade ao assinar. `Sms` e `WhatsApp` exigem `telephone`; `DigitalCertificate` exige `requireDocumentNumber` verdadeiro. Sem valor, `Email`.\n\nValores:\n\n- `Email`: E-mail\n- `Sms`: SMS\n- `WhatsApp`: WhatsApp\n- `DigitalCertificate`: Certificado Digital\n- `NoAuthentication`: Sem Autenticação\n- `FaceToFace`: Assinatura presencial",
            "default": "Email",
            "x-enum-descriptions": {
              "Email": "E-mail",
              "Sms": "SMS",
              "WhatsApp": "WhatsApp",
              "DigitalCertificate": "Certificado Digital",
              "NoAuthentication": "Sem Autenticação",
              "FaceToFace": "Assinatura presencial"
            }
          },
          "additionalAuthenticationMethods": {
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/EAdditionalAuthenticationMethod"
            },
            "description": "Evidências adicionais exigidas na assinatura (selfie, documento com foto, biometria facial). Biometria facial, com ou sem prova de vida, deve ser o único item da lista.",
            "example": [
              "SelfieWithFacialBiometrics"
            ]
          },
          "telephoneCountryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país do telefone do signatário, somente dígitos. Sem valor, `55` (Brasil).",
            "example": "55"
          },
          "telephone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Telefone do signatário com DDD, somente dígitos (mínimo 8). Obrigatório quando `authenticationMethod` é `Sms` ou `WhatsApp`: o código de confirmação vai para este número.",
            "example": "11987654321"
          },
          "signatureLinkMethod": {
            "description": "Canal pelo qual o link de assinatura é enviado. Sem valor, o link vai por e-mail; `NotSend` cria a assinatura sem notificar (o parceiro conduz o signatário).",
            "examples": [
              "WhatsApp"
            ],
            "$ref": "#/components/schemas/ESignatureLinkMethod"
          },
          "signatureLinkTelephoneCountryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país do telefone que recebe o link de assinatura por SMS ou WhatsApp. Sem valor, `55`.",
            "example": "55"
          },
          "signatureLinkTelephone": {
            "type": [
              "null",
              "string"
            ],
            "description": "Telefone com DDD, somente dígitos, que recebe o link de assinatura quando `signatureLinkMethod` é `Sms` ou `WhatsApp`. Sem valor, usa `telephone`.",
            "example": "11987654321"
          },
          "requireDocumentNumber": {
            "type": [
              "null",
              "boolean"
            ],
            "description": "Exige que o signatário informe o CPF ao assinar. Sem valor, verdadeiro. Obrigatoriamente verdadeiro com `DigitalCertificate`.",
            "default": true,
            "example": true
          },
          "language": {
            "description": "Idioma das comunicações e da página de assinatura deste signatário. Sem valor, português.",
            "examples": [
              "Portuguese"
            ],
            "$ref": "#/components/schemas/EAppLanguage"
          },
          "saveAsContact": {
            "type": "boolean",
            "description": "Grava o signatário como contato da conta (pessoa, pelo CPF) ao criar a assinatura.",
            "example": false
          }
        }
      },
      "Telephone": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país, somente dígitos.",
            "example": "55"
          },
          "number": {
            "type": [
              "null",
              "string"
            ],
            "description": "Número com DDD, somente dígitos.",
            "example": "11987654321"
          },
          "value": {
            "type": [
              "null",
              "string"
            ],
            "description": "Código do país seguido do número, somente dígitos.",
            "example": "5511987654321"
          },
          "formatted": {
            "type": [
              "null",
              "string"
            ],
            "description": "Número formatado para exibição, com o código do país.",
            "example": "+55 (11) 9-8765-4321"
          }
        }
      },
      "TestWebHookDto": {
        "type": "object",
        "properties": {
          "test": {
            "type": "boolean",
            "description": "Sempre verdadeiro; marca a notificação de teste.",
            "example": true
          }
        },
        "description": "Dados do evento `Test`, enviado no cadastro de uma URL de webhook."
      },
      "UpdateCategory": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "type": "string",
            "description": "Nome da categoria, único na conta (sem diferenciar maiúsculas).",
            "example": "Contratos de locação"
          }
        }
      },
      "UpdateDocumentSignaturesAdditionalAuthenticationMethods": {
        "required": [
          "signatures"
        ],
        "type": "object",
        "properties": {
          "signatures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpdateDocumentSignaturesAdditionalAuthenticationMethodsItem"
            },
            "description": "Lista de signatários"
          }
        },
        "description": ""
      },
      "UpdateDocumentSignaturesAdditionalAuthenticationMethodsItem": {
        "required": [
          "documentSignatureId",
          "additionalAuthenticationMethods"
        ],
        "type": "object",
        "properties": {
          "documentSignatureId": {
            "type": "string",
            "description": "Id do Signatário no documento",
            "format": "uuid"
          },
          "additionalAuthenticationMethods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EAdditionalAuthenticationMethod"
            },
            "description": "Métodos de autenticação adicionais do signatário"
          }
        },
        "description": ""
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "description": "Chave de integração do parceiro, enviada **sem prefixo** no header `Authorization`\n(não use `Bearer`):\n\n```\nAuthorization: 3f9c0a1b2c3d4e5f6a7b8c9d0e1f2a3b\n```\n\nA chave identifica o parceiro; a conta operada vem no `accountId` da rota e precisa estar\nvinculada a ele. A chave é emitida no cadastro do parceiro pela equipe LetsSign ou\ngerada pela própria conta na área de integrações do aplicativo; regenerá-la invalida a\nanterior na hora.\n\nRespostas `401`: chave ausente ou inválida, conta não vinculada ao parceiro, período de teste\nexpirado ou grupo de faturamento sem plano ativo. Respostas `403`: o plano da conta não inclui\numa feature exigida pela operação (ver `x-required-features`).",
        "name": "Authorization",
        "in": "header"
      },
      "Bearer": {
        "type": "http",
        "description": "JWT emitido pela API de identidade para usuários do aplicativo. Não se aplica às APIs de parceiros.",
        "scheme": "Bearer",
        "bearerFormat": "{access_token}"
      }
    }
  },
  "tags": [
    {
      "name": "Accounts",
      "description": "Contas operadas pelo parceiro. Todo o restante da API é escopado por `accountId`; comece aqui para obter os identificadores."
    },
    {
      "name": "Features",
      "description": "Funcionalidades liberadas pelo plano de cada conta. Operações exigem features específicas e respondem 403 sem elas."
    },
    {
      "name": "DocumentSignatures",
      "description": "Fluxo de assinatura: criar documento a partir de arquivo e solicitar assinaturas, acompanhar o status, adicionar, editar, remover e reenviar signatários, cancelar."
    },
    {
      "name": "Documents",
      "description": "Documentos da conta: listagem, URLs de download (original, assinado, com anexos, com certificado digital), campos de informação, campos de formulário, mapeamento de assinaturas e solicitação de assinaturas para um documento já existente."
    },
    {
      "name": "Webhooks",
      "description": "URLs da conta que recebem um POST a cada evento: documento enviado, signatário assinou, assinaturas concluídas, status alterado, documento removido, formulário preenchido."
    },
    {
      "name": "Folders",
      "description": "Pastas que organizam os documentos da conta."
    },
    {
      "name": "Categories",
      "description": "Categorias que classificam os documentos da conta."
    },
    {
      "name": "Contacts",
      "description": "Pessoas físicas (CPF) e jurídicas (CNPJ) cadastradas na conta, reutilizáveis como signatários."
    },
    {
      "name": "Users",
      "description": "Usuários vinculados à conta."
    },
    {
      "name": "Groups",
      "description": "Grupos de usuários da conta."
    },
    {
      "name": "DocumentSignatureRoles",
      "description": "Papéis de signatário disponíveis na conta (o \"assinar como\": parte, testemunha e outros)."
    },
    {
      "name": "InformationFields",
      "description": "Campos de informação configurados na conta, que podem ser preenchidos em cada documento."
    },
    {
      "name": "FormTemplates",
      "description": "Modelos de formulário da conta, base para criar documentos a partir de campos preenchidos."
    },
    {
      "name": "Forms",
      "description": "Criação de documentos a partir de um modelo de formulário preenchido."
    },
    {
      "name": "Plans",
      "description": "Planos vinculados ao parceiro. Não exige `accountId`."
    }
  ],
  "webhooks": {
    "Test": {
      "summary": "Enviado no cadastro de uma URL de webhook, para verificar a disponibilidade",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Enviado no cadastro de uma URL de webhook, para verificar a disponibilidade",
        "description": "Enviado uma única vez, no cadastro da URL por `partners_v1_webhooks_create`, para verificar a\ndisponibilidade. O resultado fica em `available` do webhook; a URL é gravada mesmo quando o\nteste falha. `entity.test` é sempre `true`. Não é reenviado antes das demais entregas.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_test",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "Test"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/TestWebHookDto"
                  }
                },
                "description": "Notificação do evento `Test`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "Test",
                "entity": {
                  "test": true
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "DocumentSentToSignature": {
      "summary": "Documento enviado para assinatura",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Documento enviado para assinatura",
        "description": "Um documento foi enviado para assinatura: na criação por\n`partners_v1_document_signatures_create_from_file`, em `partners_v1_documents_request_signatures`\nou pelo aplicativo. Com envio agendado (`scheduledTo`), o evento sai no momento da criação, não\nna data agendada.\n\n`entity.signers` traz os signatários no momento do envio, com o `id` da assinatura (o\n`signatureId` das operações de editar, remover e reenviar), papel, método de autenticação, e-mail\ne nome.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_document_sent_to_signature",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "DocumentSentToSignature"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/DocumentSentToSignWebHookDto"
                  }
                },
                "description": "Notificação do evento `DocumentSentToSignature`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "DocumentSentToSignature",
                "entity": {
                  "documentId": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                  "sentAt": "2026-08-20T14:05:00Z",
                  "signers": [
                    {
                      "id": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
                      "role": "Parte",
                      "authenticationMethod": "Email",
                      "email": "maria.silva@exemplo.com.br",
                      "name": "Maria da Silva"
                    },
                    {
                      "id": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b",
                      "role": "Testemunha",
                      "authenticationMethod": "Email",
                      "email": "joao.souza@exemplo.com.br",
                      "name": "João de Souza"
                    }
                  ]
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "SignerAddedToDocument": {
      "summary": "Novo signatário adicionado ao documento",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Novo signatário adicionado ao documento",
        "description": "Um signatário foi adicionado a um documento que já estava em assinatura, por\n`partners_v1_document_signatures_add_signer` ou pelo aplicativo. `entity.signer.id` é o\n`signatureId` da nova assinatura.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_signer_added_to_document",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "SignerAddedToDocument"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/SignerAddedToDocumentWebHookDto"
                  }
                },
                "description": "Notificação do evento `SignerAddedToDocument`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "SignerAddedToDocument",
                "entity": {
                  "documentId": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                  "signer": {
                    "id": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b",
                    "role": "Testemunha",
                    "authenticationMethod": "Email",
                    "email": "joao.souza@exemplo.com.br",
                    "name": "João de Souza"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "DocumentSignatureMember": {
      "summary": "Signatário assinou o documento",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Signatário assinou o documento",
        "description": "Um signatário assinou o documento. `entity` traz o documento, o papel, o e-mail, o nome informado\nna assinatura e `signedAt`. Chega uma vez por signatário; quando o último assina, também é\nenviado `DocumentSignatureFinished`.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_document_signature_member",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "DocumentSignatureMember"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/DocumentSignatureMemberWebHookDto"
                  }
                },
                "description": "Notificação do evento `DocumentSignatureMember`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "DocumentSignatureMember",
                "entity": {
                  "documentId": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                  "role": "Parte",
                  "email": "maria.silva@exemplo.com.br",
                  "name": "Maria da Silva",
                  "signedAt": "2026-08-21T10:12:45Z"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "DocumentSignatureFinished": {
      "summary": "Todos signatários assinaram o documento",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Todos signatários assinaram o documento",
        "description": "O último signatário assinou: `entity.signatureStatus` é `Signed` e `entity.status` é o status do\ndocumento na conclusão (em geral `Finished`). A partir daqui o PDF assinado está disponível em\n`partners_v1_documents_download_signed` e, havendo signatário com certificado digital, em\n`partners_v1_documents_download_digital_certificate`.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_document_signature_finished",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "DocumentSignatureFinished"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/DocumentSignatureStatusWebHookDto"
                  }
                },
                "description": "Notificação do evento `DocumentSignatureFinished`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "DocumentSignatureFinished",
                "entity": {
                  "id": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                  "status": "Finished",
                  "signatureStatus": "Signed"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "DocumentStatusChanged": {
      "summary": "Documento teve status alterado",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Documento teve status alterado",
        "description": "O status do documento em `entity.id` mudou. Dois casos hoje:\n\n- `entity.status` = `Finished`: o conteúdo do documento ficou pronto (documentos gerados no\n  editor ou a partir de formulário).\n- `entity.status` = `NewVersionBase`: o documento virou base de uma nova versão, criada no\n  aplicativo; `entity.newVersionId` identifica a nova versão, que segue o fluxo normal.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_document_status_changed",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "DocumentStatusChanged"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/DocumentStatusChangedWebHookDto"
                  }
                },
                "description": "Notificação do evento `DocumentStatusChanged`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "DocumentStatusChanged",
                "entity": {
                  "status": "NewVersionBase",
                  "newVersionId": "0199144e-b8c9-7d0e-8f1a-2b3c4d5e6f7a",
                  "id": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "DocumentRemoved": {
      "summary": "Documento foi removido",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Documento foi removido",
        "description": "O documento em `entity.id` foi excluído, por `partners_v1_documents_delete` ou pelo aplicativo.\nAo excluir um envelope, este evento sai uma vez, com o id do envelope; quem lista os documentos\natingidos é o `DocumentSignaturesCanceled` da mesma exclusão, enviado quando o documento estava\naguardando assinaturas — parte das exclusões feitas no aplicativo não o envia. Depois deste evento,\nas operações sobre o documento respondem `400`.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_document_removed",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "DocumentRemoved"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/DocumentRemovedWebHookDto"
                  }
                },
                "description": "Notificação do evento `DocumentRemoved`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "DocumentRemoved",
                "entity": {
                  "id": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "FormFilled": {
      "summary": "Formulário foi preenchido",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Formulário foi preenchido",
        "description": "Um formulário criado por `partners_v1_forms_create` foi preenchido por completo e o documento\ncorrespondente foi gerado. `entity.formId` e `entity.documentId` identificam formulário e\ndocumento. Em seguida, solicite as assinaturas com `partners_v1_documents_request_signatures`.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_form_filled",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "FormFilled"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/FormFilledWebhookDto"
                  }
                },
                "description": "Notificação do evento `FormFilled`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "FormFilled",
                "entity": {
                  "formId": "01991443-7d8e-7f9a-8b1c-2d3e4f5a6b7c",
                  "documentId": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "DocumentSignaturesExpired": {
      "summary": "Prazo de assinatura do documento venceu",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Prazo de assinatura do documento venceu",
        "description": "O prazo de assinatura venceu e as assinaturas foram canceladas pelo processo automático, que roda\numa vez por dia. `entity.deadlineForSignature` é o prazo que venceu.\n\n`entity.id` é o envelope a que os documentos pertencem, ou o próprio documento quando ele não está\nem um envelope. `entity.documents` traz somente os documentos cancelados — em um envelope o\nvencimento pode atingir parte deles, porque o prazo é por documento — e, em cada um,\n`pendingSigners` com os signatários que ainda não tinham assinado, no mesmo formato de\n`webhook_document_sent_to_signature`.\n\nGuarde `pendingSigners`: o cancelamento apaga as assinaturas do documento, então quem não assinou\nnão aparece mais em `partners_v1_document_signatures_status`. Os documentos ficam com o status de\nassinatura `SignatureNotSet` e aceitam uma nova solicitação por\n`partners_v1_documents_request_signatures`, com um prazo novo.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_document_signatures_expired",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "DocumentSignaturesExpired"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/DocumentSignaturesExpiredWebHookDto"
                  }
                },
                "description": "Notificação do evento `DocumentSignaturesExpired`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "DocumentSignaturesExpired",
                "entity": {
                  "deadlineForSignature": "2026-09-08T00:00:00Z",
                  "id": "01991447-3c4d-7e5f-8a6b-7c8d9e0f1a2b",
                  "documents": [
                    {
                      "id": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                      "pendingSigners": [
                        {
                          "id": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
                          "role": "Parte",
                          "authenticationMethod": "Email",
                          "email": "maria.silva@exemplo.com.br",
                          "name": "Maria da Silva"
                        },
                        {
                          "id": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b",
                          "role": "Testemunha",
                          "authenticationMethod": "Email",
                          "email": "joao.souza@exemplo.com.br",
                          "name": "João de Souza"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    },
    "DocumentSignaturesCanceled": {
      "summary": "Assinaturas do documento foram canceladas",
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Assinaturas do documento foram canceladas",
        "description": "As assinaturas foram canceladas a pedido, por `partners_v1_document_signatures_cancel`,\n`partners_v1_documents_delete` ou pelo aplicativo. Uma exclusão só envia este evento se o documento\nestava aguardando assinaturas, e parte das exclusões feitas no aplicativo envia somente o\n`DocumentRemoved`. Para o cancelamento automático no vencimento do prazo, o evento é\n`webhook_document_signatures_expired`.\n\n`entity.id` é o envelope a que os documentos pertencem, ou o próprio documento quando ele não está\nem um envelope. `entity.documents` traz somente os documentos cancelados — em um envelope o\ncancelamento pode atingir parte deles — e, em cada um, `pendingSigners` com os signatários que ainda\nnão tinham assinado, no mesmo formato de `webhook_document_sent_to_signature`.\n\nGuarde `pendingSigners`: o cancelamento apaga as assinaturas do documento, então quem não assinou\nnão aparece mais em `partners_v1_document_signatures_status`. Os documentos ficam com o status de\nassinatura `SignatureNotSet` e aceitam uma nova solicitação por\n`partners_v1_documents_request_signatures`. Quando o cancelamento vem de uma exclusão, o\n`DocumentRemoved` do documento excluído também é enviado.\n\n**Entrega**\n\n- `POST` com `Content-Type: application/json; charset=utf-8`, sem cabeçalho de autenticação ou\n  assinatura. Valide a origem pelo `accountId` e, se precisar, por um segredo na própria URL.\n- Responda qualquer status 2xx (200 ou 202 recomendados) em até 20 segundos. Outro status,\n  timeout ou erro de rede contam como falha; a entrega é repetida em seguida, até 5 tentativas.\n- `occurredAt` é o instante desta tentativa de envio, não o do evento, e muda a cada\n  retentativa. Não há identificador de entrega no payload: trate repetições pelo conteúdo de\n  `entity`.\n- Não há garantia de ordem entre eventos, mesmo do mesmo documento. Para o estado atual, consulte\n  `partners_v1_document_signatures_status`.\n- Cada URL cadastrada na conta recebe todos os eventos; não há filtro por evento.",
        "operationId": "webhook_document_signatures_canceled",
        "requestBody": {
          "description": "Corpo enviado à URL cadastrada. O formato de `entity` depende de `event`.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "occurredAt",
                  "accountId",
                  "event",
                  "entity"
                ],
                "type": "object",
                "properties": {
                  "occurredAt": {
                    "type": "string",
                    "description": "Instante (UTC) desta tentativa de envio. Muda a cada retentativa; não é a data do evento.",
                    "format": "date-time"
                  },
                  "accountId": {
                    "type": "string",
                    "description": "Conta à qual o evento pertence.",
                    "format": "uuid"
                  },
                  "event": {
                    "enum": [
                      "DocumentSignaturesCanceled"
                    ],
                    "type": "string",
                    "description": "Nome do evento, que define o formato de `entity`."
                  },
                  "entity": {
                    "description": "Dados do evento, no formato do schema referenciado; qual schema vem em `event`.",
                    "$ref": "#/components/schemas/DocumentSignaturesCanceledWebHookDto"
                  }
                },
                "description": "Notificação do evento `DocumentSignaturesCanceled`."
              },
              "example": {
                "occurredAt": "2026-08-21T10:12:45Z",
                "accountId": "0199143a-7c2e-7b1a-9f2d-3c4b5a6d7e8f",
                "event": "DocumentSignaturesCanceled",
                "entity": {
                  "id": "01991447-3c4d-7e5f-8a6b-7c8d9e0f1a2b",
                  "documents": [
                    {
                      "id": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
                      "pendingSigners": [
                        {
                          "id": "01991441-0a1b-7c2d-8e3f-4a5b6c7d8e9f",
                          "role": "Parte",
                          "authenticationMethod": "Email",
                          "email": "maria.silva@exemplo.com.br",
                          "name": "Maria da Silva"
                        },
                        {
                          "id": "01991441-9f8e-7d6c-8b5a-4c3d2e1f0a9b",
                          "role": "Testemunha",
                          "authenticationMethod": "Email",
                          "email": "joao.souza@exemplo.com.br",
                          "name": "João de Souza"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Entrega confirmada. Qualquer status 2xx serve; 200 e 202 são os recomendados. O corpo é ignorado."
          },
          "default": {
            "description": "Outro status, timeout de 20 segundos ou erro de rede: a entrega conta como falha e é repetida em seguida, até 5 tentativas."
          }
        }
      }
    }
  }
}