Fornecedores, Morada e E-mail

As rotas definidas no presente capítulo permitem gerir toda a informação relativa a fornecedores: criação, edição, remoção, etc

Obter Todos os Fornecedores

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

Obter Fornecedor por Id

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

Exemplo de Resposta
Response
{
    "data": {
        "type": "suppliers",
        "id": "7",
        "attributes": {
            "tax_registration_number": "533186331",
            "business_name": "A Empresa",
            "website": "www.a_empresa.pt",
            "is_taxable": false,
            "is_tax_exempt": false,
            "tax_exemption_reason_id": null,
            "self_billing": null,
            "document_series_id": null,
            "internal_observations": null,
            "tax_country_region": "PT-AC",
            "is_independent_worker": false,
            "country_iso_alpha_2": "PT-AC",
            "saft_import_id": null,
            "accounting_number": null,
            "trusted_email_source": false
        },
        "relationships": {
            "addresses": {
                "data": [
                    {
                        "type": "addresses",
                        "id": "45"
                    }
                ]
            },
            "bank_accounts": {
                "data": [
                    {
                        "type": "bank_accounts",
                        "id": "4"
                    }
                ]
            },
            "company": {
                "data": {
                    "type": "current_company",
                    "id": "800000046"
                }
            },
            "contacts": {
                "data": [
                    {
                        "type": "contacts",
                        "id": "17"
                    }
                ]
            },
            "defaults": {
                "data": {
                    "type": "suppliers_defaults",
                    "id": "4"
                }
            },
            "main_address": {
                "data": {
                    "type": "addresses",
                    "id": "45"
                }
            },
            "main_contact": {
                "data": {
                    "type": "contacts",
                    "id": "17"
                }
            },
            "tax_exemption_reason": {
                "data": null
            }
        }
    }
}

Criar Fornecedor

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 de data, deverá colocar todos os parâmetros obrigatórios e poderá também colocar os restantes parâmetros, se for do seu interesse. O tipo dos parâmetros está também especificado.

Payload
{
    "data": {
        "type": "suppliers",
        "attributes": {
            "tax_registration_number": 533186331,    //OBRIGATÓRIO
            "business_name": "A Empresa",           //OBRIGATÓRIO  
            "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
        }
    }
}

Associar morada a Fornecedor

A sequência de passos delineada no diagrama proporciona uma compreensão do processo, desde a criação do forncedor até a sua associação com uma morada.

Quando um forncedor é criado, uma morada principal fica associada ao fornecedor. Esta morada por default vem vazia e é necessário atualizar com os dados da nova morada do fornecedor.

Através do id obtido pela response do Criar Fornecedor este deverá ser usado para obter o id da morada ao fazer um GET /suppliers/{id}

Exemplo de resposta de um GET Supplier por ID
Response
{
    "data": {
        "type": "suppliers",
        "id": "7",
        "attributes": {
            "tax_registration_number": "533186331",
            "business_name": "A Empresa",
            "website": "www.a_empresa.pt",
            "is_taxable": false,
            "is_tax_exempt": false,
            "tax_exemption_reason_id": null,
            "self_billing": null,
            "document_series_id": null,
            "internal_observations": null,
            "tax_country_region": "PT-AC",
            "is_independent_worker": false,
            "country_iso_alpha_2": "PT-AC",
            "saft_import_id": null,
            "accounting_number": null,
            "trusted_email_source": false
        },
        "relationships": {
            "addresses": {
                "data": [
                    {
                        "type": "addresses",
                        "id": "45"
                    }
                ]
            },
            "bank_accounts": {
                "data": [
                    {
                        "type": "bank_accounts",
                        "id": "4"
                    }
                ]
            },
            "company": {
                "data": {
                    "type": "current_company",
                    "id": "800000046"
                }
            },
            "contacts": {
                "data": [
                    {
                        "type": "contacts",
                        "id": "17"
                    }
                ]
            },
            "defaults": {
                "data": {
                    "type": "suppliers_defaults",
                    "id": "4"
                }
            },
            "main_address": {
                "data": {
                    "type": "addresses",
                    "id": "45"
                }
            },
            "main_contact": {
                "data": {
                    "type": "contacts",
                    "id": "17"
                }
            },
            "tax_exemption_reason": {
                "data": null
            }
        }
    }
}

O id da morada obtido anteriormente, será usado para atualizar os dados da morada através de um PATCH / addresses.

O body deste pedido (payload JSON) deverá conter as informações de cliente que se pretende atualizar nos respetivos atributos.

Payload
{
    "data": {
        "type": "addresses",
        "id": "45",
        "attributes": {
             "address_detail": "Avenida Principal",
            "city": "Setúbal",
            "postcode": "2910-099",
            "region": "Setúbal",
            "country_id": "3"
        }
    }
}

Remover Fornecedor

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:

Atualizar Fornecedor

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.

Exemplo de Payload

No exemplo que se segue foi atualizado o website da empresa

