Download OpenAPI specification:
The PlusPlus Public API enables you to programmatically manage your learning platform. Build integrations, automate workflows, and connect PlusPlus with your existing tools.
All requests require a Bearer token. Retrieve your API token from your account settings in PlusPlus, then include it in every request:
Authorization: Bearer pp_your_token_here
All resources are identified by a public_id (UUID). Internal numeric IDs are never
exposed. When creating relationships between resources (e.g., assigning a manager),
reference them by their public_id.
List endpoints return paginated results. Control pagination with:
page — Page number (default: 1)page_size — Items per page (default: 25, max: 100)All endpoints are rate-limited. Rate limit headers are included in every response:
X-RateLimit-Limit — Your rate limitX-RateLimit-Remaining — Remaining requestsX-RateLimit-Reset — Seconds until resetAll errors follow a consistent format:
{
"error": {
"code": "not_found",
"message": "Content item not found.",
"request_id": "req_a1b2c3d4"
}
}
Validation errors include field-level details:
{
"error": {
"code": "validation_error",
"message": "Validation failed.",
"request_id": "req_a1b2c3d4",
"field_errors": {
"email": ["A user with this email already exists."]
}
}
}
Create a new API token for authenticating with the PlusPlus API. The full token is only returned once in the response — store it securely.
| name required | string (Name) A human-readable label for the token. |
Expires At (string) or Expires At (null) (Expires At) When the token should expire. Omit for no expiration. |
{- "name": "CI/CD Pipeline",
- "expires_at": "2019-08-24T14:15:22Z"
}{ }Manage learners, admins, and organizers on your platform. Users can be created individually or in bulk via HRIS sync.
Retrieve a paginated list of users. Supports filtering by email, role, active status, manager, and group membership.
Email (string) or Email (null) (Email) Filter by exact email address. | |
Employee Id (string) or Employee Id (null) (Employee Id) Filter by employee ID. | |
Search (string) or Search (null) (Search) Search by name or email. | |
Is Active (boolean) or Is Active (null) (Is Active) Filter by active status. | |
Role (string) or Role (null) (Role) Filter by role (admin, organizer, user). | |
Manager (string) or Manager (null) (Manager) Filter by manager's | |
Group (string) or Group (null) (Group) Filter by group | |
| page | integer (Page) Default: 1 |
| page_size | integer (Page Size) Default: 25 |
{- "data": [
- {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "email": "jane.doe@company.com",
- "name": "Jane Doe",
- "role": "admin",
- "employee_id": "EMP-1234",
- "is_active": true,
- "manager": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "date_joined": "2019-08-24T14:15:22Z"
}
], - "meta": {
- "page": 0,
- "page_size": 0,
- "total_count": 0
}
}| email required | string (Email) The user's email address. |
| name required | string (Name) The user's display name. |
Role (string) or Role (null) (Role) Default: "user" Role to assign. One of: admin, organizer, user. | |
Employee Id (string) or Employee Id (null) (Employee Id) External employee identifier. | |
Manager (string) or Manager (null) (Manager) The |
{- "email": "jane.doe@company.com",
- "name": "Jane Doe",
- "role": "user",
- "employee_id": "EMP-1234",
- "manager": "f25737c2-acd5-4873-b8df-91d937ea8194"
}{ }| public_id required | string <uuid> (Public Id) |
Name (string) or Name (null) (Name) The user's display name. | |
Role (string) or Role (null) (Role) Role to assign. One of: admin, organizer, user. | |
Employee Id (string) or Employee Id (null) (Employee Id) External employee identifier. | |
Manager (string) or Manager (null) (Manager) The | |
Is Active (boolean) or Is Active (null) (Is Active) Set to false to deactivate the user. |
{- "name": "Jane Smith",
- "role": "string",
- "employee_id": "string",
- "manager": "f25737c2-acd5-4873-b8df-91d937ea8194",
- "is_active": true
}{ }Groups organize users into logical collections (teams, departments, cohorts). Use groups to scope assignments, enrollments, and reporting.
Retrieve a paginated list of groups. Supports filtering by name, source, and search.
Name (string) or Name (null) (Name) Filter by group name (case-insensitive, partial match). | |
Source (string) or Source (null) (Source) Filter by group source. | |
Search (string) or Search (null) (Search) Search by name or source. | |
| page | integer (Page) Default: 1 |
| page_size | integer (Page Size) Default: 25 |
{- "data": [
- {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Team",
- "source": "plusplus",
- "member_count": 0,
- "created": "2019-08-24T14:15:22Z",
- "modified": "2019-08-24T14:15:22Z"
}
], - "meta": {
- "page": 0,
- "page_size": 0,
- "total_count": 0
}
}| name required | string (Name) The group's display name. |
Source (string) or Source (null) (Source) Default: "plusplus" Source of the group. |
{- "name": "Engineering Team",
- "source": "plusplus"
}{ }| public_id required | string <uuid> (Public Id) |
Name (string) or Name (null) (Name) The group's display name. |
{- "name": "string"
}{ }| public_id required | string <uuid> (Public Id) |
| member_ids required | Array of strings <uuid> (Member Ids) [ items <uuid > ] List of user |
{- "member_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{ }Replace the entire membership list. Requires confirm_replace: true. If removing >50% of current members, also requires confirm_large_removal: true.
| public_id required | string <uuid> (Public Id) |
| member_ids required | Array of strings <uuid> (Member Ids) [ items <uuid > ] List of user |
| confirm_replace | boolean (Confirm Replace) Default: false Must be true to confirm the replacement. |
| confirm_large_removal | boolean (Confirm Large Removal) Default: false Must be true when removing more than 50% of current members. |
{- "member_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "confirm_replace": false,
- "confirm_large_removal": false
}{ }| public_id required | string <uuid> (Public Id) |
| member_ids required | Array of strings <uuid> (Member Ids) [ items <uuid > ] List of user |
{- "member_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{ }| public_id required | string <uuid> (Public Id) |
| member_ids required | Array of strings <uuid> (Member Ids) [ items <uuid > ] List of user |
{- "member_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{ }Replace the entire membership list. Requires confirm_replace: true. If removing >50% of current members, also requires confirm_large_removal: true.
| public_id required | string <uuid> (Public Id) |
| member_ids required | Array of strings <uuid> (Member Ids) [ items <uuid > ] List of user |
| confirm_replace | boolean (Confirm Replace) Default: false Must be true to confirm the replacement. |
| confirm_large_removal | boolean (Confirm Large Removal) Default: false Must be true when removing more than 50% of current members. |
{- "member_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "confirm_replace": false,
- "confirm_large_removal": false
}{ }| public_id required | string <uuid> (Public Id) |
| member_ids required | Array of strings <uuid> (Member Ids) [ items <uuid > ] List of user |
{- "member_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{ }Articles are text-based learning content. Create, update, and manage articles in your content catalog.
Retrieve a paginated list of articles. Supports filtering by search term, archived status, and visibility.
Search (string) or Search (null) (Search) Search articles by name. | |
Is Archived (boolean) or Is Archived (null) (Is Archived) Filter by archived status. | |
Is Hidden (boolean) or Is Hidden (null) (Is Hidden) Filter by visibility. | |
| page | integer (Page) Default: 1 |
| page_size | integer (Page Size) Default: 25 |
{- "data": [
- {
- "public_id": "c8a7f1e2-4a3b-4e5f-8c9d-0123456789ab",
- "name": "Introduction to Python",
- "content_type": "article",
- "description": "A short introduction to the Python programming language.",
- "is_archived": false,
- "is_hidden": false,
- "is_completable": false,
- "is_self_assignable": false,
- "duration_minutes": 30,
- "avg_feedback_rating": 4.2,
- "total_assignments": 128,
- "completed_assignments_count": 87,
- "created": "2019-08-24T14:15:22Z",
- "modified": "2019-08-24T14:15:22Z"
}
], - "meta": {
- "page": 0,
- "page_size": 0,
- "total_count": 0
}
}| name required | string (Name) The article title. |
Is Hidden (boolean) or Is Hidden (null) (Is Hidden) Default: false Whether the article is hidden from the catalog. | |
Is Self Assignable (boolean) or Is Self Assignable (null) (Is Self Assignable) Default: true Whether users can self-assign this article. | |
Duration (integer) or Duration (null) (Duration) Estimated reading time in minutes. |
{- "name": "Getting Started with PlusPlus",
- "is_hidden": false,
- "is_self_assignable": true,
- "duration": 15
}{ }| public_id required | string <uuid> (Public Id) |
Name (string) or Name (null) (Name) The article title. | |
Is Hidden (boolean) or Is Hidden (null) (Is Hidden) Whether the article is hidden from the catalog. | |
Is Self Assignable (boolean) or Is Self Assignable (null) (Is Self Assignable) Whether users can self-assign this article. | |
Duration (integer) or Duration (null) (Duration) Estimated reading time in minutes. |
{- "name": "string",
- "is_hidden": true,
- "is_self_assignable": true,
- "duration": 0
}{ }Assignments represent the relationship between a user and a piece of content. They track progress, completion, and feedback throughout the learning lifecycle.
Retrieve a paginated list of assignments. Supports filtering by user, content item, state, content type, overdue status, and date ranges.
User (string) or User (null) (User) Filter by user | |
Content Item (string) or Content Item (null) (Content Item) Filter by content item | |
State (string) or State (null) (State) Filter by assignment state. | |
Content Type (string) or Content Type (null) (Content Type) Filter by content item type. | |
Is Overdue (boolean) or Is Overdue (null) (Is Overdue) Filter overdue assignments only. | |
Due Date Gte (string) or Due Date Gte (null) (Due Date Gte) Filter assignments due on or after this date. | |
Due Date Lte (string) or Due Date Lte (null) (Due Date Lte) Filter assignments due on or before this date. | |
Created Gte (string) or Created Gte (null) (Created Gte) Filter assignments created on or after this date. | |
Created Lte (string) or Created Lte (null) (Created Lte) Filter assignments created on or before this date. | |
| page | integer (Page) Default: 1 |
| page_size | integer (Page Size) Default: 25 |
{- "data": [
- {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}
], - "meta": {
- "page": 0,
- "page_size": 0,
- "total_count": 0
}
}Assign a content item to a user. Returns 201 when a new assignment is created and 200 when an existing assignment is returned.
| user_id required | string <uuid> (User Id) The user's public ID. |
| content_item_id required | string <uuid> (Content Item Id) The content item's public ID. |
Due Date (string) or Due Date (null) (Due Date) Due date. | |
Expires At (string) or Expires At (null) (Expires At) Expiration datetime. |
{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "content_item_id": "1d920181-ae22-4bd9-8f02-8411f897d38f",
- "due_date": "2019-08-24",
- "expires_at": "2019-08-24T14:15:22Z"
}{- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}Retrieve a single assignment by its public_id. Returns 304 if the resource has not changed since the last request.
| public_id required | string <uuid> (Public Id) |
{- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}Update mutable assignment fields. Only provided fields are changed. Pass null for due_date to remove it. Returns 409 for enrollment assignments.
| public_id required | string <uuid> (Public Id) |
Due Date (string) or Due Date (null) (Due Date) Due date or null to remove. | |
Expires At (string) or Expires At (null) (Expires At) Expiration datetime or null to remove. |
{- "due_date": "2019-08-24",
- "expires_at": "2019-08-24T14:15:22Z"
}{- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}Marks an assignment as completed. Returns 409 if the assignment is already completed or dropped. Exempted assignments can still be completed.
| public_id required | string <uuid> (Public Id) |
{- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}Marks an assignment as dropped. Returns 409 if the assignment is already dropped or completed.
| public_id required | string <uuid> (Public Id) |
Reason (string) or Reason (null) (Reason) Reason for dropping the assignment. |
{- "reason": "string"
}{- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}Marks an assignment as exempted. Returns 409 if the assignment is not outstanding (already completed, dropped, or exempted).
| public_id required | string <uuid> (Public Id) |
{- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}Reverts a completed assignment back to outstanding. Returns 409 if the assignment is not completed.
| public_id required | string <uuid> (Public Id) |
{- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}Reverts an exempted assignment back to outstanding. Returns 409 if the assignment is not exempted.
| public_id required | string <uuid> (Public Id) |
{- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "content_item": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Engineering Onboarding",
- "content_type": "track"
}, - "state": "in_progress",
- "progress": 0.6,
- "score": 0.92,
- "is_success": true,
- "due_date": "2019-08-24",
- "is_overdue": true,
- "started_at": "2019-08-24T14:15:22Z",
- "completed_datetime": "2019-08-24T14:15:22Z",
- "dropped_at": "2019-08-24T14:15:22Z",
- "exempted_at": "2019-08-24T14:15:22Z",
- "expires_at": "2019-08-24T14:15:22Z",
- "feedback_rating": 4,
- "attempt": 1,
- "created": "2019-08-24T14:15:22Z"
}Cross-type content-item endpoints. List, search, update shared metadata (title, visibility, access groups), delete, and bulk archive/unarchive any content item regardless of type.
Retrieve a paginated list of content items across every type. Supports filtering by content type, visibility, archive status, channel, access group, and created/modified time ranges.
Search (string) or Search (null) (Search) Case-insensitive match on the item's name. | |
Content Type (string) or Content Type (null) (Content Type) Filter by content type. Accepts a single value or a comma-separated list, e.g. | |
Is Archived (boolean) or Is Archived (null) (Is Archived) Filter by archived status. | |
Is Hidden (boolean) or Is Hidden (null) (Is Hidden) Filter by visibility. | |
Created Gte (string) or Created Gte (null) (Created Gte) Only return items created at or after this ISO-8601 timestamp. | |
Created Lte (string) or Created Lte (null) (Created Lte) Only return items created at or before this ISO-8601 timestamp. | |
Modified Gte (string) or Modified Gte (null) (Modified Gte) Only return items modified at or after this ISO-8601 timestamp. | |
Modified Lte (string) or Modified Lte (null) (Modified Lte) Only return items modified at or before this ISO-8601 timestamp. | |
Channel (string) or Channel (null) (Channel) Filter by the channel's | |
Group (string) or Group (null) (Group) Filter by an internal group's | |
| page | integer (Page) Default: 1 |
| page_size | integer (Page Size) Default: 25 |
{- "data": [
- {
- "public_id": "c8a7f1e2-4a3b-4e5f-8c9d-0123456789ab",
- "name": "Introduction to Python",
- "content_type": "article",
- "description": "A short introduction to the Python programming language.",
- "is_archived": false,
- "is_hidden": false,
- "is_completable": false,
- "is_self_assignable": false,
- "duration_minutes": 30,
- "avg_feedback_rating": 4.2,
- "total_assignments": 128,
- "completed_assignments_count": 87,
- "created": "2019-08-24T14:15:22Z",
- "modified": "2019-08-24T14:15:22Z",
- "groups": [
- {
- "public_id": "c8a7f1e2-4a3b-4e5f-8c9d-0123456789ab",
- "name": "Engineering Team"
}
]
}
], - "meta": {
- "page": 0,
- "page_size": 0,
- "total_count": 0
}
}Update the shared, type-agnostic metadata of any content item: title, visibility, and access-group membership. Type-specific fields (e.g. a video's URL, a course's passing score) are edited through the type-specific endpoints.
Omitting groups leaves access-group membership unchanged. Sending [] clears all groups (making the item accessible to everyone, subject to channel rules).
| public_id required | string <uuid> (Public Id) |
Name (string) or Name (null) (Name) The content item's title. | |
Is Hidden (boolean) or Is Hidden (null) (Is Hidden) Whether the content item is hidden from the catalog. | |
Array of Groups (strings) or Groups (null) (Groups) Replaces the item's access groups with the given list of internal group |
{- "name": "string",
- "is_hidden": true,
- "groups": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{ }Archive up to 100 content items in a single request. Each item is processed independently in its own savepoint; per-item failures do not abort the batch. Items already archived count as successes (idempotent).
required | Array of objects (Items) <= 100 items The content items to operate on. Maximum of 100 items per request. |
{- "items": [
- {
- "public_id": "c8a7f1e2-4a3b-4e5f-8c9d-0123456789ab"
}
]
}{ }Restore up to 100 archived content items in a single request. Each item is processed independently in its own savepoint. Items that are not archived count as successes (idempotent).
required | Array of objects (Items) <= 100 items The content items to operate on. Maximum of 100 items per request. |
{- "items": [
- {
- "public_id": "c8a7f1e2-4a3b-4e5f-8c9d-0123456789ab"
}
]
}{ }Endpoints that operate on up to 100 resources in a single request. Per-item failures are isolated — a partial batch returns HTTP 207.
Archive up to 100 content items in a single request. Each item is processed independently in its own savepoint; per-item failures do not abort the batch. Items already archived count as successes (idempotent).
required | Array of objects (Items) <= 100 items The content items to operate on. Maximum of 100 items per request. |
{- "items": [
- {
- "public_id": "c8a7f1e2-4a3b-4e5f-8c9d-0123456789ab"
}
]
}{ }Restore up to 100 archived content items in a single request. Each item is processed independently in its own savepoint. Items that are not archived count as successes (idempotent).
required | Array of objects (Items) <= 100 items The content items to operate on. Maximum of 100 items per request. |
{- "items": [
- {
- "public_id": "c8a7f1e2-4a3b-4e5f-8c9d-0123456789ab"
}
]
}{ }Enrollments are event-specific registrations that track attendance status, attendance method (in-person or online), and check-in.
Retrieve a paginated list of event enrollments. Supports filtering by user, event, status, attendance method, and creation date range.
User (string) or User (null) (User) Filter by user | |
Event (string) or Event (null) (Event) Filter by event | |
Status (string) or Status (null) (Status) Filter by enrollment status. | |
Attendance Method (string) or Attendance Method (null) (Attendance Method) Filter by attendance method. | |
Created Gte (string) or Created Gte (null) (Created Gte) Filter enrollments created at or after this ISO-8601 timestamp. | |
Created Lte (string) or Created Lte (null) (Created Lte) Filter enrollments created at or before this ISO-8601 timestamp. | |
| page | integer (Page) Default: 1 |
| page_size | integer (Page Size) Default: 25 |
{- "data": [
- {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "user": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "Jane Doe",
- "email": "jane.doe@company.com"
}, - "event": {
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "React Workshop - March 2026"
}, - "status": "enrolled",
- "attendance_method": "in_person",
- "checkin_datetime": "2019-08-24T14:15:22Z",
- "state": "not_started",
- "created": "2019-08-24T14:15:22Z"
}
], - "meta": {
- "page": 0,
- "page_size": 0,
- "total_count": 0
}
}