openapi: 3.0.3 info: title: Teachfloor description: '' version: 1.0.0 servers: - url: 'https://api.teachfloor.com' paths: '/v0/activities/{id}': get: summary: 'Retrieve an Activity' description: "Retrieves the details of an existing activity in your organization based on the provided unique activity ID. The response includes comprehensive information about the activity, such as its score, timestamps, associated element details, and related metadata.\n

If the activity is performed by an individual, the member key contains the details of the member who completed the activity.\n
If the activity is performed by a group, the members key provides a list of all members who participated in the activity.\n

The meta object contains additional details and metadata about the activity's completion status. It provides context on the outcome and participant of the activity." parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": null,\n\"payload\": {\n \"id\": \"KwJ8VgrmlAp4PBnM\",\n \"object\": \"activity\",\n \"timestamp\" : \"2022-11-27T13:52:02.000000Z\",\n \"status\": \"PASSED\",\n \"passed\": true,\n \"score\": 100,\n \"completed_by\": \"6K8vojJn1xe14abL\",\n \"member\": {\n \"id\": \"6K8vojJn1xe14abL\",\n \"object\": \"member\",\n \"first_name\": \"Adalberto\",\n \"last_name\": \"Bruen\",\n \"full_name\": \"Adalberto Bruen\",\n \"avatar\": null,\n \"email\": \"iva52@example.org\",\n \"is_email_verified\": true,\n \"last_seen\": \"2024-11-27T13:51:52.000000Z\"\n },\n \"context\": {\n \"id\": \"QB8nmEJjqdbLA2K5\",\n \"object\": \"element\",\n \"created_at\": \"2024-11-26T11:37:16.000000Z\",\n \"name\": \"Multiple Choice Quiz\",\n \"cover\": null,\n \"type\": \"QUIZ\",\n \"position\": 3,\n \"module\": \"no0aApWNyRMD68rv\",\n \"metadata\": {}\n }\n}" tags: - Activities parameters: - in: path name: id description: 'The ID of the requested activity.' example: p5v87ERWKR3dkjyD required: true schema: type: string /v0/activities: get: summary: 'List all Activities' description: "Returns a list of activities within your organization. The activities are sorted by their creation date, with the most recently created activities appearing first. Each activity in the list includes information such as the score, dates, element data and more.\n

