O Projeto foi feito com ts-node (express), banco de dados Posgres, typeorm (decorators como complementação)
Confira o modelo DER do sistema, contendo todas as entidades.
(PK) → Primary Key
(FK) → Foreign Key
(U) → Unique
As rotas são baseadas no modelo do DER acima.
GET → /login
// FAZ A AUTENTICAÇÃO DE UM USUÁRIO E CASO A AUTENTICAÇÃO PROSSIGA, ELE RETORNA UM TOKEN
// Estrutura do RESPONSE após o Request:
{
"email": "teste@email.com",
"password": "123"
}GET → /users
// PEGA TODOS OS USUÁRIOS
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
},
{
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
}
]GET → /users/:user_id
// PEGA UM USUÁRIO ATRAVÉS DO ID
// Estrutura do RESPONSE após o Request:
{
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
}GET → /users/nickname/:nickname
// PEGA UM USUÁRIO ATRAVÉS DO NICKNAME
// Estrutura do RESPONSE após o Request:
{
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
}POST → /users
// CRIA UM NOVO USUÁRIO
// Estrutura do REQUEST (exemplo do body):
{
"is_admin": false,
"name": "Teste",
"nickname": "Teste",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"password": "123",
"avatar": "uploads/images/users/teste.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99"
}
// Retorna os dados do UsuárioPUT → /users/:user_id
// MODIFICA UM USUÁRIO ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"is_admin": true,
"name": "Teste Modificado",
"nickname": "TesteModificado",
"password": "123",
"bio": "Biografia do usuário, contando sobre ele...",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99"
}
// Retorna os dados do UsuárioPUT → /users/avatar/:user_id
// MODIFICA O AVATAR DE UM USUÁRIO ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"avatar": "uploads/images/users/teste-modificado.png"
}
// Retorna os dados do UsuárioDELETE → /users/:user_id
// DELETA UM USUÁRIO ATRAVÉS DO IDGET → /providers
// PEGA TODOS OS PROVEDORES DE SERVIÇO (TRAZ INFORMAÇÔES DE USUÁRIO E DO SERVIÇO)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"user_id": 2,
"service_id": 1,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
}
},
{
"id": 2,
"user_id": 2,
"service_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5426433243436458345
}
},
{
"id": 3,
"user_id": 1,
"service_id": 1,
"user": {
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
},
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
}
}
]GET → /providers/:id
// PEGA UM PROVEDOR ATRAVÉS DO ID (TRAZ INFORMAÇÔES DE USUÁRIO E DO SERVIÇO)
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"user_id": 2,
"service_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"service": {
"id": 2,
"name": "Tatuagem",
"created_at": 5426433243436458345
}
}GET → /users/:user_id/providers
// PEGA UM PROVEDOR ATRAVÉS DO ID DE USUÁRIO (TRAZ INFORMAÇÔES DE USUÁRIO E DOS SEUS SERVIÇOS)
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"user_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"services": [
{
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
},
{
"id": 2,
"name": "Piercing",
"created_at": 5426433243436458345
}
]
}GET → /users/:user_nickname/providers
// PEGA UM PROVEDOR ATRAVÉS DO NICKNAME DE USUÁRIO (TRAZ INFORMAÇÔES DE USUÁRIO E DOS SEUS SERVIÇOS)
// Estrutura do RESPONSE após o Request:
{
"id": 3,
"user_id": 1,
"user": {
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
},
"services": [
{
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
}
]
}GET → /services/:service_id/providers
// PEGA TODOS PROVEDORES ATRAVÉS DO ID DE SERVIÇO (TRAZ INFORMAÇÔES DE USUÁRIO E DE SERVIÇO)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"user_id": 2,
"service_id": 1,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
}
},
{
"id": 3,
"user_id": 1,
"service_id": 1,
"user": {
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
},
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
}
}
]GET → services/:service_name/providers
// PEGA OS PROVEDORES ATRAVÉS DO NOME DO SERVIÇO (TRAZ INFORMAÇÔES DE USUÁRIO E DO SERVIÇO)
// Estrutura do RESPONSE após o Request:
[
{
"id": 2,
"user_id": 2,
"service_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5426433243436458345
}
}
]GET → /providers?user_id=1&service_id=1
// PEGA UM PROVEDOR ATRAVÉS DO ID DE USUÁRIO E DO ID DO SERVIÇO
// Estrutura do REQUEST (exemplo do body):
{
"id": 3,
"user_id": 1,
"service_id": 1,
"user": {
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
},
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
}
}POST → /providers
// CRIA UM NOVO PROVEDOR
// Estrutura do REQUEST (exemplo do body):
{
"id": 2,
"user_id": 2,
"service_id": 2
}
// Retorna os dados do ProvedorPUT → /providers/:id
// MODIFICA UM PROVEDOR ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"id": 2,
"user_id": 2,
"service_id": 3
}
// Retorna os dados do ProvedorPUT → /providers?user_id=2&service_id=3
// MODIFICA UM PROVEDOR ATRAVÉS DO ID DE USUÁRIO E DO ID DO SERVIÇO
// Estrutura do REQUEST (exemplo do body):
{
"id": 2,
"user_id": 2,
"service_id": 1
}
// Retorna os dados do ProvedorDELETE → /providers/:id
// DELETA UM PROVEDOR ATRAVÉS DO IDGET → /clerks
// PEGA TODOS OS ATENDENTES (TRAZ INFORMAÇÔES DE USUÁRIO)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"user_id": 1,
"user": {
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
}
},
{
"id": 2,
"user_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
}
}
]GET → /clerks/:id
// PEGA UM ATENDENTE ATRAVÉS DO ID (TRAZ INFORMAÇÔES DE USUÁRIO)
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"user_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
}
}GET → /users/:user_id/clerks
// PEGA UM ATENDENTE ATRAVÉS DO ID DE USUÁRIO (TRAZ INFORMAÇÔES DE USUÁRIO)
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"user_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
}
}GET → /users/:user_nickname/clerks
// PEGA UM ATENDENTE ATRAVÉS DO NICKNAME DE USUÁRIO (TRAZ INFORMAÇÔES DE USUÁRIO)
// Estrutura do RESPONSE após o Request:
{
"id": 1,
"user_id": 1,
"user": {
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
}
}POST → /clerks
// CRIA UM NOVO ATENDENTE
// Estrutura do REQUEST (exemplo do body):
{
"id": 2,
"user_id": 2,
"service_id": 2
}
// Retorna os dados do AtendentePUT → /clerks/:id
// MODIFICA UM ATENDENTE ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"id": 2,
"user_id": 2,
"service_id": 3
}
// Retorna os dados do AtendentePUT → /users/:user_id/clerks
// MODIFICA UM ATENDENTE ATRAVÉS DO ID DE USUÁRIO
// Estrutura do REQUEST (exemplo do body):
{
"id": 2,
"user_id": 2
}
// Retorna os dados do AtendenteDELETE → /clerks/:id
// DELETA UM ATENDENTE ATRAVÉS DO IDGET → /services
// PEGA TODOS SERVIÇOS
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
},
{
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
},
{
"id": 3,
"name": "Serviço número 3",
"created_at": 6425485754223065274
}
]GET → /services/:id
// PEGA UM SERVIÇO ATRAVÉS DO ID
// Estrutura do RESPONSE após o Request:
{
"id": 3,
"name": "Serviço número 3",
"created_at": 6425485754223065274
}GET → /services/:name
// PEGA UM SERVIÇO ATRAVÉS DO NOME
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}POST → /services
// CRIA UM NOVO SERVIÇO
// Estrutura do REQUEST (exemplo do body):
{
"name": "Tatuagem"
}PUT → /services/:id
// MODIFICA UM SERVIÇO ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"name": "Piercing"
}DELETE → /services/:id
// DELETA UM SERVIÇO ATRAVÉS DO IDGET → /services/subcategories
// PEGA TODAS SUBCATEGORIAS (TRAZ DADOS DO SERVIÇO)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 1,
"name": "Mão",
"created_at": 6435585423723644643,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
},
{
"id": 2,
"service_id": 2,
"name": "Nariz",
"created_at": 6434864642237734632,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
},
{
"id": 3,
"service_id": 1,
"name": "Pé",
"created_at": 5323535754275453353,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}
]GET → /services/subcategories/:id
// PEGA UMA SUBCATEGORIA ATRAVÉS DO ID (TRAZ DADOS DO SERVIÇO)
// Estrutura do RESPONSE após o Request:
{
"id": 3,
"service_id": 1,
"name": "Pé",
"created_at": 5323535754275453353,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}GET → /services/:service_id/subcategories
// PEGA TODAS SUBCATEGORIAS ATRAVÉS DO ID DO SERVIÇO (TRAZ DADOS DO SERVIÇO)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 1,
"name": "Mão",
"created_at": 6435585423723644643,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
},
{
"id": 3,
"service_id": 1,
"name": "Pé",
"created_at": 5323535754275453353,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}
]GET → /services/:service_name/subcategories
// PEGA TODAS SUBCATEGORIAS ATRAVÉS DO NOME DO SERVIÇO (TRAZ DADOS DO SERVIÇO)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 1,
"name": "Mão",
"created_at": 6435585423723644643,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
},
{
"id": 3,
"service_id": 1,
"name": "Pé",
"created_at": 5323535754275453353,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}
]POST → /services/subcategories
// CRIA UMA NOVA SUBCATEGORIA
// Estrutura do REQUEST (exemplo do body):
{
"service_id": 2,
"name": "Nariz"
}PUT → /services/subcategories/:id
// MODIFICA UMA SUBCATEGORIA ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"service_id": 2,
"name": "Nariz Alterado"
}DELETE → /services/subcategories/:id
// DELETA UMA SUBCATEGORIA ATRAVÉS DO IDGET → /services/tips
// PEGA TODAS AS DICAS ORDENADO PELO CAMPO "ordinal" (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 1,
"value": "Dica de Tatuagem número 1",
"ordinal": 1,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
},
{
"id": 2,
"service_id": 2,
"value": "Dica de Piercing número 1",
"ordinal": 2,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
},
{
"id": 3,
"service_id": 1,
"value": "Dica de Tatuagem número 2",
"ordinal": 3,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}
]GET → /services/tips/:id
// PEGA UMA DICA ATRAVÉS DO ID (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"service_id": 2,
"value": "Dica de Piercing número 1",
"ordinal": 2,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
}GET → /services/:service_id/tips
// PEGA TODAS DICA ATRAVÉS DO ID DO SERVIÇO (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 1,
"value": "Dica de Tatuagem número 1",
"ordinal": 1,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
},
{
"id": 3,
"service_id": 1,
"value": "Dica de Tatuagem número 2",
"ordinal": 3,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}
]GET → /services/:service_name/tips
// PEGA TODAS DICA ATRAVÉS DO NOME DO SERVIÇO (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 2,
"service_id": 2,
"value": "Dica de Piercing número 1",
"ordinal": 2,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
}
]POST → /services/tips
// CRIA UMA NOVA DICA
// Estrutura do REQUEST (exemplo do body):
{
"value": "Dica número 4",
"service_id": 2,
"ordinal": 4,
"is_active": true,
}PUT → /services/tips/:id
// MODIFICA UMA DICA ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"value": "Dica de Tatuagem número 2",
"service_id": 1,
"ordinal": 3,
"is_active": true,
}DELETE → /services/tips/:id
// DELETA UMA DICA ATRAVÉS DO IDGET → /services/cares
// PEGA TODOS OS CUIDADOS ORDENADO PELO CAMPO "ordinal" (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 2,
"value": "Cuidado de Piercing número 1",
"ordinal": 1,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
},
{
"id": 2,
"service_id": 1,
"value": "Cuidado de Tatuagem número 1",
"ordinal": 2,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
},
{
"id": 3,
"service_id": 2,
"value": "Cuidado de Piercing número 2",
"ordinal": 3,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
}
]GET → /services/cares/:id
// PEGA UMA CUIDADO ATRAVÉS DO ID (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"service_id": 1,
"value": "Cuidado de Tatuagem número 1",
"ordinal": 2,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}GET → /services/:service_id/cares
// PEGA TODOS CUIDADOS ATRAVÉS DO ID DO SERVIÇO (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 2,
"value": "Cuidado de Piercing número 1",
"ordinal": 1,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
},
{
"id": 3,
"service_id": 2,
"value": "Cuidado de Piercing número 2",
"ordinal": 3,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
}
]GET → /services/:service_name/cares
// PEGA TODOS CUIDADOS ATRAVÉS DO NOME DO SERVIÇO (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 2,
"service_id": 1,
"value": "Cuidado de Tatuagem número 1",
"ordinal": 2,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}
]POST → /services/cares
// CRIA UM NOVO CUIDADO
// Estrutura do REQUEST (exemplo do body):
{
"value": "Cuidado número 4",
"ordinal": 4,
"is_active": false
}PUT → /services/cares/:id
// MODIFICA UM CUIDADO ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"value": "Cuidado número 3 modificado",
"ordinal": 3,
"is_active": false
}DELETE → /services/cares/:id
// DELETA UM CUIDADO ATRAVÉS DO IDGET → /services/faqs/list
// PEGA TODOS OS FAQS ORDENADO PELO CAMPO "ordinal" (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 1,
"question": "Pergunta de Tatuagem número 1",
"answer": "Resposta de Tatuagem número 1",
"ordinal": 1,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
},
{
"id": 2,
"service_id": 2,
"question": "Pergunta de Piercing número 1",
"answer": "Resposta de Piercing número 1",
"ordinal": 2,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
},
{
"id": 3,
"service_id": 1,
"question": "Pergunta de Tatuagem número 2",
"answer": "Resposta de Tatuagem número 2",
"ordinal": 3,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}
]GET → /services/faqs/:id
// PEGA UMA FAQ ATRAVÉS DO ID (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
{
"id": 3,
"service_id": 1,
"question": "Pergunta de Tatuagem número 2",
"answer": "Resposta de Tatuagem número 2",
"ordinal": 3,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}GET → /services/:service_id/faqs
// PEGA TODOS OS FAQS ATRAVÉS DO ID DO SERVIÇO (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"service_id": 1,
"question": "Pergunta de Tatuagem número 1",
"answer": "Resposta de Tatuagem número 1",
"ordinal": 1,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
},
{
"id": 3,
"service_id": 1,
"question": "Pergunta de Tatuagem número 2",
"answer": "Resposta de Tatuagem número 2",
"ordinal": 3,
"is_active": true,
"service": {
"id": 1,
"name": "Tatuagem",
"created_at": 7540485423723053753
}
}
]GET → /services/name/:service_name/faqs
// PEGA TODOS OS FAQS ATRAVÉS DO NOME DO SERVIÇO (Traz informações do serviço)
// Estrutura do RESPONSE após o Request:
[
{
"id": 2,
"service_id": 2,
"question": "Pergunta de Piercing número 1",
"answer": "Resposta de Piercing número 1",
"ordinal": 2,
"is_active": true,
"service": {
"id": 2,
"name": "Piercing",
"created_at": 5423485464223055226
}
}
]POST → /services/faqs
// CRIA UM NOVO FAQ
// Estrutura do REQUEST (exemplo do body):
{
"question": "Pergunta número 4",
"answer": "Resposta número 4",
"ordinal": 4,
"is_active": false
}PUT → /services/faqs/:id
// MODIFICA UM FAQ ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"question": "Pergunta número 4 modificada",
"answer": "Resposta número 4 modificado",
"ordinal": 4,
"is_active": true,
}DELETE → /services/faqs/:id
// DELETA UM FAQ ATRAVÉS DO IDGET → /providers/schedules
// PEGA TODOS OS HORÁRIOS DOS PROVEDORES
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"provider_user_id": 2,
"time_from": 5323485425323053532,
"time_to": 5523485464323053643,
"description": "Descrição do horário marcado...",
"created_at": 47534646432353346,
"provider": {
"id": 2,
"user_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"services": [
{
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
},
{
"id": 2,
"name": "Piercing",
"created_at": 5426433243436458345
}
]
}
},
{
"id": 2,
"provider_user_id": 2,
"time_from": 6332155425325323131,
"time_to": 6533443212423053532,
"description": "Descrição do horário marcado...",
"created_at": 53642432432364236,
"provider": {
"id": 2,
"user_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"services": [
{
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
},
{
"id": 2,
"name": "Piercing",
"created_at": 5426433243436458345
}
]
}
},
{
"id": 3,
"provider_user_id": 1,
"time_from": 5321485425323532535,
"time_to": 5235543464364342641,
"description": "Descrição do horário marcado...",
"created_at": 4323646432353212,
"provider": {
"id": 3,
"user_id": 1,
"user": {
"id": 1,
"is_admin": false,
"name": "Teste1",
"nickname": "Teste1",
"email": "teste@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste1.png",
"phone_number": "(99) 99999-9999",
"cpf": "99999999999",
"address_name": "Nome do Endereço do usuário",
"cep": "99999999",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "99",
"created_at": 4320482340323044324,
"updated_at": 5982433257430858345
},
"services": [
{
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
}
]
}
}
]GET → /providers/schedules/:id
// PEGA UM HORÁRIO DE UM PROVEDOR ATRAVÉS DO ID
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"provider_user_id": 2,
"time_from": 6332155425325323131,
"time_to": 6533443212423053532,
"description": "Descrição do horário marcado...",
"created_at": 53642432432364236,
"provider": {
"id": 2,
"user_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"services": [
{
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
},
{
"id": 2,
"name": "Piercing",
"created_at": 5426433243436458345
}
]
}
}GET → /providers/:provider_user_id/schedules
// PEGA OS HORÁRIOS DE UM PROVEDOR ATRAVÉS DO ID DE USUÁRIO DO PROVEDOR
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"provider_user_id": 2,
"time_from": 6332155425325323131,
"time_to": 6533443212423053532,
"description": "Descrição do horário marcado...",
"created_at": 53642432432364236,
"provider": {
"id": 2,
"user_id": 2,
"user": {
"id": 2,
"is_admin": false,
"name": "Teste2",
"nickname": "Teste2",
"email": "teste2@email.com",
"bio": "Biografia do usuário, contando sobre ele...",
"avatar": "uploads/images/users/teste2.png",
"phone_number": "(88) 88888-8888",
"cpf": "88888888888",
"address_name": "Nome do Endereço do usuário",
"cep": "88888888",
"state": "Nome do Estado que o usuário mora",
"city": "Nome da Cidade que o usuário mora",
"neighborhood": "Nome do Bairro que o usuário mora",
"street": "Nome da Rua que o usuário mora",
"address_number": "88",
"created_at": 5462352340323044324,
"updated_at": 6346333257430858345
},
"services": [
{
"id": 1,
"name": "Tatuagem",
"created_at": 5426433243436458345
},
{
"id": 2,
"name": "Piercing",
"created_at": 5426433243436458345
}
]
}
}POST → /providers/schedules
// CRIA UM NOVO HORÁRIO DE UM PROVEDOR
// Estrutura do REQUEST (exemplo do body):
{
"provider_user_id": 2,
"time_from": 6332155425325323131,
"time_to": 6533443212423053532,
"description": "Descrição do horário marcado..."
}PUT → /providers/schedules/:id
// MODIFICA UM HORÁRIO DE UM PROVEDOR ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"provider_user_id": 2,
"time_from": 6332155425325323131,
"time_to": 6533443212423053532,
"description": "Descrição do horário marcado modificado..."
}DELETE → /providers/schedules/:id
// DELETA UM HORÁRIO DE UM PROVEDOR ATRAVÉS DO IDGET → /metadatas
// PEGA TODOS OS METADADOS
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"key": "CepEstudio",
"value": "99999999"
},
{
"id": 2,
"key": "DescricaoEnderecoEstudio",
"value": "Descrição do endereço do estúdio"
},
{
"id": 3,
"key": "DescricaoCronogramaTrabalho",
"value": "Descrição do Horário / Cronograma de trabalho"
}
]GET → /metadatas/:id
// PEGA UM METADADO ATRAVÉS DO ID
// Estrutura do RESPONSE após o Request:
{
"id": 1,
"key": "CepEstudio",
"value": "99999999"
}GET → /metadatas?key=DescricaoEnderecoEstudio
// PEGA UM METADADO ATRAVÉS DA KEY
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"key": "DescricaoEnderecoEstudio",
"value": "Descrição do endereço do estúdio"
}POST → /metadatas
// CRIA UM NOVO METADADO
// Estrutura do REQUEST (exemplo do body):
{
"key": "DescricaoCronogramaTrabalho",
"value": "Descrição do Horário / Cronograma de trabalho"
}PUT → /metadatas/:id
// MODIFICA UM METADADO ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"key": "DescricaoCronogramaTrabalho",
"value": "Descrição do Horário / Cronograma de trabalho Modificado"
}PUT → /metadatas?key=DescricaoCronogramaTrabalho
// MODIFICA UM METADADO ATRAVÉS DA KEY
// Estrutura do REQUEST (exemplo do body):
{
"key": "DescricaoCronogramaTrabalho",
"value": "Descrição do Horário / Cronograma de trabalho Modificado"
}DELETE → /metadatas/:id
// DELETA UM METADADO ATRAVÉS DO IDGET → /posts
// PEGA TODOS OS POSTS
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"title": "Titulo da postagem 01...",
"description": "Descrição da postagem 01...",
"is_highlight": true,
"standout_time": 54623,
"expiration_date": 6453255325423545643,
"is_promotion": false,
"is_sale": true,
"price": 100.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1, 3],
"clerks_ids": [1],
"subcategories_ids": [1, 3],
"images": [
{
"id": 1,
"image_path": "uploads/images/posts/post1-01.png",
"description": "Descrição da imagem 01 do post 01..."
},
{
"id": 2,
"image_path": "uploads/images/posts/post1-02.png",
"description": "Descrição da imagem 02 do post 01..."
}
]
},
{
"id": 2,
"title": "Titulo da postagem 02...",
"description": "Descrição da postagem 02...",
"is_highlight": true,
"standout_time": 45615,
"expiration_date": 6823555643423547534,
"is_promotion": false,
"is_sale": false,
"price": null,
"old_price": null,
"is_active": true,
"created_at": 6534255364342045312,
"updated_at": 6623355364344045643,
"clerks_ids": [2],
"subcategories_ids": [2],
"images": [
{
"id": 3,
"image_path": "uploads/images/posts/post2-01.png",
"description": "Descrição da imagem 01 do post 02..."
}
]
},
{
"id": 1,
"title": "Titulo da postagem 03...",
"description": "Descrição da postagem 03...",
"is_highlight": true,
"standout_time": 60000,
"expiration_date": null,
"is_promotion": true,
"is_sale": true,
"price": 85.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1],
"clerks_ids": [2, 3],
"subcategories_ids": [2],
"images": [
{
"id": 4,
"image_path": "uploads/images/posts/post3-01.png",
"description": "Descrição da imagem 01 do post 03..."
},
{
"id": 5,
"image_path": "uploads/images/posts/post3-02.png",
"description": "Descrição da imagem 02 do post 03..."
}
]
}
]GET → /posts/:id
// PEGA UM POST ATRAVÉS DO ID
// Estrutura do RESPONSE após o Request:
{
"id": 1,
"title": "Titulo da postagem 01...",
"description": "Descrição da postagem 01...",
"is_highlight": true,
"standout_time": 54623,
"expiration_date": 6453255325423545643,
"is_promotion": false,
"is_sale": true,
"price": 100.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1, 3],
"clerks_ids": [1],
"subcategories_ids": [1, 3],
"images": [
{
"id": 1,
"image_path": "uploads/images/posts/post1-01.png",
"description": "Descrição da imagem 01 do post 01..."
},
{
"id": 2,
"image_path": "uploads/images/posts/post1-02.png",
"description": "Descrição da imagem 02 do post 01..."
}
]
}GET → /providers/:provider_id/posts
// PEGA OS POSTS DE UM PROVEDOR ATRAVÉS DO ID DO PROVEDOR
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"title": "Titulo da postagem 01...",
"description": "Descrição da postagem 01...",
"is_highlight": true,
"standout_time": 54623,
"expiration_date": 6453255325423545643,
"is_promotion": false,
"is_sale": true,
"price": 100.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1, 3],
"clerks_ids": [1],
"subcategories_ids": [1, 3],
"images": [
{
"id": 1,
"image_path": "uploads/images/posts/post1-01.png",
"description": "Descrição da imagem 01 do post 01..."
},
{
"id": 2,
"image_path": "uploads/images/posts/post1-02.png",
"description": "Descrição da imagem 02 do post 01..."
}
]
},
{
"id": 1,
"title": "Titulo da postagem 03...",
"description": "Descrição da postagem 03...",
"is_highlight": true,
"standout_time": 60000,
"expiration_date": null,
"is_promotion": true,
"is_sale": true,
"price": 85.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1],
"clerks_ids": [2, 3],
"subcategories_ids": [2],
"images": [
{
"id": 4,
"image_path": "uploads/images/posts/post3-01.png",
"description": "Descrição da imagem 01 do post 03..."
},
{
"id": 5,
"image_path": "uploads/images/posts/post3-02.png",
"description": "Descrição da imagem 02 do post 03..."
}
]
}
]GET → /services/:service_id/posts
// PEGA OS POSTS DE UM SERVIÇO ATRAVÉS DO ID DO SERVIÇO
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"title": "Titulo da postagem 01...",
"description": "Descrição da postagem 01...",
"is_highlight": true,
"standout_time": 54623,
"expiration_date": 6453255325423545643,
"is_promotion": false,
"is_sale": true,
"price": 100.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1, 3],
"clerks_ids": [1],
"subcategories_ids": [1, 3],
"images": [
{
"id": 1,
"image_path": "uploads/images/posts/post1-01.png",
"description": "Descrição da imagem 01 do post 01..."
},
{
"id": 2,
"image_path": "uploads/images/posts/post1-02.png",
"description": "Descrição da imagem 02 do post 01..."
}
]
}
]GET → /subcategories/:subcategory_id/posts
// PEGA OS POSTS DE UMA SUBCATEGORIA ATRAVÉS DO ID DA SUBCATEGORIA
// Estrutura do RESPONSE após o Request:
[
{
"id": 2,
"title": "Titulo da postagem 02...",
"description": "Descrição da postagem 02...",
"is_highlight": true,
"standout_time": 45615,
"expiration_date": 6823555643423547534,
"is_promotion": false,
"is_sale": false,
"price": null,
"old_price": null,
"is_active": true,
"created_at": 6534255364342045312,
"updated_at": 6623355364344045643,
"clerks_ids": [2],
"subcategories_ids": [2],
"images": [
{
"id": 3,
"image_path": "uploads/images/posts/post2-01.png",
"description": "Descrição da imagem 01 do post 02..."
}
]
},
{
"id": 1,
"title": "Titulo da postagem 03...",
"description": "Descrição da postagem 03...",
"is_highlight": true,
"standout_time": 60000,
"expiration_date": null,
"is_promotion": true,
"is_sale": true,
"price": 85.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1],
"clerks_ids": [2, 3],
"subcategories_ids": [2],
"images": [
{
"id": 4,
"image_path": "uploads/images/posts/post3-01.png",
"description": "Descrição da imagem 01 do post 03..."
},
{
"id": 5,
"image_path": "uploads/images/posts/post3-02.png",
"description": "Descrição da imagem 02 do post 03..."
}
]
}
]POST → /posts
// CRIA UM NOVO POST
// Estrutura do REQUEST (exemplo do body):
{
"title": "Titulo da postagem...",
"description": "Descrição da postagem...",
"is_highlight": true,
"standout_time": 54623,
"expiration_date": 6453255325423545643,
"is_promotion": true,
"is_sale": true,
"price": 100.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1, 3],
"clerks_ids": [1],
"subcategories_ids": [1, 3],
"images": [
{
"image_path": "uploads/images/posts/post-01.png",
"description": "Descrição da imagem 01 do post..."
},
{
"image_path": "uploads/images/posts/post-02.png",
"description": "Descrição da imagem 02 do post..."
}
]
}
// Retorna os dados do PostPUT → /posts/:id
// MODIFICA UM POST ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"title": "Titulo da postagem Modificado...",
"description": "Descrição da postagem Modificado...",
"is_highlight": true,
"standout_time": 54623,
"expiration_date": 6453255325423545643,
"is_promotion": true,
"is_sale": true,
"price": 100.00,
"old_price": 100.00,
"is_active": true,
"created_at": 5322355323323045323,
"updated_at": 5322355323323045323,
"providers_ids": [1, 3],
"clerks_ids": [1],
"subcategories_ids": [1, 3],
"images": [
{
"image_path": "uploads/images/posts/post-01.png",
"description": "Descrição da imagem 01 do post Modificado..."
},
{
"image_path": "uploads/images/posts/post-02.png",
"description": "Descrição da imagem 02 do post Modificado..."
}
]
}
// Retorna os dados do PostDELETE → /posts/:id
// DELETA UM POST ATRAVÉS DO IDGET → /post_images
// PEGA TODAS AS IMAGENS DE POSTS
// Estrutura do RESPONSE após o Request:
[
{
"id": 1,
"image_path": "uploads/images/posts/post1-01.png",
"description": "Descrição da imagem 01 do post 01..."
},
{
"id": 2,
"image_path": "uploads/images/posts/post1-02.png",
"description": "Descrição da imagem 02 do post 01..."
},
{
"id": 3,
"image_path": "uploads/images/posts/post2-01.png",
"description": "Descrição da imagem 01 do post 02..."
},
{
"id": 4,
"image_path": "uploads/images/posts/post3-01.png",
"description": "Descrição da imagem 01 do post 03..."
},
{
"id": 5,
"image_path": "uploads/images/posts/post3-02.png",
"description": "Descrição da imagem 02 do post 03..."
}
]GET → /post_images/:id
// PEGA UMA IMAGEM DE UM POST ATRAVÉS DO ID
// Estrutura do RESPONSE após o Request:
{
"id": 2,
"image_path": "uploads/images/posts/post1-02.png",
"description": "Descrição da imagem 02 do post 01..."
}GET → /posts/:post_id/post_images
// PEGA AS IMAGENS DE UM POST ATRAVÉS DO ID DO POST
// Estrutura do RESPONSE após o Request:
[
{
"id": 4,
"image_path": "uploads/images/posts/post3-01.png",
"description": "Descrição da imagem 01 do post 03..."
},
{
"id": 5,
"image_path": "uploads/images/posts/post3-02.png",
"description": "Descrição da imagem 02 do post 03..."
}
]POST → /post_images
// CRIA NOVAS IMAGENS DE UM POST
// Estrutura do REQUEST (exemplo do body):
[
{
"image_path": "uploads/images/posts/post-01.png",
"description": "Descrição da imagem 01 do post..."
},
{
"image_path": "uploads/images/posts/post-02.png",
"description": "Descrição da imagem 02 do post..."
}
]
// Retorna os dados das imagens do PostPUT → /post_images/:id
// MODIFICA UMA IMAGEM DE UM POST ATRAVÉS DO ID
// Estrutura do REQUEST (exemplo do body):
{
"image_path": "uploads/images/posts/post-modificado-01.png",
"description": "Descrição da imagem 01 do post Modificado..."
}
// Retorna os dados da imagem do PostPUT → /posts/:post_id/post_images
// MODIFICA AS IMAGENS DE UM POST ATRAVÉS DO ID DO POST
// Estrutura do REQUEST (exemplo do body):
[
{
"image_path": "uploads/images/posts/post-modificado-01.png",
"description": "Descrição da imagem 01 do post Modificado..."
},
{
"image_path": "uploads/images/posts/post-modificado-02.png",
"description": "Descrição da imagem 02 do post Modificado..."
}
]
// Retorna os dados das imagens do PostDELETE → /post_images/:id
// DELETA UMA IMAGEM DE UM POST ATRAVÉS DO IDDELETE → /posts/:post_id/post_images
// DELETA AS IMAGENS DE UM POST ATRAVÉS DO ID DO POST
