Appointment Groups API
API for creating, accessing and updating appointment groups. Appointment groups provide a way of creating a bundle of time slots that users can sign up for (e.g. "Office Hours" or "Meet with professor about Final Project"). Both time slots and reservations of time slots are stored as Calendar Events.
An Appointment Group object looks like:
{ // The ID of the appointment group id: 543, // The title of the appointment group title: "Final Presentation", // The start of the first time slot in the appointment group start_at: "2012-07-20T15:00:00-06:00", // The end of the last time slot in the appointment group end_at: "2012-07-20T17:00:00-06:00", // The text description of the appointment group description: "Es muy importante", // The location name of the appointment group location_name: "El Tigre Chino's office", // The address of the appointment group's location location_address: "Room 234", // The number of participant who have reserved slots // (see include[] argument) participant_count: 2, // The start and end times of slots reserved by the current user as // well as the id of the calendar event for the reservation (see // include[] argument) reserved_times: [{id: 987, start_at: "2012-07-20T15:00:00-06:00", start_at: "2012-07-20T15:00:00-06:00"}], // The context codes (i.e. courses) this appointment group belongs to. // Only people in these courses will be eligible to sign up. context_codes: ["course_123"], // The sub-context codes (i.e. course sections and group categories) // this appointment group is restricted to sub_context_codes: ["course_section_234"], // Current state of the appointment group ("pending", "active" or // "deleted"). "pending" indicates that it has not been published yet // and is invisible to participants. workflow_state: "active", // Boolean indicating whether the current user needs to sign up for // this appointment group (i.e. it's reservable and the // min_appointments_per_participant limit has not been met by this // user). requiring_action: true, // Number of time slots in this appointment group appointments_count: 2, // Calendar Events representing the time slots (see include[] argument) // Refer to the Calendar Events API for more information appointments: [ ... ], // Newly created time slots (same format as appointments above). Only // returned in Create/Update responses where new time slots have been // added new_appointments: [ ... ], // Maximum number of time slots a user may register for, or null if no // limit max_appointments_per_participant: 1, // Minimum number of time slots a user must register for. If not set, // users do not need to sign up for any time slots min_appointments_per_participant: 1, // Maximum number of participants that may register for each time slot, // or null if no limit participants_per_appointment: 1, // "private" means participants cannot see who has signed up for a // particular time slot, "protected" means that they can participant_visibility: "private", // Indicates how participants sign up for the appointment group, either // as individuals ("User") or in student groups ("Group"). Related to // sub_context_codes (i.e. "Group" signups always have a single group // category) participant_type: "User", // URL for this appointment group (to update, delete, etc.) url: "https://example.com/api/v1/appointment_groups/543", // URL for a user to view this appointment group html_url: "http://example.com/appointment_groups/1", // When the appointment group was created created_at: "2012-07-13T10:55:20-06:00", // When the appointment group was last updated updated_at: "2012-07-13T10:55:20-06:00" }
List appointment groups AppointmentGroupsController#index
GET /api/v1/appointment_groups
Retrieve the list of appointment groups that can be reserved or managed by the current user.
Request Parameters:
-
scope
- Optional, "reservable"|"manageable"
-
Defaults to "reservable"
-
context_codes[]
- Optional
-
Array of context codes used to limit returned results.
-
include_past_appointments
- Optional
-
Boolean, defaults to false.
If true, includes past appointment groups
-
include[]
- Optional
-
Array of additional information to include.
Allowable values include "appointments" (i.e. calendar event time slots for this appointment group), "child_events" (i.e. reservations of those time slots), "participant_count" (i.e. number of reservations), and "reserved_times" (i.e. the event id, start time and end time of reservations the current user has made)
Create an appointment group AppointmentGroupsController#create
POST /api/v1/appointment_groups
Create and return a new appointment group. If new_appointments are specified, the response will return a new_appointments array (same format as appointments array, see "List appointment groups" action)
Request Parameters:
-
appointment_group[context_codes][]
- Required
-
Array of context codes (courses, e.g. course_1) this group should be linked to (1 or more). Users in the course(s) with appropriate permissions will be able to sign up for this appointment group.
-
appointment_group[sub_context_codes][]
- Optional
-
Array of sub context codes (course sections or a single group category) this group should be linked to. Used to limit the appointment group to particular sections. If a group category is specified, students will sign up in groups and the participant_type will be "Group" instead of "User".
-
appointment_group[title]
- Optional
-
Short title for the appointment group.
-
appointment_group[description]
- Optional
-
Longer text description of the appointment group.
-
appointment_group[location_name]
- Optional
-
Location name of the appointment group.
-
appointment_group[location_address]
- Optional
-
Location address.
-
appointment_group[publish]
- Optional
-
Boolean, default false. Indicates whether this appointment group should be published (i.e. made available for signup). Once published, an appointment group cannot be unpublished.
-
appointment_group[participants_per_appointment]
- Optional
-
Maximum number of participants that may register for each time slot. Defaults to null (no limit).
-
appointment_group[min_appointments_per_participant]
- Optional
-
Minimum number of time slots a user must register for. If not set, users do not need to sign up for any time slots.
-
appointment_group[max_appointments_per_participant]
- Optional
-
Maximum number of time slots a user may register for.
-
appointment_group[new_appointments][X][]
- Optional
-
Nested array of start time/end time pairs indicating time slots for this appointment group. Refer to the example request.
-
appointment_group[participant_visibility]
- Optional, "private"|"protected"
-
"private" means participants cannot see who has signed up for a particular time slot, "protected" means that they can. Defaults to "private".
Example Request:
curl 'http://<canvas>/api/v1/appointment_groups.json' \ -X POST \ -F 'appointment_group[context_codes][]=course_123' \ -F 'appointment_group[sub_context_codes][]=course_section_234' \ -F 'appointment_group[title]=Final Presentation' \ -F 'appointment_group[participants_per_appointment]=1' \ -F 'appointment_group[min_appointments_per_participant]=1' \ -F 'appointment_group[max_appointments_per_participant]=1' \ -F 'appointment_group[new_appointments][0][]=2012-07-19T21:00:00Z' \ -F 'appointment_group[new_appointments][0][]=2012-07-19T22:00:00Z' \ -F 'appointment_group[new_appointments][1][]=2012-07-19T22:00:00Z' \ -F 'appointment_group[new_appointments][1][]=2012-07-19T23:00:00Z' \ -H "Authorization: Bearer <token>"
Get a single appointment group AppointmentGroupsController#show
GET /api/v1/appointment_groups/:id
Returns information for a single appointment group
Request Parameters:
-
include[]
- Optional
-
Array of additional information to include.
Allowable values include "child_events" (i.e. reservations of time slots time slots). "appointments" will always be returned (see include[] argument of "List appointment groups" action).
Update an appointment group AppointmentGroupsController#update
PUT /api/v1/appointment_groups/:id
Update and return an appointment group. If new_appointments are specified, the response will return a new_appointments array (same format as appointments array, see "List appointment groups" action).
Request Parameters:
-
appointment_group[context_codes][]
- Optional
-
Array of context codes to add to this appointment group (existing ones cannot be removed).
-
appointment_group[sub_context_codes][]
- Optional
-
Array of sub context codes to add to this appointment group (existing ones cannot be removed).
-
appointment_group[title]
- Optional
-
Short title for the appointment group.
-
appointment_group[description]
- Optional
-
Longer text description of the appointment group.
-
appointment_group[location_name]
- Optional
-
Location name of the appointment group.
-
appointment_group[location_address]
- Optional
-
Location address.
-
appointment_group[publish]
- Optional
-
Boolean, default false. Indicates whether this appointment group should be published (i.e. made available for signup). Once published, an appointment group cannot be unpublished.
-
appointment_group[participants_per_appointment]
- Optional
-
Maximum number of participants that may register for each time slot. Defaults to null (no limit). Changes will not affect existing reservations.
-
appointment_group[min_appointments_per_participant]
- Optional
-
Minimum number of time slots a user must register for. If not set, users do not need to sign up for any time slots. Changes will not affect existing reservations.
-
appointment_group[max_appointments_per_participant]
- Optional
-
Maximum number of time slots a user may register for. Changes will not affect existing reservations.
-
appointment_group[new_appointments][X][]
- Optional
-
Nested array of new start time/end time pairs indicating time slots for this appointment group. Refer to the example request. To remove existing time slots or reservations, use the Calendar Event API.
-
appointment_group[participant_visibility]
- Optional, "private"|"protected"
-
"private" means participants cannot see who has signed up for a particular time slot, "protected" means that they can.
Example Request:
curl 'http://<canvas>/api/v1/appointment_groups/543.json' \ -X PUT \ -F 'appointment_group[publish]=1' \ -H "Authorization: Bearer <token>"
Delete an appointment group AppointmentGroupsController#destroy
DELETE /api/v1/appointment_groups/:id
Delete an appointment group (and associated time slots and reservations) and return the deleted group
appointment group.
Request Parameters:
-
cancel_reason
- Optional
-
Reason for deleting/canceling the
Example Request:
curl 'http://<canvas>/api/v1/appointment_groups/543.json' \ -X DELETE \ -F 'cancel_reason=El Tigre Chino got fired' \ -H "Authorization: Bearer <token>"
List user participants AppointmentGroupsController#users
GET /api/v1/appointment_groups/:id/users
List users that are (or may be) participating in this appointment group. Refer to the Users API for the response fields. Returns no results for appointment groups with the "Group" participant_type.
Request Parameters:
-
registration_status
- Optional, "all"|"registered"|"registered"
-
Limits results to the a given participation status, defaults to "all"
List student group participants AppointmentGroupsController#groups
GET /api/v1/appointment_groups/:id/groups
List student groups that are (or may be) participating in this appointment group. Refer to the Groups API for the response fields. Returns no results for appointment groups with the "User" participant_type.
Request Parameters:
-
registration_status
- Optional, "all"|"registered"|"registered"
-
Limits results to the a given participation status, defaults to "all"