Skip to content

US17 - Criar endpoints para Schedule #7

@Iewandowski

Description

@Iewandowski

Contrato REST API - Alocação de Horários na Agenda

POST /schedules

Criar horário de disponibilidade na agenda do intérprete.

  • day: monday, tuesday, wednesday, thursday, friday, saturday, sunday

Request Headers:

Authorization: Bearer {access_token}

Request Body:

{
  "interpreter_id": {UUID},
  "day": {ENUM},
  "start_time": {TIME},
  "end_time": {TIME}
}

Responses:

  • 201 Created - Horário criado com sucesso
    {
      "success": true,
      "message": "Horário de disponibilidade criado com sucesso",
      "data": {
        "schedule": {
          "id": "8f7c76bf-a6e4-4d18-8b06-9d7298c647c0",
          "interpreter_id": "b839baf2-696b-4a17-aa7d-7f72b32b9837",
          "day": "monday",
          "start_time": "08:00",
          "end_time": "18:00"
        }
      }
    }
  • 400 Bad Request - Dados inválidos ou horário conflitante
  • 401 Unauthorized - Não autenticado
  • 403 Forbidden - Sem permissão para este intérprete
  • 404 Not Found - Intérprete não encontrado
  • 422 Unprocessable Entity - Validação falhou

GET /schedules?interpreterId={InterpreterId}&status={status}&day={day}&dateFrom={DateFrom}&dateTo={DateTo}

status deve ser um Enum:
Listar todos os horários da agenda do intérprete.

Request Headers:

Authorization: Bearer {access_token}

Query Parameters:

  • interpreterId: Id do Interprete

Tipos de Status

  • available: Disponível para agendamentos. Quando não há agendamento ativo em Appointment.

  • busy: Ocupado (não disponível). Quando há agendamento ativo em Appointment.

  • day (optional): Filtrar por dia da semana

  • startTime (optional): Data inicial para horários específicos

  • endTime (optional): Data final para horários específicos

Responses:

  • 200 OK - Lista de horários retornada
    {
      "success": true,
      "message": "Horários obtidos com sucesso",
      "data": {
        "schedules": [
          {
            "id": "8f7c76bf-a6e4-4d18-8b06-9d7298c647c0",
            "interpreter_id": "b839baf2-696b-4a17-aa7d-7f72b32b9837",
            "day": "monday",
            "start_time": "08:00",
            "end_time": "18:00"
          },
          {
            "id": "cf249c2a-6b99-4d79-aabc-4a92acc913aa",
            "interpreter_id": "d6438cb7-4cc2-449a-98ce-c1906e3bd2dd",
            "day": "tuesday",
            "start_time": "08:00",
            "end_time": "18:00"
          }
        ]
      }
    }
  • 401 Unauthorized - Não autenticado
  • 403 Forbidden - Sem permissão
  • 404 Not Found - Intérprete não encontrado

GET /schedules/{scheduleId}

Obter detalhes de um horário específico.

Request Headers:

Authorization: Bearer {access_token}

Responses:

  • 200 OK - Detalhes do horário retornados
    {
      "success": true,
      "message": "Detalhes do horário obtidos com sucesso",
      "data": {
        "schedule": {
          "id": "8f7c76bf-a6e4-4d18-8b06-9d7298c647c0",
          "interpreter_id": "b839baf2-696b-4a17-aa7d-7f72b32b9837",
          "day": "monday",
          "start_time": "08:00",
          "end_time": "18:00",
        }
      }
    }
  • 401 Unauthorized - Não autenticado
  • 403 Forbidden - Sem permissão
  • 404 Not Found - Horário não encontrado

PATCH/schedules/{scheduleId}

Atualizar horário de disponibilidade.

Request Headers:

Authorization: Bearer {access_token}

Request Body:

{
  "day": "tuesday",
  "start_time": "09:00",
  "end_time": "17:00"
}

Responses:

  • 200 OK - Horário atualizado com sucesso
    {
      "success": true,
      "message": "Horário atualizado com sucesso",
      "data": {
        "schedule": {
          "id": "8f7c76bf-a6e4-4d18-8b06-9d7298c647c0",
          "interpreter_id": "b839baf2-696b-4a17-aa7d-7f72b32b9837",
          "day": "tuesday",
          "start_time": "09:00",
          "end_time": "17:00"
        }
      }
    }
  • 400 Bad Request - Dados inválidos
  • 401 Unauthorized - Não autenticado
  • 403 Forbidden - Sem permissão ou horário com agendamentos
  • 404 Not Found - Horário não encontrado

DELETE /schedules/{scheduleId}

Excluir horário de disponibilidade.

Request Headers:

Authorization: Bearer {access_token}

Responses:

  • 204 No Content - Horário excluído com sucesso
  • 401 Unauthorized - Não autenticado
  • 403 Forbidden - Sem permissão
  • 404 Not Found - Horário não encontrado

Metadata

Metadata

Labels

featureNew feature or request

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions