# QI Tech — Banking-as-a-Service › Gestão de usuários

Documentação da QI Tech em texto corrido, para colar em um LLM.
Fonte: https://docs.qitech.com.br
9 página(s).

Índice:
- Alteração de contato de pessoa (/documentation/gestao_de_usuarios/alteracao_de_contato_de_pessoa)
- Alteração de contato de vínculo (/documentation/gestao_de_usuarios/alteracao_de_contato_de_vinculo)
- Editar dados de uma pessoa (/documentation/gestao_de_usuarios/alteracao_de_dados_pessoais)
- Editar endereço de uma pessoa (/documentation/gestao_de_usuarios/alteracao_de_endereco)
- Consultar partes relacionadas a uma conta PJ (/documentation/gestao_de_usuarios/consulta_partes_relacionadas)
- Criação de pessoa (/documentation/gestao_de_usuarios/criacao_de_pessoa)
- Exclusão de vínculo (/documentation/gestao_de_usuarios/exclusao_de_vinculo)
- Inclusão de vínculo (/documentation/gestao_de_usuarios/inclusao_de_vinculo)
- Introdução (/documentation/gestao_de_usuarios/tfa_introducao)

---

# Alteração de contato de pessoa

URL: /documentation/gestao_de_usuarios/alteracao_de_contato_de_pessoa

## Request

### Token Request

ENDPOINT /baas/token_request
MÉTODO POST

Request Body

```json
{
  "contact_type": "email",
  "person_contact_update": {
    "person_key": "3ea7f034-f06b-4e28-ae19-7c23694f546b",
    "phone_number": {
      "country_code": "55",
      "area_code": "888",
      "number": "988887777"
    }
  },
  "agent_document_number": "99988877765"
}

```

### Token Validation

ENDPOINT /baas/movement_validation
MÉTODO POST

Request Body

```json
{
  "token": "123456",
  "person_contact_update": {
    "person_key": "3ea7f034-f06b-4e28-ae19-7c23694f546b",
    "phone_number": {
      "country_code": "55",
      "area_code": "888",
      "number": "988887777"
    }
  }
}

```

### Body Params

