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

# Incluir Contato

> Crie novos cadastros de clientes, fornecedores e outros tipos de contatos

## Endpoint

```
POST https://api.tiny.com.br/api2/contato.incluir.php
```

Serviço destinado a permitir a criação e inclusão de cadastros de contatos dentro do sistema Olist.

## Parâmetros

| Parâmetro | Tipo   | Ocorrência  | Descrição                                     |
| --------- | ------ | ----------- | --------------------------------------------- |
| token     | string | obrigatório | Chave gerada para identificar sua empresa     |
| contato   | object | obrigatório | Estrutura de dados do contato conforme layout |
| formato   | string | obrigatório | Formato do retorno. Use `json`                |

## Estrutura do objeto contato

### Campos principais

| Campo        | Tipo   | Tamanho | Ocorrência  | Descrição                                       |
| ------------ | ------ | ------- | ----------- | ----------------------------------------------- |
| sequencia    | int    | -       | obrigatório | Número sequencial para identificar cada contato |
| codigo       | string | 30      | opcional    | Código do contato                               |
| nome         | string | 50      | obrigatório | Nome ou razão social                            |
| fantasia     | string | 60      | opcional    | Nome fantasia                                   |
| tipo\_pessoa | string | 1       | opcional    | F (Física), J (Jurídica), E (Estrangeiro)       |
| cpf\_cnpj    | string | 18      | opcional    | CPF ou CNPJ                                     |
| situacao     | string | 1       | obrigatório | A (Ativo), I (Inativo), S (Sem movimento)       |

### Informações pessoais

| Campo            | Tipo   | Tamanho | Ocorrência | Descrição                                        |
| ---------------- | ------ | ------- | ---------- | ------------------------------------------------ |
| ie               | string | 18      | opcional   | Inscrição estadual                               |
| rg               | string | 10      | opcional   | RG                                               |
| im               | string | 18      | opcional   | Inscrição municipal                              |
| estadoCivil      | int    | -       | opcional   | Código do estado civil (1)                       |
| profissao        | string | 50      | opcional   | Profissão (1)                                    |
| sexo             | string | 10      | opcional   | "masculino" ou "feminino" (1)                    |
| data\_nascimento | string | 10      | opcional   | Data de nascimento no formato dd/mm/aaaa (1) (2) |
| naturalidade     | string | 40      | opcional   | Naturalidade (1)                                 |
| nome\_pai        | string | 100     | opcional   | Nome do pai (1)                                  |
| cpf\_pai         | string | 18      | opcional   | CPF do pai (1)                                   |
| nome\_mae        | string | 100     | opcional   | Nome da mãe (1)                                  |
| cpf\_mae         | string | 18      | opcional   | CPF da mãe (1)                                   |

### Endereço principal

| Campo       | Tipo   | Tamanho | Ocorrência | Descrição                                |
| ----------- | ------ | ------- | ---------- | ---------------------------------------- |
| endereco    | string | 50      | opcional   | Logradouro                               |
| numero      | string | 10      | opcional   | Número do endereço                       |
| complemento | string | 50      | opcional   | Complemento do endereço                  |
| bairro      | string | 30      | opcional   | Bairro                                   |
| cep         | string | 10      | opcional   | CEP                                      |
| cidade      | string | 30      | opcional   | Cidade conforme tabela de municípios (3) |
| uf          | string | 30      | opcional   | Unidade Federativa                       |
| pais        | string | 50      | opcional   | País conforme tabela de países (3)       |

### Endereço de cobrança

| Campo                 | Tipo   | Tamanho | Ocorrência | Descrição                               |
| --------------------- | ------ | ------- | ---------- | --------------------------------------- |
| endereco\_cobranca    | string | 50      | opcional   | Logradouro de cobrança (4)              |
| numero\_cobranca      | string | 10      | opcional   | Número do endereço de cobrança (4)      |
| complemento\_cobranca | string | 50      | opcional   | Complemento do endereço de cobrança (4) |
| bairro\_cobranca      | string | 30      | opcional   | Bairro de cobrança (4)                  |
| cep\_cobranca         | string | 10      | opcional   | CEP de cobrança (4)                     |
| cidade\_cobranca      | string | 30      | opcional   | Cidade de cobrança (4)                  |
| uf\_cobranca          | string | 30      | opcional   | UF de cobrança (4)                      |

