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

# Registra um cliente

> **Senha do cliente**

O Campo `password` presenteno payload desta requisição precisa seguir as seguintes regras:

- Possuir ao menos uma letra maiúscula;
    
- Possuir ao menos uma letra minúscula;
    
- Possuir ao menos um caracter especial;
    
- Posuir ao menos um número;
    
- o seu tamanho ser de, no mínimo, 8 (oito) caracteres.
    

**Documento**

O campo `document` presente no payload desta requisição deve compreender um CPF válido. Lembrando que este estará presente em um contrato assinado, portanto, possui valor legal.

**Passaporte**

Em vista de nem sempre uma pessoa ser brasileira, adicionamos a este endpoint a possibilidade de registrar uma pessoa por meio do seu passaporte. A partir de então pode-se cadastrar alguém com um número único de Passaporte, (campo `passport`). Nada impede de cadastrar também uma pessoa que possua passaporte e CPF. Mas se faz necessário haver ao menos um desses documentos.

> **Observação**: a validação do passaporte dar-se-á pelo cliente cliente da API, não nos responsabilizaremos por dados inválidos nesse campo, em vista de não haver uma consolidação no padrão desse tipo de identificador. 
  

**Nome Social**

A fim de legitimar o que define a Circular 1/2024/DIR2/SUSEP, o nome social (vide campo `chosen_name`) foi adicionado a esse endpoint, garantindo a viabilidade de registro desse dado. Este campo não é obrigatório.

<ParamField header="Authorization" type="string" required>
  Token de autenticação do tipo Bearer obtido através do endpoint de login.
</ParamField>


## OpenAPI

````yaml POST /customers
openapi: 3.0.3
info:
  title: Clubfix Webservice de Parceiros
  description: >-
    Bem vido(a) à documentação do **Webservice de Parceiros** da **Clubfix.** Os
    recursos aqui dispostos são suplementados com exemplos de respostas
    esperadas, para nortear a implementação. Caso haja algum empecilho ou erro
    não esperado, fique à vontade para chamar o suporte em TI pelos canais que
    você já conhece.


    Observação: Utilize sempre os cabeçalhos `Content-Type` e `Accept` como
    `application/json`


    #### **URL Base**


    | **Ambiente** | **URL** |

    | --- | --- |

    | Homologação | [https://homolog.clubfix.com.br/webservice]() |

    | Produção | [https://clubfix.com.br/webservice]() |


    > NOTA: Para conseguir utilizar ambos ambientes, faz-se necessário solicitar
    pelo nosso time de suporte a geração das chaves de autenticação mencionadas
    na seção de **Autenticação**. 
      

    #### Paginação


    Para navegar nos recursos de listagem através de suas páginas, utilize as
    `parâmeros` dispostas na tabela abaixo


    | **Parâmetro** | **Descrição** |

    | --- | --- |

    | page | Corresponde à pagina que você deseja exibir os dados. |

    | per_page | Altera a quantidade de itens devolvidos em uma requisição. |

    | current_page | Identifica a pagina correspondente àquela requisição. |


    ### **Conhecendo os erros comuns**


    | **Status Code** | **Descrição** |

    | --- | --- |

    | 422 | Erro em algum parâmetro fornecido. O resultado deste erro será um
    objeto, onde a sua chave indicará o campo que não está em conformidade. |

    | 401 | Não autorizado. Significa que há ausência de um token válido na
    requisição, seja por expiração, não fornecimento, ou, no caso do login, as
    suas credenciais não estão corretas. |

    | 5** | Erro de servidor no endpoint requisitado. Quando isso ocorrer,
    contate o nosso suporte. |
  version: 1.0.0
servers: []
security: []
paths:
  /customers:
    post:
      summary: Criar um Cliente
      description: >-
        **Senha do cliente**


        O Campo `password` presenteno payload desta requisição precisa seguir as
        seguintes regras:


        - Possuir ao menos uma letra maiúscula;
            
        - Possuir ao menos uma letra minúscula;
            
        - Possuir ao menos um caracter especial;
            
        - Posuir ao menos um número;
            
        - o seu tamanho ser de, no mínimo, 8 (oito) caracteres.
            

        **Documento**


        O campo `document` presente no payload desta requisição deve compreender
        um CPF válido. Lembrando que este estará presente em um contrato
        assinado, portanto, possui valor legal.


        **Passaporte**


        Em vista de nem sempre uma pessoa ser brasileira, adicionamos a este
        endpoint a possibilidade de registrar uma pessoa por meio do seu
        passaporte. A partir de então pode-se cadastrar alguém com um número
        único de Passaporte, (campo `passport`). Nada impede de cadastrar também
        uma pessoa que possua passaporte e CPF. Mas se faz necessário haver ao
        menos um desses documentos.


        > **Observação**: a validação do passaporte dar-se-á pelo cliente
        cliente da API, não nos responsabilizaremos por dados inválidos nesse
        campo, em vista de não haver uma consolidação no padrão desse tipo de
        identificador. 
          

        **Nome Social**


        A fim de legitimar o que define a Circular 1/2024/DIR2/SUSEP, o nome
        social (vide campo `chosen_name`) foi adicionado a esse endpoint,
        garantindo a viabilidade de registro desse dado. Este campo não é
        obrigatório.
      parameters:
        - name: Accept
          in: header
          required: true
          schema:
            type: string
          example: application/json
      requestBody:
        content:
          application/json:
            example:
              name: Sergio Danilo Jr
              document: '05506426500'
              phone: '32863751018'
              email: sergiodanilojr@hotmail.com
              password: '#Pessoa@302043'
              address:
                street: Rua Natal Bertoldo da Silva
                city: Aparecida de Goiânia
                state: GO
                zipcode: '74988670'
                number: '976'
            schema:
              type: object
              properties:
                name:
                  type: string
                document:
                  type: string
                phone:
                  type: string
                email:
                  type: string
                password:
                  type: string
                address:
                  type: object
                  properties:
                    street:
                      type: string
                    city:
                      type: string
                    state:
                      type: string
                    zipcode:
                      type: string
                    number:
                      type: string
      responses:
        '201':
          description: Customer stored example
          content:
            application/json:
              example:
                id: 12
                name: Emanuelly Carolina Carolina Teixeira
                document: '80615114105'
                phone: '32863751018'
                email: emanuelly@email.com
                address:
                  street: Rua Natal Bertoldo da Silva
                  number: 976
                  complement: null
                  zipcode: '74988670'
                  neighborhood: Nova Olinda
                  city: Aparecida de Goiânia
                  state: GO
              schema:
                type: object
                properties:
                  id:
                    type: integer
                  name:
                    type: string
                  document:
                    type: string
                  phone:
                    type: string
                  email:
                    type: string
                  address:
                    type: object
                    properties:
                      street:
                        type: string
                      number:
                        type: integer
                      complement:
                        type: string
                      zipcode:
                        type: string
                      neighborhood:
                        type: string
                      city:
                        type: string
                      state:
                        type: string
        '422':
          description: Validation fields Example
          content:
            application/json:
              example:
                message: The given data was invalid.
                errors:
                  document:
                    - validation.unique
                  email:
                    - validation.unique
              schema:
                type: object
                properties:
                  message:
                    type: string
                  errors:
                    type: object
                    properties:
                      document:
                        type: array
                        items:
                          type: string
                      email:
                        type: array
                        items:
                          type: string

````