openapi: 3.0.1 info: title: Thinkific Admin Bundles Enrollments API description: Thinkific's public API can be used to integrate your application with your Thinkific site. termsOfService: https://www.thinkific.com/legal/ contact: email: developers@thinkific.com version: v1 servers: - url: https://api.thinkific.com/api/public/v1 security: - OAuthAccessToken: [] - ApiKey: [] ApiKeySubdomain: [] tags: - name: Enrollments description: Enrollments operations paths: /enrollments: get: tags: - Enrollments summary: Get Enrollments description: Returns a list of enrollments operationId: getEnrollments parameters: - name: page in: query description: The page within the collection to fetch. schema: type: number default: 1.0 - name: limit in: query description: The number of items to be returned. schema: type: number default: 25.0 - name: query[user_id] in: query description: Search Enrollments by User ID. schema: type: number - name: query[course_id] in: query description: Search Enrollments by Course ID. schema: type: number - name: query[email] in: query description: Search Enrollments by User email. schema: type: string - name: query[free_trial] in: query description: Filter for only Free Trial Enrollments when set to true. schema: type: boolean - name: query[full] in: query description: Filter for only full Enrollments when set to true. schema: type: boolean - name: query[completed] in: query description: Filter for only completed Enrollments when set to true. schema: type: boolean - name: query[expired] in: query description: Filter for only expired Enrollments when set to true. schema: type: boolean - name: query[created_on] in: query description: Filter for only Enrollments created on the date specified. schema: type: string format: date-time - name: query[created_before] in: query description: Filter for only Enrollments created before the date specified. schema: type: string format: date-time - name: query[created_on_or_before] in: query description: Filter for only Enrollments created on or before the date specified. schema: type: string format: date-time - name: query[created_after] in: query description: Filter for only Enrollments created after the date specified. schema: type: string format: date-time - name: query[created_on_or_after] in: query description: Filter for only Enrollments created on or after the date specified. schema: type: string format: date-time - name: query[updated_on] in: query description: Filter for only Enrollments updated on the date specified. schema: type: string format: date-time - name: query[updated_before] in: query description: Filter for only Enrollments updated before the date specified. schema: type: string format: date-time - name: query[updated_on_or_before] in: query description: Filter for only Enrollments updated on or before the date specified. schema: type: string format: date-time - name: query[updated_after] in: query description: Filter for only Enrollments updated after the date specified. schema: type: string format: date-time responses: 200: description: Enrollments response content: application/json: schema: $ref: '#/components/schemas/GetEnrollmentsResponse' 403: $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse' post: tags: - Enrollments summary: Create enrollment description: Creates a new Enrollment for specified student in specified course operationId: createEnrollment requestBody: description: New enrollment attributes content: application/json: schema: $ref: '#/components/schemas/CreateEnrollmentRequest' required: true responses: 201: description: Enrollment response content: application/json: schema: $ref: '#/components/schemas/EnrollmentResponse' 403: $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse' 422: description: Not Found content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' example: errors: - Course could not be found. - User could not be found. x-codegen-request-body-name: body /enrollments/{id}: get: tags: - Enrollments summary: Get enrollments by ID description: Returns the Enrollment identified by the provided id. operationId: getEnrollmentsByID parameters: - name: id in: path description: ID of the Enrollment in the form of an integer. required: true schema: type: number responses: 200: description: Enrollment response content: application/json: schema: $ref: '#/components/schemas/EnrollmentResponse' 403: $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorNotFound' put: tags: - Enrollments summary: Update enrollment description: Updates a Enrollment for specified student in specified course operationId: updateEnrollment parameters: - name: id in: path description: ID of the Enrollment in the form of an integer. required: true schema: type: number requestBody: description: New enrollment attributes content: application/json: schema: $ref: '#/components/schemas/UpdateEnrollmentRequest' required: true responses: 204: description: Enrollment Updated 403: $ref: '#/components/responses/ErrorForbiddenAppsNotAvailableResponse' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorNotFound' 422: description: Not Found content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' example: errors: - Course could not be found. - User could not be found. x-codegen-request-body-name: body components: responses: ErrorForbiddenAppsNotAvailableResponse: description: Access Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorForbiddenAppsNotAvailable' schemas: UpdateEnrollmentRequest: type: object properties: activated_at: type: string description: The date/time at which the Enrollment is activated. If not provided, the Enrollment is a free trial. format: date-time example: '2018-01-01T01:01:00Z' expiry_date: type: string description: The date/time at which the Enrollment expired. If not provided, the Enrollment does not expire. format: date-time example: '2019-01-01T01:01:00Z' ValidationError: type: object properties: field_name: type: string description: validation error Meta: type: object properties: pagination: $ref: '#/components/schemas/Pagination' EnrollmentResponse: required: - activated_at - completed - completed_at - course_id - course_name - expired - expiry_date - id - is_free_trial - percentage_completed - started_at - updated_at - user_email - user_id - user_name type: object properties: id: type: number description: The ID of the Enrollment as an integer. example: 1.0 user_email: type: string description: The email of the User owning the Enrollment. example: bob@example.com user_name: type: string description: The full name of the User owning the Enrollment. example: Bob Smith user_id: type: number description: The ID of the User owning the Enrollment as an integer. example: 1.0 course_name: type: string description: The name of the Course. example: My Course course_id: type: number description: The ID of the Course as an integer. example: 1.0 percentage_completed: type: number description: The percentage complete of the Enrollment. A number between 0.0 and 1.0. For example, to represent a percentage complete of 75%, this value would be 0.75. example: 1.0 expired: type: boolean description: A boolean indicating whether the Enrollment is expired. example: false is_free_trial: type: boolean description: A boolean indicating whether the Enrollment is a free trial. example: false completed: type: boolean description: A boolean indicating whether the Enrollment is complete. example: true started_at: type: string description: The date/time that the Enrollment started. format: date-time example: '2018-01-01T01:01:00Z' activated_at: type: string description: The date/time that the Enrollment was activated. format: date-time example: '2018-01-01T01:01:00Z' completed_at: type: string description: The date/time that the Enrollment was completed. format: date-time example: '2018-01-31T01:01:00Z' updated_at: type: string description: The date/time that the Enrollment was updated last. format: date-time example: '2018-01-31T01:01:00Z' expiry_date: type: string description: The date/time that the Enrollment expires. format: date-time example: '2019-01-01T01:01:00Z' CreateEnrollmentRequest: type: object properties: course_id: type: number description: The ID of the Course as an integer. example: 1.0 user_id: type: number description: The ID of the User owning the Enrollment as an integer. example: 1.0 activated_at: type: string description: The date/time at which the Enrollment is activated. If not provided, the Enrollment is a free trial. format: date-time example: '2018-01-01T01:01:00Z' expiry_date: type: string description: The date/time at which the Enrollment expired. If not provided, the Enrollment does not expire. format: date-time example: '2019-01-01T01:01:00Z' ErrorForbiddenAppsNotAvailable: type: object properties: error: type: string description: access forbidden example: error: Access to Apps is not available on your plan. Upgrade to gain access ErrorNotFound: type: object properties: error: type: string description: item not found error example: error: Record not found. GetEnrollmentsResponse: required: - items - meta type: object properties: items: type: array items: $ref: '#/components/schemas/EnrollmentResponse' meta: $ref: '#/components/schemas/Meta' UnprocessableEntityError: type: object properties: errors: type: array items: $ref: '#/components/schemas/ValidationError' Pagination: type: object properties: current_page: type: number description: Current page number example: 1.0 next_page: type: number description: Next page number example: 2.0 prev_page: type: number description: Previous page number total_pages: type: number description: Number of total pages example: 10.0 total_items: type: number description: Number of total items example: 250.0 entries_info: type: string description: Entries info example: 1-10 of 10 description: Pagination metadata securitySchemes: OAuthAccessToken: type: http scheme: bearer ApiKey: type: apiKey in: header name: X-Auth-API-Key description: Used together with ApiKeySubdomain ApiKeySubdomain: type: apiKey in: header name: X-Auth-Subdomain description: Used together with ApiKey externalDocs: description: Find out more about Thinkifc's API url: http://developers.thinkific.com/api/api-documentation/