If the activity is performed by an individual, the member key contains the details of the member who completed the activity.\n
If the activity is performed by a group, the members key provides a list of all members who participated in the activity." parameters: - in: query name: module description: 'The unique ID to filter activities by module' example: no0aApWNyRMD68rv required: false schema: type: string description: 'The unique ID to filter activities by module' example: no0aApWNyRMD68rv - in: query name: element description: 'The unique ID to filter activities by element' example: QB8nmEJjqdbLA2K5 required: false schema: type: string description: 'The unique ID to filter activities by element' example: QB8nmEJjqdbLA2K5 - in: query name: member description: 'The unique ID to filter activities by member' example: 6K8vojJn1xe14abL required: false schema: type: string description: 'The unique ID to filter activities by member' example: 6K8vojJn1xe14abL - in: query name: page description: 'A cursor for pagination across multiple pages of results.' example: 2 required: false schema: type: integer description: 'A cursor for pagination across multiple pages of results.' example: 2 - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": null,\n\"payload\": {\n \"data\": [\n {\n \"id\": \"KwJ8VgrmlAp4PBnM\",\n \"object\": \"activity\",\n \"timestamp\" : \"2022-11-27T13:52:02.000000Z\",\n \"status\": \"PASSED\",\n \"passed\": true,\n \"score\": 100,\n \"completed_by\": \"6K8vojJn1xe14abL\",\n \"member\": {\n \"id\": \"6K8vojJn1xe14abL\",\n \"object\": \"member\",\n \"first_name\": \"Adalberto\",\n \"last_name\": \"Bruen\",\n \"full_name\": \"Adalberto Bruen\",\n \"avatar\": null,\n \"email\": \"iva52@example.org\",\n \"is_email_verified\": true,\n \"last_seen\": \"2024-11-27T13:51:52.000000Z\"\n },\n \"context\": {\n \"id\": \"QB8nmEJjqdbLA2K5\",\n \"object\": \"element\",\n \"created_at\": \"2024-11-26T11:37:16.000000Z\",\n \"name\": \"Multiple Choice Quiz\",\n \"cover\": null,\n \"type\": \"QUIZ\",\n \"position\": 3,\n \"module\": \"no0aApWNyRMD68rv\",\n \"metadata\": {}\n }\n },\n {...},\n {...},\n ],\n \"pagination\": {\n \"total\": 3,\n \"count\": 3,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 1\n }\n}" tags: - Activities /v0/courses/search: get: summary: 'Search Courses' description: 'Search for existing courses in your organization. You can search by course name. The search is case-insensitive and supports partial matches.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"data\": [\n {\n \"id\": \"p5v87ERWKR3dkjyD\",\n \"object\": \"course\",\n \"name\": \"Ultimate Marketing Course\",\n \"status\": \"PUBLISHED\",\n \"created_at\": \"2022-02-03T16:06:42.000000Z\",\n \"cover\": null,\n \"availability\": \"CONTINUOUS\",\n \"visibility\": \"PRIVATE\",\n \"start_date\": null,\n \"end_date\": null,\n \"currency\": \"eur\",\n \"price\": null,\n \"url\": null,\n \"public_url\": null,\n \"join_url\": null,\n \"metadata\": {},\n \"custom_fields\": {\n \"field_1\": {\n \"key\": \"field_1\",\n \"object\": \"custom-field\",\n \"created_at\": \"2024-07-30T16:05:47.000000Z\",\n \"name\": \"Multiple Field Question\",\n \"description\": null,\n \"type\": \"MULTIPLE_OPTIONS\",\n \"options\": [\n \"Option A\",\n \"Option B\",\n \"Option C\"\n ],\n \"required\": false\n }\n }\n },\n {...},\n {...}\n ],\n \"pagination\": {\n \"total\": 5,\n \"count\": 5,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 1\n }\n }\n}" tags: - Courses requestBody: required: true content: application/json: schema: type: object properties: q: type: string description: 'The search query to filter courses by name.' example: Marketing include_test_user: type: boolean description: '' example: true required: - q '/v0/courses/{id}': get: summary: 'Retrieve a Course' description: 'Retrieves the details of an existing course in your organization based on the provided unique course ID. Returns a comprehensive information about the course, including its name, availability, status, dates, and more.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: id: p5v87ERWKR3dkjyD object: course name: 'Ultimate Marketing Course' status: PUBLISHED created_at: '2022-02-03T16:06:42.000000Z' cover: null availability: CONTINUOUS visibility: PRIVATE start_date: null end_date: null currency: eur price: null url: null public_url: null join_url: null metadata: { } custom_fields: field_1: key: field_1 object: custom-field created_at: '2024-07-30T16:05:47.000000Z' name: 'Multiple Field Question' description: null type: MULTIPLE_OPTIONS options: - 'Option A' - 'Option B' - 'Option C' required: false properties: error: type: string example: null payload: type: object example: id: p5v87ERWKR3dkjyD object: course name: 'Ultimate Marketing Course' status: PUBLISHED created_at: '2022-02-03T16:06:42.000000Z' cover: null availability: CONTINUOUS visibility: PRIVATE start_date: null end_date: null currency: eur price: null url: null public_url: null join_url: null metadata: { } custom_fields: field_1: key: field_1 object: custom-field created_at: '2024-07-30T16:05:47.000000Z' name: 'Multiple Field Question' description: null type: MULTIPLE_OPTIONS options: - 'Option A' - 'Option B' - 'Option C' required: false tags: - Courses post: summary: 'Update a Course' description: 'Updates the details of an existing course in your organization based on the provided unique course ID. Any parameters not provided will be left unchanged. Returns the updated course details upon successful update.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: id: p5v87ERWKR3dkjyD object: course name: 'Ultimate Marketing Course' status: PUBLISHED created_at: '2022-02-03T16:06:42.000000Z' cover: null availability: CONTINUOUS visibility: PRIVATE start_date: null end_date: null currency: eur price: null url: null public_url: null join_url: null metadata: { } custom_fields: field_1: key: field_1 object: custom-field created_at: '2024-07-30T16:05:47.000000Z' name: 'Multiple Field Question' description: null type: MULTIPLE_OPTIONS options: - 'Option A' - 'Option B' - 'Option C' required: false properties: error: type: string example: null payload: type: object example: id: p5v87ERWKR3dkjyD object: course name: 'Ultimate Marketing Course' status: PUBLISHED created_at: '2022-02-03T16:06:42.000000Z' cover: null availability: CONTINUOUS visibility: PRIVATE start_date: null end_date: null currency: eur price: null url: null public_url: null join_url: null metadata: { } custom_fields: field_1: key: field_1 object: custom-field created_at: '2024-07-30T16:05:47.000000Z' name: 'Multiple Field Question' description: null type: MULTIPLE_OPTIONS options: - 'Option A' - 'Option B' - 'Option C' required: false tags: - Courses requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'The course name.' example: 'Ultimate Marketing Course' availability: type: string description: 'The course availability. Must be one of CONTINUOUS or SCHEDULED.' example: SCHEDULED start_date: type: string description: 'If the course availability is set to SCHEDULED, this defines the course schedule start. Specify the date in `YYYY-MM-DD` format. This field is required when availability is SCHEDULED. Must be a valid date.' example: '2023-07-12' end_date: type: string description: 'If the course availability is set to SCHEDULED, this defines the course schedule end. Specify the date in `YYYY-MM-DD` format. This field is required when availability is SCHEDULED or date. Must be a date after or equal to start_date.' example: '2023-07-26' visibility: type: string description: 'The course visibility inside your organization. A course with PUBLIC visibility is shown to all the members of your organization. A course with PRIVATE visibility is shown only to the members of the course but is hidden by the other members of your organization. Must be one of PUBLIC or PRIVATE.' example: PRIVATE metadata: type: object description: 'Metadata is an attribute that lets you store more information, structured as key-value pairs, for your own use and reference.
You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Keys and values are stored as strings and can contain any characters with one exception: you can’t use square brackets ([ and ]) in keys.' example: category: marketing level: advanced properties: [] parameters: - in: path name: id description: 'The ID of the requested course.' example: p5v87ERWKR3dkjyD required: true schema: type: string /v0/courses: get: summary: 'List all Courses' description: 'Returns a list of courses within your organization. The courses are sorted by their creation date, with the most recently created courses appearing first. Each course in the list includes information such as the course name, availability, status, dates, and more.' parameters: - in: query name: page description: 'A cursor for pagination across multiple pages of results.' example: 2 required: false schema: type: integer description: 'A cursor for pagination across multiple pages of results.' example: 2 - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"data\": [\n {\n \"id\": \"p5v87ERWKR3dkjyD\",\n \"object\": \"course\",\n \"name\": \"Ultimate Marketing Course\",\n \"status\": \"PUBLISHED\",\n \"created_at\": \"2022-02-03T16:06:42.000000Z\",\n \"cover\": null,\n \"availability\": \"CONTINUOUS\",\n \"visibility\": \"PRIVATE\",\n \"start_date\": null,\n \"end_date\": null,\n \"currency\": \"eur\",\n \"price\": null,\n \"url\": null,\n \"public_url\": null,\n \"join_url\": null,\n \"metadata\": {},\n \"custom_fields\": {\n \"field_1\": {\n \"key\": \"field_1\",\n \"object\": \"custom-field\",\n \"created_at\": \"2024-07-30T16:05:47.000000Z\",\n \"name\": \"Multiple Field Question\",\n \"description\": null,\n \"type\": \"MULTIPLE_OPTIONS\",\n \"options\": [\n \"Option A\",\n \"Option B\",\n \"Option C\"\n ],\n \"required\": false\n }\n }\n },\n {...},\n {...}\n ],\n \"pagination\": {\n \"total\": 15,\n \"count\": 5,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 2\n }\n }\n}" tags: - Courses post: summary: 'Create a Course' description: 'Creates a course in your organization. Returns the created course details upon successful creation.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: id: p5v87ERWKR3dkjyD object: course name: 'Ultimate Marketing Course' status: PUBLISHED created_at: '2022-02-03T16:06:42.000000Z' cover: null availability: CONTINUOUS visibility: PRIVATE start_date: null end_date: null currency: eur price: null url: null public_url: null join_url: null metadata: { } custom_fields: field_1: key: field_1 object: custom-field created_at: '2024-07-30T16:05:47.000000Z' name: 'Multiple Field Question' description: null type: MULTIPLE_OPTIONS options: - 'Option A' - 'Option B' - 'Option C' required: false properties: error: type: string example: null payload: type: object example: id: p5v87ERWKR3dkjyD object: course name: 'Ultimate Marketing Course' status: PUBLISHED created_at: '2022-02-03T16:06:42.000000Z' cover: null availability: CONTINUOUS visibility: PRIVATE start_date: null end_date: null currency: eur price: null url: null public_url: null join_url: null metadata: { } custom_fields: field_1: key: field_1 object: custom-field created_at: '2024-07-30T16:05:47.000000Z' name: 'Multiple Field Question' description: null type: MULTIPLE_OPTIONS options: - 'Option A' - 'Option B' - 'Option C' required: false tags: - Courses requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'The course name.' example: 'Ultimate Marketing Course' availability: type: string description: 'The course availability. Must be one of CONTINUOUS or SCHEDULED.' example: CONTINUOUS start_date: type: string description: 'If the course availability is set to SCHEDULED, this defines the course schedule start. Specify the date in `YYYY-MM-DD` format. This field is required when availability is SCHEDULED. Must be a valid date.' example: '2023-07-12' end_date: type: string description: 'If the course availability is set to SCHEDULED, this defines the course schedule end. Specify the date in `YYYY-MM-DD` format. This field is required when availability is SCHEDULED or date. Must be a date after or equal to start_date.' example: '2023-07-26' visibility: type: string description: 'The course visibility inside your organization. A course with PUBLIC visibility is shown to all the members of your organization. A course with PRIVATE visibility is shown only to the members of the course but is hidden by the other members of your organization. Must be one of PUBLIC or PRIVATE.' example: PRIVATE metadata: type: object description: 'Metadata is an attribute that lets you store more information, structured as key-value pairs, for your own use and reference.
You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Keys and values are stored as strings and can contain any characters with one exception: you can’t use square brackets ([ and ]) in keys.' example: category: marketing level: advanced properties: [] '/v0/courses/{id}/join': post: summary: 'Join a Course' description: 'Joins a member in one of your courses.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: null properties: error: type: string example: null payload: type: string example: null tags: - Courses requestBody: required: true content: application/json: schema: type: object properties: member: type: string description: 'The unique ID of the member who is being added to the course.' example: e7W6kP8wvjd3GRBz role: type: string description: 'The role to assign to the member inside the course. If not set the member will be enrolled to the course as a customer. To assign an instructor or assiatant to the course use `lecturer` or `assistant`. Must be one of customer, lecturer, or assistant.' example: customer required: - member parameters: - in: path name: id description: 'The ID of the course to enroll.' example: p5v87ERWKR3dkjyD required: true schema: type: string '/v0/courses/{id}/revoke': post: summary: 'Revoke Course Access' description: 'Revokes a member access to a course.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: null properties: error: type: string example: null payload: type: string example: null tags: - Courses requestBody: required: true content: application/json: schema: type: object properties: member: type: string description: 'The ID of the member to revoke access to the course.' example: e7W6kP8wvjd3GRBz required: - member parameters: - in: path name: id description: 'The ID of the course from which the member should be revoked.' example: p5v87ERWKR3dkjyD required: true schema: type: string '/v0/courses/{id}/members': get: summary: 'List all Course Members' description: 'Returns a list of members within the course.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"data\": [\n {\n \"id\": \"6jO9XN7mZEVpvxqo\",\n \"object\": \"course_member\",\n \"joined_at\": \"2024-01-22T12:56:04.000000Z\",\n \"member\": {\n \"id\": \"e7W6kP8wvjd3GRBz\",\n \"object\": \"member\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"full_name\": \"John Doe\",\n \"avatar\": null,\n \"email\": null,\n \"is_email_verified\": false,\n \"last_seen\": \"2024-01-22T12:56:04.000000Z\"\n },\n \"course\": {\n \"id\": \"p5v87ERWKR3dkjyD\",\n \"object\": \"course\",\n \"name\": \"Ultimate Marketing Course\",\n \"status\": \"PUBLISHED\",\n \"created_at\": \"2022-02-03T16:06:42.000000Z\",\n \"cover\": null,\n \"availability\": \"CONTINUOUS\",\n \"visibility\": \"PRIVATE\",\n \"start_date\": null,\n \"end_date\": null,\n \"currency\": \"eur\",\n \"price\": null,\n \"url\": null,\n \"public_url\": null,\n \"join_url\": null,\n \"metadata\": {},\n \"custom_fields\": {\n \"field_1\": {\n \"key\": \"field_1\",\n \"object\": \"custom-field\",\n \"created_at\": \"2024-07-30T16:05:47.000000Z\",\n \"name\": \"Multiple Field Question\",\n \"description\": null,\n \"type\": \"MULTIPLE_OPTIONS\",\n \"options\": [\n \"Option A\",\n \"Option B\",\n \"Option C\"\n ],\n \"required\": false\n }\n }\n },\n \"custom_fields\": {\n \"field_1\": [\n \"Option A\",\n \"Option B\"\n ]\n }\n },\n {...},\n {...}\n ],\n \"pagination\": {\n \"total\": 15,\n \"count\": 5,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 2\n }\n }\n}" tags: - Courses requestBody: required: false content: application/json: schema: type: object properties: include_test_user: type: boolean description: 'Include test users to the results if set to true.' example: true parameters: - in: path name: id description: 'The ID of the course from which the members should be retrieved.' example: p5v87ERWKR3dkjyD required: true schema: type: string '/v0/courses/{id}/modules': get: summary: 'List all Course Modules' description: 'Returns a list of modules within the course.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"data\": [\n {\n \"id\": \"LZ6dN0DGgBD3QjxB\",\n \"object\": \"module\",\n \"created_at\": \"2024-01-22T12:55:11.000000Z\",\n \"name\": \"Lesson #1\",\n \"type\": \"LESSON\",\n \"availability\": \"CONTINUOUS\",\n \"position\": 0,\n \"course\": \"B4peAvmZ1L9OY3Xr\",\n \"metadata\": {}\n },\n {...},\n {...}\n ],\n \"pagination\": {\n \"total\": 15,\n \"count\": 5,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 2\n }\n }\n}" tags: - Courses parameters: - in: path name: id description: 'The ID of the course from which the modules should be retrieved.' example: LZ6dN0DGgBD3QjxB required: true schema: type: string '/v0/courses/{id}/elements': get: summary: 'List all Course Elements' description: 'Returns a list of elements within the course.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"data\": [\n {\n \"id\": \"WYxKj5OlrekVAGr7\",\n \"object\": \"element\",\n \"created_at\": \"2024-01-22T12:55:11.000000Z\",\n \"name\": \"Introduction\",\n \"cover\": null,\n \"type\": \"CONTENT\",\n \"position\": 0,\n \"module\": \"LZ6dN0DGgBD3QjxB\",\n \"metadata\": {}\n },\n {...},\n {...}\n ],\n \"pagination\": {\n \"total\": 15,\n \"count\": 5,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 2\n }\n }\n}" tags: - Courses parameters: - in: path name: id description: 'The ID of the course from which the elements should be retrieved.' example: WYxKj5OlrekVAGr7 required: true schema: type: string '/v0/elements/{id}/activities': get: summary: 'List all activites' description: 'Returns a list of activites related to the element.

