# Fornecedores

Esta primeira rota permite obter a informação de todos os fornecedores disponíveis. Para tal, deve apenas realizar o seguinte pedido:

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/suppliers" method="get" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

```
curl -v -X GET -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' '<API_URL>/suppliers'
```

Por outro lado, se pretender obter a informação de um fornecedor específico, deverá realizar o mesmo pedido, especificando o id do fornecedor que deseja consultar

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/suppliers/{id}" method="get" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

```
curl -v -X POST -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' '<API_URL>/suppliers'/{id}
```

A seguinte rota permite a criação de novas instâncias de fornecedores. De modo a realizar um pedido para esta rota, terá de enviar alguns parâmetros no body do pedido.\
Tal como está descrito no pedido em baixo, dentro do body terá de criar dois objetos: data, e relationships. \
Dentro de data, deverá colocar todos os parâmetros obrigatórios (assinalados com um asterisco), e poderá também colocar os restantes parâmetros, se for do seu interesse. O tipo dos parâmetros está também especificado. \
Dentro de relationships deverá colocar um objeto para cada uma das entradas descritas em baixo, sendo que cada uma deverá conter todos os parâmetros indicados.

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/suppliers" method="post" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

Em alternativa, temos descrito o cURL necessário para realizar este pedido:

```
curl -v -X POST -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' -d '<payload JSON>' '<API_URL>/suppliers'
```

Neste, o payload JSON deverá ser do seguinte formato

```
{
    "data": {
        "type": "suppliers",
        "attributes": {
            "tax_registration_number": null,
            "business_name": null,
            "website": null,
            "is_taxable": null,
            "is_tax_exempt": null,
            "self_billing": null,
            "document_series_id": null,
            "internal_observations": null,
            "tax_country_region": null,
            "is_independent_worker": null
        },
        "relationships": {
            "main_address": {
                "data": {
                    "type": "addresses",
                    "id": 1
                }
            },
            "main_contact": {
                "data": {
                    "type": "contacts",
                    "id": 1
                }
            },
            "addresses": {
                "data": [
                    {
                        "type": "addresses",
                        "id": 1
                    },
                    {
                        "type": "addresses",
                        "id": 2
                    }
                ]
            },
            "contacts": {
                "data": [
                    {
                        "type": "contacts",
                        "id": 1
                    },
                    {
                        "type": "contacts",
                        "id": 2
                    }
                ]
            }
        }
    }
}
```

A seguinte rota permite a remoção de um dado fornecedor. Esta rota deve ser utilizada de forma cautelosa dado que é irreversível, e mesmo que este cliente volte a ser criado, o seu id nunca será o mesmo que teria anteriormente. \
Utilizando o id do forncedor que quer eliminar, que poderá fazer utilizando a primeira rota desta página, por exemplo, terá simplesmente de fazer o pedido:

```
curl -v -X DELETE -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' '<API_URL>/suppliers/{id}'
```

&#x20;Este irá retornar OK em caso de sucesso.

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/suppliers/{id}" method="delete" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

A rota PATCH permite a edição de um fornecedor existente. O body deste pedido deverá ser igual ao descrito na rota POST, contendo todas as informações obrigatórias do fornecedor, atualizadas para os valores que tenciona alterar, além do "id" do fornecedor. Álem disto, o pedido deverá ser feito a <https://apiv1.toconline.com/suppliers/{id}>, sendo que {id} é o identificador do fornecedor que tenciona atualizar.

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/suppliers/{id}" method="patch" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

```
curl -v -X PATCH -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' -d <PAYLOAD_JSON> '<API_URL>/suppliers/{id}'
```

Neste, o PAYLOAD\_JSON deverá ser do seguinte formato:

```
{
    "data": {
        "type": "suppliers",
        "id": "1",
        "attributes": {
            "tax_registration_number": null,
            "business_name": null,
            "website": null,
            "is_taxable": null,
            "is_tax_exempt": null,
            "self_billing": null,
            "document_series_id": null,
            "internal_observations": null,
            "tax_country_region": null,
            "is_independent_worker": null
        },
        "relationships": {
            "main_address": {
                "data": {
                    "type": "addresses",
                    "id": 1
                }
            },
            "main_contact": {
                "data": {
                    "type": "contacts",
                    "id": 1
                }
            },
            "addresses": {
                "data": [
                    {
                        "type": "addresses",
                        "id": 1
                    },
                    {
                        "type": "addresses",
                        "id": 2
                    }
                ]
            },
            "contacts": {
                "data": [
                    {
                        "type": "contacts",
                        "id": 1
                    },
                    {
                        "type": "contacts",
                        "id": 2
                    }
                ]
            }
        }
    }
}
```

### Morada

De modo a associar uma morada a um cliente, deverá realizar o seguinte pedido

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/addresses" method="patch" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

```
curl -v -X PATCH -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' -d '<payload JSON>' '<API_URL>/addresses'
```

No pedido acima, o \<access\_token> corresponde ao token de acesso válido devolvido pelo serviço de OAuth, e o \<payload JSON> deverá ter o seguinte formato

```
// Exemplo de payload

{
  "data": {
    "type": "addresses",                              // [OBRIGATÓRIO]
    "id": "<id da morada principal do cliente>",      // [OBRIGATÓRIO]
    "attributes": {
      "address_detail": "Test address",               // [OPCIONAL]
      "city": "Test city",                            // [OPCIONAL]
      "postcode": "0000-000",                         // [OPCIONAL] Se o país for Portugal, deve obedecer ao formato português, DDDD-DDD
      "region": "Test region"                         // [OPCIONAL]
    },
    "relationships": {                                // [OPCIONAL] Recursos associados à morada. Caso nenhum seja indicado, este bloco "relationships" deve ser omitido
      "country": {                                    // [OPCIONAL] Por omissão, a morada fica associada ao país "PT"
        "data": {
          "type": "countries",                        // [OBRIGATÓRIO]
          "id": "<id do país>"                        // [OBRIGATÓRIO] Vd. NOTA 1
        }
      }
    }
  }
}
```

NOTA 1: O "id" interno do país deve ser obtido por um GET /countries?filter\[iso\_alpha\_2]=PT|\<o código do país>... São também suportados dois "países" adicionais: "PT-AC" (Portugal, Açores) e "PT-MA" (Portugal, Madeira).

### E-mail

De modo a associar um email a um cliente, deverá realizar o seguinte pedido

{% openapi src="/files/Ph0j7Hyh5VB7NivP1zhf" path="/email\_addresses" method="patch" %}
[openapi\_swagger.yml](https://1113994710-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiTdJalKSEf3HO0XWftdu%2Fuploads%2FVKja7VTBGEn3Y3110UWU%2Fopenapi_swagger.yml?alt=media\&token=9ecc7973-2b20-491a-b2ee-e9de90da70ed)
{% endopenapi %}

```
curl -v -X PATCH -H 'Content-Type: application/vnd.api+json' -H 'Accept: application/json' -H 'Authorization: Bearer <access_token>' -d '<payload JSON>' '<API_URL>/email_addresses'
```

No pedido acima, o \<access\_token> corresponde ao token de acesso válido devolvido pelo serviço de OAuth, e o \<payload JSON> deverá ter o seguinte formato

```
{
  "data": {
    "type": "email_addresses",                        // [OBRIGATÓRIO]
    "id": "<id do endereço de email do cliente>",     // [OBRIGATÓRIO]
    "attributes": {
      "email": "test@gmail.com",                      // [OBRIGATÓRIO]
    }
  }
}
```

###


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cloudware.gitbook.io/documentacao-api/api-v0/fornecedores.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
