> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veepag.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar cliente

> Cria um cliente. O documento e normalizado para numeros e validado como CPF ou CNPJ.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/client
openapi: 3.1.1
info:
  title: Veepag API
  description: >-
    API publica da Veepag para transacoes, clientes, assinaturas, produtos,
    cobrancas e alertas.


    Autentique as chamadas com o header `apiKey` no formato `keyId.secret` ou
    com o header `token` contendo um JWT valido.

    Use o ambiente de sandbox para testes e producao apenas depois da
    homologacao.
  version: 1.0.0
  contact: {}
servers:
  - url: https://sandbox.api.veepag.com
    description: Sandbox
  - url: https://api.veepag.com
    description: Produção
security:
  - api_key: []
  - token: []
tags:
  - name: Transaction
    description: >-
      Pagamentos avulsos, captura, cancelamento, consulta e exportacao de
      transacoes.
  - name: Client
    description: Cadastro, atualizacao e consulta de clientes.
  - name: Subscription
    description: Criacao, consulta, atualizacao e cancelamento de assinaturas.
  - name: Product
    description: Configuracao de produtos, precos e regras de cobranca.
  - name: Charge
    description: Criacao, pagamento, cancelamento e conciliacao de cobrancas.
  - name: Alert
    description: Consulta e tratamento de alertas Ethoca/Visa.
paths:
  /v1/client:
    post:
      tags:
        - Client
      summary: Criar cliente
      description: >-
        Cria um cliente. O documento e normalizado para numeros e validado como
        CPF ou CNPJ.
      operationId: ClientController_createClient
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClientDto'
            example:
              companyId: company_id
              name: Cliente Teste
              doc: '12345678909'
              email: cliente@example.com
      responses:
        '201':
          description: Cliente criado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Client'
              example:
                _id: client_id
                companyId: company_id
                name: Cliente Teste
                doc: '12345678909'
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error_messages:
                  - msg: Payload invalido.
                    type: field
                    path: companyId
                    location: body
                code: ZodValidationException
                path: /v1/client
                metadata: {}
        '401':
          description: Credencial ausente ou invalida.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error_messages:
                  - msg: Unauthorized.
                code: unauthorized
                path: /v1/client
                metadata: {}
        '403':
          description: Credencial sem acesso ao recurso ou empresa solicitada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error_messages:
                  - msg: Forbidden.
                code: forbidden
                path: /v1/client
                metadata: {}
        '500':
          description: Erro interno nao mapeado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error_messages:
                  - msg: Unknown server error.
                code: unknown_server_error
                path: /v1/client
                metadata: {}
      security:
        - api_key: []
        - token: []
components:
  schemas:
    CreateClientDto:
      type: object
      properties:
        companyId:
          type: string
          minLength: 1
          description: ID da empresa vinculada ao cliente.
        type:
          type:
            - string
            - 'null'
          enum:
            - INDIVIDUAL
            - COMPANY
          x-enumNames:
            - INDIVIDUAL
            - COMPANY
          description: Tipo do cliente, conforme enum aceito pela API.
        referenceId:
          type:
            - string
            - 'null'
          description: Identificador externo da sua aplicacao para conciliacao.
        name:
          type: string
          minLength: 1
          description: Nome do cliente. Nao aceita numeros ou caracteres especiais.
        birth:
          type:
            - string
            - 'null'
          description: Data de nascimento do cliente, quando disponivel.
        email:
          type:
            - string
            - 'null'
          format: email
          description: E-mail do cliente.
        phone:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Lista de telefones do cliente.
        note:
          type:
            - string
            - 'null'
          description: Observacao interna sobre o cliente.
        address:
          type:
            - object
            - 'null'
          properties:
            street:
              type:
                - string
                - 'null'
            number:
              type:
                - string
                - 'null'
            additionalDetails:
              type:
                - string
                - 'null'
            complement:
              type:
                - string
                - 'null'
            zipcode:
              type:
                - string
                - 'null'
            neighborhood:
              type:
                - string
                - 'null'
            city:
              type:
                - string
                - 'null'
            state:
              type:
                - string
                - 'null'
            country:
              type:
                - string
                - 'null'
          description: Endereco do cliente.
        device:
          type:
            - object
            - 'null'
          properties:
            colorDepth:
              type: number
            javaEnable:
              type: boolean
            language:
              type: string
            screenHeight:
              type: number
            screenWidth:
              type: number
            timezoneOffset:
              type: number
            userAgent:
              type:
                - string
                - 'null'
            javaEnabled:
              type: boolean
          description: >-
            Dados do dispositivo do cliente, quando coletados no fluxo de
            compra.
        ipAddress:
          type:
            - string
            - 'null'
          description: IP do cliente, quando disponivel.
        doc:
          type: string
          minLength: 1
          description: CPF ou CNPJ valido do cliente.
      required:
        - companyId
        - name
        - doc
    Client:
      type: object
      properties:
        _id:
          type: string
          description: ID do cliente.
        companyId:
          type: string
          description: ID da empresa vinculada ao cliente.
        name:
          type: string
          description: Nome do cliente.
        doc:
          type: string
          description: Documento do cliente.
        cpf:
          type: string
          description: CPF do cliente, quando presente no payload legado.
        email:
          type: string
          format: email
          description: E-mail do cliente.
        phone:
          type: array
          items:
            type: string
          description: Telefones do cliente.
        status:
          $ref: '#/components/schemas/ClientStatus'
          description: Status do cliente.
        type:
          $ref: '#/components/schemas/ClientType'
          description: Tipo do cliente.
        active:
          type: boolean
          description: Indica se o cliente esta ativo.
        deleted:
          type: boolean
          description: Indica exclusao logica do cliente, quando preenchido.
        referenceId:
          type: string
          description: Referencia externa da sua aplicacao.
        createdAt:
          type: string
          format: date-time
          description: Data de criacao do cliente.
        lastUpdate:
          type: string
          format: date-time
          description: Data da ultima atualizacao do cliente.
    ErrorResponse:
      type: object
      properties:
        error_messages:
          type: array
          items:
            $ref: '#/components/schemas/ErrorMessage'
        code:
          type: string
          example: unauthorized
        path:
          type: string
          example: /v1/transaction
        metadata:
          type: object
          additionalProperties: true
    ClientStatus:
      type: string
      enum:
        - ACTIVE
        - ERROR_PAYMENT
        - PENDING_PAYMENT
        - NO_PAYMENT
        - CANCELED_ALERT_ETHOCA
    ClientType:
      type: string
      enum:
        - INDIVIDUAL
        - COMPANY
    ErrorMessage:
      type: object
      properties:
        msg:
          type: string
          example: Unauthorized.
        type:
          type: string
          example: field
        path:
          type: string
          example: companyId
        location:
          type: string
          example: body
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: apiKey
      description: API key no formato keyId.secret.
    token:
      type: apiKey
      in: header
      name: token
      description: JWT valido. O token confirmado na codebase tem validade de 14 dias.

````