openapi: 3.0.0
info:
  title: GTSign API
  description: API para criar documentos e signatários
  version: 1.0.0
servers:
  - url: 'http://app.staging.gtsign.giro.tech/api'
    description: Ambiente de Staging
  - url: 'https://api.gtsign.com.br'
    description: Ambiente de Produção
paths:
  /documents:
    post:
      summary: Cria um novo documento e signatários
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                document:
                  type: object
                  required:
                    - name
                    - originalDocument
                  properties:
                    name:
                      type: string
                    originalDocument:
                      type: object
                      properties:
                        file:
                          type: string
                          description: Arquivo codificado em base64
                    externalIdentification:
                      type: string
                      description: Identificação externa única
                    notificationType:
                      type: string
                      enum:
                        - DONT_NOTIFY
                        - NOTIFY
                      default: NOTIFY
                    deadline:
                      type: string
                      format: date
                      description: Data limite para assinatura (obrigatório se setReadyToSign = true)
                    notificationPeriodDelivery:
                      type: integer
                      enum:
                        - 3
                        - 6
                        - 9
                        - 12
                      description: 'Intervalo, em dias, para lembretes de assinatura (obrigatório se setReadyToSign = true)'
                    signatureMethods:
                      type: array
                      items:
                        type: string
                        enum:
                          - TOKEN
                          - SIGNATURE
                          - SELFIE
                        description: Métodos de assinatura (obrigatório se setReadyToSign = true)
                    setReadyToSign:
                      type: boolean
                      default: false
                      description: Define se o documento deve ser disponibilizado para assinatura
                    minimumSignatureRequirements:
                      type: array
                      items:
                        type: object
                        properties:
                          signatureType:
                            type: string
                            enum:
                              - PART
                              - WITNESS
                              - CONTRACTOR
                              - HIRED
                              - ADMINISTRATOR
                              - SIGN_TO_ACKNOWLEDGE_RECEIPT
                              - SIGN_TO_APPROVE
                              - SIGN_TO_RATIFY
                              - GUARANTOR
                              - TRANSFEROR
                              - TRANSFEREE
                              - JOINT_DEBTOR
                              - ISSUER
                              - ENDORSER
                              - ENDORSEE
                              - WARRANTOR
                              - MANAGER
                              - INTERVENING_PARTY
                              - LESSOR
                              - LESSEE
                              - PURCHASER
                              - SELLER
                              - ATTORNEY
                              - LEGAL_REPRESENTATIVE
                              - JOINTLY_LIABLE
                              - VALIDATOR
                          minimumSignatureNumber:
                            type: integer
                            description: Quantidade mínima de assinaturas
                signatures:
                  type: array
                  items:
                    type: object
                    required:
                      - signatureType
                      - notificationChannel
                      - name
                      - person
                    properties:
                      email:
                        type: string
                        description: E-mail do signatário (Obrigatório caso notificationChannel seja EMAIL)
                      phone:
                        type: string
                        example: '+5511912345678'
                        description: Número de telefone brasileiro no formato E.164. (Obrigatório caso notificationChannel seja WHATSAPP)
                      signatureType:
                        type: string
                        enum:
                          - PART
                          - WITNESS
                          - CONTRACTOR
                          - HIRED
                          - ADMINISTRATOR
                          - SIGN_TO_ACKNOWLEDGE_RECEIPT
                          - SIGN_TO_APPROVE
                          - SIGN_TO_RATIFY
                          - GUARANTOR
                          - TRANSFEROR
                          - TRANSFEREE
                          - JOINT_DEBTOR
                          - ISSUER
                          - ENDORSER
                          - ENDORSEE
                          - WARRANTOR
                          - MANAGER
                          - INTERVENING_PARTY
                          - LESSOR
                          - LESSEE
                          - PURCHASER
                          - SELLER
                          - ATTORNEY
                          - LEGAL_REPRESENTATIVE
                          - JOINTLY_LIABLE
                          - VALIDATOR
                      notificationChannel:
                        type: string
                        enum:
                          - EMAIL
                          - WHATSAPP
                      name:
                        type: string
                      person:
                        type: object
                        required:
                          - cpf
                        properties:
                          cpf:
                            type: string
      responses:
        '201':
          description: Documento e signatários criados com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  document:
                    type: object
                    properties:
                      uuid:
                        type: string
                  signatures:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        email:
                          type: string
                        person:
                          type: object
                          properties:
                            cpf:
                              type: string
        '400':
          description: Erro na criação do documento ou signatários
      security:
        - jwtAuth: []
  '/documents/{uuid}/ready-to-sign':
    patch:
      summary: Altera o status de um documento para disponível para assinatura
      parameters:
        - name: uuid
          in: path
          required: true
          description: UUID do documento
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                deadline:
                  type: string
                  format: date
                  description: Data limite para assinatura
                notificationPeriodDelivery:
                  type: integer
                  enum:
                    - 3
                    - 6
                    - 9
                    - 12
                  description: 'Intervalo, em dias, para lembretes de assinatura'
                signatureMethods:
                  type: array
                  items:
                    type: string
                    enum:
                      - TOKEN
                      - SIGNATURE
                      - SELFIE
                  description: Métodos de assinatura
      responses:
        '200':
          description: Documento pronto para assinatura e URLs obtidas com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  signaturesLinks:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        signatureLink:
                          type: string
                          description: URL para assinatura do documento
        '404':
          description: Documento não encontrado
      security:
        - jwtAuth: []
  /documents/resend-email:
    post:
      summary: Reenvia e-mail de assinatura
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                document:
                  type: object
                  properties:
                    uuid:
                      type: string
                      description: UUID do documento
                personSignature:
                  type: object
                  properties:
                    uuid:
                      type: string
                      description: UUID do signatário
      responses:
        '200':
          description: E-mail reenviado com sucesso
        '404':
          description: Documento não encontrado
      security:
        - jwtAuth: []
  '/documents/cancel/{uuid}':
    post:
      summary: Cancela um documento
      parameters:
        - name: uuid
          in: path
          required: true
          description: UUID do documento a ser cancelado
          schema:
            type: string
      responses:
        '200':
          description: Documento cancelado com sucesso
        '404':
          description: Documento não encontrado
      security:
        - jwtAuth: []
  /documents/my-company:
    get:
      summary: Lista os documentos criados pela empresa
      responses:
        '200':
          description: Lista de documentos retornada com sucesso
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                    name:
                      type: string
                    externalIdentification:
                      type: string
                    hashMD5:
                      type: string
                    hashSha256:
                      type: string
                    originalDocument:
                      type: object
                      properties:
                        id:
                          type: integer
                        contentType:
                          type: string
                        fileName:
                          type: string
                        presignedUrl:
                          type: string
                        processed:
                          type: boolean
                    signedDocument:
                      type: object
                      properties:
                        id:
                          type: integer
                        contentType:
                          type: string
                        fileName:
                          type: string
                        presignedUrl:
                          type: string
                        processed:
                          type: boolean
                    status:
                      type: string
                      enum:
                        - CREATED
                        - SIGNING
                        - FINISHED
                        - CANCELED
                    deadline:
                      type: string
                      format: date
                    notificationPeriodDelivery:
                      type: integer
                      enum:
                        - 3
                        - 6
                        - 9
                        - 12
                    personSignatures:
                      type: array
                      items:
                        type: object
                        properties:
                          uuid:
                            type: string
                          email:
                            type: string
                          name:
                            type: string
                          status:
                            type: string
                            enum:
                              - PENDING
                              - SIGNED
                              - CANCELED
                              - EXPIRED
                          signatureType:
                            type: string
                            enum:
                              - PART
                              - WITNESS
                              - CONTRACTOR
                              - HIRED
                              - ADMINISTRATOR
                              - GUARANTOR
                              - TRANSFEROR
                              - TRANSFEREE
                              - JOINT_DEBTOR
                              - ISSUER
                              - ENDORSER
                              - ENDORSEE
                              - WARRANTOR
                              - MANAGER
                              - LESSOR
                              - LESSEE
                              - PURCHASER
                              - SELLER
                              - ATTORNEY
                              - LEGAL_REPRESENTATIVE
                              - VALIDATOR
                          notificationChannel:
                            type: string
                            enum:
                              - EMAIL
                              - WHATSAPP
                          person:
                            type: object
                            properties:
                              uuid:
                                type: string
                              cpf:
                                type: string
                          birth:
                            type: string
                            format: date
                          personSignatureDate:
                            type: string
                            format: date-time
        '404':
          description: Nenhum documento encontrado
      security:
        - jwtAuth: []
  '/documents/my-company/{uuid}':
    get:
      summary: Busca um documento pelo UUID
      parameters:
        - name: uuid
          in: path
          required: true
          description: UUID do documento criado
          schema:
            type: string
      responses:
        '200':
          description: Documento retornado com sucesso
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    properties:
                      uuid:
                        type: string
                      name:
                        type: string
                      externalIdentification:
                        type: string
                      hashMD5:
                        type: string
                      hashSha256:
                        type: string
                      originalDocument:
                        type: object
                        properties:
                          id:
                            type: integer
                          contentType:
                            type: string
                          fileName:
                            type: string
                          presignedUrl:
                            type: string
                          processed:
                            type: boolean
                      signedDocument:
                        type: object
                        properties:
                          id:
                            type: integer
                          contentType:
                            type: string
                          fileName:
                            type: string
                          presignedUrl:
                            type: string
                          processed:
                            type: boolean
                      status:
                        type: string
                        enum:
                          - CREATED
                          - SIGNING
                          - FINISHED
                          - CANCELED
                      deadline:
                        type: string
                        format: date
                      notificationPeriodDelivery:
                        type: integer
                        enum:
                          - 3
                          - 6
                          - 9
                          - 12
                      personSignatures:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                            email:
                              type: string
                            name:
                              type: string
                            status:
                              type: string
                              enum:
                                - PENDING
                                - SIGNED
                                - CANCELED
                                - EXPIRED
                            signatureType:
                              type: string
                              enum:
                                - PART
                                - WITNESS
                                - CONTRACTOR
                                - HIRED
                                - ADMINISTRATOR
                                - GUARANTOR
                                - TRANSFEROR
                                - TRANSFEREE
                                - JOINT_DEBTOR
                                - ISSUER
                                - ENDORSER
                                - ENDORSEE
                                - WARRANTOR
                                - MANAGER
                                - LESSOR
                                - LESSEE
                                - PURCHASER
                                - SELLER
                                - ATTORNEY
                                - LEGAL_REPRESENTATIVE
                                - VALIDATOR
                            notificationChannel:
                              type: string
                              enum:
                                - EMAIL
                                - WHATSAPP
                            person:
                              type: object
                              properties:
                                uuid:
                                  type: string
                                cpf:
                                  type: string
                            birth:
                              type: string
                              format: date
                            personSignatureDate:
                              type: string
                              format: date-time
                  - type: object
                    properties:
                      company:
                        type: object
                        properties:
                          id:
                            type: integer
                      originalDocumentDate:
                        type: string
                        format: date-time
                      signedDocumentDate:
                        type: string
                        format: date-time
        '404':
          description: Documento não encontrado
      security:
        - jwtAuth: []
  '/documents/my-company/external-identification/{externalIdentification}':
    get:
      summary: Busca um documento pela Identificação Externa
      parameters:
        - name: externalIdentification
          in: path
          required: true
          description: Identificação Externa do documento criado
          schema:
            type: string
      responses:
        '200':
          description: Documento retornado com sucesso
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    properties:
                      uuid:
                        type: string
                      name:
                        type: string
                      externalIdentification:
                        type: string
                      hashMD5:
                        type: string
                      hashSha256:
                        type: string
                      originalDocument:
                        type: object
                        properties:
                          id:
                            type: integer
                          contentType:
                            type: string
                          fileName:
                            type: string
                          presignedUrl:
                            type: string
                          processed:
                            type: boolean
                      signedDocument:
                        type: object
                        properties:
                          id:
                            type: integer
                          contentType:
                            type: string
                          fileName:
                            type: string
                          presignedUrl:
                            type: string
                          processed:
                            type: boolean
                      status:
                        type: string
                        enum:
                          - CREATED
                          - SIGNING
                          - FINISHED
                          - CANCELED
                      deadline:
                        type: string
                        format: date
                      notificationPeriodDelivery:
                        type: integer
                        enum:
                          - 3
                          - 6
                          - 9
                          - 12
                      personSignatures:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                            email:
                              type: string
                            name:
                              type: string
                            status:
                              type: string
                              enum:
                                - PENDING
                                - SIGNED
                                - CANCELED
                                - EXPIRED
                            signatureType:
                              type: string
                              enum:
                                - PART
                                - WITNESS
                                - CONTRACTOR
                                - HIRED
                                - ADMINISTRATOR
                                - GUARANTOR
                                - TRANSFEROR
                                - TRANSFEREE
                                - JOINT_DEBTOR
                                - ISSUER
                                - ENDORSER
                                - ENDORSEE
                                - WARRANTOR
                                - MANAGER
                                - LESSOR
                                - LESSEE
                                - PURCHASER
                                - SELLER
                                - ATTORNEY
                                - LEGAL_REPRESENTATIVE
                                - VALIDATOR
                            notificationChannel:
                              type: string
                              enum:
                                - EMAIL
                                - WHATSAPP
                            person:
                              type: object
                              properties:
                                uuid:
                                  type: string
                                cpf:
                                  type: string
                            birth:
                              type: string
                              format: date
                            personSignatureDate:
                              type: string
                              format: date-time
                  - type: object
                    properties:
                      company:
                        type: object
                        properties:
                          id:
                            type: integer
                      originalDocumentDate:
                        type: string
                        format: date-time
                      signedDocumentDate:
                        type: string
                        format: date-time
        '404':
          description: Documento não encontrado
      security:
        - jwtAuth: []
  /people:
    post:
      summary: Cria signatários para um documento
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                document:
                  type: object
                  properties:
                    uuid:
                      type: string
                      description: UUID do documento
                signatures:
                  type: array
                  items:
                    type: object
                    required:
                      - signatureType
                      - notificationChannel
                      - name
                      - person
                    properties:
                      email:
                        type: string
                        description: E-mail do signatário (Obrigatório caso notificationChannel seja EMAIL)
                      phone:
                        type: string
                        example: '+5511912345678'
                        description: Número de telefone brasileiro no formato E.164. (Obrigatório caso notificationChannel seja WHATSAPP)
                      signatureType:
                        type: string
                        enum:
                          - PART
                          - WITNESS
                          - CONTRACTOR
                          - HIRED
                          - ADMINISTRATOR
                          - SIGN_TO_ACKNOWLEDGE_RECEIPT
                          - SIGN_TO_APPROVE
                          - SIGN_TO_RATIFY
                          - GUARANTOR
                          - TRANSFEROR
                          - TRANSFEREE
                          - JOINT_DEBTOR
                          - ISSUER
                          - ENDORSER
                          - ENDORSEE
                          - WARRANTOR
                          - MANAGER
                          - INTERVENING_PARTY
                          - LESSOR
                          - LESSEE
                          - PURCHASER
                          - SELLER
                          - ATTORNEY
                          - LEGAL_REPRESENTATIVE
                          - JOINTLY_LIABLE
                          - VALIDATOR
                      notificationChannel:
                        type: string
                        enum:
                          - EMAIL
                          - WHATSAPP
                      name:
                        type: string
                      person:
                        type: object
                        required:
                          - cpf
                        properties:
                          cpf:
                            type: string
      responses:
        '201':
          description: Signatários criados com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  document:
                    type: object
                    properties:
                      uuid:
                        type: string
                  signatures:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        email:
                          type: string
                        person:
                          type: object
                          properties:
                            cpf:
                              type: string
        '400':
          description: Erro ao criar signatários
      security:
        - jwtAuth: []
  /webhooks:
    post:
      summary: Registrar um webhook para notificações de documentos
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                payloadUrl:
                  type: string
                  description: URL pública para recebimento das chamadas do webhook via HTTPS
                authKey:
                  type: string
                  description: Chave para ser usada no header de autenticação
                secret:
                  type: string
                  description: Secret para ser usado no header de autenticação
      responses:
        '201':
          description: Webhook registrado com sucesso
        '400':
          description: Erro no registro do webhook
      security:
        - jwtAuth: []
    get:
      summary: Consulta os webhooks registrados
      responses:
        '200':
          description: Lista de webhooks registrados com sucesso
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    uuid:
                      type: string
                      description: UUID do webhook
                    payloadUrl:
                      type: string
                      description: URL pública para recebimento das chamadas do webhook via HTTPS
                    authKey:
                      type: string
                      description: Chave para ser usada no header de autenticação
                    secret:
                      type: string
                      description: Secret para ser usado no header de autenticação
        '404':
          description: Nenhum webhook encontrado
      security:
        - jwtAuth: []
  '/webhooks/{uuid}':
    delete:
      summary: Deleta um webhook
      parameters:
        - name: uuid
          in: path
          required: true
          description: UUID do webhook a ser deletado
          schema:
            type: string
      responses:
        '200':
          description: Webhook deletado com sucesso
        '404':
          description: Webhook não encontrado
      security:
        - jwtAuth: []
  /webhooks/events:
    post:
      summary: Evento de assinatura e detalhes do documento
      responses:
        '200':
          description: 'Quando um evento ocorre, o sistema envia um webhook contendo informações sobre o evento e o documento.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  event:
                    type: object
                    properties:
                      type:
                        type: string
                        description: Detalhes do evento de assinatura e documento
                        enum:
                          - SIGNATURE
                          - DOCUMENT_FINISHED
                          - DOCUMENT_CANCELED
                          - ENVELOPE_FINISHED
                          - ENVELOPE_CANCELED
                      signer:
                        type: object
                        properties:
                          uuid:
                            type: string
                          cpf:
                            type: string
                          name:
                            type: string
                          phone:
                            type: string
                          birth:
                            type: string
                            format: date
                          status:
                            type: string
                            enum:
                              - SIGNED
                              - PENDING
                          personSignatureDate:
                            type: string
                            format: date-time
                          email:
                            type: string
                          signatureType:
                            type: string
                            enum:
                              - PART
                              - WITNESS
                              - CONTRACTOR
                              - HIRED
                              - ADMINISTRATOR
                              - GUARANTOR
                              - TRANSFEROR
                              - TRANSFEREE
                              - JOINT_DEBTOR
                              - ISSUER
                              - ENDORSER
                              - ENDORSEE
                              - WARRANTOR
                              - MANAGER
                              - LESSOR
                              - LESSEE
                              - PURCHASER
                              - SELLER
                              - ATTORNEY
                              - LEGAL_REPRESENTATIVE
                              - VALIDATOR
                          notificationChannel:
                            type: string
                            enum:
                              - EMAIL
                              - WHATSAPP
                  document:
                    type: object
                    properties:
                      uuid:
                        type: string
                      name:
                        type: string
                      originalDocumentDate:
                        type: string
                        format: date
                      signedDocumentDate:
                        type: string
                        format: date
                      status:
                        type: string
                        enum:
                          - VALID
                          - FINISHED
                          - CANCELED
                      deadline:
                        type: string
                        format: date
                      notificationPeriodDelivery:
                        type: integer
                      signedDocumentPreSignedUrl:
                        type: string
                      signatures:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                            cpf:
                              type: string
                            name:
                              type: string
                            phone:
                              type: string
                            birth:
                              type: string
                              format: date
                            status:
                              type: string
                              enum:
                                - SIGNED
                                - PENDING
                            personSignatureDate:
                              type: string
                              format: date-time
                            email:
                              type: string
                            signatureType:
                              type: string
                              enum:
                                - PART
                                - WITNESS
                                - CONTRACTOR
                                - HIRED
                                - ADMINISTRATOR
                                - GUARANTOR
                                - TRANSFEROR
                                - TRANSFEREE
                                - JOINT_DEBTOR
                                - ISSUER
                                - ENDORSER
                                - ENDORSEE
                                - WARRANTOR
                                - MANAGER
                                - LESSOR
                                - LESSEE
                                - PURCHASER
                                - SELLER
                                - ATTORNEY
                                - LEGAL_REPRESENTATIVE
                                - VALIDATOR
                            notificationChannel:
                              type: string
                              enum:
                                - EMAIL
                                - WHATSAPP
                  envelope:
                    type: object
                    properties:
                      uuid:
                        type: string
                      status:
                        type: string
                        enum:
                          - VALID
                          - SIGNED
                          - FINISHED
                          - CANCELED
                      deadline:
                        type: string
                        format: date
                      documents:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                            name:
                              type: string
                            originalDocumentDate:
                              type: string
                              format: date
                            signedDocumentDate:
                              type: string
                              format: date
                            status:
                              type: string
                              enum:
                                - VALID
                                - FINISHED
                                - CANCELED
                            deadline:
                              type: string
                              format: date
                            notificationPeriodDelivery:
                              type: integer
                            signedDocumentPreSignedUrl:
                              type: string
                      signatures:
                        type: array
                        items:
                          type: object
                          properties:
                            uuid:
                              type: string
                            cpf:
                              type: string
                            name:
                              type: string
                            phone:
                              type: string
                            birth:
                              type: string
                              format: date
                            status:
                              type: string
                              enum:
                                - SIGNED
                                - PENDING
                            personSignatureDate:
                              type: string
                              format: date-time
                            email:
                              type: string
                            signatureType:
                              type: string
                              enum:
                                - PART
                                - WITNESS
                                - CONTRACTOR
                                - HIRED
                                - ADMINISTRATOR
                                - GUARANTOR
                                - TRANSFEROR
                                - TRANSFEREE
                                - JOINT_DEBTOR
                                - ISSUER
                                - ENDORSER
                                - ENDORSEE
                                - WARRANTOR
                                - MANAGER
                                - LESSOR
                                - LESSEE
                                - PURCHASER
                                - SELLER
                                - ATTORNEY
                                - LEGAL_REPRESENTATIVE
                                - VALIDATOR
                            notificationChannel:
                              type: string
                              enum:
                                - EMAIL
                                - WHATSAPP
  /ccb:
    post:
      summary: Criação da CCB para assinatura na Giro.Tech
      description: Realiza a criação da CCB para assinatura na API da Giro.Tech
      requestBody:
        required: true
        description: Dados para criação da CCB para assinatura
        content:
          application/json:
            schema:
              type: object
              required:
                - numero_ccb
                - produto
                - data_emprestimo
                - vencimento
                - periodo_notificacao
                - tomador
                - emprestimo
                - endereco
              properties:
                numero_ccb:
                  type: string
                  maxLength: 8
                  description: Número da CCB que será formalizada.
                  example: '112233'
                data_emprestimo:
                  type: string
                  format: date
                  description: Data do empréstimo.
                  example: '2024-04-12'
                notificacao:
                  type: string
                  enum:
                    - NOTIFICAR
                    - NAO_NOTIFICAR
                  description: Será enviado uma notificação para o tomador com o link para assinar a CCB.
                  default: NOTIFICAR
                  example: NOTIFICAR
                produto:
                  type: string
                  enum:
                    - CREDITO_DIRETO_CONSUMIDOR
                    - CREDITO_PESSOAL
                    - CARTAO_CREDITO
                  description: Produto utilizado na CCB.
                  example: CREDITO_DIRETO_CONSUMIDOR
                modalidade:
                  type: string
                  enum:
                    - FINANCIAMENTO
                    - EMPRESTIMO
                  description: 'Modalidade da operação. Para CCB com produto CREDITO_DIRETO_CONSUMIDOR, utiliza por padrão a modalidade FINANCIAMENTO. Para CCB com produto CREDITO_PESSOAL, utiliza por padrão a modalidade EMPRESTIMO. Para demais produtos, se a modalidade não for enviada seguirá o padrão EMPRESTIMO.'
                  default: FINANCIAMENTO
                  example: FINANCIAMENTO
                vencimento:
                  type: string
                  format: date
                  description: Data limite de assinatura.
                  example: '2024-05-12'
                periodo_notificacao:
                  type: string
                  enum:
                    - 3
                    - 6
                    - 9
                    - 12
                  description: Período de lembrete de assinatura que será enviado por e-mail.
                  example: '3'
                metodos_assinatura:
                  type: array
                  items:
                    type: string
                    enum:
                      - SELFIE
                      - TOKEN
                      - ASSINATURA_MANUSCRITA
                  description: Lista dos métodos de assinatura permitidos.
                  default:
                    - TOKEN
                  example:
                    - SELFIE
                    - TOKEN
                    - ASSINATURA_MANUSCRITA
                emprestimo:
                  type: object
                  required:
                    - numero_parcelas
                    - data_emprestimo
                    - data_primeiro_vencimento_parcela
                    - taxa_juros_mensal
                    - valor_iof
                    - valor_primeira_parcela
                    - valor_juros
                    - valor_desembolso
                    - valor_financiado
                    - valor_emprestimo
                    - custo_efetivo_total_mensal
                    - custo_efetivo_total_anual
                    - parcelas
                  properties:
                    numero_parcelas:
                      type: integer
                      format: int32
                      description: Total de parcelas (vencimentos) para o pagamento da CCB.
                      maximum: 99
                      minimum: 1
                      example: 1
                    tarifa_registro_e_pagamento:
                      type: number
                      format: double
                      description: Valor da tarifa de registro e pagamento.
                      maximum: 999999999.99
                      minimum: 0
                      example: 10
                    tarifa_cobranca:
                      type: number
                      format: double
                      description: Valor da tarifa de cobrança.
                      maximum: 999999999.99
                      minimum: 0
                      example: 10
                    taxa_juros_mensal:
                      type: number
                      format: double
                      description: 'Taxa de juros ao mês do empréstimo, expressa em percentual.'
                      maximum: 99.99999999
                      minimum: 0
                      example: 5
                    taxa_juros_anual:
                      type: number
                      format: double
                      description: 'Taxa de juros ao ano do empréstimo, expressa em percentual.'
                      maximum: 99.99999999
                      minimum: 0
                      example: 82
                    data_primeiro_vencimento_parcela:
                      type: string
                      format: date
                      description: Data do primeiro vencimento da parcela.
                      example: '2024-05-12'
                    data_ultimo_vencimento_parcela:
                      type: string
                      format: date
                      description: Data do último vencimento da parcela.
                      example: '2024-05-12'
                    valor_primeira_parcela:
                      type: number
                      format: double
                      description: Valor da primeira parcela.
                      maximum: 999999999.99
                      minimum: 0
                      example: 1000
                    valor_tarifas:
                      type: number
                      format: double
                      description: Valor de tarifas que serão aplicadas na CCB.
                      maximum: 999999.99
                      minimum: 0
                      example: 4
                    valor_iof:
                      type: number
                      format: double
                      description: Valor de IOF. <br> Deve ser de no mínimo um centavo.
                      maximum: 999999.99
                      minimum: 0.01
                      example: 1.5
                    valor_desembolso:
                      type: number
                      format: double
                      description: Valor desembolsado.
                      maximum: 999999999.99
                      minimum: 0
                      example: 100
                    valor_juros:
                      type: number
                      format: double
                      description: Valor dos impostos.
                      maximum: 9999999.99
                      minimum: 0
                      example: 1.3
                    valor_financiado:
                      type: number
                      format: double
                      description: Valor do financiamento.
                      maximum: 999999999.99
                      minimum: 0
                      example: 1000
                    valor_emprestimo:
                      type: number
                      format: double
                      description: Valor do empréstimo.
                      maximum: 999999999.99
                      minimum: 0.01
                      example: 1000
                    custo_efetivo_total_mensal:
                      type: number
                      format: double
                      description: 'Taxa do custo efetivo total mensal, expressa em percentual.'
                      maximum: 99.999999
                      minimum: 0
                      example: 1.8
                    custo_efetivo_total_anual:
                      type: number
                      format: double
                      description: 'Taxa do custo efetivo total anual, expressa em percentual.'
                      maximum: 9999.999999
                      minimum: 0
                      example: 10.8
                agente:
                  type: object
                  required:
                    - documento
                    - nome
                  properties:
                    documento:
                      type: string
                      pattern: '^(\d{11}|\d{14})$'
                      maxLength: 14
                      description: CNPJ do agente.
                      example: '93462285000163'
                    nome:
                      type: string
                      maxLength: 255
                      description: Nome do agente.
                      example: Empresa S.A
                endereco:
                  type: object
                  required:
                    - rua
                    - numero
                    - cidade
                    - estado
                    - cep
                  properties:
                    rua:
                      type: string
                      maxLength: 255
                      description: Rua do endereço.
                      example: Rua Coronel Guilherme Theodoro Buest
                    numero:
                      type: string
                      maxLength: 5
                      description: Número do endereço.
                      example: '10'
                    cidade:
                      type: string
                      maxLength: 30
                      description: Cidade do endereço.
                      example: Curitiba
                    estado:
                      type: string
                      maxLength: 2
                      description: Estado do endereço.
                      example: PR
                    cep:
                      type: string
                      maxLength: 8
                      description: CEP do endereço.
                      example: 81930-800
                    bairro:
                      type: string
                      maxLength: 255
                      description: Bairro do endereço.
                      example: Umbará
                    complemento:
                      type: string
                      maxLength: 255
                      description: Complemento do endereço.
                      example: Próximo ao cemitério parque São Pedro
                tomador:
                  type: object
                  required:
                    - documento
                    - nome
                    - email
                    - tipo_assinatura
                  properties:
                    documento:
                      type: string
                      pattern: '^(\d{11}|\d{14})$'
                      maxLength: 14
                      description: CPF do tomador.
                      example: '89017906022'
                    nome:
                      type: string
                      maxLength: 255
                      description: Nome do tomador.
                      example: João da Silva
                    email:
                      type: string
                      maxLength: 255
                      description: Email do tomador. Utiliza-se o email para notificação caso o canal de notificação seja EMAIL.
                      example: joao.silva@girotech.com.br
                    telefone:
                      type: string
                      maxLength: 14
                      description: Telefone do tomador. Utiliza-se o telefone para notificação caso o tomador tenha um número de telefone informado e o canal de notificação seja WHATSAPP.
                      example: '+5541999999999'
                    tipo_assinatura:
                      type: string
                      enum:
                        - PARTE
                        - TESTEMUNHA
                        - CONTRATANTE
                        - CONTRATADA
                        - ADMINISTRADOR
                        - ASSINAR_PARA_ACUSAR_RECEBIMENTO
                        - ASSINAR_PARA_APROVAR
                        - ASSINAR_PARA_HOMOLOGAR
                        - AVALISTA
                        - CEDENTE
                        - CESSIONARIO
                        - DEVEDOR_SOLIDARIO
                        - EMITENTE
                        - ENDOSSANTE
                        - ENDOSSATARIO
                        - FIADOR
                        - GESTOR
                        - INTERVENIENTE
                        - LOCADOR
                        - LOCATARIO
                        - PARTE_COMPRADORA
                        - PARTE_VENDEDORA
                        - PROCURADOR
                        - REPRESENTANTE_LEGAL
                        - RESPONSAVEL_SOLIDARIO
                        - VALIDADOR
                      description: Como o signatário deverá assinar.
                      example: PARTE
                    canal_notificacao:
                      type: string
                      enum:
                        - EMAIL
                        - WHATSAPP
                      description: Canal de notificação do tomador.
                      example: EMAIL
                pix:
                  type: object
                  required:
                    - chave_pix
                    - tipo_chave_pix
                  description: 'Não deve ser enviado caso o objeto `conta bancária` também esteja preenchido. A API da Giro.Tech somente aceitará um dos campos preenchidos, caso os dois objetos (pix + conta bancária) sejam enviados, a requisição retornará um erro.'
                  properties:
                    chave_pix:
                      type: string
                      maxLength: 255
                      description: 'Chave PIX, deve seguir o formato definido pelo Banco Central.'
                      example: joao.silva@girotech.com.br
                    tipo_chave_pix:
                      type: string
                      enum:
                        - EMAIL
                        - CPF
                        - CNPJ
                        - TELEFONE
                        - CHAVE_ALEATORIA
                      description: 'Tipo da chave PIX, deve seguir definições do Banco Central.'
                      example: EMAIL
                conta_bancaria:
                  description: 'Não deve ser enviado caso o objeto `pix` também esteja preenchido. A API da Giro.Tech somente aceitará um dos campos preenchidos, caso os dois objetos (pix + conta bancária) sejam enviados, a requisição retornará um erro.'
                  type: object
                  required:
                    - codigo_banco
                    - numero_conta
                    - numero_agencia
                    - tipo
                  properties:
                    codigo_banco:
                      type: string
                      maxLength: 3
                      description: Código do banco. Utilizar sempre o código com 3 dígitos.
                      example: '001'
                    numero_conta:
                      type: string
                      maxLength: 20
                      description: Número da conta bancária.
                      example: '56067859283189621426'
                    digito_conta:
                      type: string
                      maxLength: 2
                      description: Dígito da conta bancária.
                      example: '27'
                    numero_agencia:
                      type: string
                      maxLength: 4
                      description: Número da Agência.
                      example: '1570'
                    documento_favorecido:
                      type: string
                      maxLength: 14
                      description: Documento do titular da conta.
                      example: 890.179.060-22
                engargos:
                  type: object
                  description: Encargos moratórios
                  properties:
                    multa:
                      type: number
                      format: double
                      description: 'Incidente sobre o saldo devedor, expresso em percentual.'
                      maximum: 99.999999
                      minimum: 0
                      example: 2
                    juros_remuneratorios:
                      type: number
                      format: double
                      description: 'Incidente mensal sobre o valor inadimplido, expressa em percentual.'
                      maximum: 99.999999
                      minimum: 0
                      example: 1
                seguro:
                  type: object
                  description: Seguro
                  properties:
                    numero_seguro:
                      type: string
                      maxLength: 20
                      description: Número da apólice do seguro.
                      example: '1234'
                    seguradora:
                      type: string
                      maxLength: 255
                      description: Nome da seguradora.
                      example: GTSeguros
                    valor_premio:
                      type: number
                      format: double
                      description: Valor do prêmio do seguro.
                      maximum: 999999999.99
                      minimum: 0.01
                      example: 100.99
                garantias:
                  type: string
                  maxLength: 500
                  description: 'Bens, valores ou direitos oferecidos como garantia para o cumprimento das obrigações.'
                  example: 'O presente contrato está garantido pela alienação fiduciária do veículo Marca/Modelo: Fiat Uno, Placa ABC-1234, Chassi 9BWZZZ377VT004251, avaliado em R$ 20.000,00, conforme especificado na Cláusula X. Caso o saldo devedor não seja quitado, o bem mencionado poderá ser retomado como garantia de pagamento.'
              example:
                numero_ccb: '112233'
                data_emprestimo: '2024-04-12'
                notificacao: NOTIFICAR
                produto: CREDITO_DIRETO_CONSUMIDOR
                modalidade: FINANCIAMENTO
                vencimento: '2024-05-12'
                periodo_notificacao: 3
                metodos_assinatura:
                  - SELFIE
                  - TOKEN
                  - ASSINATURA_MANUSCRITA
                emprestimo:
                  data_emprestimo: '2024-04-12'
                  numero_parcelas: 1
                  tarifa_registro_e_pagamento: 10
                  tarifa_cobranca: 10
                  taxa_juros_mensal: 5
                  taxa_juros_anual: 82
                  data_primeiro_vencimento_parcela: '2024-05-12'
                  data_ultimo_vencimento_parcela: '2024-05-12'
                  valor_primeira_parcela: 1000
                  valor_tarifas: 4
                  valor_iof: 1.5
                  valor_desembolso: 100
                  valor_juros: 1.3
                  valor_financiado: 1000
                  valor_emprestimo: 1000
                  custo_efetivo_total_mensal: 1.8
                  custo_efetivo_total_anual: 10.8
                agente:
                  documento: '93462285000163'
                  nome: Empresa S.A
                endereco:
                  rua: Rua Coronel Guilherme Theodoro Buest
                  numero: '10'
                  cidade: Curitiba
                  estado: PR
                  cep: '81930800'
                  bairro: Umbará
                  complemento: Próximo ao cemitério parque São Pedro
                tomador:
                  documento: '89017906022'
                  nome: João da Silva
                  email: joao.silva@girotech.com.br
                  tipo_assinatura: PARTE
                  canal_notificacao: EMAIL
                pix:
                  chave_pix: joao.silva@girotech.com.br
                  tipo_chave_pix: EMAIL
                engargos:
                  multa: 2
                  juros_remuneratorios: 1
                seguro:
                  numero_seguro: '1234'
                  seguradora: GTSeguros
                  valor_premio: 100.99
                garantias: 'O presente contrato está garantido pela alienação fiduciária do veículo Marca/Modelo: Fiat Uno, Placa ABC-1234, Chassi 9BWZZZ377VT004251, avaliado em R$ 20.000,00, conforme especificado na Cláusula X. Caso o saldo devedor não seja quitado, o bem mencionado poderá ser retomado como garantia de pagamento.'
      responses:
        '200':
          description: Requisição processada com sucesso
        '400':
          description: Algum dado informado não pôde ser processado. Revise os dados e tente novamente a requisição.
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                  status:
                    type: integer
                    format: int32
                  path:
                    type: string
                  message:
                    type: string
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        object:
                          type: string
                        field:
                          type: string
                        message:
                          type: string
      security:
        - jwtAuth: []
  /envelopes:
    post:
      summary: Cria um novo envelope com documentos e signatários
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                deadline:
                  type: string
                  format: date
                  description: Data limite para assinatura (obrigatório se setReadyToSign = true)
                notificationPeriodDelivery:
                  type: integer
                  enum:
                    - 3
                    - 6
                    - 9
                    - 12
                  description: 'Intervalo, em dias, para lembretes de assinatura (obrigatório se setReadyToSign = true)'
                signatureMethods:
                  type: array
                  items:
                    type: string
                    enum:
                      - TOKEN
                      - SIGNATURE
                      - SELFIE
                    description: Métodos de assinatura (obrigatório se setReadyToSign = true)
                setReadyToSign:
                  type: boolean
                  default: false
                  description: Define se o envelope deve ser disponibilizado para assinatura
                documents:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      originalDocument:
                        type: object
                        properties:
                          file:
                            type: string
                            description: Arquivo codificado em base64
                      externalIdentification:
                        type: string
                        description: Identificação externa única
                      notificationType:
                        type: string
                        enum:
                          - DONT_NOTIFY
                          - NOTIFY
                signatures:
                  type: array
                  items:
                    type: object
                    required:
                      - signatureType
                      - notificationChannel
                      - name
                      - person
                    properties:
                      email:
                        type: string
                        description: E-mail do signatário (Obrigatório caso notificationChannel seja EMAIL)
                      phone:
                        type: string
                        example: '+5511912345678'
                        description: Número de telefone brasileiro no formato E.164. (Obrigatório caso notificationChannel seja WHATSAPP)
                      signatureType:
                        type: string
                        enum:
                          - PART
                          - WITNESS
                          - CONTRACTOR
                          - HIRED
                          - ADMINISTRATOR
                          - SIGN_TO_ACKNOWLEDGE_RECEIPT
                          - SIGN_TO_APPROVE
                          - SIGN_TO_RATIFY
                          - GUARANTOR
                          - TRANSFEROR
                          - TRANSFEREE
                          - JOINT_DEBTOR
                          - ISSUER
                          - ENDORSER
                          - ENDORSEE
                          - WARRANTOR
                          - MANAGER
                          - INTERVENING_PARTY
                          - LESSOR
                          - LESSEE
                          - PURCHASER
                          - SELLER
                          - ATTORNEY
                          - LEGAL_REPRESENTATIVE
                          - JOINTLY_LIABLE
                          - VALIDATOR
                      notificationChannel:
                        type: string
                        enum:
                          - EMAIL
                          - WHATSAPP
                      name:
                        type: string
                      person:
                        type: object
                        required:
                          - cpf
                        properties:
                          cpf:
                            type: string
                minimumSignatureRequirements:
                  type: array
                  items:
                    type: object
                    properties:
                      signatureType:
                        type: string
                        enum:
                          - PART
                          - WITNESS
                          - CONTRACTOR
                          - HIRED
                          - ADMINISTRATOR
                          - SIGN_TO_ACKNOWLEDGE_RECEIPT
                          - SIGN_TO_APPROVE
                          - SIGN_TO_RATIFY
                          - GUARANTOR
                          - TRANSFEROR
                          - TRANSFEREE
                          - JOINT_DEBTOR
                          - ISSUER
                          - ENDORSER
                          - ENDORSEE
                          - WARRANTOR
                          - MANAGER
                          - INTERVENING_PARTY
                          - LESSOR
                          - LESSEE
                          - PURCHASER
                          - SELLER
                          - ATTORNEY
                          - LEGAL_REPRESENTATIVE
                          - JOINTLY_LIABLE
                          - VALIDATOR
                      minimumSignatureNumber:
                        type: integer
                        description: Quantidade mínima de assinaturas
      responses:
        '201':
          description: Envelope com documentos e signatários criados com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                  documents:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        name:
                          type: string
                        externalIdentification:
                          type: string
                        hashMD5:
                          type: string
                        hashSha256:
                          type: string
                        originalDocument:
                          type: object
                          properties:
                            fileName:
                              type: string
                            presignedUrl:
                              type: string
                        signedDocument:
                          type: object
                          properties:
                            fileName:
                              type: string
                            presignedUrl:
                              type: string
                        status:
                          type: string
                          enum:
                            - WAITING_APPROVAL_TO_VALIDATE
                            - VALID
                            - FINISHED
                            - CANCELED
                  signatures:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        email:
                          type: string
                        person:
                          type: object
                          properties:
                            cpf:
                              type: string
                  signatureMethods:
                    type: array
                    items:
                      type: string
                      enum:
                        - TOKEN
                        - SIGNATURE
                        - SELFIE
        '400':
          description: Erro na criação do envelope
      security:
        - jwtAuth: []
  '/envelopes/{uuid}/add-documents-and-signatures':
    post:
      summary: Adiciona documentos e signatários a um envelope
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
          description: UUID do envelope
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                documents:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      originalDocument:
                        type: object
                        properties:
                          file:
                            type: string
                            description: Arquivo codificado em base64
                      externalIdentification:
                        type: string
                        description: Identificação externa única
                      notificationType:
                        type: string
                        enum:
                          - DONT_NOTIFY
                          - NOTIFY
                signatures:
                  type: array
                  items:
                    type: object
                    required:
                      - signatureType
                      - notificationChannel
                      - name
                      - person
                    properties:
                      email:
                        type: string
                        description: E-mail do signatário (Obrigatório caso notificationChannel seja EMAIL)
                      phone:
                        type: string
                        example: '+5511912345678'
                        description: Número de telefone brasileiro no formato E.164. (Obrigatório caso notificationChannel seja WHATSAPP)
                      signatureType:
                        type: string
                        enum:
                          - PART
                          - WITNESS
                          - CONTRACTOR
                          - HIRED
                          - ADMINISTRATOR
                          - SIGN_TO_ACKNOWLEDGE_RECEIPT
                          - SIGN_TO_APPROVE
                          - SIGN_TO_RATIFY
                          - GUARANTOR
                          - TRANSFEROR
                          - TRANSFEREE
                          - JOINT_DEBTOR
                          - ISSUER
                          - ENDORSER
                          - ENDORSEE
                          - WARRANTOR
                          - MANAGER
                          - INTERVENING_PARTY
                          - LESSOR
                          - LESSEE
                          - PURCHASER
                          - SELLER
                          - ATTORNEY
                          - LEGAL_REPRESENTATIVE
                          - JOINTLY_LIABLE
                          - VALIDATOR
                      notificationChannel:
                        type: string
                        enum:
                          - EMAIL
                          - WHATSAPP
                      name:
                        type: string
                      person:
                        type: object
                        required:
                          - cpf
                        properties:
                          cpf:
                            type: string
      responses:
        '200':
          description: Documentos e signatários adicionados com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                  documents:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        name:
                          type: string
                        externalIdentification:
                          type: string
                        hashMD5:
                          type: string
                        hashSha256:
                          type: string
                        originalDocument:
                          type: object
                          properties:
                            fileName:
                              type: string
                            presignedUrl:
                              type: string
                        signedDocument:
                          type: object
                          properties:
                            fileName:
                              type: string
                            presignedUrl:
                              type: string
                        status:
                          type: string
                          enum:
                            - WAITING_APPROVAL_TO_VALIDATE
                            - VALID
                            - FINISHED
                            - CANCELED
                  signatures:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        email:
                          type: string
                        person:
                          type: object
                          properties:
                            cpf:
                              type: string
                  signatureMethods:
                    type: array
                    items:
                      type: string
                      enum:
                        - TOKEN
                        - SIGNATURE
                        - SELFIE
        '400':
          description: Erro na adição de documentos e signatários
      security:
        - jwtAuth: []
  '/envelopes/{uuid}/remove-documents-and-signatures':
    delete:
      summary: Remove documentos e signatários de um envelope
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
          description: UUID do envelope
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                documents:
                  type: array
                  items:
                    type: object
                    properties:
                      uuid:
                        type: string
                signatures:
                  type: array
                  items:
                    type: object
                    properties:
                      uuid:
                        type: string
      responses:
        '200':
          description: Documentos e signatários removidos com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                  documents:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        name:
                          type: string
                        externalIdentification:
                          type: string
                        hashMD5:
                          type: string
                        hashSha256:
                          type: string
                        originalDocument:
                          type: object
                          properties:
                            fileName:
                              type: string
                            presignedUrl:
                              type: string
                        signedDocument:
                          type: object
                          properties:
                            fileName:
                              type: string
                            presignedUrl:
                              type: string
                        status:
                          type: string
                          enum:
                            - WAITING_APPROVAL_TO_VALIDATE
                            - VALID
                            - FINISHED
                            - CANCELED
                  signatures:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        email:
                          type: string
                        person:
                          type: object
                          properties:
                            cpf:
                              type: string
                  signatureMethods:
                    type: array
                    items:
                      type: string
                      enum:
                        - TOKEN
                        - SIGNATURE
                        - SELFIE
        '404':
          description: Documento ou signatário não encontrado
      security:
        - jwtAuth: []
  '/envelopes/{uuid}/ready-to-sign':
    patch:
      summary: Altera o status de um envelope para disponível para assinatura
      parameters:
        - name: uuid
          in: path
          required: true
          description: UUID do envelope
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                deadline:
                  type: string
                  format: date
                  description: Data limite para assinatura
                notificationPeriodDelivery:
                  type: integer
                  enum:
                    - 3
                    - 6
                    - 9
                    - 12
                  description: 'Intervalo, em dias, para lembretes de assinatura'
                signatureMethods:
                  type: array
                  items:
                    type: string
                    enum:
                      - TOKEN
                      - SIGNATURE
                      - SELFIE
                  description: Métodos de assinatura
      responses:
        '200':
          description: Documento alterado com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  signaturesLinks:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                        signatureLink:
                          type: string
                          description: URL para assinatura do documento
        '404':
          description: Documento não encontrado
      security:
        - jwtAuth: []
  '/envelopes/cancel/{uuid}':
    post:
      summary: Cancela um envelope
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
            description: UUID do envelope
      responses:
        '200':
          description: Envelope cancelado com sucesso
        '404':
          description: Envelope não encontrado
      security:
        - jwtAuth: []
  /envelopes/resend-email:
    post:
      summary: Reenvia e-mail de assinatura
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                envelope:
                  type: object
                  properties:
                    uuid:
                      type: string
                      description: UUID do envelope
                personSignature:
                  type: object
                  properties:
                    uuid:
                      type: string
                      description: UUID do signatário
      responses:
        '200':
          description: E-mail reenviado com sucesso
        '404':
          description: Envelope não encontrado
      security:
        - jwtAuth: []
components:
  securitySchemes:
    jwtAuth:
      type: apiKey
      in: header
      name: Authorization
