Skip to content

Latest commit

 

History

History
487 lines (370 loc) · 10.7 KB

api_doc.md

File metadata and controls

487 lines (370 loc) · 10.7 KB

Documentação da API de Categorias de trabalho

Abaixo, uma descrição dos endpoints disponíveis.

1. Listar todas as categorias de trabalho

GET /api/v1/job_categories

Endpoint

GET /api/v1/job_categories

Retorna um JSON com atributo data, cujo valor é a lista com todas as categorias de trabalho. (Status: 200)

{
  "data": [
    {
      "id": 1,
      "name": "Web Design"
    },
    {
      "id": 2,
      "name": "Programador Full Stack"
    },
    {
      "id": 3,
      "name": "Ruby on Rails"
    }
  ]
}

Retorno esperado caso não tenham categorias cadastradas. (Status: 200):

{
  "data": []
}

Erros tratados

Erro interno de servidor (Status: 500)

Retorno esperado:

{
  { "error": "Houve um erro interno no servidor ao processar sua solicitação." }
}

2. Retornar uma categoria de trabalho

GET /api/v1/job_categories/:id

Endpoint

GET /api/v1/job_categories/:id

Retorno esperado caso a requisição seja bem sucedida. (Status: 200)

{
  "data": {
    "id": 1,
    "name": "Web Design"
  }
}

Retorno esperado caso não encontre a categoria de trabalho. (Status: 404):

{
  "error": "Não encontrado"
}

Erros tratados

Erro interno de servidor (Status: 500)

Retorno esperado:

{
  { "error": "Houve um erro interno no servidor ao processar sua solicitação." }
}

3. Buscar por usuários na plataforma Portifoliorrr

GET /api/v1/profiles

Endpoint

query: Parâmetro que recebe string de nome da categoria ou descrição da categoria de trabalho.

GET /api/v1/profiles?search=query

Retorna uma lista com todos os usuários referentes a busca. (Status: 200)

{
  "data": [{ "profile_id": 1,
              "full_name": "João CampusCode Almeida",
              "job_categories": [
                                  { "name": "Web Design",
                                    "description": null },
                                  { "name": "Programador Full Stack",
                                    "description": null },
                                  { "name": "Ruby on Rails",
                                    "description": "Especialista em Rails" }
                                ]
            },
            { "profile_i": 3,
              "full_name": "Gabriel Campos",
              "job_categories": [
                                  { "name": "Web Design",
                                    "description": null },
                                  { "name": "Ruby on Rails",
                                    "description": "faço umas app daora" },
                                  { "name": "Programador Full Stack",
                                    "description": "faço umas app loka"}
                                ]
            }
          ]
}

Retorno esperado caso a busca não retorne resultados. (Status: 200):

  []

Erros tratados

Erro interno de servidor (Status: 500)

Retorno esperado:

{
  "error": ["Houve um erro interno no servidor ao processar sua solicitação."]
}

Resultados para query de busca vazia (Status: 200)

Quando a busca é feita sem informar o parâmetro query. Retorna todos os usuários disponíveis para trabalhos. Exemplo de resposta para requisição sem query:

GET /api/v1/profiles?search=
GET /api/v1/profiles

Retorno esperado:

{
  "data": [{ "profile_id": 1,
            "full_name": "João CampusCode Almeida",
            "job_categories": [
                                { "name": "Web Design",
                                  "description": null },
                                { "name": "Programador Full Stack",
                                  "description": null },
                                { "name": "Ruby on Rails",
                                  "description": "Especialista em Rails" }
                              ]
            },
            { "profile_id": 2,
              "full_name": "Maria CampusCode Almeida",
              "job_categories": [ { "name": "Web Design",
                                    "description": null },
                                  { "name": "Programador Full Stack",
                                    "description": null },
                                  { "name": "Ruby on Rails", 
                                    "description": "Especialista em Rails" } 
                                ] 
            },
            { "profile_id": 3,
              "full_name": "Gabriel Campos",
              "job_categories": [
                                  { "name": "Web Design",
                                    "description": null },
                                  { "name": "Ruby on Rails",
                                    "description": "faço umas app daora" },
                                  { "name": "Programador Full Stack",
                                    "description": "faço umas app loka" }
                                ]
            }
          ]
}

4. Mostrar dados completos do perfil de um usuário

GET /api/v1/profiles/:id

Endpoint

Requisição deve incluir id do perfil

GET /api/v1/profiles/:id