### Informações de contato

| Campo      | Tipo   | Tamanho | Ocorrência | Descrição                      |
| ---------- | ------ | ------- | ---------- | ------------------------------ |
| contatos   | string | 100     | opcional   | Pessoas de contato             |
| fone       | string | 40      | opcional   | Telefone                       |
| fax        | string | 40      | opcional   | Fax                            |
| celular    | string | 40      | opcional   | Telefone celular               |
| email      | string | 50      | opcional   | E-mail                         |
| email\_nfe | string | 50      | opcional   | E-mail para recebimento de NFe |
| site       | string | 40      | opcional   | Website                        |

### Informações comerciais

| Campo           | Tipo    | Tamanho | Ocorrência | Descrição                                                                            |
| --------------- | ------- | ------- | ---------- | ------------------------------------------------------------------------------------ |
| crt             | int     | 1       | opcional   | Código de regime tributário: 0 (Não informado), 1 (Simples Nacional), 3 (Normal) (5) |
| limite\_credito | decimal | -       | opcional   | Limite de crédito (usar "." como separador decimal) (6)                              |
| contribuinte    | string  | 1       | opcional   | 0 (Não informado), 1 (Contribuinte ICMS), 2 (Isento), 9 (Não contribuinte)           |
| id\_vendedor    | int     | -       | opcional   | ID do vendedor (7)                                                                   |
| nome\_vendedor  | string  | 50      | opcional   | Nome do vendedor (8)                                                                 |
| obs             | string  | 200     | opcional   | Observações gerais                                                                   |

### Listas de tipos e pessoas

| Campo                            | Tipo   | Ocorrência  | Descrição                                       |
| -------------------------------- | ------ | ----------- | ----------------------------------------------- |
| tipos\_contato                   | array  | opcional    | Lista de tipos de contato                       |
| tipos\_contato\[].tipo           | string | condicional | Descrição do tipo (ex: "Cliente", "Fornecedor") |
| pessoas\_contato                 | array  | opcional    | Lista de pessoas de contato                     |
| pessoas\_contato\[].nome         | string | condicional | Nome da pessoa de contato (max 50)              |
| pessoas\_contato\[].telefone     | string | condicional | Telefone (max 30)                               |
| pessoas\_contato\[].ramal        | string | condicional | Ramal (max 20)                                  |
| pessoas\_contato\[].email        | string | condicional | E-mail (max 50)                                 |
| pessoas\_contato\[].departamento | string | condicional | Departamento (max 50)                           |

> (1) Campos de informações pessoais se aplicam apenas a pessoas físicas (tipo\_pessoa = "F")
>
> (2) Data de nascimento deve estar no formato dd/mm/aaaa. Exemplo: "01/01/2012"
>
> (3) Os valores de cidade e país devem estar de acordo com as tabelas oficiais de municípios e países
>
> (4) Campos de endereço de cobrança são opcionais e devem ser informados apenas se diferentes do endereço principal
>
> (5) O campo CRT é desconsiderado para pessoas físicas (tipo\_pessoa = "F")
>
> (6) Valores decimais devem usar "." como separador decimal. Exemplo: "5.25"
>
> (7) O ID do vendedor informado deve existir no sistema, caso contrário retornará erro
>
> (8) O campo nome\_vendedor é desconsiderado se id\_vendedor for informado

## Retorno