If the activity is performed by an individual, the member key contains the details of the member who completed the activity.
If the activity is performed by a group, the members key provides a list of all members who participated in the activity.' parameters: - in: query name: member description: 'The unique ID of the member to filter activities for.' example: 6K8vojJn1xe14abL required: false schema: type: string description: 'The unique ID of the member to filter activities for.' example: 6K8vojJn1xe14abL - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": null,\n\"payload\": {\n \"data\": [\n {\n \"id\": \"KwJ8VgrmlAp4PBnM\",\n \"object\": \"activity\",\n \"timestamp\" : \"2022-11-27T13:52:02.000000Z\",\n \"status\": \"PASSED\",\n \"passed\": true,\n \"score\": 100,\n \"completed_by\": \"6K8vojJn1xe14abL\",\n \"member\": {\n \"id\": \"6K8vojJn1xe14abL\",\n \"object\": \"member\",\n \"first_name\": \"Adalberto\",\n \"last_name\": \"Bruen\",\n \"full_name\": \"Adalberto Bruen\",\n \"avatar\": null,\n \"email\": \"iva52@example.org\",\n \"is_email_verified\": true,\n \"last_seen\": \"2024-11-27T13:51:52.000000Z\"\n },\n \"context\": {\n \"id\": \"QB8nmEJjqdbLA2K5\",\n \"object\": \"element\",\n \"created_at\": \"2024-11-26T11:37:16.000000Z\",\n \"name\": \"Multiple Choice Quiz\",\n \"cover\": null,\n \"type\": \"QUIZ\",\n \"position\": 3,\n \"module\": \"no0aApWNyRMD68rv\",\n \"metadata\": {}\n },\n },\n {...},\n {...},\n ],\n \"pagination\": {\n \"total\": 3,\n \"count\": 3,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 1\n }\n}" tags: - Elements parameters: - in: path name: id description: 'The ID of the element to retrieve an activities.' example: e7W6kP8wvjd3GRBz required: true schema: type: string /v0/elements: post: summary: 'Create element' description: 'Creates an element in the specified module. Returns the created element details upon successful creation.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: data: id: QB8nmEJjqdbLA2K5 object: element created_at: '2024-11-26T11:37:16.000000Z' name: 'Multiple Choice Quiz' cover: null type: QUIZ position: 3 module: no0aApWNyRMD68rv metadata: { } properties: error: type: string example: null payload: type: object example: data: id: QB8nmEJjqdbLA2K5 object: element created_at: '2024-11-26T11:37:16.000000Z' name: 'Multiple Choice Quiz' cover: null type: QUIZ position: 3 module: no0aApWNyRMD68rv metadata: { } tags: - Elements requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The element name.' example: 'First knowledge' module: type: string description: 'The module id of an element.' example: no0aApWNyRMD68rv type: type: string description: 'The element type. Must be one of: CONTENT, VIDEO, ZOOM_MEETING, MEETING_LINK, QUIZ, SUBMISSION, GROUP_SUBMISSION, SUBMISSION_RUBRIC, EMBED, SURVEY, CERTIFICATE, TAG, DATACAMP, SELF_REVIEW, PEER_REVIEW, FEEDBACK_REFLECTION, INSTRUCTOR_REVIEW, CHECKLIST, DISCUSSION, FILE, GROUP_FORMATION, FORM, SCORE, GROUP_PEER_REVIEW, GROUP_FEEDBACK_REFLECTION.' example: QUIZ metadata: type: object description: 'Metadata is an attribute that lets you store more information, structured as key-value pairs, for your own use and reference.
You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Keys and values are stored as strings and can contain any characters with one exception: you can’t use square brackets ([ and ]) in keys.' example: category: marketing level: advanced properties: [] required: - module '/v0/elements/{id}': post: summary: 'Update element' description: 'Updates the details of an existing element in your organization based on the provided unique element ID. Any parameters not provided will be left unchanged. Returns the updated element details upon successful update.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: data: id: QB8nmEJjqdbLA2K5 object: element created_at: '2024-11-26T11:37:16.000000Z' name: 'Multiple Choice Quiz' cover: null type: QUIZ position: 3 module: no0aApWNyRMD68rv metadata: { } properties: error: type: string example: null payload: type: object example: data: id: QB8nmEJjqdbLA2K5 object: element created_at: '2024-11-26T11:37:16.000000Z' name: 'Multiple Choice Quiz' cover: null type: QUIZ position: 3 module: no0aApWNyRMD68rv metadata: { } tags: - Elements requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'The element name.' example: 'Ultimate Marketing Element' metadata: type: object description: 'Metadata is an attribute that lets you store more information, structured as key-value pairs, for your own use and reference.
You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Keys and values are stored as strings and can contain any characters with one exception: you can’t use square brackets ([ and ]) in keys.' example: category: marketing level: advanced properties: [] parameters: - in: path name: id description: 'The ID of the requested element to update.' example: p5v87ERWKR3dkjyD required: true schema: type: string /v0/members/search: get: summary: 'Search Members' description: 'Search for existing members in your organization. You can search by first name, last name or email. The search is case-insensitive and supports partial matches.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"data\": [\n {\n \"id\": \"e7W6kP8wvjd3GRBz\",\n \"object\": \"member\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"full_name\": \"John Doe\",\n \"avatar\": null,\n \"email\": null,\n \"is_email_verified\": false,\n \"last_seen\": \"2024-01-22T12:56:04.000000Z\"\n },\n {...},\n {...}\n ],\n \"pagination\": {\n \"total\": 5,\n \"count\": 5,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 1\n }\n }\n}" tags: - Members requestBody: required: true content: application/json: schema: type: object properties: q: type: string description: 'The search query to filter members by first name, last name or email.' example: John include_test_user: type: boolean description: 'Include test users to the search results if set to true.' example: true required: - q '/v0/members/{id}': get: summary: 'Retrieve a Member' description: 'Retrieves the details of an existing member in your organization based on the provided unique member ID. Returns a comprehensive information about the member, including their first name, last name, email, and profile image.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: id: e7W6kP8wvjd3GRBz object: member first_name: John last_name: Doe full_name: 'John Doe' avatar: null email: null is_email_verified: false last_seen: '2024-01-22T12:56:04.000000Z' properties: error: type: string example: null payload: type: object example: id: e7W6kP8wvjd3GRBz object: member first_name: John last_name: Doe full_name: 'John Doe' avatar: null email: null is_email_verified: false last_seen: '2024-01-22T12:56:04.000000Z' tags: - Members post: summary: 'Update a Member' description: 'Updates the details of an existing member in your organization based on the provided unique member ID. Any parameters not provided will be left unchanged. Returns the updated member details upon successful update.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: id: e7W6kP8wvjd3GRBz object: member first_name: John last_name: Doe full_name: 'John Doe' avatar: null email: john.doe@example.com is_email_verified: false last_seen: '2024-01-22T12:56:04.000000Z' properties: error: type: string example: null payload: type: object example: id: e7W6kP8wvjd3GRBz object: member first_name: John last_name: Doe full_name: 'John Doe' avatar: null email: john.doe@example.com is_email_verified: false last_seen: '2024-01-22T12:56:04.000000Z' tags: - Members requestBody: required: false content: application/json: schema: type: object properties: email: type: string description: 'The member''s email. Must be a valid email address.' example: john.doe@example.com password: type: string description: 'The member''s password. Must be at least 8 characters. Must have at least one uppercase and one lowercase letter. Must have at least one number. Must have at least one symbol.' example: doNotU5e_thiSPassw0rd first_name: type: string description: "The member first name. Example: John\nlast_name string The member last name. Example: Doe\nemail string The member email. Example: john.doe@example.com\navatar string The member profile picture. Example: https://example.com/avatar.png\npassword string The new password." example: 'tm7v$7ER9KR4dk*yD' last_name: type: string description: 'The member''s last name.' example: Doe avatar: type: string description: 'The member''s profile picture. Must be a valid URL. Must not be greater than 255 characters.' example: 'https://example.com/avatar.png' parameters: - in: path name: id description: 'The ID of the requested member.' example: e7W6kP8wvjd3GRBz required: true schema: type: string /v0/members: get: summary: 'List all Members' description: 'Retrieves a paginated list of members in your organization. This API endpoint allows you to retrieve detailed information about each member, including their name, email, and other relevant details.' parameters: - in: query name: page description: 'A cursor for pagination across multiple pages of results.' example: 2 required: false schema: type: integer description: 'A cursor for pagination across multiple pages of results.' example: 2 - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"data\": [\n {\n \"id\": \"e7W6kP8wvjd3GRBz\",\n \"object\": \"member\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"full_name\": \"John Doe\",\n \"avatar\": null,\n \"email\": null,\n \"is_email_verified\": false,\n \"last_seen\": \"2024-01-22T12:56:04.000000Z\"\n },\n {...},\n {...}\n ],\n \"pagination\": {\n \"total\": 152,\n \"count\": 10,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 16\n }\n }\n}" tags: - Members post: summary: 'Create a Member' description: 'Create a member in your organization.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: id: e7W6kP8wvjd3GRBz object: member first_name: John last_name: Doe full_name: 'John Doe' avatar: null email: john.doe@example.com is_email_verified: false last_seen: '2024-01-22T12:56:04.000000Z' properties: error: type: string example: null payload: type: object example: id: e7W6kP8wvjd3GRBz object: member first_name: John last_name: Doe full_name: 'John Doe' avatar: null email: john.doe@example.com is_email_verified: false last_seen: '2024-01-22T12:56:04.000000Z' tags: - Members requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The member''s email. Must be a valid email address.' example: john.doe@example.com password: type: string description: 'The member''s password. Must be at least 8 characters. Must have at least one uppercase and one lowercase letter. Must have at least one number. Must have at least one symbol.' example: doNotU5e_thiSPassw0rd first_name: type: string description: 'The member''s first name.' example: John last_name: type: string description: 'The member''s last name.' example: Doe role: type: string description: 'The member''s role. It must be "owner", "admin", "lecturer", "assistant" or "customer".' example: lecturer avatar: type: string description: 'The member''s profile picture. Must be a valid URL. Must not be greater than 255 characters.' example: 'https://example.com/avatar.png' required: - email - password - first_name - last_name - role '/v0/members/{id}/courses': get: summary: 'List all Member Courses' description: 'Returns a list of courses the member belongs to.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"data\": [\n {\n \"id\": \"6jO9XN7mZEVpvxqo\",\n \"object\": \"course_member\",\n \"joined_at\": \"2024-01-22T12:56:04.000000Z\",\n \"member\": {\n \"id\": \"e7W6kP8wvjd3GRBz\",\n \"object\": \"member\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"full_name\": \"John Doe\",\n \"avatar\": null,\n \"email\": null,\n \"is_email_verified\": false,\n \"last_seen\": \"2024-01-22T12:56:04.000000Z\"\n },\n \"course\": {\n \"id\": \"p5v87ERWKR3dkjyD\",\n \"object\": \"course\",\n \"name\": \"Ultimate Marketing Course\",\n \"created_at\": \"2022-02-03T16:06:42.000000Z\",\n \"cover\": null,\n \"availability\": \"CONTINUOUS\",\n \"visibility\": \"PRIVATE\",\n \"start_date\": null,\n \"end_date\": null,\n \"currency\": \"eur\",\n \"price\": null,\n \"url\": null,\n \"public_url\": null,\n \"join_url\": null,\n \"metadata\": {}\n },\n \"custom_fields\": {\n \"field_1\": {\n \"key\": \"field_1\",\n \"object\": \"custom-field\",\n \"created_at\": \"2024-07-30T16:05:47.000000Z\",\n \"name\": \"Multiple Field Question\",\n \"description\": null,\n \"type\": \"MULTIPLE_OPTIONS\",\n \"options\": [\n \"Option A\",\n \"Option B\",\n \"Option C\"\n ],\n \"required\": false\n }\n }\n },\n {...},\n {...}\n ],\n \"pagination\": {\n \"total\": 15,\n \"count\": 5,\n \"per_page\": 10,\n \"current_page\": 1,\n \"total_pages\": 2\n }\n }\n}" tags: - Members parameters: - in: path name: id description: 'The ID of the member which the courses should be retrieveds.' example: e7W6kP8wvjd3GRBz required: true schema: type: string /v0/modules: post: summary: 'Create a module' description: 'Create a module in the specified course. Returns the created module details upon successful creation.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"id\": \"e7W6kP8wvjd3GRBz\",\n \"object\": \"module\",\n \"created_at\": \"2024-01-22T12:56:04.000000Z\",\n \"name\": \"Example module\",\n \"type\": \"LESSON\",\n \"availability\": CONTINUOUS,\n \"position\": 1,\n \"course\": p5v87ERWKR3dkjyD,\n \"metadata\": {},\n }\n}" tags: - Modules requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The module name.' example: 'Ultimate Marketing Module' course: type: string description: 'The course id.' example: e7W6kP8wvjd3GRBz availability: type: string description: 'Defines the availability of the module. Can be one of the following values: "CONTINUOUS" for an ongoing module or "SCHEDULED" for a module with specific start and end dates. Must be one of CONTINUOUS or SCHEDULED.' example: CONTINUOUS start_date: type: string description: 'The start date of the module. The date should be in ISO 8601 format (e.g., "2025-02-17T00:00:00Z"). This field is required if the availability is "SCHEDULED". This field is required when availability is SCHEDULED. Must be a valid date.' example: '2025-02-17T00:00:00Z' end_date: type: string description: 'The end date of the module. The date should be in ISO 8601 format (e.g., "2025-03-18T00:00:00Z"). This field is required if the availability is "SCHEDULED" and must be after the start date. This field is required when availability is SCHEDULED or date. Must be a date after or equal to start_date.' example: '2025-03-17T00:00:00Z' metadata: type: object description: 'Metadata is an attribute that lets you store more information, structured as key-value pairs, for your own use and reference.
You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Keys and values are stored as strings and can contain any characters with one exception: you can’t use square brackets ([ and ]) in keys.' example: category: marketing level: advanced properties: [] required: - course '/v0/modules/{id}': post: summary: 'Update a module' description: 'Updates the details of an existing module based on the provided unique module ID. Any parameters not provided will be left unchanged. Returns the updated module details upon successful update.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": null,\n \"payload\": {\n \"id\": \"e7W6kP8wvjd3GRBz\",\n \"object\": \"module\",\n \"created_at\": \"2024-01-22T12:56:04.000000Z\",\n \"name\": \"Example module\",\n \"type\": \"LESSON\",\n \"availability\": CONTINUOUS,\n \"position\": 1,\n \"course\": p5v87ERWKR3dkjyD,\n \"metadata\": {},\n }\n}" tags: - Modules requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'The module name.' example: 'Ultimate Marketing Module' availability: type: string description: 'Defines the availability of the module. Can be one of the following values: "CONTINUOUS" for an ongoing module or "SCHEDULED" for a module with specific start and end dates. Must be one of CONTINUOUS or SCHEDULED.' example: CONTINUOUS start_date: type: string description: 'The start date of the module. The date should be in ISO 8601 format (e.g., "2025-02-17T00:00:00Z"). This field is required if the availability is "SCHEDULED". This field is required when availability is SCHEDULED. Must be a valid date.' example: '2025-02-17T00:00:00Z' end_date: type: string description: 'The end date of the module. The date should be in ISO 8601 format (e.g., "2025-03-18T00:00:00Z"). This field is required if the availability is "SCHEDULED" and must be after the start date. This field is required when availability is SCHEDULED or date. Must be a date after or equal to start_date.' example: '2025-03-17T00:00:00Z' metadata: type: object description: 'Metadata is an attribute that lets you store more information, structured as key-value pairs, for your own use and reference.
You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Keys and values are stored as strings and can contain any characters with one exception: you can’t use square brackets ([ and ]) in keys.' example: category: marketing level: advanced properties: [] parameters: - in: path name: id description: 'The ID of the requested module to update.' example: p5v87ERWKR3dkjyD required: true schema: type: string /v0/revoke: post: summary: 'Revoke Organization Access' description: 'Revoke a member access from organization.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: null properties: error: type: string example: null payload: type: string example: null tags: - Organization requestBody: required: true content: application/json: schema: type: object properties: member: type: string description: 'The ID of the member to revoke access to the organization.' example: e7W6kP8wvjd3GRBz required: - member /v0/invites: post: summary: 'Invite Member' description: 'Invite a member to join the organization or course.' parameters: - in: header name: Authorization description: '' example: 'Bearer {YOUR_API_KEY}' schema: type: string - in: header name: Content-Type description: '' example: application/json schema: type: string - in: header name: Accept description: '' example: application/json schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: null payload: id: R8dXqkpL1BaJl92y object: invite token: PgvInCUzTnNuTYpYWb2c url: null full_name: 'John Doe' role: customer discount_percentage: 0 course: null skip_email: false properties: error: type: string example: null payload: type: object example: id: R8dXqkpL1BaJl92y object: invite token: PgvInCUzTnNuTYpYWb2c url: null full_name: 'John Doe' role: customer discount_percentage: 0 course: null skip_email: false tags: - Organization requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The member''s emails to whom will sent an invitation. Must be a valid email address.' example: john.doe@example.com full_name: type: string description: 'The member''s full name.' example: 'John Doe' role: type: string description: 'The member''s role. Default to "customer". Must be one of customer, lecturer, admin, or owner.' example: customer discount_percentage: type: integer description: 'Must be between 0 and 100.' example: 100 course: type: string description: 'If set, the ID of the course the member will be invited to.' example: e7W6kP8wvjd3GRBz skip_email: type: boolean description: 'If set to true, an email notification will be skipped.' example: false required: - email tags: - name: Activities description: '' - name: Courses description: '' - name: Elements description: '' - name: Members description: '' - name: Modules description: '' - name: Organization description: '' components: securitySchemes: default: type: http scheme: bearer description: '' security: - default: []