{
  "openapi": "3.1.1",
  "info": {
    "title": "V2 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 **v2**. Ela substitui endpoints específicos da v1: as listagens paginadas de documentos,\ncategorias e usuários (novo formato de paginação) e o download do documento com anexos. Todo o\nrestante continua na [Partners API v1](https://api.letssign.com.br/docs/partners/v1), que compartilha autenticação, contas e\nformato de erro com esta. Use a v2 sempre que o endpoint existir aqui, 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": "v2"
  },
  "servers": [
    {
      "url": "https://api.letssign.com.br",
      "description": "LetsSign"
    }
  ],
  "paths": {
    "/partners/v2/accounts/{accountId}/categories": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "Lista paginada de categorias da conta",
        "description": "Lista as categorias da conta com paginação e filtros por nome e situação.\n\n- `page` começa em 1; `perPage` define o tamanho da página. Ordene por `Name` (padrão),\n  `CreatedAt` ou `Active`, com `sortDirection` `Asc` ou `Desc`.\n- A resposta traz `items`, `count` (total de registros), `totalPages` e os indicadores de\n  navegação (`hasNextPage`, `nextPage`, `hasPreviousPage`, `previousPage`).\n- Substitui `partners_v1_categories_list`. Somente leitura.\n\n**Features exigidas no plano da conta:** `categories`.",
        "operationId": "partners_v2_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": "Page",
            "in": "query",
            "description": "Número da página, a partir de 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "PerPage",
            "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. Aceita `Name`, `CreatedAt`, `Active`; padrão `Name`.",
            "schema": {
              "enum": [
                "Name",
                "CreatedAt",
                "Active"
              ],
              "type": "string"
            }
          },
          {
            "name": "SortDirection",
            "in": "query",
            "description": "Sentido da ordenação.",
            "schema": {
              "enum": [
                "Asc",
                "Desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOfCategoryDto"
                },
                "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
                    }
                  ],
                  "hasPreviousPage": false,
                  "hasNextPage": false,
                  "page": 1,
                  "perPage": 20,
                  "count": 1,
                  "totalPages": 1
                }
              }
            }
          },
          "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`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "categories"
        ]
      }
    },
    "/partners/v2/accounts/{accountId}/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Lista paginada de documentos da conta",
        "description": "Lista os documentos da conta com paginação e filtros por identificador, nome, categorias, status,\nstatus de assinatura, prazo, data da última assinatura e data de criação.\n\n- `page` começa em 1; `perPage` define o tamanho da página. Ordene por `Name` (padrão) ou\n  `CreatedAt`, com `sortDirection` `Asc` ou `Desc`.\n- A resposta traz `items`, `count` (total de registros), `totalPages` e os indicadores de\n  navegação (`hasNextPage`, `nextPage`, `hasPreviousPage`, `previousPage`).\n- Substitui `partners_v1_documents_list`. Somente leitura.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v2_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": "Filtra por um documento específico.",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "01991440-5a6b-7c8d-9e0f-1a2b3c4d5e6f"
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Filtra documentos cujo nome contém o texto.",
            "schema": {
              "type": "string"
            },
            "example": "Contrato"
          },
          {
            "name": "DeadlineDateFrom",
            "in": "query",
            "description": "Prazo de assinatura a partir desta data (inclusive).",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-09-01"
          },
          {
            "name": "DeadlineDateTo",
            "in": "query",
            "description": "Prazo de assinatura até esta data (inclusive).",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-09-30"
          },
          {
            "name": "SignatureDateFrom",
            "in": "query",
            "description": "Data da última assinatura a partir desta data (inclusive).",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-08-01"
          },
          {
            "name": "SignatureDateTo",
            "in": "query",
            "description": "Data da última assinatura até esta data (inclusive).",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-08-31"
          },
          {
            "name": "Categories",
            "in": "query",
            "description": "Filtra documentos em qualquer das categorias informadas.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            },
            "example": [
              "0199143b-1d2e-7f3a-8b4c-5d6e7f8a9b0c"
            ]
          },
          {
            "name": "DocumentStatus",
            "in": "query",
            "description": "Filtra por status do documento (qualquer dos informados).",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EDocumentStatus"
              }
            },
            "example": [
              "Finished"
            ]
          },
          {
            "name": "DocumentSignatureStatus",
            "in": "query",
            "description": "Filtra por status de assinatura (qualquer dos informados).",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/EDocumentSignatureStatus"
              }
            },
            "example": [
              "WaitingSignatures"
            ]
          },
          {
            "name": "CreatedFrom",
            "in": "query",
            "description": "Criados a partir desta data (inclusive).",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-08-01"
          },
          {
            "name": "CreatedTo",
            "in": "query",
            "description": "Criados até esta data (inclusive).",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-08-31"
          },
          {
            "name": "Page",
            "in": "query",
            "description": "Número da página, a partir de 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "PerPage",
            "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. Aceita `Name`, `CreatedAt`; padrão `Name`.",
            "schema": {
              "enum": [
                "Name",
                "CreatedAt"
              ],
              "type": "string"
            }
          },
          {
            "name": "SortDirection",
            "in": "query",
            "description": "Sentido da ordenação.",
            "schema": {
              "enum": [
                "Asc",
                "Desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOfDocumentDto"
                },
                "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"
                    }
                  ],
                  "hasPreviousPage": false,
                  "hasNextPage": true,
                  "nextPage": 2,
                  "page": 1,
                  "perPage": 20,
                  "count": 48,
                  "totalPages": 3
                }
              }
            }
          },
          "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/v2/accounts/{accountId}/documents/{id}/download/with-attachments": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Info para download do documento com anexos",
        "description": "Devolve uma URL temporária para baixar o PDF do documento com os anexos incorporados.\n\n- Sem anexos, devolve o arquivo original. Responde `400` quando o documento não existe na conta\n  ou não tem arquivo disponível.\n- A URL é pré-assinada e vale por 5 minutos; cada chamada gera uma URL nova. `name` é o nome do\n  documento, sem extensão.\n- Substitui `partners_v1_documents_download_with_attachments`.\n\n**Features exigidas no plano da conta:** `documents`.",
        "operationId": "partners_v2_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`."
          }
        },
        "security": [
          {
            "ApiKey": [ ]
          }
        ],
        "x-required-features": [
          "documents"
        ]
      }
    },
    "/partners/v2/accounts/{accountId}/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Lista paginada de usuários da conta",
        "description": "Lista os usuários da conta com paginação e filtros por identificador, nome, e-mail, situação,\nvisibilidade e perfil.\n\n- `page` começa em 1; `perPage` define o tamanho da página. Ordene por `FirstName` (padrão),\n  `Email`, `Profile`, `AddedAt` ou `Active`, com `sortDirection` `Asc` ou `Desc`.\n- A resposta traz `items`, `count` (total de registros), `totalPages` e os indicadores de\n  navegação (`hasNextPage`, `nextPage`, `hasPreviousPage`, `previousPage`).\n- Substitui `partners_v1_users_list`. Somente leitura.",
        "operationId": "partners_v2_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": "Filtra por um usuário específico.",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "0199143f-5b6c-7d7e-8f80-9a0b1c2d3e4f"
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Filtra usuários cujo nome contém o texto.",
            "schema": {
              "type": "string"
            },
            "example": "Ana"
          },
          {
            "name": "Active",
            "in": "query",
            "description": "Filtra por situação: `true` só ativos, `false` só inativos. Sem valor, ambos.",
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "Visible",
            "in": "query",
            "description": "Filtra por visibilidade na conta. Sem valor, todos.",
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "Profile",
            "in": "query",
            "description": "Filtra por perfil na conta.",
            "schema": {
              "$ref": "#/components/schemas/EProfile"
            },
            "example": "Admin"
          },
          {
            "name": "Email",
            "in": "query",
            "description": "Filtra usuários cujo e-mail contém o texto.",
            "schema": {
              "type": "string"
            },
            "example": "ana.pereira"
          },
          {
            "name": "Page",
            "in": "query",
            "description": "Número da página, a partir de 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "PerPage",
            "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. Aceita `FirstName`, `Email`, `Profile`, `AddedAt`, `Active`; padrão `FirstName`.",
            "schema": {
              "enum": [
                "FirstName",
                "Email",
                "Profile",
                "AddedAt",
                "Active"
              ],
              "type": "string"
            }
          },
          {
            "name": "SortDirection",
            "in": "query",
            "description": "Sentido da ordenação.",
            "schema": {
              "enum": [
                "Asc",
                "Desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedListOfPartnerUserAccountDto"
                },
                "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"
                    }
                  ],
                  "hasPreviousPage": false,
                  "hasNextPage": false,
                  "page": 1,
                  "perPage": 20,
                  "count": 2,
                  "totalPages": 1
                }
              }
            }
          },
          "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": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "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
          }
        }
      },
      "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"
          }
        }
      },
      "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`."
      },
      "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."
      },
      "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"
          }
        }
      },
      "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"
        }
      },
      "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"
        }
      },
      "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."
      },
      "PagedListOfCategoryDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CategoryDto"
            }
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "previousPage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "nextPage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PagedListOfDocumentDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentDto"
            }
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "previousPage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "nextPage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "PagedListOfPartnerUserAccountDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartnerUserAccountDto"
            }
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "hasNextPage": {
            "type": "boolean"
          },
          "previousPage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "nextPage": {
            "type": [
              "null",
              "integer"
            ],
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "format": "int32"
          },
          "perPage": {
            "type": "integer",
            "format": "int32"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "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"
          }
        }
      },
      "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`."
      },
      "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."
      }
    },
    "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": "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": "Categories",
      "description": "Categorias que classificam os documentos da conta."
    },
    {
      "name": "Users",
      "description": "Usuários vinculados à conta."
    }
  ],
  "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."
          }
        }
      }
    }
  }
}