Payload
{
    "data": {
        "type": "suppliers",
        "id": "7",
        "attributes": {
            "tax_registration_number": "533186331",
            "business_name": "A Empresa",
            "website": "www.a_empresa.pt",
            "is_taxable": false,
            "is_tax_exempt": false,
            "tax_exemption_reason_id": null,
            "self_billing": null,
            "document_series_id": null,
            "internal_observations": null,
            "tax_country_region": "PT",
            "is_independent_worker": false,
            "country_iso_alpha_2": "PT",
            "saft_import_id": null,
            "accounting_number": null,
            "trusted_email_source": false
        }
    }
}
Exemplo de Response
{
    "data": {
        "type": "suppliers",
        "id": "7",
        "attributes": {
            "tax_registration_number": "533186331",
            "business_name": "A Empresa",
            "website": null,
            "is_taxable": false,
            "is_tax_exempt": false,
            "tax_exemption_reason_id": null,
            "self_billing": null,
            "document_series_id": null,
            "internal_observations": null,
            "tax_country_region": "PT",
            "is_independent_worker": false,
            "country_iso_alpha_2": "PT",
            "saft_import_id": null,
            "accounting_number": null,
            "trusted_email_source": false
        },
        "relationships": {
            "addresses": {
                "data": []
            },
            "bank_accounts": {
                "data": []
            },
            "company": {
                "data": {
                    "type": "current_company",
                    "id": "800000046"
                }
            },
            "contacts": {
                "data": []
            },
            "defaults": {
                "data": null
            },
            "main_address": {
                "data": null
            },
            "main_contact": {
                "data": null
            },
            "tax_exemption_reason": {
                "data": null
            }
        }
    }
}


Morada

Criar Morada

Quando um Fornecedor é criado este já tem uma morada vazia associada, mas é possível adicionar mais do que uma morada ao Fornecedor.

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

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

Payload
{
    "data": {
        "type": "addresses",
        "attributes": {
            "addressable_type": "Supplier", //OBRIGATÓRIO
            "addressable_id": 7,            //OBRIGATÓRIO - ID da morada do Fornecedor
            "address_detail": "teste 3",
            "city": "Setúbal",
            "postcode": "2910-099",
            "region": "Setúbal",
            "country_id" : 1            // 1 = PT (Portugal Continental); 2 = PT_MA (Madeira); //3 = PT_AC (Açores)...Ver Get/countries
        }
    }
}

"addressable_id" - corresponde ao id da morada do cliente obtido da relação entre fornecedor e morada, através do #obter-fornecedor

Para usar outro país que não seja Portugal, poderá consultar mais informação em: Países


E-mail

Criar E-mail de Fornecedor

Para proceder à criação do E-mail de um fornecedor pela primeira vez deverá utilizar a POST / contacts.

O body deste pedido (<payload JSON>) deverá conter as informações de fornecedor que se pretende atualizar, sendo obrigatório campo "contactable_id" identificador do fornecedor que tenciona atualizar e o "contactable_type" sendo este do tipo "Supplier"

Exemplo de Payload

{
    "data": {
        "type": "contacts",
        "attributes": {
            "is_primary": true,
            "name": "teste_cmo",
            "position": null,
            "phone_number": null,
            "mobile_number": null,
            "email": "61_manuel@email.pt",
            "categories": [
                "general"
            ],
            "contactable_id": 61,
            "contactable_type": "Customer"
        }
    }
}

Atualizar E-mail de Cliente

Já deve ter realizado Criar E-mail de Fornecedor

Usando o GET / supplier{id} deverá obter o id correspondente ao contacto do fornecedor, que se encontra localizado na área de relationships-> main_contact, como pode observar no exemplo de response abaixo.

Exemplo de response de um GET/supplier/{id}
{
    "data": {
        "type": "customers",
        "id": "61",
        "attributes": {
            "tax_registration_number": "229659179",
            "business_name": "Manuel Ricardo Ribeiro",
            "contact_name": null,
            "website": null,
            "phone_number": null,
            "mobile_number": null,
            "email": null,
            "observations": null,
            "internal_observations": null,
            "not_final_customer": false,
            "cashed_vat": false,
            "tax_country_region": "PT",
            "country_iso_alpha_2": "PT",
            "saft_import_id": null,
            "is_tax_exempt": false,
            "data": {}
        },
        "relationships": {
            "addresses": {
                "data": [
                    {
                        "type": "addresses",
                        "id": "67"
                    }
                ]
            },
            "company": {
                "data": {
                    "type": "current_company",
                    "id": "800000046"
                }
            },
            "defaults": {
                "data": {
                    "type": "customers_defaults",
                    "id": "31"
                }
            },
            "email_addresses": {
                "data": [
                    {
                        "type": "email_addresses",
                        "id": "24"
                    }
                ]
            },
            "main_address": {
                "data": {
                    "type": "addresses",
                    "id": "67"
                }
            },
            "main_email_address": {
                "data": {
                    "type": "email_addresses",
                    "id": "24"
                }
            },
            "tax_exemption_reason": {
                "data": null
            }
        }
    }
}

Para proceder à atualização do E-mail de um fornecedor deverá utilizar a PATCH / contacts usando o id obtido do main_contact obtido do fornecedor pretendido.

O body deste pedido (<payload JSON>) deverá conter as informações de cliente que se pretende atualizar, sendo obrigatório campo "id" id do contacto correspondente ao utilizador que tenciona atualizar e o "email" novo a ser alterado.

Exemplo de Payload
{
    "data": {
        "type": "contacts",
        "id": "24",
        "attributes": {
            "email": "novo@email.pt"
        }
    }
}

Last updated