| Campo                   | Tipo   | Descrição                                                                                                                                 | Caracteres                                                                   |
|-------------------------|--------|-------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| `contact_type` *        | string | `(/baas/token_request)` Forma de envio escolhida para o token. Para envios de sms, apenas números brasileiros (+55) receberão a mensagem. | "sms"                                                                        |
| `token` *               | string | `(/baas/token_validation)` Código de seis (6) dígitos enviado ao aprovador da operação. Ex: "123456"                                      | 6                                                                            |
| `person_contact_update` | Object | Informações de alteração de contato                                                                                                       | **[Objeto person_contact_update](#objeto-professional_data_contact_update)** |
| `agent_document_number` | string | CPF de um dos administradores da conta que receberá o SMS para validação Ex: "99977766654"                                                | 11                                                                           |

### Objeto person_contact_update

| Campo          | Tipo   | Descrição                                                                                          | Caracteres                                      |
|----------------|--------|----------------------------------------------------------------------------------------------------|-------------------------------------------------|
| `person_key` * | string | Chave de identificação da pessoa física. Formato uuid v4. Ex: 1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9 | 36                                              |
| `phone_number` | Object | Objeto contendo informações do novo número de telefone                                             | **[Objeto phone_number](#objeto-phone_number)** |
| `email`        | string | Novo email a ser cadastrado                                                                        |                                                 |

### Objeto phone_number

| Campo            | Tipo   | Descrição               | Caracteres |
|------------------|--------|-------------------------|------------|
| `country_code` * | string | DDI do país             | 1-3        |
| `area_code` *    | string | DDD da área do telefone | 1-3        |
| `number` *       | string | Número de telefone      | 10         |

:::info Formas de contato implementadas
`contact_type` permitido para esta operação é **sms** e **email**.
:::

:::info Limitações para modificação
Para alteração de número de telefone a forma de contato deve ser email e para a alteração de email, a forma de contato deve ser sms.
:::

:::info Número a receber token
A pessoa física que está tendo seu cadastro alterado receberá o token.
:::

## Response

### Token Request

STATUS 200

Response Body

```json
{}
```

STATUS 400

Response Body: Tipo de contato não implementado

```json
{
  "title": "Bad Request",
  "description": "Contact type {contact_type} not allowed",
  "translation": "Forma de contato por {contact_type} não permitida",
  "code": "ACC000152",
  "additional_data": {}
}
```

STATUS 400

Response Body: Contato não existente inválido

```json
{
  "title": "Bad Request",
  "description": "Contact does not exist",
  "translation": "Contato nao existe",
  "code": "ACC000135",
  "additional_data": {}
}
```

### Token Validation

STATUS 200

Response Body

```json
{
  "hash": "8e11308086ea336edb113a6ff5746778",
  "return_response": {
    "email": "test.email@email.com",
    "person_key": "110b3ee3-cae2-44de-ba2c-494434d5cb18",
    "phone": [
      {
        "area_code": "11",
        "country_code": "55",
        "number": "988887777"
      }
    ]
  },
  "validation": true
}
```

STATUS 401

Response Body: Token enviado expirado

```json
{
  "title": "Unauthorized",
  "description": "Expired token",
  "translation": "Token Expirado",
  "code": "ACC000134",
  "additional_data": {}
}
```

STATUS 401

Response Body: Token enviado inválido

```json
{
  "title": "Unauthorized",
  "description": "Invalid token",
  "translation": "Token Inválido",
  "code": "ACC000133",
  "additional_data": {}
}
```

---

# Alteração de contato de vínculo

URL: /documentation/gestao_de_usuarios/alteracao_de_contato_de_vinculo

## Request

### Token Request

ENDPOINT /baas/token_request
MÉTODO POST

Request Body

```json
{
  "contact_type": "sms",
  "professional_data_contact_update": {
    "professional_data_key": "4ba8ff34-e07b-4ea8-ae59-8c23994f546b",
    "natural_person": "3ea7f034-f06b-4e28-ae19-7c23694f546b",
    "email": "sample@gmail.com",
    "phone_number": {
      "country_code": "55",
      "area_code": "888",
      "number": "988887777"
    }
  },
  "agent_document_number": "99988877765"
}

```

### Token Validation

ENDPOINT /baas/movement_validation
MÉTODO POST

Request Body

```json
{
  "token": "123456",
  "professional_data_contact_update": {
    "professional_data_key": "4ba8ff34-e07b-4ea8-ae59-8c23994f546b",
    "natural_person": "3ea7f034-f06b-4e28-ae19-7c23694f546b",
    "email": "sample@gmail.com",
    "phone_number": {
      "country_code": "55",
      "area_code": "888",
      "number": "988887777"
    }
  }
}

```

### Body Params

| Campo                              | Tipo   | Descrição                                                                                                                                 | Caracteres                                                                              |
|------------------------------------|--------|-------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------|
| `contact_type` *                   | string | `(/baas/token_request)` Forma de envio escolhida para o token. Para envios de sms, apenas números brasileiros (+55) receberão a mensagem. | "sms"                                                                                   |
| `token` *                          | string | `(/baas/token_validation)` Código de seis (6) dígitos enviado ao aprovador da operação. Ex: "123456"                                      | 6                                                                                       |
| `professional_data_contact_update` | Object | Informações de vínculo de pessoa física a pessoa jurídica                                                                                 | **[Objeto professional_data_contact_update](#objeto-professional_data_contact_update)** |
| `agent_document_number`            | string | CPF de um dos administradores da conta que receberá o SMS para validação Ex: "99977766654"                                                | 11                                                                                      |

### Objeto professional_data_contact_update

| Campo                     | Tipo   | Descrição                                                                                            | Caracteres                                      |
|---------------------------|--------|------------------------------------------------------------------------------------------------------|-------------------------------------------------|
| `natural_person` *        | string | Chave de identificação da pessoa física. Formato uuid v4. Ex: 1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9   | 36                                              |
| `professional_data_key` * | string | Chave de identificação da pessoa jurídica. Formato uuid v4. Ex: 1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9 | 36                                              |
| `phone_number` *          | Object | Objeto contendo informações do novo número de telefone.                                              | **[Objeto phone_number](#objeto-phone_number)** |
| `email` *                 | string | Novo email a ser cadastrado                                                                          |                                                 |

### Objeto phone_number

| Campo            | Tipo   | Descrição               | Caracteres |
|------------------|--------|-------------------------|------------|
| `country_code` * | string | DDI do país             | 1-3        |
| `area_code` *    | string | DDD da área do telefone | 1-3        |
| `number` *       | string | Número de telefone      | 10         |

:::info Formas de contato implementadas
`contact_type` permitido para esta operação é **sms**.
:::

:::info Número a receber token
A pessoa física que está tendo seu cadastro alterado receberá o token.
:::

## Response

### Token Request

STATUS 200

Response Body

```json
{}
```

STATUS 400

Response Body: Tipo de contato não implementado expirado

```json
{
  "title": "Bad Request",
  "description": "Contact type {contact_type} not allowed",
  "translation": "Forma de contato por {contact_type} não permitida",
  "code": "ACC000152",
  "additional_data": {}
}
```

STATUS 400

Response Body: Contato não existente inválido

```json
{
  "title": "Bad Request",
  "description": "Contact does not exist",
  "translation": "Contato nao existe",
  "code": "ACC000135",
  "additional_data": {}
}
```

### Token Validation

STATUS 200

Response Body

```json
{
  "hash": "8e11308086ea336edb113a6ff5746778",
  "return_response": {
    "admission_date": "2023-06-13",
    "created_at": "2023-06-13T17:26:57",
    "email": "sampl1e@gmail.com",
    "final_beneficiary": null,
    "is_active": true,
    "legal_person_key": "b678ae5c-5797-4bd9-8a4c-9cbd1a0829a4",
    "natural_person_key": "1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9",
    "natural_person_roles": [
      {
        "created_at": "2023-06-13T17:26:57",
        "natural_person_roles_events": [],
        "product_type": {
          "created_at": "2022-04-08T14:51:34",
          "enumerator": "escrow"
        },
        "role_type": {
          "created_at": "2021-02-26T14:14:52",
          "enumerator": "viewer"
        },
        "updated_at": "2023-06-14T20:11:45"
      },
      {
        "created_at": "2023-06-13T17:26:57",
        "natural_person_roles_events": [],
        "product_type": {
          "created_at": "2021-02-26T14:16:35",
          "enumerator": "account"
        },
        "role_type": {
          "created_at": "2021-02-26T14:14:52",
          "enumerator": "viewer"
        },
        "updated_at": "2023-06-14T20:11:46"
      }
    ],
    "phone": {
      "area_code": "61",
      "country_code": "55",
      "number": "988887777",
      "phone_type": "commercial"
    },
    "post_type": {
      "created_at": "2019-02-15T18:28:12",
      "enumerator": "analyst",
      "translation_path": "onboarding.PostType.analyst"
    },
    "profession_data_key": "78c8b92f-4e44-4725-a5fd-aa1fca78366d",
    "updated_at": "2023-06-14T20:11:46"
  },
  "validation": true
}
```

STATUS 401

Response Body: Token enviado expirado

```json
{
  "title": "Unauthorized",
  "description": "Expired token",
  "translation": "Token Expirado",
  "code": "ACC000134",
  "additional_data": {}
}
```

STATUS 401

Response Body: Token enviado inválido

```json
{
  "title": "Unauthorized",
  "description": "Invalid token",
  "translation": "Token Inválido",
  "code": "ACC000133",
  "additional_data": {}
}
```

---

# Editar dados de uma pessoa

URL: /documentation/gestao_de_usuarios/alteracao_de_dados_pessoais

## Request

ENDPOINT /person/PERSON_KEY/personal_data
MÉTODO PATCH

### Path Params

| Campo                   | Tipo | Descrição                     | Caracteres |
|-------------------------|------|-------------------------------|------------|
| `PERSON_KEY` *          | UUID | identificador único da person | 36         |

Request Body

```json
{
    "name": "Mateus da Silva",
    "date_of_birth": "1995-05-01",
    "profession": "programer",
    "mother_name": "Maria de Jesus",
    "father_name": "João dos Santos",
    "birth_place": "Taguatinga",
    "spouse_name": "Luis dos anjos",
    "is_pep": true,
    "revenue_amount": 100.52,
    "onboarding_key": "bc90744e-4f9a-42b1-9410-d5fa3c183fa8"
}

```

### Body Params

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `name` | string | Nome completo | - | 
| `date_of_birth` |  string | Data de aniversário, no formato YYYY-MM-DD | date | 
| `profession` | string | Profissão | - |
| `mother_name` | string |  Nome da mãe| - |
| `father_name` | string | Nome do pai | - | 
| `birth_place` | string | Local de nascimento | - | 
| `spouse_name` | string | Nome do cônjuge | - |
| `is_pep` | Boolean | Declaração se a pessoa é PEP (http://www.portaldatransparencia.gov.br/download-de-dados/pep).  | boolean |
| `revenue_amount` | number | Renda mensal | - |
| `onboarding_key` | string | Chave utilizada na validação do antifraude | uuuidv4 |

## Response

STATUS 204

Response Body

```json
{}
```

STATUS 4XX

Response Body

```json
{
  "title": "titulo",
  "description": "description in English",
  "translation": "descrição em portugues",
  "code": "codigo"
}
```

| Código HTTP | Código QI<br/>`code` | Título<br/>`title` | Descrição (eng)<br/>`Description`                                       | Descrição (ptbr)<br/>`translation`                                               |
|-------------|----------------------|--------------------|-------------------------------------------------------------------------|----------------------------------------------------------------------------------|
| 404         | OBD000019            | Not found          | Person not found                                                        | Pessoa não encontrada.                                                           |
| 403         | OBD000073            | Unauthorized       | User does not have permission to add or modify persons to this domain   | Usuário não tem permissão para adicionar ou modificar pessoas a este domínio.    |

---

# Editar endereço de uma pessoa

URL: /documentation/gestao_de_usuarios/alteracao_de_endereco

## Request

ENDPOINT /person/PERSON_KEY/address
MÉTODO PUT

### Path Params

| Campo                   | Tipo | Descrição                     | Caracteres |
|-------------------------|------|-------------------------------|------------|
| `PERSON_KEY` *          | UUID | identificador único da person | 36         |

Request Body

```json
{
    "street": "Rua Sample after test",
    "complement": "Apto 125",
    "state": "MG",
    "number": "1234",
    "neighborhood": "Cabral",
    "postal_code": "38300000",
    "city": "Ituiutaba"
}

```

## Response

STATUS 204

Response Body

```json
{}
```

STATUS 4XX

Response Body

```json
{
  "title": "titulo",
  "description": "description in English",
  "translation": "descrição em portugues",
  "code": "codigo"
}
```

| Código HTTP | Código QI<br/>`code` | Título<br/>`title` | Descrição (eng)<br/>`Description`                                       | Descrição (ptbr)<br/>`translation`                                               |
|-------------|----------------------|--------------------|-------------------------------------------------------------------------|----------------------------------------------------------------------------------|
| 404         | OBD000019            | Not found          | Person not found                                                        | Pessoa não encontrada.                                                           |
| 403         | OBD000073            | Unauthorized       | User does not have permission to add or modify persons to this domain   | Usuário não tem permissão para adicionar ou modificar pessoas a este domínio.    |

---

# Consultar partes relacionadas a uma conta PJ

URL: /documentation/gestao_de_usuarios/consulta_partes_relacionadas

## Request

ENDPOINT /account/ ACCOUNT_KEY /related_parties
MÉTODO GET

### Path Params

| Campo | Tipo | Descrição                      |
|---|------|--------------------------------|
| `ACCOUNT_KEY` | uuidv4 | Chave única de identificação da conta |

## Response

STATUS 200

Response Body

```json
{
    "allowed_users": [
        {
            "natural_person_document_number": "49875468975",
            "natural_person_key": "69850ae3-28bc-4779-a871-e73e1e993412",
            "natural_person_name": "Gabriel Pomodoro",
            "professional_data_key": "3532ea7d-855b-4033-8e1c-7a28d4440d4a"
        },
        {
            "natural_person_document_number": "79857848695",
            "natural_person_key": "7f775i35-da9b-493b-8d43-c5c34282f6cb",
            "natural_person_name": "Fernando Teixeira",
            "professional_data_key": "fd6b4ta8-0c1a-481f-a046-6e0e6edcfb43"
        }
    ],
    "legal_person_key": "40e841e1-edc6-44f2-9a55-7f97eed1bef5",
    "owner_document_number": "10479846950100",
    "owner_name": "EMPRESA DE TESTE S.A"
}
```

### Body params

| Campo | Tipo          | Descrição                                    |
|-------|---------------|----------------------------------------------|
| `allowed_users` | list        | Objeto contendo os usuários vinculados a conta. (**[Objeto allowed_users](#objeto-allowed_users)**) |
| `legal_person_key` | uuidv4 | Chave única de identificação do titular da conta |
| `owner_document_number` | string        | Número CNPJ do Titular da conta. |
| `owner_name` | string        | Razão Social do Titular da Conta. |

### Objeto allowed_users

| Campo | Tipo          | Descrição                                    | 
|-------|---------------|----------------------------------------------|
| `natural_person_document_number` | string        | Número do CPF do usuário vinculado à conta. |
| `natural_person_key` | uuidv4 | Chave única de identificação do usuário vinculado à conta. |
| `natural_person_name` | string        | Nome do usuário vinculado à conta. |
| `professional_data_key` | uuidv4 | Chave única de identificação do vínculo entre usuário e a pessoa jurídica titular da conta. |

---

# Criação de pessoa

URL: /documentation/gestao_de_usuarios/criacao_de_pessoa

## Request

### Token Request

ENDPOINT /baas/token_request
MÉTODO POST

Request Body

```json
{
    "contact_type": "sms",
    "person_creation": {
        "person": {
            "date_of_birth": "1987-01-11",
            "spouse_name": "sample spouse name",
            "birth_place": "sample birth place",
            "phone_number": {
                "country_code": "55",
                "area_code": "888",
                "number": "988887777"
            },
            "representative": null,
            "father_name": "sample father name",
            "address": {
                "street": "Rua Sample Avenue",
                "complement": "Apto 123",
                "state": "MG",
                "number": "1234",
                "neighborhood": "Cabral",
                "postal_code": "38300000",
                "city": "Ituiutaba"
            },
            "nationality": "Brasil",
            "document_identification_number": "sample identification number",
            "mother_name": "Sample Mama",
            "person_type": "natural",
            "name": "Sample Name Natural",
            "profession": "sample profession",
            "gender": null,
            "email": "sample@gmail.com",
            "document_number": "68346734500",
            "marital_status": null
        }
    },
	"agent_document_number": "99988877765"
    }

```

### Token Validation

ENDPOINT /baas/movement_validation
MÉTODO POST

Request Body

```json
{
    "token": "076244",
    "person_creation": {
        "person": {
            "date_of_birth": "1987-01-11",
            "spouse_name": "sample spouse name",
            "birth_place": "sample birth place",
            "phone_number": {
                "country_code": "55",
                "area_code": "888",
                "number": "988887777"
            },
            "representative": null,
            "father_name": "sample father name",
            "address": {
                "street": "Rua Sample Avenue",
                "complement": "Apto 123",
                "state": "MG",
                "number": "1234",
                "neighborhood": "Cabral",
                "postal_code": "38300000",
                "city": "Ituiutaba"
            },
            "nationality": "Brasil",
            "document_identification_number": "sample identification number",
            "mother_name": "Sample Mama",
            "person_type": "natural",
            "name": "Sample Name Natural",
            "profession": "sample profession",
            "gender": null,
            "email": "sample@gmail.com",
            "document_number": "68346734500",
            "marital_status": null
        }
    }
    }

```

### Body Params

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `contact_type` * | string | `(/baas/token_request)` Forma de envio escolhida para o token. Para envios de sms, apenas números brasileiros (+55) receberão a mensagem. | "sms" |
| `token` * | string | `(/baas/token_validation)` Código de seis (6) dígitos enviado ao aprovador da operação. Ex: "123456" | 6 |
| `person_creation` | object | Contêm objeto com as informações da pessoa a ser cadastrada | **[Objeto person_creation](#objeto-person_creation)** |
| `agent_document_number` | string | CPF de um dos administradores da conta que receberá o SMS para validação Ex: "99977766654" | 11 |

### Objeto person_creation

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `person` * | object | Informações da pessoa a ser cadastrada. | **[Objeto person](#objeto-person)**|

### Objeto person
| Campo | Tipo | Descrição | Caracteres |
|---| ---| ---| ---| 
| `address` | object | Endereço da pessoa. | **[Objeto adress](#objeto-address)** |  |
| `date_of_birth` * | string |  Data de nascimento da pessoa (formato "AAAA-MM-DD") |  |
| `document_identification_number`  | string |  Campo destinado ao envio do número de uma documentação adicional, como a CNH (limitado a 16 caracteres). |  |
| `email` * | string |  Email da pessoa. |  |
| `document_number` * | string | CPF da pessoa (apenas números). Limitado a 11 caracteres. |  |
| `is_pep` * | string |  Declaração se a pessoa é PEP (http://www.portaldatransparencia.gov.br/download-de-dados/pep).|  |
| `mother_name` * | string |  Nome da mãe da pessoa em caso de PF. | 100 |
| `name` * | string |  Razão social em caso de operações PJ ou Nome da pessoa em caso de operações PF. | 100 |
| `nationality` * | string |  Nacionalidade da pessoa. | 50 |
| `birth_place` * | string |  Local de nascimento da pessoa. | 50 |
| `person_type` * | string | Identificador de que o objeto enviado é uma pessoa física ou jurídica.| "natural", "legal" |
| `phone_number` * | object | Objeto com dados do telefone | **[Objeto phone](#objeto-phone)**|
| `proof_of_residence` | string |  DOCUMENT_KEY do PDF do comprovante de endereço do endereço enviado (enviado previamente).| |
| `spouse_name` | string |  Nome do cônjuge| |
| `father_name` | string |  Nome do pai da pessoa em caso de PF.| |
| `profession` | string |  Profissão da pessoa em caso de PF.| |

### Objeto address 

| Campo | Descrição | Exemplo |  Máx. Caracteres | 
|---|---|---|---| 
| `street` *| string | Rua do endereço  | 100 |
| `state` *| string | Estado do endereço (com dois caracteres maiúsculos) | 2 |
| `city` *| string | Cidade do endereço | 100 |
| `neighborhood` *| string |Bairro do endereço | 100 |
| `number` *| string | Número da rua | 10 |
| `postal_code` *| string |CEP do endereço (http://www.buscacep.correios.com.br/sistemas/buscacep/) (apenas números) |  8 |
| `complement` *| string |Complemento do endereço (texto livre) | 100 |

### Objeto phone 

| Campo | Descrição | Exemplo |  Máx. Caracteres | 
| --- | --- | --- | --- | 
|`country_code` *| string | Código DDI do telefone (https://ddi.guiamais.com.br/) | 3 | 
| `area_code` *| string | Código DDD do telefone (https://ddd.guiamais.com.br/) | 2 |
| `number` *| string |Número de telefone (apenas números) |  10 |

:::info Formas de contato implementadas
`contact_type` permitido para esta operação é **sms**.
::: 

:::info Número a receber token
A pessoa a ser cadastrada receberá o token.
:::

## Response

### Token Request

STATUS 200

Response Body

```json
{}
```

STATUS 400

Response Body: Tipo de contato não implementado expirado

```json
{
	"title": "Bad Request",
	"description": "Contact type {contact_type} not allowed",
	"translation": "Forma de contato por {contact_type} não permitida",
	"code": "ACC000152",
	"additional_data": {}
}
```

STATUS 400

Response Body: Contato não existente inválido

```json
{
	"title": "Bad Request",
	"description": "Contact does not exist",
	"translation": "Contato nao existe",
	"code": "ACC000135",
	"additional_data": {}
}
```

### Token Validation

STATUS 200

Response Body

```json
{
	"hash": "bd707fdcb3f78abcab8b5c5b7459f9aa",
	"return_response": {
		"birth_place": "sample birth place",
		"created_at": "2023-06-14T20:51:32",
		"date_of_birth": "1987-01-11T00:00:00",
		"document_identification_number": "sample",
		"email": "sample@gmail.com",
		"father_name": "sample father name",
		"gender": null,
		"is_pep": false,
		"kc_key": "2eedef51-7638-4874-bb98-661080bdfbfd",
		"marital_status": null,
		"mother_name": "Sample Mama",
		"nationality": "Brasil",
		"natural_revenue_range": {
			"average_amount": null,
			"created_at": "2021-03-12T13:26:08",
			"description": "Unavailable",
			"description_ptbr": "Indisponível",
			"enumerator": "0",
			"more_than_amount": null,
			"up_to_amount": null
		},
		"person": {
			"address": {
				"city": "Ituiutaba",
				"complement": "Apto 123",
				"created_at": "2023-06-14T20:51:32",
				"neighborhood": "Cabral",
				"number": "1234",
				"postal_code": "38300000",
				"state": "MG",
				"street": "Rua Sample Avenue"
			},
			"category": null,
			"category_nick": null,
			"created_at": "2023-06-14T20:51:32",
			"document_number": "68346734500",
			"domain": {
				"created_at": "2022-06-29T19:35:17",
				"domain_key": "abc36183-9845-40b9-8a6d-3805b48057e1",
				"domain_name": "QI SCD Domain",
				"owner_person_key": "bf623fcf-6e03-42b7-8664-55141c8acddb"
			},
			"internal_contact": null,
			"internal_contact_person_key": null,
			"name": "Sample Name Natural",
			"person_category": null,
			"person_code": 1681,
			"person_key": "2eedef51-7638-4874-bb98-661080bdfbfd",
			"person_status": {
				"created_at": "2019-02-15T18:28:09",
				"enumerator": "pending",
				"translation_path": "onboarding.PersonStatus.pending"
			},
			"person_type": {
				"created_at": "2019-02-15T18:28:08",
				"enumerator": "natural",
				"translation_path": "onboarding.PersonType.natural"
			},
			"phone": [
				{
					"area_code": "888",
					"country_code": "55",
					"created_at": "2023-06-14T20:51:32",
					"number": "988887777",
					"phone_key": "9a39e3ce-e4fd-447a-9856-83df19989895",
					"phone_type": null
				}
			],
			"professional_data": [],
			"qualifications": [],
			"registration_date": "2023-06-14",
			"risk": null,
			"special_attention": false,
			"terms_acknowledgement": false,
			"valid_cip_beneficiary": false
		},
		"profession": "sample profession",
		"revenue_amount": null,
		"spouse_name": null
	},
	"validation": true
}
```

STATUS 401

Response Body: Token enviado expirado

```json
{
	"title": "Unauthorized",
	"description": "Expired token",
	"translation": "Token Expirado",
	"code": "ACC000134",
	"additional_data": {}
}
```

STATUS 401

Response Body: Token enviado inválido

```json
{
	"title": "Unauthorized",
	"description": "Invalid token",
	"translation": "Token Inválido",
	"code": "ACC000133",
	"additional_data": {}
}
```

---

# Exclusão de vínculo

URL: /documentation/gestao_de_usuarios/exclusao_de_vinculo

## Request

### Token Request

ENDPOINT /baas/token_request
MÉTODO POST

Request Body

```json
{
	"contact_type":"sms",
	"professional_data_deletion":{
		"natural_person": "1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9",
		"legal_person": "b678ae5c-5797-4bd9-8a4c-9cbd1a0829a4"
	},
	"agent_document_number": "99988877765"
}

```

### Token Validation

ENDPOINT /baas/movement_validation
MÉTODO POST

Request Body

```json
{
	"token": "746116",
	"professional_data_deletion":{
		"natural_person": "1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9",
		"legal_person": "b678ae5c-5797-4bd9-8a4c-9cbd1a0829a4",
	}
}

```

### Body Params

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `contact_type` * | string | `(/baas/token_request)` Forma de envio escolhida para o token. Para envios de sms, apenas números brasileiros (+55) receberão a mensagem. | "sms" |
| `token` * | string | `(/baas/token_validation)` Código de seis (6) dígitos enviado ao aprovador da operação. Ex: "123456" | 6 |
| `professional_data_deletion` | Object | Vínculo de pessoa física a pessoa jurídica a ser removido | **[Objeto professional_data_deletion](#objeto-professional_data_)** |
| `agent_document_number` | string | CPF de um dos administradores da conta que receberá o SMS para validação Ex: "99977766654" | 11 |

### Objeto professional_data_deletion

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `natural_person` * | string | Chave de identificação da pessoa física. Formato uuid v4. Ex: 1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9| 36 |
| `legal_person` * |string | Chave de identificação da pessoa jurídica. Formato uuid v4. Ex: 1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9| 36 |

:::info Formas de contato implementadas
`contact_type` permitido para esta operação é **sms**.
::: 

:::info Número a receber token
Uma das pessoas cadastradas como **administrador de conta da pessoa jurídica** a ser vinculada receberá o token.
:::

## Response

### Token Request

STATUS 200

Response Body

```json
{}
```

STATUS 400

Response Body: Tipo de contato não implementado expirado

```json
{
	"title": "Bad Request",
	"description": "Contact type {contact_type} not allowed",
	"translation": "Forma de contato por {contact_type} não permitida",
	"code": "ACC000152",
	"additional_data": {}
}
```

STATUS 400

Response Body: Contato não existente inválido

```json
{
	"title": "Bad Request",
	"description": "Contact does not exist",
	"translation": "Contato nao existe",
	"code": "ACC000135",
	"additional_data": {}
}
```

### Token Validation

STATUS 200

Response Body

```json
{
	"hash": "b6e2643b15493d8f604a3083a20f2476",
	"return_response": {
		"deleted": "OK",
		"legal_person": "b678ae5c-5797-4bd9-8a4c-9cbd1a0829a4",
		"natural_person": "1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9"
	},
	"validation": true
}
```

STATUS 401

Response Body: Token enviado expirado

```json
{
	"title": "Unauthorized",
	"description": "Expired token",
	"translation": "Token Expirado",
	"code": "ACC000134",
	"additional_data": {}
}
```

STATUS 401

Response Body: Token enviado inválido

```json
{
	"title": "Unauthorized",
	"description": "Invalid token",
	"translation": "Token Inválido",
	"code": "ACC000133",
	"additional_data": {}
}
```

---

# Inclusão de vínculo

URL: /documentation/gestao_de_usuarios/inclusao_de_vinculo

## Request

### Token Request

ENDPOINT /baas/token_request
MÉTODO POST

Request Body

```json
{
	"contact_type":"sms",
	"professional_data_creation":{
	"natural_person": "1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9",
	"legal_person": "b678ae5c-5797-4bd9-8a4c-9cbd1a0829a4",
	"natural_person_roles": [
		{
			"product_type":"account",
			"role_type": "viewer"
		}
	],
	"post_type":"analyst"
	},
	"agent_document_number": "99988877765"
}

```

### Token Validation

ENDPOINT /baas/movement_validation
MÉTODO POST

Request Body

```json
{
	"token": "746116",
	"professional_data_creation":{
	"natural_person": "1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9",
	"legal_person": "b678ae5c-5797-4bd9-8a4c-9cbd1a0829a4",
	"natural_person_roles": [
		{
			"product_type":"account",
			"role_type": "viewer"
		}
	],
	"post_type":"analyst"
	}
}

```

### Body Params

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `contact_type` * | string | `(/baas/token_request)` Forma de envio escolhida para o token. Para envios de sms, apenas números brasileiros (+55) receberão a mensagem. | "sms" |
| `token` * | string | `(/baas/token_validation)` Código de seis (6) dígitos enviado ao aprovador da operação. Ex: "123456" | 6 |
| `professional_data_creation` | Object | Informações de vínculo de pessoa física a pessoa jurídica | **[Objeto professional_data_creation](#objeto-professional_data_creation)** |
| `agent_document_number` | string | CPF de um dos administradores da conta que receberá o SMS para validação Ex: "99977766654" | 11 |

### Objeto professional_data_creation

| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `natural_person` * | string | Chave de identificação da pessoa física. Formato uuid v4. Ex: 1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9| 36 |
| `legal_person` * |string | Chave de identificação da pessoa jurídica. Formato uuid v4. Ex: 1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9| 36 |
| `natural_person_roles` * | array | Informações de permissionamento e produto. | Array de  **[Objeto natural_person_roles](#objeto-natural_person_role)**|
| `post_type` * | string | Número da conta.| "ceo", "analyst", "partner", "director", "attorney", "signer" |

### Objeto natural_person_role
| Campo | Tipo | Descrição | Caracteres |
|---|---| ---| ---|
| `product_type` * | string | Tipo de produto a ser dado permissionamento sobre. | "account", "escrow" |
| `role_type` * |string | Tipo de permissionamento a ser dado ao produto.| "administrator", "requester", "viewer" |

:::info Formas de contato implementadas
`contact_type` permitido para esta operação é **sms**.
::: 

:::info Número a receber token
Uma das pessoas cadastradas como **administrador de conta da pessoa jurídica** a ser vinculada receberá o token.
:::

## Response

### Token Request

STATUS 200

Response Body

```json
{}
```

STATUS 400

Response Body: Tipo de contato não implementado expirado

```json
{
	"title": "Bad Request",
	"description": "Contact type {contact_type} not allowed",
	"translation": "Forma de contato por {contact_type} não permitida",
	"code": "ACC000152",
	"additional_data": {}
}
```

STATUS 400

Response Body: Contato não existente inválido

```json
{
	"title": "Bad Request",
	"description": "Contact does not exist",
	"translation": "Contato nao existe",
	"code": "ACC000135",
	"additional_data": {}
}
```

### Token Validation

STATUS 200

Response Body

```json
{
	"hash": "c5ad79fc14d8447ae272c671fe6dc27e",
	"return_response": {
		"admission_date": "2023-06-13",
		"created_at": "2023-06-13T17:26:57",
		"email": null,
		"final_beneficiary": null,
		"is_active": true,
		"legal_person_key": "b678ae5c-5797-4bd9-8a4c-9cbd1a0829a4",
		"natural_person_key": "1ed6dc4e-a0a8-42bb-8cc0-0bb3b0233fb9",
		"natural_person_roles": [
			{
				"created_at": "2023-06-13T17:26:57",
				"natural_person_roles_events": [],
				"product_type": {
					"created_at": "2022-04-08T14:51:34",
					"enumerator": "escrow"
				},
				"role_type": {
					"created_at": "2021-02-26T14:14:52",
					"enumerator": "viewer"
				},
				"updated_at": "2023-06-13T18:24:35"
			},
			{
				"created_at": "2023-06-13T17:26:57",
				"natural_person_roles_events": [],
				"product_type": {
					"created_at": "2021-02-26T14:16:35",
					"enumerator": "account"
				},
				"role_type": {
					"created_at": "2021-02-26T14:14:52",
					"enumerator": "viewer"
				},
				"updated_at": "2023-06-13T18:24:35"
			}
		],
		"phone": null,
		"post_type": {
			"created_at": "2019-02-15T18:28:12",
			"enumerator": "analyst",
			"translation_path": "onboarding.PostType.analyst"
		},
		"profession_data_key": "78c8b92f-4e44-4725-a5fd-aa1fca78366d",
		"updated_at": "2023-06-13T18:24:35"
	},
	"validation": true
}
```

STATUS 401

Response Body: Token enviado expirado

```json
{
	"title": "Unauthorized",
	"description": "Expired token",
	"translation": "Token Expirado",
	"code": "ACC000134",
	"additional_data": {}
}
```

STATUS 401

Response Body: Token enviado inválido

```json
{
	"title": "Unauthorized",
	"description": "Invalid token",
	"translation": "Token Inválido",
	"code": "ACC000133",
	"additional_data": {}
}
```

---

# Introdução

URL: /documentation/gestao_de_usuarios/tfa_introducao

O sistema de Autorização em Dois Fatores, doravante referido como tfa, tem o objetivo de garantir a autorização via token enviado à pessoa responsável por aprovar a alteração ou inclusão de cadastro.

## Requisição de Token

ENDPOINT /baas/token_request
MÉTODO POST

Para realizar a requisição de token é necessário realizar uma requisição com a forma de contato de envio do token e um objeto específico para o tipo de operação a ser realizada. A explicação completa sobre o payload a ser enviado para cada operação é explicitada na sua própria **[página](#operações)**.

Todos os payloads enviados seguem o mesmo formato básico abaixo:

```json
{
	"contact_type":"sms",
	"\<nome_do_objeto_da_operação\>":"\<objeto_da_operação\>"
}
```
:::info Aviso
`contact_type` implementados podem variar de operação para operação.
::: 

:::warning Aviso
O `token` gerado em ambiente de **Sandbox** será sempre **329329**
::: 

## Validação de Token

ENDPOINT /baas/movement_validation
MÉTODO POST

Para efetivar a operação é necessário que seja enviado no payload o token recebido, juntamente com o **mesmo** `objeto_da_operação` enviado na requisição de token.

Todos os payloads enviados seguem o mesmo formato básico abaixo:

```json
{
	"token":"123456",
	"\<nome_do_objeto_da_operação\>":"\<objeto_da_operação\>"
}
```

:::info Aviso
O token enviado é valido por 120 segundos a partir de sua geração
::: 

## Operações

- **[Criação de Pessoa](/documentation/gestao_de_usuarios/criacao_de_pessoa)**
- **[Inclusão de Vínculo](/documentation/gestao_de_usuarios/inclusao_de_vinculo)**
- **[Exclusão de Vínculo](/documentation/gestao_de_usuarios/exclusao_de_vinculo)**
- **[Alteração de contato de vínculo](/documentation/gestao_de_usuarios/alteracao_de_contato_de_vinculo)**