Read and author HiveLearn courses, events, quizzes, certificates, resources, leaderboards, tracks.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your HiveLearn API key. Create one at Admin → API Keys in your HiveLearn community.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Assign a tag to a member. Idempotent: returns the existing assignment if already tagged.
Tag uuid from list_member_tags
Member's user (profile) uuid, not the membership row id
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Assign a tag to a member. Idempotent: returns the existing assignment if already tagged.
| Argument | Type | Description |
|---|---|---|
| tag_id* | string | Tag uuid from list_member_tags |
| user_id* | string | Member's user (profile) uuid, not the membership row id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id",
"tag_id"
],
"properties": {
"tag_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Tag uuid from list_member_tags"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Member's user (profile) uuid, not the membership row id"
}
}
}Add a course to a track at a given position. sort_order sets the order within the track. Set unlock_after_course_id to a prerequisite course that must be completed first (omit/null for no gate). is_required defaults to true.
| Argument | Type | Description |
|---|---|---|
| track_id* | string | |
| course_id* | string | |
| sort_order* | integer | Position within the track |
| is_required | boolean | Defaults to true |
| unlock_after_course_id | any | Prerequisite course id, or null for no gate |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"track_id",
"course_id",
"sort_order"
],
"properties": {
"track_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sort_order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Position within the track"
},
"is_required": {
"type": "boolean",
"description": "Defaults to true"
},
"unlock_after_course_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
],
"description": "Prerequisite course id, or null for no gate"
}
}
}Issue a certificate of completion to a user for a course. Normally the platform auto-issues on course completion — use this tool for bulk backfill or manual awards.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | |
| course_id* | string | |
| expires_at | any | ISO timestamp; omit or null for no expiry |
| final_score | integer | |
| completion_date | string | ISO timestamp; defaults to now |
| instructor_name | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id",
"course_id"
],
"properties": {
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"expires_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "ISO timestamp; omit or null for no expiry"
},
"final_score": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"completion_date": {
"type": "string",
"description": "ISO timestamp; defaults to now"
},
"instructor_name": {
"type": "string"
}
}
}Create an empty course (no modules/lessons). Prefer hivelearn_create_course_outline when you already know the structure — it scaffolds course + modules + lesson placeholders in one call.
| Argument | Type | Description |
|---|---|---|
| tags | array | |
| title* | string | |
| difficulty | any | |
| visibility | string | Defaults to all_members |
| description | string | |
| thumbnail_url | any | |
| instructor_name | any | |
| description_json | object | |
| description_format | string | |
| instructor_avatar_url | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string",
"minLength": 1
},
"difficulty": {
"anyOf": [
{
"enum": [
"beginner",
"intermediate",
"advanced"
],
"type": "string"
},
{
"type": "null"
}
]
},
"visibility": {
"enum": [
"all_members",
"admin_only"
],
"type": "string",
"description": "Defaults to all_members"
},
"description": {
"type": "string"
},
"thumbnail_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"instructor_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
},
"instructor_avatar_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
}
}
}Scaffold an entire course in one call: course + modules + lesson placeholders (title/description only, no content yet). After this, loop over the returned lesson ids with hivelearn_update_lesson_content to fill in video/document URLs. This is the preferred first step when authoring a new course from a plan.
| Argument | Type | Description |
|---|---|---|
| tags | array | |
| title* | string | |
| modules* | array | Ordered list of modules; each with optional lesson placeholders |
| difficulty | any | |
| visibility | string | |
| description | string | |
| thumbnail_url | any | |
| instructor_name | any | |
| description_json | object | |
| description_format | string |
Start a discussion as the API key's owner. It is published and visible to all members immediately, and notifies every member who has new-discussion notifications on.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tag list |
| title* | string | Discussion title |
| content | string | Plain-text/markdown body. Required unless content_json is given. |
| category | string | Category label, default "General" |
| content_json | any | Tiptap JSON body (alternative to content) |
| content_format | string | Defaults to 'tiptap_json' with content_json, else 'markdown' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Tag list"
},
"title": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Discussion title"
},
"content": {
"type": "string",
"maxLength": 20000,
"description": "Plain-text/markdown body. Required unless content_json is given."
},
"category": {
"type": "string",
"description": "Category label, default \"General\""
},
"content_json": {
"description": "Tiptap JSON body (alternative to content)"
},
"content_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string",
"description": "Defaults to 'tiptap_json' with content_json, else 'markdown'"
}
}
}Reply to a discussion as the API key's owner. The reply is visible to all members immediately and notifies the discussion author. Fails with 409 if the discussion is locked. Set parent_reply_id to nest under another reply.
| Argument | Type | Description |
|---|---|---|
| id* | string | Discussion uuid |
| content | string | Plain-text/markdown body. Required unless content_json is given. |
| content_json | any | Tiptap JSON body (alternative to content) |
| content_format | string | Defaults to 'tiptap_json' with content_json, else 'markdown' |
| parent_reply_id | string | Reply uuid in the same discussion to nest under |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Discussion uuid"
},
"content": {
"type": "string",
"maxLength": 20000,
"description": "Plain-text/markdown body. Required unless content_json is given."
},
"content_json": {
"description": "Tiptap JSON body (alternative to content)"
},
"content_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string",
"description": "Defaults to 'tiptap_json' with content_json, else 'markdown'"
},
"parent_reply_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Reply uuid in the same discussion to nest under"
}
}
}Enroll a user in a course. Both user_id and course_id must belong to the authenticated community. Duplicate enrollments are rejected.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | |
| course_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id",
"course_id"
],
"properties": {
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Create a calendar event. Dates are ISO 8601 strings in UTC. For virtual events set meeting_url; for in-person set location. event_type controls which field the UI shows.
| Argument | Type | Description |
|---|---|---|
| tags | array | |
| title* | string | |
| end_date* | string | ISO 8601 timestamp |
| location | string | |
| timezone | string | IANA tz, e.g. "America/New_York" |
| event_type* | string | |
| start_date* | string | ISO 8601 timestamp |
| description | string | |
| meeting_url | string | |
| max_attendees | integer | |
| cover_image_url |
Add a lesson to a course. content_type must match content_url (e.g. youtube URL → content_type:youtube). Set module_id=null to leave the lesson unassigned; otherwise pass a module uuid from list_course_modules.
| Argument | Type | Description |
|---|---|---|
| title* | string | |
| course_id* | string | |
| module_id | any | |
| is_preview | boolean | If true, visible to non-enrolled users |
| sort_order | integer | |
| content_url* | string | |
| description | any | |
| content_json | object | |
| content_type | string | |
| is_published | boolean | |
| thumbnail_url |
Add a private admin note to a member. The author is the API key's creator.
| Argument | Type | Description |
|---|---|---|
| note* | string | Note text |
| user_id* | string | Member's user (profile) uuid, not the membership row id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id",
"note"
],
"properties": {
"note": {
"type": "string",
"maxLength": 10000,
"minLength": 1,
"description": "Note text"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Member's user (profile) uuid, not the membership row id"
}
}
}Create a member tag. Names are unique per community (409 on duplicate).
| Argument | Type | Description |
|---|---|---|
| name* | string | Tag name |
| color | string | Hex color, e.g. #4361EE |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Tag name"
},
"color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$",
"description": "Hex color, e.g. #4361EE"
}
}
}Add a module to a course. sort_order is optional — server auto-appends if omitted.
| Argument | Type | Description |
|---|---|---|
| title* | string | |
| course_id* | string | |
| sort_order | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"course_id",
"title"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sort_order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Publish a new post to the community feed. Either content (markdown) or content_json (tiptap) is required. content_format must match which field you sent. category is optional — omit for default "general".
| Argument | Type | Description |
|---|---|---|
| content | string | Markdown body (use when content_format=markdown) |
| category | string | |
| content_json | object | Tiptap JSON doc (use when content_format=tiptap_json) |
| content_format | string | Defaults to markdown |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"content": {
"type": "string",
"description": "Markdown body (use when content_format=markdown)"
},
"category": {
"type": "string"
},
"content_json": {
"type": "object",
"description": "Tiptap JSON doc (use when content_format=tiptap_json)",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"content_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string",
"description": "Defaults to markdown"
}
}
}Comment on a feed post as the API key's owner. The comment is visible to all members immediately, notifies the post author, and awards comment points. Set parent_comment_id to reply to another comment on the same post.
| Argument | Type | Description |
|---|---|---|
| content | string | Plain-text/markdown body. Required unless content_json is given. |
| post_id* | string | Post uuid (from list_posts) |
| content_json | any | Tiptap JSON body (alternative to content) |
| content_format | string | Defaults to 'tiptap_json' with content_json, else 'markdown' |
| parent_comment_id | string | Comment uuid on the same post to reply to |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"post_id"
],
"properties": {
"content": {
"type": "string",
"maxLength": 20000,
"description": "Plain-text/markdown body. Required unless content_json is given."
},
"post_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Post uuid (from list_posts)"
},
"content_json": {
"description": "Tiptap JSON body (alternative to content)"
},
"content_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string",
"description": "Defaults to 'tiptap_json' with content_json, else 'markdown'"
},
"parent_comment_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Comment uuid on the same post to reply to"
}
}
}Create an empty question bank. Add questions with hivelearn_create_question_bank_item.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| description | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
}
}
}Add a question to a bank. Supports all 6 types; supply the answer field for the type: options (multiple_choice / multi_select), correct_answer (true_false), accepted_answers (fill_in_blank), pairs (matching), items (ordering).
| Argument | Type | Description |
|---|---|---|
| items | array | ordering only; correct order is position 1..n, or array order if positions are omitted |
| pairs | array | matching only; at least 2 pairs |
| points | integer | Defaults to 1 |
| bank_id* | string | |
| options | array | multiple_choice (exactly one is_correct:true) or multi_select (one or more). 2-12 entries. |
| explanation | any | |
| question_text* | string | |
| question_type* | string | |
| correct_answer | boolean | true_false only |
Create a quiz attached to a lesson. passing_score is 0-100 (percent). Omit time_limit_seconds or max_attempts for unlimited.
| Argument | Type | Description |
|---|---|---|
| title* | string | |
| lesson_id* | string | |
| description | any | |
| max_attempts | any | |
| passing_score | integer | |
| shuffle_questions | boolean | |
| time_limit_seconds | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"lesson_id",
"title"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"lesson_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"max_attempts": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"passing_score": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"shuffle_questions": {
"type": "boolean"
},
"time_limit_seconds": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
}
}
}Add a question to a quiz. Supply the answer field for the type: multiple_choice → options [{text, is_correct}] with exactly one is_correct:true; multi_select → options with one or more correct; true_false → correct_answer (boolean); fill_in_blank → accepted_answers; matching → pairs [{left, right}]; ordering → items [{text}] in correct order (or with position 1..n).
| Argument | Type | Description |
|---|---|---|
| items | array | ordering only; correct order is position 1..n, or array order if positions are omitted |
| pairs | array | matching only; at least 2 pairs |
| points | integer | Defaults to 1 |
| options | array | multiple_choice (exactly one is_correct:true) or multi_select (one or more). 2-12 entries. |
| quiz_id* | string | |
| sort_order | integer | |
| explanation | any | |
| question_text* | string | |
| question_type* | string |
Add a resource to the community library. Supply either resource_url (external link) or file_url (already-uploaded file) — at least one is required. price must be > 0 if set (omit for free). access_level defaults to public.
| Argument | Type | Description |
|---|---|---|
| tags | array | |
| price | number | One-time price (> 0); omit for free |
| title* | string | |
| file_url | string | For already-uploaded file resources |
| folder_id | string | |
| is_premium | boolean | |
| description | string | |
| access_level | string | Defaults to public |
| is_published | boolean | Defaults to true |
| resource_url | string | For external-link resources |
| resource_type |
Create a resource-library folder. parent_folder_id (optional) must be a folder in the same community. Names must be unique among siblings (409). price must be > 0 if set.
| Argument | Type | Description |
|---|---|---|
| icon | string | Icon name, defaults to "folder" |
| name* | string | |
| color | string | #RRGGBB hex color |
| price | any | |
| position | integer | Sort order among siblings |
| description | string | |
| parent_folder_id | any | Parent folder; omit/null for top level |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"icon": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Icon name, defaults to \"folder\""
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$",
"description": "#RRGGBB hex color"
},
"price": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"position": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Sort order among siblings"
},
"description": {
"type": "string",
"maxLength": 2000
},
"parent_folder_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
],
"description": "Parent folder; omit/null for top level"
}
}
}Create a learning track (curated course sequence). After this, add courses in order with hivelearn_add_track_course. is_published defaults to false — publish once the curriculum is set.
| Argument | Type | Description |
|---|---|---|
| title* | string | |
| description | string | |
| is_featured | boolean | |
| is_published | boolean | Defaults to false |
| thumbnail_url | string | |
| estimated_hours | integer | |
| difficulty_level | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"description": {
"type": "string",
"maxLength": 20000
},
"is_featured": {
"type": "boolean"
},
"is_published": {
"type": "boolean",
"description": "Defaults to false"
},
"thumbnail_url": {
"type": "string",
"format": "uri"
},
"estimated_hours": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"difficulty_level": {
"enum": [
"beginner",
"intermediate",
"advanced"
],
"type": "string"
}
}
}Generate a full course with AI and return a job_id to poll with hivelearn_get_ai_job. SPENDS the key creator's AI credits: 1 credit, or 5 for hybrid_chapters (paid plans only), plus 1 when include_recap_video is true in a video mode. Confirm with the user before calling. Requires the explicit generate:ai_courses scope, which admin:* does NOT include. source_type video_url imports a public YouTube/Vimeo/Loom link; every other type needs a file already uploaded to HiveLearn media storage (external URLs are rejected). Limited to 2 running and 10 per hour.
| Argument | Type | Description |
|---|---|---|
| source_url* | string | Video link for video_url; otherwise an https URL on the HiveLearn media host |
| video_mode | string | none/intro_only = 1 credit, hybrid_chapters = 5, +1 for include_recap_video in a video mode. Default intro_only; forced to none for video_url (always 1 credit) |
| context_url | string | Optional supporting document on the HiveLearn media host |
| source_type* | string | |
| style_preset | string | Thumbnail style preset key; unknown values are ignored |
| content_depth | string | |
| brand_intensity | integer | |
AI credit balance for the API key's creator: monthly allowance remaining, purchased top-ups (never expire), total available, reset date, and whether the AI Course Builder is enabled for this community. Check this before generating. Needs scope read:ai.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Status and progress of one AI generation job. Poll after hivelearn_generate_ai_course. status is queued | processing | completed | failed | refunded; current_step shows the phase; course_id is the resulting course. A job that stays queued with started_at null was never picked up and is failed and refunded automatically within about an hour. Needs scope read:ai.
| Argument | Type | Description |
|---|---|---|
| job_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Community analytics over a trailing window of `days` (default 30): total and new members, posts created, enrollments (total, new, completions, completion rate), published courses, and events created/held with RSVPs and check-ins. Definitions match the admin dashboard. Requires read:analytics.
| Argument | Type | Description |
|---|---|---|
| days | integer | Trailing window in days (1-365), default 30 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Trailing window in days (1-365), default 30"
}
}
}Fetch one assignment submission: text/url, status, instructor feedback and reviewer. Requires read:courses.
| Argument | Type | Description |
|---|---|---|
| id* | string | Submission uuid |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Submission uuid"
}
}
}Fetch one certificate by id. Includes verification_code and download URL.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Returns the community the current API key is scoped to. Use this first whenever you need the community_id, owner, slug, or tier — the API key determines tenancy, you cannot switch community.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Fetch one course with full metadata (description, instructor, tags, flags). For the lesson tree use hivelearn_get_course_structure instead.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Per-course analytics for the community (newest course first): enrollments, new enrollments and completions in the last `days`, completion rate, average progress, and average rating. Paginated. Requires read:analytics.
| Argument | Type | Description |
|---|---|---|
| days | integer | Trailing window in days (1-365), default 30 |
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Trailing window in days (1-365), default 30"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
}
}
}Quiz-score gradebook for a course: per-user quiz attempts, scores, pass/fail. Use for analytics or grading dashboards.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| user_id | string | |
| course_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"course_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Aggregate lesson-completion progress for a course across enrolled users. Returns per-user percent_complete, last_accessed_at, completed_lesson_count.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| user_id | string | Scope to one user |
| course_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"course_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Scope to one user"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Return a compact titles-only tree of the course: course → modules → lessons. Ideal for agents to plan reorders, spot empty lessons, or summarize a course. Does NOT include lesson body content.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Fetch one discussion by uuid, with author. Use list_discussion_replies for its replies.
| Argument | Type | Description |
|---|---|---|
| id* | string | Discussion uuid (from list_discussions) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Discussion uuid (from list_discussions)"
}
}
}Fetch one enrollment with status and progress.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Fetch one event by id with full description and RSVP metadata.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Ranked member leaderboard for the community. period chooses the window: all_time (default), 30_day, or 7_day. Each entry carries rank and the points for the selected period, plus level info.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| period | string | Defaults to all_time |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"period": {
"enum": [
"all_time",
"30_day",
"7_day"
],
"type": "string",
"description": "Defaults to all_time"
}
}
}Fetch a single member by profile uuid. Returns the same fields as list_members for one row.
| Argument | Type | Description |
|---|---|---|
| id* | string | Profile uuid (matches the id from list_members) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Profile uuid (matches the id from list_members)"
}
}
}Get a member's health score (engagement, activity, risk level). 404 until the daily job has scored them.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | Member's user (profile) uuid, not the membership row id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Member's user (profile) uuid, not the membership row id"
}
}
}Full points breakdown for one member (by auth user id) in the community: total, per-category (posts/comments/events/courses/engagement), period totals, level. 404 if the member has no points record here.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | The auth user id (community_members.user_id) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The auth user id (community_members.user_id)"
}
}
}Fetch one post with full content. Reply thread is NOT included — this is the post itself only.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Fetch one question bank with its item_count. Items are listed separately via hivelearn_list_question_bank_items.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Fetch one quiz with metadata (passing_score, time_limit, max_attempts). Questions are NOT included — use hivelearn_list_quiz_questions.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Fetch one published resource by id, with joined author. 404 if unpublished or in another community.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Fetch one resource folder by id, with its resource_count. 404 if it belongs to another community.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Fetch one learning track by id with full metadata. For its ordered curriculum use hivelearn_list_track_courses.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Per-member progress through a learning track: enrolled_at, started_at, completed_at, total_courses, completed counts. Use for cohort/track analytics.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| track_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"track_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"track_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Review an assignment submission: sets status (reviewed, approved, revision_requested, submitted) and instructor feedback, recorded as reviewed by the API key's creator. This changes a member's record and the student will see it. revision_requested requires feedback. Requires write:grades.
| Argument | Type | Description |
|---|---|---|
| id* | string | Submission uuid |
| status* | string | |
| feedback | string | Feedback shown to the student |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Submission uuid"
},
"status": {
"enum": [
"submitted",
"reviewed",
"approved",
"revision_requested"
],
"type": "string"
},
"feedback": {
"type": "string",
"maxLength": 10000,
"description": "Feedback shown to the student"
}
}
}List the key creator's AI course generation jobs in this community, newest first, with status and progress. Needs scope read:ai.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
}
}
}List assignment submissions in the community, newest first, with student profile and lesson title. Filter by course_id, lesson_id or status. Requires read:courses.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| status | string | |
| course_id | string | |
| lesson_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"status": {
"enum": [
"submitted",
"reviewed",
"approved",
"revision_requested"
],
"type": "string"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"lesson_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List issued certificates, optionally scoped to one user or one course. Returns id, user, course, verification_code, status, issued_at.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| user_id | string | |
| course_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List lessons of a course, optionally filtered to one module. Use hivelearn_get_course_structure for a nested tree.
| Argument | Type | Description |
|---|---|---|
| course_id* | string | |
| module_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"course_id"
],
"properties": {
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"module_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List modules (sections) of a course, ordered by sort_order. Modules group lessons; a course has 1..N modules.
| Argument | Type | Description |
|---|---|---|
| course_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"course_id"
],
"properties": {
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List courses in the authenticated community. status=published returns only courses visible to learners. Returns id, title, visibility, is_published, thumbnail_url, timestamps.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| status | string | Defaults to "all" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"status": {
"enum": [
"draft",
"published",
"all"
],
"type": "string",
"description": "Defaults to \"all\""
}
}
}List replies in a discussion, oldest first. Returns id, content, parent_reply_id, is_accepted_answer, author, likes_count.
| Argument | Type | Description |
|---|---|---|
| id* | string | Discussion uuid |
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Discussion uuid"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
}
}
}List published discussions (forum threads), pinned first then newest. Returns id, title, content, category, tags, reply/like counts, is_locked, author.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| category | string | Filter by exact category |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"category": {
"type": "string",
"description": "Filter by exact category"
}
}
}List course enrollments, optionally scoped to one course or one user. Returns enrollment_id, user_id, course_id, status, progress %, enrolled_at, completed_at.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| user_id | string | |
| course_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List an event's attendees with check-in status and basic profile. source='rsvp' (default) for free RSVPs, 'ticket' for paid ticket purchases. Requires scope read:events.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| source | string | 'rsvp' (default) or 'ticket' |
| event_id* | string | Event UUID |
| rsvp_status | string | Filter RSVPs (source=rsvp) |
| payment_status | string | Filter tickets (source=ticket) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"event_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"source": {
"enum": [
"rsvp",
"ticket"
],
"type": "string",
"description": "'rsvp' (default) or 'ticket'"
},
"event_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Event UUID"
},
"rsvp_status": {
"enum": [
"going",
"maybe",
"not_going"
],
"type": "string",
"description": "Filter RSVPs (source=rsvp)"
},
"payment_status": {
"enum": [
"pending",
"succeeded",
"failed",
"refunded",
"partially_refunded"
],
"type": "string",
"description": "Filter tickets (source=ticket)"
}
}
}List an event's waitlist in queue order (oldest first) with position and basic profile. Requires scope read:events.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| event_id* | string | Event UUID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"event_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"event_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Event UUID"
}
}
}List community events. Use upcoming=true for future events only (recommended for calendar UI). Returns id, title, start/end dates, event_type, location/meeting_url, attendee counts.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| upcoming | boolean | If true, only events with start_date in the future |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"upcoming": {
"type": "boolean",
"description": "If true, only events with start_date in the future"
}
}
}List private admin notes on a member, newest first.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| user_id* | string | Member's user (profile) uuid, not the membership row id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Member's user (profile) uuid, not the membership row id"
}
}
}List the tags assigned to a member.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | Member's user (profile) uuid, not the membership row id |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Member's user (profile) uuid, not the membership row id"
}
}
}List the community's member tags (id, name, color).
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
}
}
}List members of the authenticated community. Returns id (profile uuid), role, email, display_name, avatar_url, and joined_at. Filter by role to find admins/owners.
| Argument | Type | Description |
|---|---|---|
| role | string | Restrict to a single role |
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"role": {
"enum": [
"owner",
"admin",
"moderator",
"member"
],
"type": "string",
"description": "Restrict to a single role"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
}
}
}List comments on a feed post, oldest first. Returns id, content, parent_comment_id, author, likes_count, timestamps. 404 if the post is not in this community.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| post_id* | string | Post uuid (from list_posts) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"post_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"post_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Post uuid (from list_posts)"
}
}
}List community feed posts, newest first. Use category to filter (e.g. "announcements"). Returns id, title, content, category, author, reply counts, timestamps.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| category | string | Filter by category slug |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"category": {
"type": "string",
"description": "Filter by category slug"
}
}
}List the questions in a bank, WITH the answer key (is_correct, pairs/items, explanation). Authoring view for admins.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| bank_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"bank_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"bank_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List question banks (reusable question pools that bank-draw quizzes sample from), newest first.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
}
}
}List attempts for one quiz: learner, score (0-100), points, passed, started_at and completed_at (null = in progress). Never includes answers or answer keys. Requires read:courses.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| quiz_id* | string | Quiz uuid |
| user_id | string | Only this learner |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quiz_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"quiz_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Quiz uuid"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Only this learner"
}
}
}List all questions for a quiz, ordered by sort_order. Each question carries its options and correct answer.
| Argument | Type | Description |
|---|---|---|
| quiz_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quiz_id"
],
"properties": {
"quiz_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List quizzes, optionally scoped to a course or a specific lesson. Each quiz belongs to one lesson.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| course_id | string | |
| lesson_id | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"lesson_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List resource-library folders in the authenticated community, ordered by position then name. Folders nest via parent_folder_id; pass parent_folder_id="root" for top-level only, or a folder id for its children. Each folder includes resource_count.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| parent_folder_id | string | Folder id, or "root" for top-level folders |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"parent_folder_id": {
"type": "string",
"description": "Folder id, or \"root\" for top-level folders"
}
}
}List published resources in the authenticated community, newest first. Filter by folder_id, resource_type, or access_level. Returns id, title, resource_type, resource_url/file_url, access_level, counts (downloads, views, favorites), author. The internal storage key is never exposed.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| folder_id | string | Filter to a single resource folder |
| access_level | string | |
| resource_type | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"folder_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Filter to a single resource folder"
},
"access_level": {
"enum": [
"public",
"members",
"premium"
],
"type": "string"
},
"resource_type": {
"enum": [
"guide",
"toolkit",
"course",
"checklist",
"template",
"other"
],
"type": "string"
}
}
}List members matching a segment's rules, evaluated server-side the same way the admin CRM does.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
| segment_id* | string | Segment uuid |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"segment_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
},
"segment_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Segment uuid"
}
}
}List saved member segments with their filter rules.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
}
}
}Return the ordered curriculum of a track: its courses with sort_order, is_required, and unlock_after_course_id (prerequisite gating).
| Argument | Type | Description |
|---|---|---|
| track_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"track_id"
],
"properties": {
"track_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List published learning tracks (curated course sequences) in the community, newest first. Returns id, title, description, difficulty_level, estimated_hours, flags.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size, default 20 |
| offset | integer | Rows to skip, default 0 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size, default 20"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip, default 0"
}
}
}Publish a course: sets is_published=true after validating that every lesson has content_url. Returns error if any lesson is still empty — run hivelearn_get_course_structure to diagnose.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Set the full lesson order within a module in one atomic call. Pass the desired final order as lesson_ids — every lesson currently in the module must appear exactly once.
| Argument | Type | Description |
|---|---|---|
| module_id* | string | |
| lesson_ids* | array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"module_id",
"lesson_ids"
],
"properties": {
"module_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"lesson_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"minItems": 1
}
}
}Change a certificate status. Use "revoked" to invalidate (verify endpoint will reject).
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| status* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"status"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"status": {
"enum": [
"active",
"revoked",
"expired"
],
"type": "string"
}
}
}Edit course metadata. Use hivelearn_publish_course instead of setting is_published=true directly — publish runs validation.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| tags | array | |
| title | string | |
| is_pinned | boolean | |
| difficulty | any | |
| visibility | string | |
| description | any | |
| is_featured | boolean | |
| is_published | boolean | |
| thumbnail_url | any | |
| instructor_name | any | |
| description_json |
Edit an event. Set is_cancelled=true to cancel (preserves history). Set max_attendees=null to lift the cap.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| tags | array | |
| title | string | |
| end_date | string | |
| location | string | |
| timezone | string | |
| event_type | string | |
| start_date | string | |
| description | string | |
| meeting_url | string | |
| is_cancelled | boolean | |
| max_attendees | any |
Edit lesson metadata or move it between modules. To edit ONLY the content body use hivelearn_update_lesson_content (narrower scope, safer).
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| title | string | |
| module_id | any | |
| is_preview | boolean | |
| sort_order | integer | |
| content_url | string | |
| description | any | |
| content_json | object | |
| content_type | string | |
| is_published | boolean | |
| thumbnail_url | any | |
| content_format |
Replace just the content of a lesson — URL, content_type, and optional description/duration/thumbnail. Narrower than update_lesson; safe for bulk agent writes. Does NOT change title, sort_order, or module assignment.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| content_url | string | |
| description | any | |
| content_json | object | |
| content_type | string | |
| thumbnail_url | any | |
| content_format | string | |
| duration_seconds | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"content_url": {
"type": "string",
"format": "uri"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"content_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"content_type": {
"enum": [
"youtube",
"google_drive",
"video",
"image",
"document",
"pitch"
],
"type": "string"
},
"thumbnail_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"content_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
},
"duration_seconds": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Change a member's role or ban status. role accepts member/moderator/admin (owner cannot be assigned via the API). Set is_banned=true to ban, false to lift. At least one field required.
| Argument | Type | Description |
|---|---|---|
| id* | string | Profile uuid (matches the id from list_members) |
| role | string | |
| is_banned | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Profile uuid (matches the id from list_members)"
},
"role": {
"enum": [
"member",
"moderator",
"admin"
],
"type": "string"
},
"is_banned": {
"type": "boolean"
}
}
}Rename or reorder a module. To reorder lessons within a module use hivelearn_reorder_module_lessons.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| title | string | |
| sort_order | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"title": {
"type": "string"
},
"sort_order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Edit an existing post. Only include fields you want to change. Use is_pinned to pin/unpin a post from the top of the feed.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| content | string | |
| category | string | |
| is_pinned | boolean | |
| content_json | object | |
| content_format | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"content": {
"type": "string"
},
"category": {
"type": "string"
},
"is_pinned": {
"type": "boolean"
},
"content_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"content_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
}
}
}Rename a question bank or change its description.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| name | string | |
| description | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
}
}
}Edit a bank question. Changing question_type or any answer field rebuilds the answer key, so resupply the answer field for the (new) type.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| items | array | ordering only; correct order is position 1..n, or array order if positions are omitted |
| pairs | array | matching only; at least 2 pairs |
| points | integer | |
| options | array | multiple_choice (exactly one is_correct:true) or multi_select (one or more). 2-12 entries. |
| explanation | any | |
| question_text | string | |
| question_type | string | |
| correct_answer | boolean | true_false only |
| accepted_answers | array | fill_in_blank only; matched case-insensitively |
Edit quiz settings. Cannot move a quiz to a different lesson — create a new one instead.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| title | string | |
| description | any | |
| max_attempts | any | |
| passing_score | integer | |
| shuffle_questions | boolean | |
| time_limit_seconds | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"title": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"max_attempts": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"passing_score": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"shuffle_questions": {
"type": "boolean"
},
"time_limit_seconds": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
}
}
}Edit a question. Sending question_type or any answer field (options, correct_answer, accepted_answers, pairs, items) rebuilds the answer key, so supply the full answer for the effective type.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| items | array | ordering only; correct order is position 1..n, or array order if positions are omitted |
| pairs | array | matching only; at least 2 pairs |
| points | integer | |
| options | array | multiple_choice (exactly one is_correct:true) or multi_select (one or more). 2-12 entries. |
| sort_order | integer | |
| explanation | any | |
| question_text | string | |
| question_type | string | |
| correct_answer | boolean | true_false only |
Edit a resource. Only include fields you want to change. Set is_featured to surface it; set is_published=false to unlist.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| tags | array | |
| price | any | |
| title | string | |
| file_url | string | |
| folder_id | any | |
| is_premium | boolean | |
| description | string | |
| is_featured | boolean | |
| access_level | string | |
| is_published | boolean | |
| resource_url | string |
Update a resource folder (rename, recolor, reorder, reprice, or move). parent_folder_id=null moves it to top level; moving a folder into itself or a descendant is rejected. Only supplied fields change.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| icon | string | |
| name | string | |
| color | string | #RRGGBB hex color |
| price | any | |
| position | integer | |
| description | any | |
| parent_folder_id | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"icon": {
"type": "string",
"maxLength": 50,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$",
"description": "#RRGGBB hex color"
},
"price": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"position": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"parent_folder_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
}
}
}Edit a learning track. Only include fields you want to change. Set is_published=true to make it live.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| title | string | |
| description | string | |
| is_featured | boolean | |
| is_published | boolean | |
| thumbnail_url | any | |
| estimated_hours | any | |
| difficulty_level | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"description": {
"type": "string",
"maxLength": 20000
},
"is_featured": {
"type": "boolean"
},
"is_published": {
"type": "boolean"
},
"thumbnail_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"estimated_hours": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
]
},
"difficulty_level": {
"enum": [
"beginner",
"intermediate",
"advanced"
],
"type": "string"
}
}
}Public verification lookup by verification_code. Returns { valid, certificate } if found and active. Use this when a third party presents a certificate code.
| Argument | Type | Description |
|---|---|---|
| code* | string | The verification_code printed on the certificate |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "The verification_code printed on the certificate"
}
}
}| instructor_avatar_url | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"modules"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string",
"minLength": 1
},
"modules": {
"type": "array",
"items": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"lessons": {
"type": "array",
"items": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
}
}
}
}
}
},
"minItems": 1,
"description": "Ordered list of modules; each with optional lesson placeholders"
},
"difficulty": {
"anyOf": [
{
"enum": [
"beginner",
"intermediate",
"advanced"
],
"type": "string"
},
{
"type": "null"
}
]
},
"visibility": {
"enum": [
"all_members",
"admin_only"
],
"type": "string"
},
"description": {
"type": "string"
},
"thumbnail_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"instructor_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
},
"instructor_avatar_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
}
}
}| string |
| description_json | object |
| description_format | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"event_type",
"start_date",
"end_date"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string",
"minLength": 1
},
"end_date": {
"type": "string",
"description": "ISO 8601 timestamp"
},
"location": {
"type": "string"
},
"timezone": {
"type": "string",
"description": "IANA tz, e.g. \"America/New_York\""
},
"event_type": {
"enum": [
"virtual",
"in-person",
"hybrid"
],
"type": "string"
},
"start_date": {
"type": "string",
"description": "ISO 8601 timestamp"
},
"description": {
"type": "string"
},
"meeting_url": {
"type": "string",
"format": "uri"
},
"max_attendees": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"cover_image_url": {
"type": "string",
"format": "uri"
},
"description_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
}
}
}| any |
| content_format | string |
| duration_seconds | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"course_id",
"title",
"content_url"
],
"properties": {
"title": {
"type": "string",
"minLength": 1
},
"course_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"module_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"is_preview": {
"type": "boolean",
"description": "If true, visible to non-enrolled users"
},
"sort_order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"content_url": {
"type": "string",
"format": "uri"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"content_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"content_type": {
"enum": [
"youtube",
"google_drive",
"video",
"image",
"document",
"pitch"
],
"type": "string"
},
"is_published": {
"type": "boolean"
},
"thumbnail_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"content_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
},
"duration_seconds": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}| accepted_answers |
| array |
| fill_in_blank only; matched case-insensitively |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"bank_id",
"question_text",
"question_type"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1
},
"position": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
}
}
},
"description": "ordering only; correct order is position 1..n, or array order if positions are omitted"
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"left",
"right"
],
"properties": {
"id": {
"type": "string"
},
"left": {
"type": "string",
"minLength": 1
},
"right": {
"type": "string",
"minLength": 1
}
}
},
"description": "matching only; at least 2 pairs"
},
"points": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Defaults to 1",
"exclusiveMinimum": 0
},
"bank_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1
},
"is_correct": {
"type": "boolean"
}
}
},
"description": "multiple_choice (exactly one is_correct:true) or multi_select (one or more). 2-12 entries."
},
"explanation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"question_text": {
"type": "string",
"minLength": 1
},
"question_type": {
"enum": [
"multiple_choice",
"true_false",
"fill_in_blank",
"multi_select",
"matching",
"ordering"
],
"type": "string"
},
"correct_answer": {
"type": "boolean",
"description": "true_false only"
},
"accepted_answers": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "fill_in_blank only; matched case-insensitively"
}
}
}| correct_answer | boolean | true_false only |
| accepted_answers | array | fill_in_blank only; matched case-insensitively |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quiz_id",
"question_text",
"question_type"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1
},
"position": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
}
}
},
"description": "ordering only; correct order is position 1..n, or array order if positions are omitted"
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"left",
"right"
],
"properties": {
"id": {
"type": "string"
},
"left": {
"type": "string",
"minLength": 1
},
"right": {
"type": "string",
"minLength": 1
}
}
},
"description": "matching only; at least 2 pairs"
},
"points": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Defaults to 1",
"exclusiveMinimum": 0
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1
},
"is_correct": {
"type": "boolean"
}
}
},
"description": "multiple_choice (exactly one is_correct:true) or multi_select (one or more). 2-12 entries."
},
"quiz_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sort_order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"explanation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"question_text": {
"type": "string",
"minLength": 1
},
"question_type": {
"enum": [
"multiple_choice",
"true_false",
"fill_in_blank",
"multi_select",
"matching",
"ordering"
],
"type": "string"
},
"correct_answer": {
"type": "boolean",
"description": "true_false only"
},
"accepted_answers": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "fill_in_blank only; matched case-insensitively"
}
}
}| string |
| Defaults to "guide" |
| cover_image_url | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50
},
"maxItems": 20
},
"price": {
"type": "number",
"description": "One-time price (> 0); omit for free",
"exclusiveMinimum": 0
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"file_url": {
"type": "string",
"format": "uri",
"description": "For already-uploaded file resources"
},
"folder_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"is_premium": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 20000
},
"access_level": {
"enum": [
"public",
"members",
"premium"
],
"type": "string",
"description": "Defaults to public"
},
"is_published": {
"type": "boolean",
"description": "Defaults to true"
},
"resource_url": {
"type": "string",
"format": "uri",
"description": "For external-link resources"
},
"resource_type": {
"enum": [
"guide",
"toolkit",
"course",
"checklist",
"template",
"other"
],
"type": "string",
"description": "Defaults to \"guide\""
},
"cover_image_url": {
"type": "string",
"format": "uri"
}
}
}| include_quizzes |
| boolean |
| source_filename | string | Required for every type except video_url |
| include_intro_video | boolean |
| include_recap_video | boolean | Opt-in second avatar clip, +1 credit |
| quiz_questions_per_chapter | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"source_type",
"source_url"
],
"properties": {
"source_url": {
"type": "string",
"format": "uri",
"description": "Video link for video_url; otherwise an https URL on the HiveLearn media host"
},
"video_mode": {
"enum": [
"none",
"intro_only",
"hybrid_chapters"
],
"type": "string",
"description": "none/intro_only = 1 credit, hybrid_chapters = 5, +1 for include_recap_video in a video mode. Default intro_only; forced to none for video_url (always 1 credit)"
},
"context_url": {
"type": "string",
"format": "uri",
"description": "Optional supporting document on the HiveLearn media host"
},
"source_type": {
"enum": [
"document",
"audio",
"video",
"video_url"
],
"type": "string"
},
"style_preset": {
"type": "string",
"description": "Thumbnail style preset key; unknown values are ignored"
},
"content_depth": {
"enum": [
"auto",
"concise",
"standard",
"deep"
],
"type": "string"
},
"brand_intensity": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"include_quizzes": {
"type": "boolean"
},
"source_filename": {
"type": "string",
"minLength": 1,
"description": "Required for every type except video_url"
},
"include_intro_video": {
"type": "boolean"
},
"include_recap_video": {
"type": "boolean",
"description": "Opt-in second avatar clip, +1 credit"
},
"quiz_questions_per_chapter": {
"type": "integer",
"maximum": 10,
"minimum": 2
}
}
}| object |
| description_format | string |
| instructor_avatar_url | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string"
},
"is_pinned": {
"type": "boolean"
},
"difficulty": {
"anyOf": [
{
"enum": [
"beginner",
"intermediate",
"advanced"
],
"type": "string"
},
{
"type": "null"
}
]
},
"visibility": {
"enum": [
"all_members",
"admin_only"
],
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"is_featured": {
"type": "boolean"
},
"is_published": {
"type": "boolean"
},
"thumbnail_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"instructor_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"description_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
},
"instructor_avatar_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
}
}
}| cover_image_url | string |
| description_json | object |
| description_format | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string"
},
"end_date": {
"type": "string"
},
"location": {
"type": "string"
},
"timezone": {
"type": "string"
},
"event_type": {
"enum": [
"virtual",
"in-person",
"hybrid"
],
"type": "string"
},
"start_date": {
"type": "string"
},
"description": {
"type": "string"
},
"meeting_url": {
"type": "string",
"format": "uri"
},
"is_cancelled": {
"type": "boolean"
},
"max_attendees": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"cover_image_url": {
"type": "string",
"format": "uri"
},
"description_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
}
}
}| string |
| duration_seconds | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"title": {
"type": "string"
},
"module_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"is_preview": {
"type": "boolean"
},
"sort_order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"content_url": {
"type": "string",
"format": "uri"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"content_json": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"content_type": {
"enum": [
"youtube",
"google_drive",
"video",
"image",
"document",
"pitch"
],
"type": "string"
},
"is_published": {
"type": "boolean"
},
"thumbnail_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"content_format": {
"enum": [
"markdown",
"tiptap_json"
],
"type": "string"
},
"duration_seconds": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1
},
"position": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
}
}
},
"description": "ordering only; correct order is position 1..n, or array order if positions are omitted"
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"left",
"right"
],
"properties": {
"id": {
"type": "string"
},
"left": {
"type": "string",
"minLength": 1
},
"right": {
"type": "string",
"minLength": 1
}
}
},
"description": "matching only; at least 2 pairs"
},
"points": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1
},
"is_correct": {
"type": "boolean"
}
}
},
"description": "multiple_choice (exactly one is_correct:true) or multi_select (one or more). 2-12 entries."
},
"explanation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"question_text": {
"type": "string",
"minLength": 1
},
"question_type": {
"enum": [
"multiple_choice",
"true_false",
"fill_in_blank",
"multi_select",
"matching",
"ordering"
],
"type": "string"
},
"correct_answer": {
"type": "boolean",
"description": "true_false only"
},
"accepted_answers": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "fill_in_blank only; matched case-insensitively"
}
}
}| accepted_answers |
| array |
| fill_in_blank only; matched case-insensitively |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1
},
"position": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
}
}
},
"description": "ordering only; correct order is position 1..n, or array order if positions are omitted"
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"left",
"right"
],
"properties": {
"id": {
"type": "string"
},
"left": {
"type": "string",
"minLength": 1
},
"right": {
"type": "string",
"minLength": 1
}
}
},
"description": "matching only; at least 2 pairs"
},
"points": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string",
"minLength": 1
},
"is_correct": {
"type": "boolean"
}
}
},
"description": "multiple_choice (exactly one is_correct:true) or multi_select (one or more). 2-12 entries."
},
"sort_order": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"explanation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"question_text": {
"type": "string"
},
"question_type": {
"enum": [
"multiple_choice",
"true_false",
"fill_in_blank",
"multi_select",
"matching",
"ordering"
],
"type": "string"
},
"correct_answer": {
"type": "boolean",
"description": "true_false only"
},
"accepted_answers": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "fill_in_blank only; matched case-insensitively"
}
}
}| resource_type | string |
| cover_image_url | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50
},
"maxItems": 20
},
"price": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
]
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"file_url": {
"type": "string",
"format": "uri"
},
"folder_id": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"is_premium": {
"type": "boolean"
},
"description": {
"type": "string",
"maxLength": 20000
},
"is_featured": {
"type": "boolean"
},
"access_level": {
"enum": [
"public",
"members",
"premium"
],
"type": "string"
},
"is_published": {
"type": "boolean"
},
"resource_url": {
"type": "string",
"format": "uri"
},
"resource_type": {
"enum": [
"guide",
"toolkit",
"course",
"checklist",
"template",
"other"
],
"type": "string"
},
"cover_image_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
}
}
}