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

# Atualizar Cliente

> Atualiza um cliente existente identificado pelo `codigo` (chave do integrador). Aceita apenas objeto único e permite alterar qualquer campo, inclusive o CNPJ. Envie o corpo completo (mesmos campos obrigatórios do POST). Retorna 200 com o cliente atualizado; 404 se o código não existir. Campos de endereço são preenchidos automaticamente via CEP (ViaCEP) quando omitidos.



## OpenAPI

````yaml PUT /clients
openapi: 3.0.0
info:
  title: API Corp ERP
  version: 1.1.0
  description: >-
    API para gerenciamento de clientes e faturas no ERP Corp.


    **Autenticação:** envie a API key no header `x-api-key` (ou `Authorization:
    Bearer <apikey>`). Cada chave possui escopos (`clients:read`,
    `clients:write`, `invoices:read`, `invoices:write`) e pode ter data de
    expiração.


    **Paginação:** os endpoints GET são paginados via `page` (1-based) e `limit`
    (default 50, máximo 100). A resposta traz `count`, `page`, `limit` e
    `total_pages`.


    **Limites:** até 1000 registros por requisição POST (em lote); corpo de até
    8 MB; até 120 requisições por minuto por chave (resposta 429 com
    `Retry-After`). Uma importação em lote conta como 1 requisição.
servers:
  - url: https://api-corp.usight.com.br
    description: Produção
  - url: https://api-corp-sandbox.usight.com.br
    description: Sandbox (homologação)
security:
  - ApiKeyAuth: []
paths:
  /clients:
    put:
      tags:
        - Clientes
      summary: Atualizar Cliente
      description: >-
        Atualiza um cliente existente identificado pelo `codigo` (chave do
        integrador). Aceita apenas objeto único e permite alterar qualquer
        campo, inclusive o CNPJ. Envie o corpo completo (mesmos campos
        obrigatórios do POST). Retorna 200 com o cliente atualizado; 404 se o
        código não existir. Campos de endereço são preenchidos automaticamente
        via CEP (ViaCEP) quando omitidos.
      operationId: putCliente
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClienteInput'
            examples:
              atualizacao:
                summary: Atualizar dados (inclusive CNPJ)
                value:
                  cpf_cnpj: '98765432000188'
                  codigo: '001'
                  razao_social: Empresa Exemplo LTDA
                  cep: '01001000'
                  numero: '100'
                  classificacao_fiscal: simples_nacional
      responses:
        '200':
          description: Cliente atualizado com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ClienteOutput'
        '400':
          description: >-
            Requisição inválida — JSON malformado, array enviado ou erro de
            validação
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Não autorizado — API key ausente, inválida, revogada ou expirada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Sem permissão — a API key não possui o escopo `clients:write`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Cliente não encontrado para o código informado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Conflito — documento+código já usado por outro registro, ou código
            ambíguo (múltiplos clientes)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '413':
          description: Payload muito grande — corpo da requisição excede 8 MB
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: >-
            Muitas requisições — limite por minuto excedido. Veja o header
            `Retry-After`.
          headers:
            Retry-After:
              description: Segundos a aguardar antes de repetir a requisição
              schema:
                type: integer
                example: 60
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ClienteInput:
      type: object
      required:
        - cpf_cnpj
        - codigo
        - razao_social
        - cep
        - numero
        - classificacao_fiscal
      properties:
        cpf_cnpj:
          type: string
          description: CPF (11 dígitos) ou CNPJ (14 dígitos) — valida dígitos verificadores
          example: '12345678000190'
        codigo:
          type: string
          description: Código de acesso do cliente — chave junto com o documento
          example: K0001
        razao_social:
          type: string
          description: Razão social / nome do cliente
          example: Empresa Exemplo LTDA
        cep:
          type: string
          description: >-
            8 dígitos — usado para preencher endereço e código do município
            automaticamente
          example: '01001000'
        logradouro:
          type: string
          description: Preenchido automaticamente pelo CEP se omitido
          example: Praça da Sé
        numero:
          type: string
          description: Número do endereço
          example: '100'
        complemento:
          type: string
          description: Complemento do endereço (opcional)
          example: Sala 5
        bairro:
          type: string
          description: Preenchido automaticamente pelo CEP se omitido
          example: Sé
        cidade:
          type: string
          description: Preenchido automaticamente pelo CEP se omitido
          example: São Paulo
        uf:
          type: string
          description: 2 letras — preenchido automaticamente pelo CEP se omitido
          example: SP
        classificacao_fiscal:
          type: string
          description: Classificação fiscal do cliente
          enum:
            - normal
            - simples_nacional
            - nao_retem
            - orgao_publico
            - orgao_publico_ir
          example: simples_nacional
    ClienteOutput:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        codigo:
          type: string
          example: '001'
        doc_number:
          type: string
          example: '12345678000190'
        name:
          type: string
          example: Empresa Exemplo LTDA
        cidade:
          type: string
          example: São Paulo
        uf:
          type: string
          example: SP
        codigo_cidade:
          type: string
          example: '3550308'
        classificacao_fiscal:
          type: string
          example: simples_nacional
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          example: Cliente não cadastrado para o código '001'.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        `Apikey` fornecida pelo Corp ERP. Também aceita `Authorization: Bearer
        <apikey>`.

````