Documente Academic
Documente Profesional
Documente Cultură
Documentação da API
Mogg
Versão v1
Desenvolvido por:
Anderson Barberini
ERECHIM – RS
2017
66
SUMÁRIO
A.1 INTRODUÇÃO
Todas as solicitações enviadas à API irão retornar uma resposta com um código HTTP
correspondente ao resultado obtido na requisição. Através desse código é possível identificar o
status da solicitação, sendo ela sucesso ou falha. A Tabela A.1 descreve os códigos HTTP
utilizados pela API, juntamente com o status de cada código e sua descrição.
A.2 AUTENTICAÇÃO
API responsável por manter as credenciais dos usuários e também de realizar as funções
de login e logout. A seguir estão mapeadas as rotas da API de autenticação.
Path: /v1/auth/companies
Descrição: Cria as credenciais para a empresa, conforme parâmetros descritos na Tabela A.2.
Método: POST
As figuras representadas pela Figura A.1, Figura A.2 e Figura A.3 representam os
possíveis retornos da solicitação do recurso POST /v1/auth/companies.
{
"company_id": "1",
"login": "email@empresa.com.br",
"id": 1
}
Fonte: Autor
69
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"company_id": [
"O campo company id é obrigatório."
],
"login": [
"O campo login é obrigatório."
],
"password": [
"O campo senha é obrigatório."
]
}
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/auth/clients
Descrição: Cria as credenciais para o cliente, através dos parâmetros descritos na Tabela A.3.
Método: POST
As figuras representadas pela Figura A.4, Figura A.5 e Figura A.6 representam os
possíveis retornos da solicitação do recurso POST /v1/auth/clients.
70
{
"client_id": "1",
"company_id": "1",
"login": "email@empresa.com.br",
"id": 2
}
Fonte: Autor
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"client_id": [
"O campo client id é obrigatório."
],
"company_id": [
"O campo company id é obrigatório."
],
"login": [
"O campo login é obrigatório."
],
"password": [
"O campo senha é obrigatório."
]
}
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/auth/login
Descrição: Realiza o processo de login, retornando um token para o usuário. Os parâmetros
necessários estão descritos na Tabela A.4.
Método: POST
71
As figuras representadas pela Figura A.7, Figura A.8 e Figura A.9 representam os
possíveis retornos da solicitação do recurso POST /v1/auth/login.
{
"token":
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI3ODJmY2NkODgzMGI0NjQxYWY1NTIzMWYyYjcwYTB
lNSIsImp0aSI6IjZlOGY3OTc4LWQxZTEtNDkyZS1iODIzLTczN2Y2YTBhZjkyZiIsImV4cCI6MTUxMTI4OTA0Niwi
cm9sZSI6ImNsaWVudCIsImNpZCI6ImJiNjNmYmFkLWFlNWQtNDY4Ni1iMmFjLTZlOTRiYmIxOTI4YyIsImNsaWVud
F9pZCI6IjMiLCJjb21wYW55X2lkIjoiMSJ9.djd8e_Jpu62jU9bQBtn0Y8CmjnOmrHI2j4puZYu7d_8"
}
Fonte: Autor
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"login": [
"O campo login é obrigatório."
],
"password": [
"O campo senha é obrigatório."
],
"role": [
"O campo role é obrigatório."
]
}
}
Fonte: Autor
72
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/auth/logout
Descrição: Realiza o processo de logout, excluindo o token do usuário. O token deve ser
informado no Header, conforme a Tabela A.5.
Método: POST
Ao finalizar a requisição, se tudo ocorreu bem, o logout foi realizado com sucesso e o retorno
será com um HTTP 204, caracterizado por não ter nenhuma informação na resposta. A Figura
A.10 e
Figura A.11 representam os possíveis retornos recurso /v1/auth/logout em casos de
ocorrer algum erro.
{
"message": "Token não encontrado",
"status_code": 422
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
73
A.3 EMPRESAS
API responsável por manter as informações das empresas cadastradas. Toda solicitação
deve contar um header extra, informando o token de acesso, através do campo Authorization
Bearer, descrito na Tabela A.6.
Path: /v1/companies
Descrição: Busca ou retorna as empresas. A busca é feita através do parâmetro path. Os
parâmetros disponíveis estão listados na Tabela A.7.
Método: GET
[
{
"id": 1,
"name": "Nome da empresa",
"email": "email@empresa.com.br",
"path": "empresa",
"phone_number": "(99) 9999-9999",
"home_number": null,
"about": "Texto sobre a empresa",
"product_price": 35
},
{
"id": 2,
"name": "Empresa 2",
"email": "email@empresa2.com.br",
"path": "empresa2",
"phone_number": "(99) 9999-9999",
"home_number": null,
"about": "Texto sobre a empresa",
"product_price": 45
}
]
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/companies/{id}
Descrição: Retorna uma empresa específica com base no ID. Os parâmetros disponíveis se
encontram na Tabela A.8.
Método: GET
{
"id": 1,
"name": "Nome da empresa",
"email": "email@empresa.com.br",
"path": "empresa",
"phone_number": "(99) 9999-9999",
"home_number": null,
"about": "Texto sobre a empresa",
"product_price": 35
}
Fonte: Autor
{
"message": "Empresa não existe.",
"status_code": 404
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/companies
Descrição: Cadastra uma nova empresa. Os parâmetros e informações disponíveis estão
descritos na Tabela A.9.
Método: POST
76
As figuras representadas pela Figura A.17, Figura A.18 e Figura A.19 representam os
possíveis retornos da solicitação do recurso POST /v1/companies.
{
"id": 1,
"name": "Nome da empresa",
"email": "email@empresa.com.br",
"path": "empresa",
"phone_number": "(99) 9999-9999",
"home_number": null,
"about": "Texto sobre a empresa",
"product_price": 35
}
Fonte: Autor
77
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"name": [
"O campo nome é obrigatório."
],
"email": [
"O campo email é obrigatório."
],
"phone_number": [
"O campo celular é obrigatório."
],
"path": [
"O campo path é obrigatório."
],
"password": [
"O campo senha é obrigatório."
]
}
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/companies/{id}
Descrição: Atualiza uma empresa específica com base no ID. Os parâmetros disponíveis para
a alteração de uma empresa estão listados na Tabela A.10.
Método: PUT
As figuras representadas pela Figura A.20, Figura A.21, Figura A.22 E Figura A.23
representam os possíveis retornos da solicitação do recurso PUT /v1/companies/{id}, sendo o
primeiro para caso de sucesso, e os demais para caso de erro.
{
"id": 1,
"name": "Nome da empresa",
"email": "email@empresa.com.br",
"path": "empresa",
"phone_number": "(99) 9999-9999",
"home_number": null,
"about": "Texto sobre a empresa",
"product_price": 35
}
Fonte: Autor
{
"message": "Empresa não existe.",
"status_code": 404
}
Fonte: Autor
79
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"name": [
"O campo nome é obrigatório."
],
"email": [
"O campo email é obrigatório."
],
"phone_number": [
"O campo celular é obrigatório."
],
"path": [
"O campo path é obrigatório."
],
"password": [
"O campo senha é obrigatório."
]
}
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
80
A.4 CLIENTES
API responsável por manter as informações das dos clientes de uma determinada
empresa. Toda solicitação deve contar um header extra, informando o token de acesso, através
do campo Authorization Bearer, conforme representado na Tabela A.11.
Path: /v1/clients
Descrição: Busca ou retorna os clientes de uma empresa. A busca é realizada através do
parâmetro search, conforme descrito na Tabela A.12.
Método: GET
As figuras representadas pela Figura A.24 e Figura A.25 representam os dois possíveis
retornos desta solicitação, sendo a primeira em caso de sucesso e a segunda em caso de erro.
81
[
{
"id": 1,
"company_id": "1",
"name": "Pedro",
"email": "pedro@dominio.com.br",
"phone_number": "(99) 9999-9999",
"home_number": null,
"gender": "male",
"date_birth": "1991-05-22"
},
{
"id": 2,
"company_id": "1",
"name": "Maria",
"email": "maria@dominio.com.br",
"phone_number": "(99) 9999-9999",
"home_number": null,
"gender": "female",
"date_birth": "1992-08-12"
}
]
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/clients/{id}
Descrição: Retorna um cliente específico com base no ID, conforme descrito na Tabela A.13.
Método: GET
Os retornos deste recurso estão representados pela Figura A.26, Figura A.27 e Figura
A.28, mapeando os status de sucesso e de erro.
82
{
"id": 1,
"company_id": "1",
"name": "Pedro",
"email": "pedro@dominio.com.br",
"phone_number": "(99) 9999-9999",
"home_number": null,
"gender": "male",
"date_birth": "1991-05-22"
}
Fonte: Autor
{
"message": "Cliente não existe.",
"status_code": 404
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/clients/statistics
Descrição: Retorna as estatísticas de clientes de uma empresa, contendo o número total de
cadastros.
Método: GET
A requisição pode ter dois tipos de retorno, sendo um em caso de sucesso, representado
pela Figura A.29, ou pela Figura A.30, em caso de erro.
83
{
"total_clients": 5
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/clients
Descrição: Cadastra um novo cliente. Os parâmetros e informações disponíveis estão descritos
na Tabela A.14.
Método: POST
As figuras representadas pela Figura A.31, Figura A.32 e Figura A.33 representam os
três possíveis retornos desta solicitação, sendo a primeira em caso de sucesso e as demais em
caso de erro.
84
{
"company_id": "1",
"name": "João",
"email": "joao@dominio.com",
"phone_number": "(99) 9999-9999",
"date_birth": "1993-02-12",
"gender": "male",
"home_number": null,
"id": 3
}
Fonte: Autor
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"company_id": [
"O campo empresa é obrigatório."
],
"name": [
"O campo nome é obrigatório."
],
"email": [
"O campo email é obrigatório."
],
"date_birth": [
"O campo data de nascimento é obrigatório."
],
"phone_number": [
"O campo celular é obrigatório."
],
"gender": [
"O campo gênero é obrigatório."
]
}
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
85
Path: /v1/clients/{id}
Descrição: Atualiza um cliente específico com base no ID. Os parâmetros disponíveis para a
alteração de um cliente estão listados na Tabela A.15.
Método: PUT
As figuras representadas pela Figura A.34, Figura A.35, Figura A.36 e Figura A.37
descrevem os possíveis retornos desta solicitação.
{
"company_id": "1",
"name": "João",
"email": "joao@dominio.com",
"phone_number": "(99) 9999-9999",
"date_birth": "1993-02-12",
"gender": "male",
"home_number": null,
"id": 3
}
Fonte: Autor
{
"message": "Cliente não existe.",
"status_code": 404
}
Fonte: Autor
86
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"name": [
"O campo nome é obrigatório."
],
"email": [
"O campo email é obrigatório."
],
"date_birth": [
"O campo data de nascimento é obrigatório."
],
"phone_number": [
"O campo celular é obrigatório."
],
"gender": [
"O campo gênero é obrigatório."
]
}
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
87
A.5 PEDIDOS
API responsável por manter as informações dos pedidos de clientes. Toda solicitação
deve contar um header extra, informando o token de acesso, através do campo Authorization
Bearer, conforme a Tabela A.16 descreve.
Cada pedido possui um status no qual identifica a situação em que se encontra. Eles
podem assumir cinco tipos diferentes, conforme descritos na Tabela A.17.
Status Descrição
submitted Pedido realizado, é o status inicial da ordem
processing Em processamento, ou seja, a empresa está processando o pedido
ready O pedido está pronto, finalizado
completed O pedido já foi entregue
cancelled Pedido cancelado
Fonte: Autor
Path: /v1/orders
Descrição: Retorna os pedidos de uma empresa ou de um cliente, com base no tipo de usuário,
informação que está contida no token informado no Header.
Método: GET
Os dois possíveis retornos desta solicitação são representados pela Figura A.38, em caso
de sucesso, e pela Figura A.39 em caso de erro.
88
[
{
"id": 1,
"client_name": "João",
"client_email": "joao@dominio.com.br",
"client_id": "1",
"company_id": "1",
"status": "ready",
"total_price": "35",
"created_at": "2017-11-01 15:25:00",
"updated_at": "2017-11-03 11:31:49"
},
{
"id": 2,
"client_name": "Maria",
"client_email": "maria@dominio.com.br",
"client_id": "2",
"company_id": "1",
"status": "completed",
"total_price": "105",
"created_at": "2017-10-09 20:14:22",
"updated_at": "2017-11-08 11:08:05"
}
]
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/orders/{id}
Descrição: Retorna um pedido específico com base no ID, apresentado na Tabela A.18.
Método: GET
A Figura A.40, Figura A.41 e Figura A.42 apresenta os três possíveis retornos da
solicitação, sendo o primeiro em caso de sucesso e os demais caso ocorrer algum erro.
{
"id": 1,
"client_name": "João",
"client_email": "joao@dominio.com.br",
"client_id": "1",
"company_id": "1",
"status": "ready",
"total_price": "35",
"created_at": "2017-11-01 15:25:00",
"updated_at": "2017-11-03 11:31:49",
"items": [
{
"id": 1,
"quantity": "1",
"price": "35",
"name": "Caneca padrão branca",
"file_name": "product-1509543199.png"
}
]
}
Fonte: Autor
{
"message": "Pedido não existe.",
"status_code": 404
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Método: GET
A Figura A.43, Figura A.44 e Figura A.45 apresenta os três possíveis retornos desta
solicitação, sendo o primeiro em caso de sucesso e os demais caso ocorrer algum erro.
[
{
"id": 1,
"quantity": "1",
"price": "35",
"name": "Caneca padrão branca",
"file_name": "product-1509543199.png"
}
]
Fonte: Autor
{
"message": "Pedido não existe.",
"status_code": 404
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
91
Path: /v1/orders/statistics
Descrição: Retorna as estatísticas de pedidos de uma empresa, sendo elas a quantidade de
pedidos e o valor total de vendas.
Método: GET
Esta solicitação pode ter dois tipos de retorno, sendo um em caso de sucesso,
representado pela Figura A.46, e outro em caso de erro, conforme apresenta a Figura A.47.
{
"total_orders": 2,
"total_price": 140
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/orders
Descrição: Cria um novo pedido. As informações da ordem estão descritas na Tabela A.20.
Os produtos que compões a ordem são informados através do campo items, parâmetro do tipo
lista onde cada item possui suas informações, representados através da Fonte: Autor
Tabela A.21.
Método: POST
As figuras representadas pela Figura A.48, Figura A.49 e Figura A.50 demonstram os
possíveis retornos desta solicitação, sendo em caso de sucesso ou erro.
{
"id": 1,
"client_name": "João",
"client_email": "joao@dominio.com.br",
"client_id": "1",
"company_id": "1",
"status": "ready",
"total_price": "35",
"created_at": "2017-11-01 15:25:00",
"updated_at": "2017-11-03 11:31:49",
"items": [
{
"id": 1,
"quantity": "1",
"price": "35",
"name": "Caneca padrão branca",
"file_name": "product-1509543199.png"
}
]
}
Fonte: Autor
93
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"client_name": [
"O campo nome do cliente é obrigatório."
],
"client_email": [
"O campo e-mail do cliente é obrigatório."
],
"client_id": [
"O campo id do cliente é obrigatório."
],
"company_id": [
"O campo company id é obrigatório."
],
"items": [
"O campo items é obrigatório."
]
}
}
Fonte: Autor
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor
Path: /v1/orders/{id}/status
Descrição: Atualiza o status de um pedido específico. Os parâmetros necessários estão
descritos na Tabela A.22.
Método: PUT
As figuras representadas pela Figura A.51, Figura A.52, Figura A.53 e Figura A.54
descrevem os possíveis retornos desta solicitação, sendo a primeira em caso se sucesso na
alteração e as demais em caso de falha.
{
"id": 1,
"client_name": "João",
"client_email": "joao@dominio.com.br",
"client_id": "1",
"company_id": "1",
"status": "completed",
"total_price": "35",
"created_at": "2017-11-01 15:25:00",
"updated_at": "2017-11-03 11:31:49"
}
Fonte: Autor
{
"message": "Pedido não existe.",
"status_code": 404
}
Fonte: Autor
{
"message": "Alguns dados informados estão inválidos.",
"status_code": 422,
"errors": {
"status": [
"O campo status é obrigatório."
]
}
}
Fonte: Autor
95
{
"message": "Ocorreu um erro ao processar o pedido.",
"status_code": 400
}
Fonte: Autor