| Campo                               | Tipo   | Ocorrência  | Descrição                                          |
| ----------------------------------- | ------ | ----------- | -------------------------------------------------- |
| retorno.status\_processamento       | int    | obrigatório | Código de status do processamento                  |
| retorno.status                      | string | obrigatório | "OK" ou "Erro"                                     |
| retorno.codigo\_erro                | int    | condicional | Código do erro conforme tabela da API (9)          |
| retorno.erros                       | array  | condicional | Lista de erros ocorridos (9)                       |
| retorno.erros\[].erro               | string | condicional | Descrição do erro                                  |
| retorno.registros                   | array  | condicional | Lista de resultados para cada contato enviado (10) |
| registros\[].registro.sequencia     | int    | condicional | Número sequencial do contato                       |
| registros\[].registro.status        | string | condicional | "OK" ou "Erro"                                     |
| registros\[].registro.codigo\_erro  | int    | condicional | Código do erro específico do registro              |
| registros\[].registro.id            | int    | condicional | ID do contato criado na Olist (11)                 |
| registros\[].registro.erros         | array  | condicional | Erros específicos do registro                      |
| registros\[].registro.erros\[].erro | string | condicional | Descrição do erro                                  |

> (9) Retornado quando status = "Erro"
>
> (10) Retornado quando o processamento gera resultados individuais por registro
>
> (11) Retornado quando o registro foi incluído com sucesso

## Exemplo de chamada

```bash theme={null}
curl -X POST https://api.tiny.com.br/api2/contato.incluir.php \
  -d "token=SEU_TOKEN&formato=json&contato={\"contatos\":[{\"contato\":{\"sequencia\":\"1\",\"nome\":\"Contato Teste\",\"situacao\":\"A\"}}]}"
```

```php theme={null}
$url = 'https://api.tiny.com.br/api2/contato.incluir.php';
$token = 'SEU_TOKEN';

$contato = json_encode([
    'contatos' => [
        [
            'contato' => [
                'sequencia' => '1',
                'codigo' => '1234',
                'nome' => 'Contato Teste 1',
                'fantasia' => 'Teste 1',
                'tipo_pessoa' => 'F',
                'cpf_cnpj' => '12345678900',
                'endereco' => 'Rua Teste',
                'numero' => '123',
                'bairro' => 'Centro',
                'cep' => '95700-000',
                'cidade' => 'Bento Gonçalves',
                'uf' => 'RS',
                'email' => 'teste@teste.com.br',
                'fone' => '(54) 3055-3808',
                'situacao' => 'A',
                'tipos_contato' => [
                    ['tipo' => 'Cliente'],
                    ['tipo' => 'Fornecedor']
                ]
            ]
        ]
    ]
]);

$data = "token=$token&contato=$contato&formato=json";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$resultado = json_decode($response, true);
```

## Exemplo de retorno

### Sucesso

```json theme={null}
{
  "retorno": {
    "status_processamento": 3,
    "status": "OK",
    "registros": [
      {
        "registro": {
          "sequencia": "1",
          "status": "OK",
          "id": "49644545"
        }
      }
    ]
  }
}
```

### Erro - Token inválido

```json theme={null}
{
  "retorno": {
    "status_processamento": 1,
    "status": "Erro",
    "codigo_erro": 2,
    "erros": [
      {
        "erro": "token invalido"
      }
    ]
  }
}
```

### Erro - Dados inválidos

```json theme={null}
{
  "retorno": {
    "status_processamento": 2,
    "status": "OK",
    "registros": [
      {
        "registro": {
          "sequencia": "1",
          "status": "Erro",
          "codigo_erro": 6,
          "erros": [
            {
              "erro": "Campo obrigatório não informado: nome"
            }
          ]
        }
      }
    ]
  }
}
```

## Observações

* É possível incluir múltiplos contatos em uma única chamada através do array `contatos`
* O campo `sequencia` é obrigatório para identificar cada contato no retorno
* Consulte a [tabela de cidades](/api-v2/tabelas/lista-municipios) para valores válidos de município
* Consulte a [tabela de códigos de erro](/api-v2/tabelas/codigos-erros) para interpretação dos erros
* Campos de pessoa física são aplicáveis apenas quando tipo\_pessoa = "F"
