# Produtos e serviços

## Produtos

Os detalhes do pedido POST para a criação de produtos estão descritos de seguida, em formato OpenAPI, e em cURL.

```
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>/products'
```

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": "products",                         // [OBRIGATÓRIO]
    "attributes": {
      "type": "Product",                        // [OBRIGATÓRIO]
      "item_code": "PTEST",                     // [OBRIGATÓRIO]
      "item_description": "Test product",       // [OBRIGATÓRIO]
      "sales_price": 100,                       // [OPCIONAL]
      "sales_price_includes_vat": false,        // [OPCIONAL] Por omissão, false; true, se o preço de venda do produto incluir IVA
      "tax_code": "NOR"                         // [OPCIONAL] Os tipos de IVA suportados são "NOR" (normal), "INT" (intermédio), "RED" (reduzido), "ISE" (isento)
    }
  }
}
```

{% openapi src="<https://443186692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VG1vNjxt1bXBAZ25uGG%2Fuploads%2Fgit-blob-71a189cc085dabb6e2c79ee0b9531d6d2046d91d%2Fopenapi_swagger%20(1).yml?alt=media>" path="/products" method="post" %}
[openapi\_swagger (1).yml](https://443186692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VG1vNjxt1bXBAZ25uGG%2Fuploads%2Fgit-blob-71a189cc085dabb6e2c79ee0b9531d6d2046d91d%2Fopenapi_swagger%20\(1\).yml?alt=media)
{% endopenapi %}

De modo a obter informações sobre um dado produto, poderá realizar o seguinte pedido

<mark style="color:blue;">`GET`</mark> `/products`

#### Path Parameters

| Name                | Type   | Description   |
| ------------------- | ------ | ------------- |
| filter\[item\_code] | String | \<item\_code> |

{% tabs %}
{% tab title="200: OK Toda a informação sobre o produto" %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

Neste, pode não indicar nenhum filtro, e obter todos os produtos disponíveis, ou então filtrar por qualquer um dos campos disponíveis, tal como no exemplo dado, e seguindo as convenções JSONAPI

## Serviços

Os detalhes do pedido POST para a criação de serviços estão descritos de seguida, em formato OpenAPI, e em cURL.

```
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>/services'
```

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": "services",                         // [OBRIGATÓRIO]
    "attributes": {
      "type": "Service",                        // [OBRIGATÓRIO]
      "item_code": "STEST",                     // [OBRIGATÓRIO]
      "item_description": "Test service",       // [OBRIGATÓRIO]
      "sales_price": 100,                       // [OPCIONAL]
      "sales_price_includes_vat": false,        // [OPCIONAL] Por omissão, false; true, se o preço de venda do produto incluir IVA
      "tax_code": "NOR"                         // [OPCIONAL] Os tipos de IVA suportados são "NOR" (normal), "INT" (intermédio), "RED" (reduzido), "ISE" (isento)
    }
  }
}
```

{% openapi src="<https://443186692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VG1vNjxt1bXBAZ25uGG%2Fuploads%2Fgit-blob-71a189cc085dabb6e2c79ee0b9531d6d2046d91d%2Fopenapi_swagger%20(1).yml?alt=media>" path="/services" method="post" %}
[openapi\_swagger (1).yml](https://443186692-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3VG1vNjxt1bXBAZ25uGG%2Fuploads%2Fgit-blob-71a189cc085dabb6e2c79ee0b9531d6d2046d91d%2Fopenapi_swagger%20\(1\).yml?alt=media)
{% endopenapi %}

De modo a obter informações sobre um dado serviço, poderá realizar o seguinte pedido

<mark style="color:blue;">`GET`</mark> `/services`

#### Path Parameters

| Name                | Type   | Description   |
| ------------------- | ------ | ------------- |
| filter\[item\_code] | String | \<item\_code> |

{% tabs %}
{% tab title="200: OK Toda a informação sobre o serviço" %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

Neste, pode não indicar nenhum filtro, e obter todos os serviços disponíveis, ou então filtrar por qualquer um dos campos disponíveis, tal como no exemplo dado, e seguindo as convenções JSONAPI
