Agendas
  • 24 Jul 2025
  • 3 Minutes to read
  • Contributors
  • Dark
    Light

Agendas

  • Dark
    Light

Article summary

Agendas

Campos da agenda

A agenda possui os seguintes campos:

Campos obrigatórios:

  • name: Nome da agenda
  • default_slot_minutes: Duração padrão dos slots em minutos
  • default_event_duration: Duração padrão dos eventos em minutos

Campos opcionais:

  • description: Descrição da agenda
  • enabled: Se a agenda está ativa (true/false) - padrão: true
  • clinic_id: Id da clínica
  • comment: Comentário da agenda
  • background_color: Cor de fundo da agenda (formato hex: #ffffff)
  • text_color: Cor do texto da agenda (formato hex: #000000)
  • message_event_confirm: Mensagem de confirmação do evento (deve conter \link)
  • confirmation_screen_message: Mensagem da tela de confirmação
  • instruction_message: Mensagem de instruções
  • reminder_time: Tempo para lembrete
  • operating_hours: Horários de funcionamento por dia da semana (formato: {"monday": [["8", "12"], ["14", "18"]], "tuesday": [["9", "17"]]})
  • link_date_time_to_request: Define se a data/hora do agendamento será utilizada na criação do pedido (true/false) - padrão: false

Campos automáticos:

  • user_id: Definido automaticamente pelo access_token
  • created_at: Data de criação
  • updated_at: Data da última atualização
  • clinic_name: Nome da clínica (calculado automaticamente)

Listar as agendas

O controller de agendas permite listar as agendas através da action "index". A listagem possui paginação, sendo possível especificar a página e a quantidade de itens por página.

Exemplo curl:

curl -X GET 'https://max.cfaz.net/api/v1/calendars' \
  -F 'access_token=0cd675768fev8dab81fe1c1297d56b09' \
  -F 'page=3' \
  -F 'per_page=5'

Exemplo com a Gem RestClient:

RestClient.get 'https://max.cfaz.net/api/v1/calendars',
    {
        'access_token'=> '0cd675768fev8dab81fe1c1297d56b09',
        'page' => '3',
        'per_page' => '5'
    }

Mostrar uma agenda específica

O controller de agendas permite visualizar uma agenda específica através da action "show". É necessário informar o id da agenda.

Exemplo com CURL:

curl -X GET 'https://max.cfaz.net/api/v1/calendars/1' \
  -F 'access_token=0cd675768fev8dab81fe1c1297d56b09'

Exemplo com a Gem RestClient:

RestClient.get 'https://max.cfaz.net/api/v1/calendars/1',
    {
        'access_token'=> '0cd675768fev8dab81fe1c1297d56b09'
    }

Criar uma agenda

O controller de agendas permite criar agendas acessando a action "create".

Exemplo com curl (formato JSON):

curl -X POST 'https://max.cfaz.net/api/v1/calendars' \
  -H 'Content-Type: application/json' \
  -d '{
    "access_token": "0cd675768fev8dab81fe1c1297d56b09",
    "calendar": {
      "name": "Agenda Teste",
      "default_slot_minutes": 30,
      "default_event_duration": 60,
      "description": "Agenda de teste via API",
      "enabled": true,
      "clinic_id": 1,
      "comment": "Comentário teste",
      "background_color": "#ffffff",
      "text_color": "#000000",
      "message_event_confirm": "Olá você tem um exame agendado \\link",
      "confirmation_screen_message": "Clique para confirmar",
      "instruction_message": "Chegue com 15 minutos de antecedência",
      "link_date_time_to_request": false,
      "operating_hours": {
        "monday": [["8", "12"], ["14", "18"]],
        "tuesday": [["9", "17"]]
      }
    }
  }'

Exemplo com Gem RestClient:

RestClient.post 'https://max.cfaz.net/api/v1/calendars',
    {
        calendar: {
            name: "Agenda Teste",
            description: "Agenda de teste via API",
            enabled: true,
            default_slot_minutes: 30,
            default_event_duration: 60,
            clinic_id: 1,
            operating_hours: {
                monday: [["8", "12"], ["14", "18"]],
                tuesday: [["9", "17"]]
            }
        },
        access_token: "0cd675768fev8dab81fe1c1297d56b09"
    }

Atualizar uma agenda

O controller de agendas permite atualizar uma agenda acessando a action "update". Para atualizar uma agenda é necessário saber o id da agenda que deseja atualizar.

Exemplo com CURL (formato JSON):

curl -X PUT 'https://max.cfaz.net/api/v1/calendars/1' \
    -H 'Content-Type: application/json' \
    -d '{
      "access_token": "0cd675768fev8dab81fe1c1297d56b09",
      "calendar": {
        "name": "Agenda Atualizada",
        "description": "Descrição atualizada",
        "enabled": false,
        "operating_hours": {
          "monday": [["8", "12"], ["14", "18"]],
          "tuesday": [["9", "17"]]
        }
      }
    }'

Exemplo com Gem RestClient:

RestClient.put "https://max.cfaz.net/api/v1/calendars/1",
      {
          calendar: {
              name: "Agenda Atualizada",
              description: "Descrição atualizada",
              enabled: false,
              operating_hours: {
                  monday: [["8", "12"], ["14", "18"]],
                  tuesday: [["9", "17"]]
              }
          },
          access_token: "0cd675768fev8dab81fe1c1297d56b09"
      }

Excluir uma agenda

O controller de agendas permite excluir uma agenda acessando a action "destroy". Para deletar uma agenda é necessário saber o id da agenda que deseja excluir.

Exemplo com CURL:

curl -X DELETE 'https://max.cfaz.net/api/v1/calendars/1' \
  -F 'access_token=0cd675768fev8dab81fe1c1297d56b09'

Exemplo com a Gem RestClient:

RestClient.delete "https://max.cfaz.net/api/v1/calendars/1",
    {
        access_token: "0cd675768fev8dab81fe1c1297d56b09"
    }

Consultar horários disponíveis

O controller de agendas permite consultar os horários disponíveis de uma agenda específica através da action "available_slots". É necessário informar o id da agenda, a data e opcionalmente o fuso horário.

Exemplo com CURL:

curl -X GET 'https://max.cfaz.net/api/v1/calendars/1/available_slots' \
  -F 'access_token=0cd675768fev8dab81fe1c1297d56b09' \
  -F 'date=2025-01-15' \
  -F 'time_zone=America/Sao_Paulo'

Exemplo com a Gem RestClient:

RestClient.get 'https://max.cfaz.net/api/v1/calendars/1/available_slots',
    {
        'access_token'=> '0cd675768fev8dab81fe1c1297d56b09',
        'date' => '2025-01-15',
        'time_zone' => 'America/Sao_Paulo'
    }

What's Next