Retorno esperado caso a requisição seja bem sucedida. (Status: 200)

{
  "data": {
            "profile_id": 1,
            "email": "[email protected]",
            "full_name": "João CampusCode Almeida",
            "cover_letter": "Sou profissional organizado, esforçado e apaixonado pelo que faço",
            "professional_infos": [
                                    { "company": "Campus Code",
                                      "position": "Dev",
                                      "start_date": "2022-12-12",
                                      "end_date": "2023-12-12",
                                      "description": "Muito código",
                                      "current_job": false }
                                  ],
            "education_infos": [
                                  { "institution": "Senai",
                                    "course": "Web dev full stack",
                                    "start_date": "2022-12-12",
                                    "end_date": "2023-12-12" },
                                  { "institution": "Senai",
                                    "course": "Web dev full stack",
                                    "start_date": "2022-12-12",
                                    "end_date": "2023-12-12" }
                                ],
            "job_categories": [
                                  { "name": "Web Design",
                                    "description": "Eu uso o Paint." },
                                  { "name": "Programador Full Stack",
                                    "description": "Prefiro Tailwind." },
                                  { "name": "Ruby on Rails",
                                    "description": "Eu amo Rails." }
                              ]
          }
}

Erros tratados

Erro quando a id informada não é encontrada (Status: 404)

Resposta:

{
  "error":"Perfil não existe."
}

5. Criar convite para um usuário participar do projeto

POST /api/v1/invitations/

Endpoint

POST /api/v1/invitations

Corpo da requisição:

{
  "invitation": {
                  "profile_id": 3,
                  "project_id": 5,
                  "project_title": "Projeto Cola?Bora!",
                  "project_description": "Projeto Legal",
                  "project_category": "Tecnologia",
                  "colabora_invitation_id": 1,
                  "message": "Venha participar do meu projeto!",
                  "expiration_date": "2021-12-31"
                }
}

Retorno esperado caso a requisição seja bem sucedida. (Status: 201)

{
  "data": {
            "invitation_id": 1
          }
}

Erros tratados

Erro para corpo da requisição vazio (Status: 400)

Resposta:

{
  "error": "Houve um erro ao processar sua solicitação."
}

Este erro acontece quando a requisição é feita sem informar o corpo da requisição. Exemplo de requisição que retornará este erro:

campos vazios

{}

id de usuário inválido

{
  "invitation": {
                  "profile_id": 999999999999999,
                  etc...
                }
}

6. Editar status de convite

PATCH /api/v1/invitations/:id

Endpoint

PATCH /api/v1/invitations/:id

Corpo da requisição:

{
  "status": "accepted"
}

Retorno esperado caso a requisição seja bem sucedida. (Status: 204)

Erros tratados

Erro para corpo da requisição vazio (Status: 400)

Resposta:

{
  "error": "Houve um erro ao processar sua solicitação."
}

Este erro acontece quando a requisição é feita sem informar o corpo da requisição. Um exemplo de requisição que retornará este erro:

{}

Outro exemplo de requisição que retornará este erro:

{
  "status": "XXXinvalid_statusXXX"
}

Erro para id de convite inválido (Status: 404)

Este erro acontece quando a requisição é feita com um id de convite que não existe. Exemplo de requisição que retornará este erro:

PATCH /api/v1/invitations/999999999999999

Retorno esperado:

{
  "error": "Não encontrado"
}

7. Alterar status de solicitação de convite

PATCH /api/v1/invitation_requests/:id

Endpoint

PATCH /api/v1/invitation_requests/:id

Retorno esperado caso a requisição seja bem sucedida. (Status: 200)

Resposta:

{
  "id": 1,
  "profile_id": 1,
  "message": "exemplo de mensagem enviada pelo usuário do Portfoliorrr",
  "project_id": 1,
  "status": "refused"
}

Erros tratados

Erro quando a solicitação não estiver com status Pendente (Status: 409)

Resposta:

{
  "errors": "Solicitação de convite não está pendente para ser recusada."
}

Erro para id de solicitação de convite inválido (Status: 404)

Este erro acontece quando a requisição é feita com um id de solicitação de convite que não existe.

PATCH /api/v1/invitation_requests/999999999999999

Retorno esperado:

{
  "error": "Não encontrado"
}

Erro interno do servidor (Status: 500)

Resposta:

{
  "errors": "Houve um erro interno no servidor ao processar sua solicitação."
}