486 lines
616 KiB
Python
486 lines
616 KiB
Python
from __future__ import annotations
|
|
|
|
import base64
|
|
import hashlib
|
|
import json
|
|
import re
|
|
from pathlib import Path
|
|
from typing import Any
|
|
|
|
import httpx
|
|
from a2a_pack.deepagents import create_a2a_deep_agent
|
|
from langchain_core.messages import BaseMessage
|
|
from langchain_core.tools import StructuredTool
|
|
from pydantic import BaseModel, Field
|
|
|
|
from a2a_pack import (
|
|
A2AAgent,
|
|
ConsumerSetup,
|
|
ConsumerSetupField,
|
|
ConsumerSetupMissing,
|
|
EgressPolicy,
|
|
LLMProvisioning,
|
|
Pricing,
|
|
Resources,
|
|
RunContext,
|
|
WorkspaceAccess,
|
|
WorkspaceMode,
|
|
skill,
|
|
)
|
|
|
|
|
|
DEFAULT_BASE_URL = "https://learnhouse.a2acloud.io"
|
|
OPERATIONS = json.loads("{\n \"add_org_ai_credits_api_v1_orgs_org_id_ai_credits_add_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Add purchased AI credits to an organization. Only organization admins can add credits and the amount must be a positive integer.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"add_org_ai_credits_api_v1_orgs_org_id_ai_credits_add_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/ai-credits/add\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/AddCreditsRequest\"\n },\n \"security\": null,\n \"skill_name\": \"add_org_ai_credits_api_v1_orgs_org_id_ai_credits_add_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add purchased AI credits\",\n \"tags\": [\n \"ai-credits\"\n ]\n },\n \"analytics_status_api_v1_analytics_status_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns whether the analytics backend (Tinybird) is configured on the server.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"analytics_status_api_v1_analytics_status_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/analytics/status\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"analytics_status_api_v1_analytics_status_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Check analytics configuration\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"api_activate_pack_api_v1_internal_packs_org_id_activate_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Internal endpoint used by the billing platform to activate a pack on an organization after a successful purchase. Requires a valid platform API key.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_activate_pack_api_v1_internal_packs_org_id_activate_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"header\",\n \"name\": \"x-platform-key\",\n \"required\": true,\n \"schema\": {\n \"title\": \"X-Platform-Key\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/internal/packs/{org_id}/activate\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ActivatePackRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_activate_pack_api_v1_internal_packs_org_id_activate_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Activate a pack for an organization\",\n \"tags\": [\n \"packs-internal\"\n ]\n },\n \"api_add_activity_to_trail_api_v1_trail_add_activity_activity_uuid_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Attach an activity to the current user's learning trail, marking it as started.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_activity_to_trail_api_v1_trail_add_activity_activity_uuid_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/trail/add_activity/{activity_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_add_activity_to_trail_api_v1_trail_add_activity_activity_uuid_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add activity to trail\",\n \"tags\": [\n \"trail\"\n ]\n },\n \"api_add_activity_usergroup_api_v1_activities_activity_uuid_usergroups_usergroup_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Associate a user group with this activity so its members can access it when lock_type is 'restricted'.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_activity_usergroup_api_v1_activities_activity_uuid_usergroups_usergroup_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}/usergroups/{usergroup_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_add_activity_usergroup_api_v1_activities_activity_uuid_usergroups_usergroup_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Grant a user group access to a locked activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_add_board_member_api_v1_boards_board_uuid_members_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Add a single user as a member of the given board. The current user must have permission to manage board members.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_board_member_api_v1_boards_board_uuid_members_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/members\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/BoardMemberCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_add_board_member_api_v1_boards_board_uuid_members_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add a member to a board\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_add_board_members_batch_api_v1_boards_board_uuid_members_batch_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Add several users as members of a board in a single request. The current user must have permission to manage board members.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_board_members_batch_api_v1_boards_board_uuid_members_batch_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/members/batch\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/BoardMemberBatchCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_add_board_members_batch_api_v1_boards_board_uuid_members_batch_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add multiple members to a board\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_add_bulk_course_contributors_api_v1_courses_course_uuid_bulk_add_contributor\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Add multiple contributors to a course by their usernames in a single call. Only course administrators can perform this action.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_bulk_course_contributors_api_v1_courses_course_uuid_bulk_add_contributor\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/bulk-add-contributors\",\n \"request_body\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"title\": \"Usernames\",\n \"type\": \"array\"\n },\n \"security\": null,\n \"skill_name\": \"api_add_bulk_course_contributors_api_v1_courses_course_uuid_bulk_add_contributor\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Bulk add course contributors\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_add_chapter_usergroup_api_v1_chapters_chapter_uuid_usergroups_usergroup_uuid\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Associate a user group with this chapter so its members can access it when lock_type is 'restricted'.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_chapter_usergroup_api_v1_chapters_chapter_uuid_usergroups_usergroup_uuid\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"chapter_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Chapter Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/{chapter_uuid}/usergroups/{usergroup_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_add_chapter_usergroup_api_v1_chapters_chapter_uuid_usergroups_usergroup_uuid\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Grant a user group access to a locked chapter\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_add_course_to_trail_api_v1_trail_add_course_course_uuid_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Attach a course to the current user's learning trail.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_course_to_trail_api_v1_trail_add_course_course_uuid_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/trail/add_course/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_add_course_to_trail_api_v1_trail_add_course_course_uuid_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add course to trail\",\n \"tags\": [\n \"trail\"\n ]\n },\n \"api_add_custom_domain_api_v1_orgs_org_id_domains_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Add a new custom domain to an organization. This generates a verification token and returns DNS instructions. Only organization administrators can add custom domains.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_custom_domain_api_v1_orgs_org_id_domains_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/domains\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CustomDomainCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_add_custom_domain_api_v1_orgs_org_id_domains_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add a custom domain\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_add_resources_to_usergroup_api_v1_usergroups_usergroup_id_add_resources_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Link one or more resources (courses, collections, etc.) to a usergroup. Resource UUIDs should be provided as a comma-separated string.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_resources_to_usergroup_api_v1_usergroups_usergroup_id_add_resources_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"resource_uuids\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Resource Uuids\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}/add_resources\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_add_resources_to_usergroup_api_v1_usergroups_usergroup_id_add_resources_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add resources to a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_add_usergroup_to_playground_api_v1_playgrounds_playground_uuid_usergroups_us\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Associate a usergroup with a playground so its members can access it. The current user must have update permission on the playground.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_usergroup_to_playground_api_v1_playgrounds_playground_uuid_usergroups_us\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}/usergroups/{usergroup_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_add_usergroup_to_playground_api_v1_playgrounds_playground_uuid_usergroups_us\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Grant a usergroup access to a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_add_users_to_usergroup_api_v1_usergroups_usergroup_id_add_users_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Add one or more users to a usergroup. User IDs should be provided as a comma-separated string.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_add_users_to_usergroup_api_v1_usergroups_usergroup_id_add_users_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"user_ids\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Ids\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}/add_users\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_add_users_to_usergroup_api_v1_usergroups_usergroup_id_add_users_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add users to a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_admin_add_course_to_usergroup_api_v1_admin_org_slug_usergroups_usergroup_uui\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Link a course to a user group \\u2014 all members of the group gain the access rights configured for that group.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_add_course_to_usergroup_api_v1_admin_org_slug_usergroups_usergroup_uui\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/usergroups/{usergroup_uuid}/courses/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_add_course_to_usergroup_api_v1_admin_org_slug_usergroups_usergroup_uui\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Grant a cohort access to a course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_add_usergroup_member_api_v1_admin_org_slug_usergroups_usergroup_uuid_m\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Add a user to a cohort/group. Both must belong to the token's org.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_add_usergroup_member_api_v1_admin_org_slug_usergroups_usergroup_uuid_m\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/usergroups/{usergroup_uuid}/members/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_add_usergroup_member_api_v1_admin_org_slug_usergroups_usergroup_uuid_m\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Add a user to a user group\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_anonymize_user_api_v1_admin_org_slug_users_user_id_anonymize_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Scrub a user's PII (email, name, avatar, bio, details, profile, password). Delete API tokens the user created. Keeps trails and certificates so course analytics remain accurate. Invalidates session cache.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_anonymize_user_api_v1_admin_org_slug_users_user_id_anonymize_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/users/{user_id}/anonymize\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_anonymize_user_api_v1_admin_org_slug_users_user_id_anonymize_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"GDPR right-to-be-forgotten\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_award_certificate_api_v1_admin_org_slug_certifications_user_id_course_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Award a certificate to a user bypassing the normal completion gate. Useful for migrations and manual overrides. The course must have a certification configured.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_award_certificate_api_v1_admin_org_slug_certifications_user_id_course_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/certifications/{user_id}/{course_uuid}/award\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_award_certificate_api_v1_admin_org_slug_certifications_user_id_course_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Manually award a certificate\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_bulk_enroll_api_v1_admin_org_slug_enrollments_bulk_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enroll a batch of users into a single course. Users who are already enrolled are reported in `already_enrolled`. Users who are not members of the org are reported in `skipped`.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_bulk_enroll_api_v1_admin_org_slug_enrollments_bulk_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/enrollments/bulk\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/BulkEnrollRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_admin_bulk_enroll_api_v1_admin_org_slug_enrollments_bulk_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Bulk enroll users in a course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_bulk_unenroll_api_v1_admin_org_slug_enrollments_bulk_unenroll_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Mirror of bulk enroll. Users not currently enrolled are reported in `not_enrolled`.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_bulk_unenroll_api_v1_admin_org_slug_enrollments_bulk_unenroll_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/enrollments/bulk/unenroll\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/BulkUnenrollRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_admin_bulk_unenroll_api_v1_admin_org_slug_enrollments_bulk_unenroll_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Bulk unenroll users from a course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_change_user_role_api_v1_admin_org_slug_users_user_id_role_patch\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Change the user's role within the organization. Blocks demoting the last admin. The target role must belong to this org or be a global role.\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"api_admin_change_user_role_api_v1_admin_org_slug_users_user_id_role_patch\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/users/{user_id}/role\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ChangeRoleRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_admin_change_user_role_api_v1_admin_org_slug_users_user_id_role_patch\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Change a user's org role\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_check_course_access_api_v1_admin_org_slug_courses_course_uuid_access_u\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Check if a user can access a specific course. Returns enrollment status and whether the course is public. Requires `courses.action_read` permission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_check_course_access_api_v1_admin_org_slug_courses_course_uuid_access_u\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/courses/{course_uuid}/access/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_check_course_access_api_v1_admin_org_slug_courses_course_uuid_access_u\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Check user course access\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_complete_activity_api_v1_admin_org_slug_progress_user_id_activities_ac\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Mark an activity as completed on behalf of a user. Automatically creates enrollment if needed. If this completes the entire course, a certificate is awarded (if configured). Requires `courses.action_read` permission.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_complete_activity_api_v1_admin_org_slug_progress_user_id_activities_ac\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/progress/{user_id}/activities/{activity_uuid}/complete\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_complete_activity_api_v1_admin_org_slug_progress_user_id_activities_ac\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Mark activity as completed\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_complete_course_api_v1_admin_org_slug_progress_user_id_course_uuid_com\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Mark all activities in a course as completed for a user. Skips activities that are already completed. Awards a certificate if configured. Requires `courses.action_read` permission.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_complete_course_api_v1_admin_org_slug_progress_user_id_course_uuid_com\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/progress/{user_id}/{course_uuid}/complete\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_complete_course_api_v1_admin_org_slug_progress_user_id_course_uuid_com\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Mark entire course as completed\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_create_usergroup_api_v1_admin_org_slug_usergroups_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a cohort/user group owned by the organization.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_create_usergroup_api_v1_admin_org_slug_usergroups_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/usergroups\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CreateUserGroupRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_admin_create_usergroup_api_v1_admin_org_slug_usergroups_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a user group\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_delete_usergroup_api_v1_admin_org_slug_usergroups_usergroup_uuid_delet\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a user group and all its memberships and course links. The underlying users and courses are untouched.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_admin_delete_usergroup_api_v1_admin_org_slug_usergroups_usergroup_uuid_delet\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/usergroups/{usergroup_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_delete_usergroup_api_v1_admin_org_slug_usergroups_usergroup_uuid_delet\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a user group\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_enroll_user_api_v1_admin_org_slug_enrollments_user_id_course_uuid_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enroll a user in a course on their behalf. Creates the learning trail and trail run. The user must belong to the organization. Requires `courses.action_read` permission.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_enroll_user_api_v1_admin_org_slug_enrollments_user_id_course_uuid_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/enrollments/{user_id}/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_enroll_user_api_v1_admin_org_slug_enrollments_user_id_course_uuid_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Enroll user in course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_export_user_data_api_v1_admin_org_slug_users_user_id_export_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return a JSON bundle containing the user's profile, org memberships, trails, runs, steps, certificates, and cohort memberships. Intended for GDPR Article 15 (Right of Access) compliance. All sub-collections are scoped to the caller's org.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_export_user_data_api_v1_admin_org_slug_users_user_id_export_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/users/{user_id}/export\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_export_user_data_api_v1_admin_org_slug_users_user_id_export_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Full GDPR data export for a user\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_all_user_progress_api_v1_admin_org_slug_progress_user_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a progress summary across all courses a user is enrolled in. Returns completion percentage and status for each enrollment. Requires `courses.action_read` permission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_all_user_progress_api_v1_admin_org_slug_progress_user_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/progress/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_all_user_progress_api_v1_admin_org_slug_progress_user_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get all user progress\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_course_analytics_api_v1_admin_org_slug_courses_course_uuid_analyti\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns enrollment/completion counts, average completion percentage across all enrollees, and total certificates awarded.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_course_analytics_api_v1_admin_org_slug_courses_course_uuid_analyti\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/courses/{course_uuid}/analytics\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_course_analytics_api_v1_admin_org_slug_courses_course_uuid_analyti\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Aggregate stats for a course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_user_by_email_api_v1_admin_org_slug_users_by_email_email_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Find a user by email within the organization. Returns 404 if the user does not exist or is not a member of this org.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_user_by_email_api_v1_admin_org_slug_users_by_email_email_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"URL-encoded email address\",\n \"in\": \"path\",\n \"name\": \"email\",\n \"required\": true,\n \"schema\": {\n \"description\": \"URL-encoded email address\",\n \"title\": \"Email\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/users/by-email/{email}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_user_by_email_api_v1_admin_org_slug_users_by_email_email_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Look up a user by email\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_user_certificates_api_v1_admin_org_slug_certifications_user_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get all certificates awarded to a user in the organization. Includes certification details and course information. Requires `certifications.action_read` permission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_user_certificates_api_v1_admin_org_slug_certifications_user_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/certifications/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_user_certificates_api_v1_admin_org_slug_certifications_user_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user certificates\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_user_course_trail_detail_api_v1_admin_org_slug_trails_user_id_cour\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the user's full chapter-by-chapter and activity-by-activity progress breakdown for a single course. Surfaces progress even when the user has no explicit enrollment row (status will be null in that case). Requires `courses.action_read` permission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_user_course_trail_detail_api_v1_admin_org_slug_trails_user_id_cour\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/trails/{user_id}/courses/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_user_course_trail_detail_api_v1_admin_org_slug_trails_user_id_cour\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user trail breakdown for a single course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_user_enrollments_api_v1_admin_org_slug_enrollments_user_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get all course enrollments for a user in the organization, including trail runs and steps. Requires `courses.action_read` permission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_user_enrollments_api_v1_admin_org_slug_enrollments_user_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/enrollments/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_user_enrollments_api_v1_admin_org_slug_enrollments_user_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user enrollments\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_user_groups_api_v1_admin_org_slug_users_user_id_groups_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Reverse lookup: which cohorts is this user a member of?\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_user_groups_api_v1_admin_org_slug_users_user_id_groups_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/users/{user_id}/groups\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_user_groups_api_v1_admin_org_slug_users_user_id_groups_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List user groups a user belongs to\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_user_progress_api_v1_admin_org_slug_progress_user_id_course_uuid_g\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a user's progress in a specific course including completion percentage and list of completed activity IDs. Requires `courses.action_read` permission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_user_progress_api_v1_admin_org_slug_progress_user_id_course_uuid_g\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/progress/{user_id}/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_user_progress_api_v1_admin_org_slug_progress_user_id_course_uuid_g\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user progress in course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_get_user_trail_detail_api_v1_admin_org_slug_trails_user_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the user's trail in the organization with a full chapter-by-chapter and activity-by-activity progress breakdown for every course they are enrolled in. Each activity carries its completion state, teacher verification flag, grade, and completion timestamp. Requires `courses.action_read` permission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_get_user_trail_detail_api_v1_admin_org_slug_trails_user_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/trails/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_get_user_trail_detail_api_v1_admin_org_slug_trails_user_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user trail with full progress breakdown\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_issue_magic_link_api_v1_admin_org_slug_auth_magic_link_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Generate a short-lived URL that, when opened in a browser, will log the target user in and optionally redirect them to a specific path. Token lifetime is clamped to 60\\u2013900 seconds.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_issue_magic_link_api_v1_admin_org_slug_auth_magic_link_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/auth/magic-link\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/MagicLinkRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_admin_issue_magic_link_api_v1_admin_org_slug_auth_magic_link_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Issue a magic sign-in link\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_issue_token_api_v1_admin_org_slug_auth_token_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Issue a JWT access token on behalf of a user. The user must belong to the organization matching the org_slug. Requires `users.action_read` permission.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_issue_token_api_v1_admin_org_slug_auth_token_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/auth/token\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/IssueTokenRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_admin_issue_token_api_v1_admin_org_slug_auth_token_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Issue a user token\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_list_course_enrollments_api_v1_admin_org_slug_courses_course_uuid_enro\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Reverse lookup: get all users currently enrolled in a course, with pagination. Returns enrollment status and enrolled_at per user.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_list_course_enrollments_api_v1_admin_org_slug_courses_course_uuid_enro\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"minimum\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 25,\n \"maximum\": 100,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/courses/{course_uuid}/enrollments\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_list_course_enrollments_api_v1_admin_org_slug_courses_course_uuid_enro\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List users enrolled in a course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_list_usergroup_members_api_v1_admin_org_slug_usergroups_usergroup_uuid\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Reverse lookup: list users belonging to a cohort, with pagination.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_list_usergroup_members_api_v1_admin_org_slug_usergroups_usergroup_uuid\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"minimum\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 25,\n \"maximum\": 100,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/usergroups/{usergroup_uuid}/members\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_list_usergroup_members_api_v1_admin_org_slug_usergroups_usergroup_uuid\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List members of a user group\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_magic_consume_api_v1_admin_org_slug_auth_magic_consume_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Public endpoint \\u2014 no API token required. Validates the magic-link JWT from the query string, sets authentication cookies, and redirects to the target path. On error, renders a friendly HTML page with a support link instead of a raw JSON error.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_admin_magic_consume_api_v1_admin_org_slug_auth_magic_consume_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Magic-link JWT\",\n \"in\": \"query\",\n \"name\": \"token\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Magic-link JWT\",\n \"title\": \"Token\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/auth/magic-consume\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_magic_consume_api_v1_admin_org_slug_auth_magic_consume_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Consume a magic sign-in link (browser-facing)\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_provision_user_api_v1_admin_org_slug_users_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a user and attach them to the organization in one call. Designed for SSO/JIT provisioning \\u2014 the user's email is auto-verified and the normal email-verification flow is skipped. If a user with the given email already exists in another organization, they are attached to this org (idempotent); the password/username/name fields in the request are ignored in that case.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_provision_user_api_v1_admin_org_slug_users_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/users\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ProvisionUserRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_admin_provision_user_api_v1_admin_org_slug_users_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Provision a user\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_remove_course_from_usergroup_api_v1_admin_org_slug_usergroups_usergrou\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Unlink a course from a user group. Members of the cohort lose access unless granted through another path.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_admin_remove_course_from_usergroup_api_v1_admin_org_slug_usergroups_usergrou\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/usergroups/{usergroup_uuid}/courses/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_remove_course_from_usergroup_api_v1_admin_org_slug_usergroups_usergrou\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Revoke a cohort's access to a course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_remove_user_api_v1_admin_org_slug_users_user_id_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove a user's organization membership. The user account itself is preserved (it may belong to other orgs). Blocks removing the last admin.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_admin_remove_user_api_v1_admin_org_slug_users_user_id_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/users/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_remove_user_api_v1_admin_org_slug_users_user_id_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove a user from the organization\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_remove_usergroup_member_api_v1_admin_org_slug_usergroups_usergroup_uui\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove a user's membership from a cohort/group. The user account itself is preserved.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_admin_remove_usergroup_member_api_v1_admin_org_slug_usergroups_usergroup_uui\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/usergroups/{usergroup_uuid}/members/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_remove_usergroup_member_api_v1_admin_org_slug_usergroups_usergroup_uui\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove a user from a user group\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_reset_user_progress_api_v1_admin_org_slug_progress_user_id_course_uuid\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete all of a user's trail steps for a course, keeping the enrollment intact. The user can retake the course from scratch.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_admin_reset_user_progress_api_v1_admin_org_slug_progress_user_id_course_uuid\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/progress/{user_id}/{course_uuid}/reset\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_reset_user_progress_api_v1_admin_org_slug_progress_user_id_course_uuid\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Reset a user's progress in a course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_revoke_certificate_api_v1_admin_org_slug_certifications_user_id_user_c\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a certificate row. Does not affect course enrollment or progress.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_admin_revoke_certificate_api_v1_admin_org_slug_certifications_user_id_user_c\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_certification_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Certification Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/certifications/{user_id}/{user_certification_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_revoke_certificate_api_v1_admin_org_slug_certifications_user_id_user_c\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Revoke a user's certificate\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_uncomplete_activity_api_v1_admin_org_slug_progress_user_id_activities_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove a user's activity completion. Does not revoke certificates. Requires `courses.action_read` permission.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_admin_uncomplete_activity_api_v1_admin_org_slug_progress_user_id_activities_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/progress/{user_id}/activities/{activity_uuid}/complete\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_uncomplete_activity_api_v1_admin_org_slug_progress_user_id_activities_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Undo activity completion\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_unenroll_user_api_v1_admin_org_slug_enrollments_user_id_course_uuid_de\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Unenroll a user from a course. Removes the enrollment and all associated progress (trail steps). Requires `courses.action_read` permission.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_admin_unenroll_user_api_v1_admin_org_slug_enrollments_user_id_course_uuid_de\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/enrollments/{user_id}/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_admin_unenroll_user_api_v1_admin_org_slug_enrollments_user_id_course_uuid_de\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Unenroll user from course\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_admin_update_user_profile_api_v1_admin_org_slug_users_user_id_patch\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update profile fields of an org member. Supports partial updates \\u2014 only fields present in the request body are changed. Duplicate email/username is rejected.\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"api_admin_update_user_profile_api_v1_admin_org_slug_users_user_id_patch\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/admin/{org_slug}/users/{user_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/UpdateUserRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_admin_update_user_profile_api_v1_admin_org_slug_users_user_id_patch\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a user's profile\",\n \"tags\": [\n \"admin\"\n ]\n },\n \"api_ai_send_activity_chat_message_api_v1_ai_send_activity_chat_message_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Send a message to an existing AI chat session anchored to a course activity and receive the updated session state.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_ai_send_activity_chat_message_api_v1_ai_send_activity_chat_message_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/send/activity_chat_message\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendActivityAIChatMessage\"\n },\n \"security\": null,\n \"skill_name\": \"api_ai_send_activity_chat_message_api_v1_ai_send_activity_chat_message_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Send activity AI chat message\",\n \"tags\": [\n \"ai\"\n ]\n },\n \"api_ai_send_activity_chat_message_stream_api_v1_ai_stream_send_activity_chat_mes\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Send a message to an existing activity AI chat session and stream the response as Server-Sent Events (SSE).\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_ai_send_activity_chat_message_stream_api_v1_ai_stream_send_activity_chat_mes\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/stream/send/activity_chat_message\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendActivityAIChatMessage\"\n },\n \"security\": null,\n \"skill_name\": \"api_ai_send_activity_chat_message_stream_api_v1_ai_stream_send_activity_chat_mes\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Send activity AI chat message (streaming)\",\n \"tags\": [\n \"ai\"\n ]\n },\n \"api_ai_start_activity_chat_session_api_v1_ai_start_activity_chat_session_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Start a new AI chat session anchored to a course activity. Returns the new session's state and initial message.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_ai_start_activity_chat_session_api_v1_ai_start_activity_chat_session_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/start/activity_chat_session\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/StartActivityAIChatSession\"\n },\n \"security\": null,\n \"skill_name\": \"api_ai_start_activity_chat_session_api_v1_ai_start_activity_chat_session_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Start activity AI chat session\",\n \"tags\": [\n \"ai\"\n ]\n },\n \"api_ai_start_activity_chat_session_stream_api_v1_ai_stream_start_activity_chat_s\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Start a new AI chat session for a course activity and stream the response as Server-Sent Events (SSE).\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_ai_start_activity_chat_session_stream_api_v1_ai_stream_start_activity_chat_s\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/stream/start/activity_chat_session\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/StartActivityAIChatSession\"\n },\n \"security\": null,\n \"skill_name\": \"api_ai_start_activity_chat_session_stream_api_v1_ai_stream_start_activity_chat_s\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Start activity AI chat session (streaming)\",\n \"tags\": [\n \"ai\"\n ]\n },\n \"api_analyze_import_package_api_v1_courses_import_analyze_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload and analyze a LearnHouse course export ZIP. Validates the package, extracts its contents, and returns a list of courses available for import along with a temp_id to use with the subsequent import endpoint.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_analyze_import_package_api_v1_courses_import_analyze_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/import/analyze\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_analyze_import_package_api_v1_courses_import_analyze_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_analyze_import_package_api_v1_courses_import_analyze_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Analyze a course import package\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_apply_course_contributor_api_v1_courses_course_uuid_apply_contributor_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Submit an application for the current user to become a contributor on the given course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_apply_course_contributor_api_v1_courses_course_uuid_apply_contributor_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/apply-contributor\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_apply_course_contributor_api_v1_courses_course_uuid_apply_contributor_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Apply as course contributor\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_change_password_with_reset_code_api_v1_users_reset_password_change_password_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Deprecated: use /reset_password/change_password with email in the body. This path variant leaks the email into server access logs and exists only for backward compatibility.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_change_password_with_reset_code_api_v1_users_reset_password_change_password_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"email\",\n \"required\": true,\n \"schema\": {\n \"format\": \"email\",\n \"title\": \"Email\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/users/reset_password/change_password/{email}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ResetPasswordRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_change_password_with_reset_code_api_v1_users_reset_password_change_password_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Change password with reset code (legacy path)\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_change_password_with_reset_code_platform_api_v1_users_reset_password_platfor\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Deprecated: use /reset_password/platform/change_password with email in the body.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_change_password_with_reset_code_platform_api_v1_users_reset_password_platfor\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"email\",\n \"required\": true,\n \"schema\": {\n \"format\": \"email\",\n \"title\": \"Email\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/users/reset_password/platform/change_password/{email}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/PlatformResetPasswordRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_change_password_with_reset_code_platform_api_v1_users_reset_password_platfor\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Change platform password with reset code (legacy path)\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_change_password_with_reset_code_platform_v2_api_v1_users_reset_password_plat\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Change a user's password at the platform level (email + reset code + new password all supplied in the body so none of them appear in server access logs).\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_change_password_with_reset_code_platform_v2_api_v1_users_reset_password_plat\",\n \"parameters\": [],\n \"path\": \"/api/v1/users/reset_password/platform/change_password\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/PlatformResetPasswordRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_change_password_with_reset_code_platform_v2_api_v1_users_reset_password_plat\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Change platform password with reset code\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_change_password_with_reset_code_v2_api_v1_users_reset_password_change_passwo\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Change a user's password using a reset code. Email, reset code and new password are all supplied in the request body so they never appear in server logs or browser history.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_change_password_with_reset_code_v2_api_v1_users_reset_password_change_passwo\",\n \"parameters\": [],\n \"path\": \"/api/v1/users/reset_password/change_password\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ResetPasswordRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_change_password_with_reset_code_v2_api_v1_users_reset_password_change_passwo\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Change password with reset code\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_check_board_membership_api_v1_boards_board_uuid_membership_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the current user's membership record on a board, if any. Used by clients to check role and access before loading the collab session.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_check_board_membership_api_v1_boards_board_uuid_membership_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/membership\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_check_board_membership_api_v1_boards_board_uuid_membership_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Check current user's board membership\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_check_domain_api_v1_orgs_domains_check_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns 200 if `domain` is registered against an organization and has status `verified` or `active`; 404 otherwise. Takes the hostname as a query parameter so the endpoint composes cleanly with reverse proxies that want a lightweight allow/deny gate (e.g. for on-demand TLS provisioning) without needing path rewriting.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_check_domain_api_v1_orgs_domains_check_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"domain\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Domain\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/domains/check\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_check_domain_api_v1_orgs_domains_check_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Check whether a custom domain is registered and verified\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_check_domain_ssl_status_api_v1_orgs_org_id_domains_domain_uuid_ssl_status_ge\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Check the SSL certificate status for a custom domain by performing a TLS handshake to determine whether a certificate has been provisioned.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_check_domain_ssl_status_api_v1_orgs_org_id_domains_domain_uuid_ssl_status_ge\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"domain_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Domain Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/domains/{domain_uuid}/ssl-status\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_check_domain_ssl_status_api_v1_orgs_org_id_domains_domain_uuid_ssl_status_ge\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Check custom domain SSL status\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_clone_course_api_v1_courses_course_uuid_clone_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a complete copy of a course including chapters, activities, blocks and all associated files. The cloned course gets a new UUID, is set to private by default, and has the current user as the creator.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_clone_course_api_v1_courses_course_uuid_clone_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/clone\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_clone_course_api_v1_courses_course_uuid_clone_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Clone course\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_create_activity_api_v1_activities_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new activity inside a chapter. The authenticated user must have permission to edit the parent course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_activity_api_v1_activities_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/activities/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ActivityCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_activity_api_v1_activities_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_create_api_token_api_v1_orgs_org_id_api_tokens_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new API token for an organization. The full token value is only returned once upon creation \\u2014 store it securely, as it cannot be retrieved later. Requires the user to have `roles.action_create` permission in the organization.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_api_token_api_v1_orgs_org_id_api_tokens_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/api-tokens\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/APITokenCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_api_token_api_v1_orgs_org_id_api_tokens_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create API token\",\n \"tags\": [\n \"api-tokens\"\n ]\n },\n \"api_create_assignment_submissions_api_v1_assignments_assignment_uuid_submissions\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new assignment-level submission for the current user on the given assignment.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_assignment_submissions_api_v1_assignments_assignment_uuid_submissions\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_create_assignment_submissions_api_v1_assignments_assignment_uuid_submissions\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create assignment submission\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_create_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new task under an assignment. The authenticated user must have permission to edit the parent course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/AssignmentTaskCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create assignment task\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_create_assignments_api_v1_assignments_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new assignment attached to an activity. The authenticated user must have permission to edit the parent course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_assignments_api_v1_assignments_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/assignments/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/AssignmentCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_assignments_api_v1_assignments_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create assignment\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_create_audio_file_block_api_v1_blocks_audio_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload an audio file and create a new audio block attached to the given activity.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_audio_file_block_api_v1_blocks_audio_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/blocks/audio\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_audio_file_block_api_v1_blocks_audio_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_audio_file_block_api_v1_blocks_audio_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create audio block\",\n \"tags\": [\n \"blocks\"\n ]\n },\n \"api_create_board_api_v1_boards_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new collaborative board within an organization. The authenticated user becomes the board owner.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_board_api_v1_boards_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/BoardCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_board_api_v1_boards_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a board\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_create_certification_api_v1_certifications_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new certification template for a course. Certifications are awarded when a learner completes the course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_certification_api_v1_certifications_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/certifications/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CertificationCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_certification_api_v1_certifications_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create certification\",\n \"tags\": [\n \"certifications\"\n ]\n },\n \"api_create_collection_api_v1_collections_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new collection of courses within an organization.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_collection_api_v1_collections_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/collections/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CollectionCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_collection_api_v1_collections_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create collection\",\n \"tags\": [\n \"collections\"\n ]\n },\n \"api_create_comment_api_v1_discussions_discussion_uuid_comments_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Post a new comment on a discussion. Requires read access to the community and the discussion must not be locked.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_comment_api_v1_discussions_discussion_uuid_comments_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/comments\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CommentCreateRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_comment_api_v1_discussions_discussion_uuid_comments_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a comment\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_create_community_api_v1_communities_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new community inside an organization. Optionally link it to a course on creation. Requires admin/maintainer role.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_community_api_v1_communities_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CommunityCreateRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_community_api_v1_communities_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a community\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_create_course_api_v1_courses_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new course in the specified organization. Accepts multipart form data with course metadata and an optional thumbnail image or video.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_course_api_v1_courses_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_course_api_v1_courses__post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_course_api_v1_courses_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create course\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_create_course_thumbnail_api_v1_courses_course_uuid_thumbnail_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Replace the thumbnail image or video for an existing course.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_create_course_thumbnail_api_v1_courses_course_uuid_thumbnail_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/thumbnail\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_course_thumbnail_api_v1_courses__course_uuid__thumbnail_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_course_thumbnail_api_v1_courses_course_uuid_thumbnail_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update course thumbnail\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_create_course_update_api_v1_courses_course_uuid_updates_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new course update post associated with the given course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_course_update_api_v1_courses_course_uuid_updates_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/updates\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CourseUpdateCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_course_update_api_v1_courses_course_uuid_updates_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create course update\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_create_coursechapter_api_v1_chapters_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new chapter inside an existing course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_coursechapter_api_v1_chapters_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/chapters/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ChapterCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_coursechapter_api_v1_chapters_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create chapter\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_create_discussion_api_v1_communities_community_uuid_discussions_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new discussion thread inside a community. Requires an authenticated user with read access to the community.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_discussion_api_v1_communities_community_uuid_discussions_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}/discussions\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/DiscussionCreateRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_discussion_api_v1_communities_community_uuid_discussions_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_create_documentpdf_activity_api_v1_activities_documentpdf_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new activity by uploading a PDF document. The file is stored and attached to the given chapter.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_documentpdf_activity_api_v1_activities_documentpdf_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/activities/documentpdf\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_documentpdf_activity_api_v1_activities_documentpdf_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_documentpdf_activity_api_v1_activities_documentpdf_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create PDF document activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_create_episode_api_v1_podcasts_podcast_uuid_episodes_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new episode for a podcast. Accepts multipart form data with optional audio file and thumbnail upload.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_episode_api_v1_podcasts_podcast_uuid_episodes_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}/episodes\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_episode_api_v1_podcasts__podcast_uuid__episodes_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_episode_api_v1_podcasts_podcast_uuid_episodes_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a podcast episode\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_create_external_video_activity_api_v1_activities_external_video_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new activity that embeds an externally hosted video (e.g. YouTube, Vimeo) instead of uploading a file.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_external_video_activity_api_v1_activities_external_video_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/activities/external_video\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ExternalVideo\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_external_video_activity_api_v1_activities_external_video_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create external video activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_create_from_migration_api_v1_courses_migrate_create_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a course from the finalized migration tree structure returned by the suggest endpoint.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_from_migration_api_v1_courses_migrate_create_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/migrate/create\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CreateFromMigrationRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_from_migration_api_v1_courses_migrate_create_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create course from migration\",\n \"tags\": [\n \"migration\"\n ]\n },\n \"api_create_image_file_block_api_v1_blocks_image_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload an image file and create a new image block attached to the given activity.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_image_file_block_api_v1_blocks_image_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/blocks/image\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_image_file_block_api_v1_blocks_image_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_image_file_block_api_v1_blocks_image_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create image block\",\n \"tags\": [\n \"blocks\"\n ]\n },\n \"api_create_invite_code_api_v1_orgs_org_id_invites_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new invite code for the organization, optionally linked to a usergroup.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_invite_code_api_v1_orgs_org_id_invites_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"usergroup_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Usergroup Id\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/invites\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_create_invite_code_api_v1_orgs_org_id_invites_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create an invite code\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_create_org_api_v1_orgs_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new organization owned by the authenticated user.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_org_api_v1_orgs_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/orgs/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/OrganizationCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_org_api_v1_orgs_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create an organization\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_create_org_withconfig_api_v1_orgs_withconfig_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new organization together with its base configuration in a single call (pre-alpha).\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_org_withconfig_api_v1_orgs_withconfig_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/orgs/withconfig/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_org_withconfig_api_v1_orgs_withconfig__post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_org_withconfig_api_v1_orgs_withconfig_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create an organization with config\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_create_pdf_file_block_api_v1_blocks_pdf_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a PDF file and create a new PDF block attached to the given activity.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_pdf_file_block_api_v1_blocks_pdf_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/blocks/pdf\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_pdf_file_block_api_v1_blocks_pdf_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_pdf_file_block_api_v1_blocks_pdf_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create PDF block\",\n \"tags\": [\n \"blocks\"\n ]\n },\n \"api_create_playground_api_v1_playgrounds_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new playground within an organization. The authenticated user must have permission to create playgrounds in the target org.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_playground_api_v1_playgrounds_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/PlaygroundCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_playground_api_v1_playgrounds_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_create_podcast_api_v1_podcasts_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new podcast within an organization. Accepts multipart form data with optional thumbnail upload.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_podcast_api_v1_podcasts_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_podcast_api_v1_podcasts__post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_podcast_api_v1_podcasts_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a podcast\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_create_role_api_v1_roles_org_org_id_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new role for a specific organization. Requires the Pro plan feature flag.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_role_api_v1_roles_org_org_id_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/roles/org/{org_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/RoleCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_role_api_v1_roles_org_org_id_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create role\",\n \"tags\": [\n \"roles\"\n ]\n },\n \"api_create_user_with_orgid_and_invite_api_v1_users_org_id_invite_invite_code_pos\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a user and attach them to the given organization using an invite code. Only valid when the organization is configured as invite-only.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_user_with_orgid_and_invite_api_v1_users_org_id_invite_invite_code_pos\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"invite_code\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Invite Code\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/{org_id}/invite/{invite_code}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/UserCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_user_with_orgid_and_invite_api_v1_users_org_id_invite_invite_code_pos\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create user with invite code\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_create_user_with_orgid_api_v1_users_org_id_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a user and attach them to the given organization. Rejected if the organization is invite-only \\u2014 use the invite-code endpoint instead.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_user_with_orgid_api_v1_users_org_id_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/{org_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/UserCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_user_with_orgid_api_v1_users_org_id_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create user in organization\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_create_user_without_org_api_v1_users_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a user account that is not attached to any organization at creation time.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_user_without_org_api_v1_users_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/users/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/UserCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_user_without_org_api_v1_users_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create user without organization\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_create_usergroup_api_v1_usergroups_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new usergroup within an organization. Requires admin/maintainer permissions on the organization.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_usergroup_api_v1_usergroups_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/usergroups/\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/UserGroupCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_usergroup_api_v1_usergroups_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_create_video_activity_api_v1_activities_video_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new video activity by uploading a video file. The video is stored and attached to the given chapter.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_video_activity_api_v1_activities_video_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/activities/video\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_video_activity_api_v1_activities_video_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_video_activity_api_v1_activities_video_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create video activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_create_video_file_block_api_v1_blocks_video_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a video file and create a new video block attached to the given activity.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_video_file_block_api_v1_blocks_video_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/blocks/video\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_create_video_file_block_api_v1_blocks_video_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_video_file_block_api_v1_blocks_video_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create video block\",\n \"tags\": [\n \"blocks\"\n ]\n },\n \"api_create_webhook_endpoint_api_v1_orgs_org_id_webhooks_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Creates a new webhook endpoint for the organization. The signing secret is only returned once upon creation and cannot be retrieved later; store it securely.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_create_webhook_endpoint_api_v1_orgs_org_id_webhooks_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/WebhookEndpointCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_create_webhook_endpoint_api_v1_orgs_org_id_webhooks_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create a webhook endpoint\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_deactivate_all_packs_api_v1_internal_packs_org_id_deactivate_all_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Internal endpoint used by the billing platform to deactivate every pack currently attached to the organization. Requires a valid platform API key.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_deactivate_all_packs_api_v1_internal_packs_org_id_deactivate_all_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"header\",\n \"name\": \"x-platform-key\",\n \"required\": true,\n \"schema\": {\n \"title\": \"X-Platform-Key\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/internal/packs/{org_id}/deactivate-all\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_deactivate_all_packs_api_v1_internal_packs_org_id_deactivate_all_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Deactivate all packs for an organization\",\n \"tags\": [\n \"packs-internal\"\n ]\n },\n \"api_deactivate_pack_api_v1_internal_packs_org_id_deactivate_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Internal endpoint used by the billing platform to deactivate a single pack tied to a subscription ID. Requires a valid platform API key.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_deactivate_pack_api_v1_internal_packs_org_id_deactivate_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"header\",\n \"name\": \"x-platform-key\",\n \"required\": true,\n \"schema\": {\n \"title\": \"X-Platform-Key\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/internal/packs/{org_id}/deactivate\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/DeactivatePackRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_deactivate_pack_api_v1_internal_packs_org_id_deactivate_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Deactivate a pack\",\n \"tags\": [\n \"packs-internal\"\n ]\n },\n \"api_delete_activity_api_v1_activities_activity_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete an activity by its UUID. The authenticated user must have permission to edit the parent course.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_activity_api_v1_activities_activity_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_activity_api_v1_activities_activity_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_delete_assignment_api_v1_assignments_assignment_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete an assignment by its UUID. The authenticated user must have permission to edit the parent course.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_assignment_api_v1_assignments_assignment_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_assignment_api_v1_assignments_assignment_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete assignment\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_delete_assignment_from_activity_api_v1_assignments_activity_activity_uuid_de\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete the assignment attached to the given activity UUID.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_assignment_from_activity_api_v1_assignments_activity_activity_uuid_de\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/activity/{activity_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_assignment_from_activity_api_v1_assignments_activity_activity_uuid_de\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete assignment by activity\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_delete_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a specific task submission by its UUID.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_submission_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Submission Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_task_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}/submissions/{assignment_task_submission_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete task submission\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_delete_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_assignment_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete an assignment task by its UUID. The authenticated user must have permission to edit the parent course.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_assignment_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_assignment_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete assignment task\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_delete_board_api_v1_boards_board_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a board by UUID. The current user must be the board owner or have delete permission.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_board_api_v1_boards_board_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_board_api_v1_boards_board_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a board\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_delete_certification_api_v1_certifications_certification_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a certification template by its UUID. Existing awarded certificates are not removed.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_certification_api_v1_certifications_certification_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"certification_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Certification Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/certifications/{certification_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_certification_api_v1_certifications_certification_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete certification\",\n \"tags\": [\n \"certifications\"\n ]\n },\n \"api_delete_collection_api_v1_collections_collection_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a collection by its UUID. The collection is permanently removed.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_collection_api_v1_collections_collection_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"collection_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Collection Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/collections/{collection_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_collection_api_v1_collections_collection_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete collection\",\n \"tags\": [\n \"collections\"\n ]\n },\n \"api_delete_comment_api_v1_comments_comment_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Permanently delete a comment. Requires the comment author or a community admin.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_comment_api_v1_comments_comment_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"comment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Comment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/comments/{comment_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_comment_api_v1_comments_comment_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a comment\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_delete_community_api_v1_communities_community_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Permanently delete a community. Requires admin/maintainer role.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_community_api_v1_communities_community_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_community_api_v1_communities_community_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a community\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_delete_course_api_v1_courses_course_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Permanently delete a course and all of its content by UUID.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_course_api_v1_courses_course_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_course_api_v1_courses_course_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete course\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_delete_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_del\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a course update post by its UUID.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_del\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"courseupdate_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Courseupdate Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/update/{courseupdate_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_del\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete course update\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_delete_coursechapter_api_v1_chapters_chapter_id_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a chapter and detach its activities from the course.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_coursechapter_api_v1_chapters_chapter_id_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"chapter_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Chapter Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/{chapter_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_coursechapter_api_v1_chapters_chapter_id_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete chapter\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_delete_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a custom domain. This action cannot be undone. Only organization administrators can delete custom domains.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"domain_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Domain Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/domains/{domain_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a custom domain\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_delete_discussion_api_v1_discussions_discussion_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Permanently delete a discussion and its associated comments. Requires the discussion author or an admin role.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_discussion_api_v1_discussions_discussion_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_discussion_api_v1_discussions_discussion_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_delete_episode_api_v1_podcasts_episodes_episode_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a podcast episode and its associated files. This operation cannot be undone.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_episode_api_v1_podcasts_episodes_episode_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"episode_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Episode Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/episodes/{episode_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_episode_api_v1_podcasts_episodes_episode_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a podcast episode\",\n \"tags\": [\n \"podcasts\",\n \"episodes\"\n ]\n },\n \"api_delete_invite_code_api_v1_orgs_org_id_invites_org_invite_code_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete an invite code by its UUID.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_invite_code_api_v1_orgs_org_id_invites_org_invite_code_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_invite_code_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Invite Code Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/invites/{org_invite_code_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_invite_code_api_v1_orgs_org_id_invites_org_invite_code_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete an invite code\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_delete_org_api_v1_orgs_org_id_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete an organization by its ID. This action cannot be undone.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_org_api_v1_orgs_org_id_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_org_api_v1_orgs_org_id_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete an organization\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_delete_org_users_invites_api_v1_orgs_org_id_invites_users_email_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Revoke a pending invitation for the user identified by email.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_org_users_invites_api_v1_orgs_org_id_invites_users_email_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"email\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Email\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/invites/users/{email}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_org_users_invites_api_v1_orgs_org_id_invites_users_email_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Revoke an invited user\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_delete_playground_api_v1_playgrounds_playground_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a playground by UUID. The current user must have delete permission on the playground.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_playground_api_v1_playgrounds_playground_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_playground_api_v1_playgrounds_playground_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_delete_podcast_api_v1_podcasts_podcast_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a podcast and its associated episodes. This operation cannot be undone.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_podcast_api_v1_podcasts_podcast_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_podcast_api_v1_podcasts_podcast_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a podcast\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_delete_resources_from_usergroup_api_v1_usergroups_usergroup_id_remove_resour\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Unlink one or more resources from a usergroup. Resource UUIDs should be provided as a comma-separated string.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_resources_from_usergroup_api_v1_usergroups_usergroup_id_remove_resour\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"resource_uuids\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Resource Uuids\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}/remove_resources\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_resources_from_usergroup_api_v1_usergroups_usergroup_id_remove_resour\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove resources from a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_delete_role_api_v1_roles_role_id_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a role by its role_id. Deletion is permanent.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_role_api_v1_roles_role_id_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"role_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Role Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/roles/{role_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_role_api_v1_roles_role_id_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete role\",\n \"tags\": [\n \"roles\"\n ]\n },\n \"api_delete_user_api_v1_users_user_id_user_id_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a user by ID. Invalidates the user's cached session so stale session data is not served.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_user_api_v1_users_user_id_user_id_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/user_id/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_user_api_v1_users_user_id_user_id_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete user\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_delete_user_assignment_submissions_api_v1_assignments_assignment_uuid_submis\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a user's assignment-level submission on the given assignment.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_user_assignment_submissions_api_v1_assignments_assignment_uuid_submis\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_user_assignment_submissions_api_v1_assignments_assignment_uuid_submis\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete assignment submission for user\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_delete_usergroup_api_v1_usergroups_usergroup_id_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Permanently delete a usergroup along with its user and resource links.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_usergroup_api_v1_usergroups_usergroup_id_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_usergroup_api_v1_usergroups_usergroup_id_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_delete_users_from_usergroup_api_v1_usergroups_usergroup_id_remove_users_dele\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove one or more users from a usergroup. User IDs should be provided as a comma-separated string.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_users_from_usergroup_api_v1_usergroups_usergroup_id_remove_users_dele\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"user_ids\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Ids\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}/remove_users\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_users_from_usergroup_api_v1_usergroups_usergroup_id_remove_users_dele\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove users from a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_delete_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Deletes a webhook endpoint along with all of its delivery logs.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_delete_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"webhook_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Webhook Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks/{webhook_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_delete_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a webhook endpoint\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_duplicate_board_api_v1_boards_board_uuid_duplicate_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a copy of an existing board. The current user must have permission to create boards in the source org.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_duplicate_board_api_v1_boards_board_uuid_duplicate_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/duplicate\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_duplicate_board_api_v1_boards_board_uuid_duplicate_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Duplicate a board\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_duplicate_playground_api_v1_playgrounds_playground_uuid_duplicate_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a copy of an existing playground. The current user must have permission to create playgrounds in the source org.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_duplicate_playground_api_v1_playgrounds_playground_uuid_duplicate_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}/duplicate\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_duplicate_playground_api_v1_playgrounds_playground_uuid_duplicate_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Duplicate a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_editor_ai_send_message_stream_api_v1_ai_stream_editor_message_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Send a message to an existing AI editor chat session and stream the response as Server-Sent Events (SSE). The endpoint is aware of the current editor content and can emit content modification blocks.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_editor_ai_send_message_stream_api_v1_ai_stream_editor_message_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/stream/editor/message\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendEditorAIChatMessage\"\n },\n \"security\": null,\n \"skill_name\": \"api_editor_ai_send_message_stream_api_v1_ai_stream_editor_message_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Send editor AI chat message (streaming)\",\n \"tags\": [\n \"ai\"\n ]\n },\n \"api_editor_ai_start_chat_session_stream_api_v1_ai_stream_editor_start_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Start a new AI editor chat session that is aware of the current editor content. Streams the response as Server-Sent Events (SSE) and can emit content modification blocks to be inserted into the editor.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_editor_ai_start_chat_session_stream_api_v1_ai_stream_editor_start_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/stream/editor/start\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/StartEditorAIChatSession\"\n },\n \"security\": null,\n \"skill_name\": \"api_editor_ai_start_chat_session_stream_api_v1_ai_stream_editor_start_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Start editor AI chat session (streaming)\",\n \"tags\": [\n \"ai\"\n ]\n },\n \"api_export_course_api_v1_courses_course_uuid_export_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Export a single course and all its content (chapters, activities, blocks, and files) as a ZIP archive following the LearnHouse export format.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_export_course_api_v1_courses_course_uuid_export_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/export\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_export_course_api_v1_courses_course_uuid_export_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Export course as ZIP\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_export_courses_batch_api_v1_courses_export_batch_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Export multiple courses (up to 20 per request) as a single ZIP archive. All specified courses must belong to the same organization and the caller must have read access to each course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_export_courses_batch_api_v1_courses_export_batch_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/courses/export/batch\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/BatchExportRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_export_courses_batch_api_v1_courses_export_batch_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Export multiple courses as ZIP\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_export_org_users_api_v1_orgs_org_id_users_export_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Export organization users as a CSV file. Supports the same filters as the users listing endpoint. Requires authentication; anonymous access is rejected.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_export_org_users_api_v1_orgs_org_id_users_export_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"search\",\n \"required\": false,\n \"schema\": {\n \"default\": \"\",\n \"title\": \"Search\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"usergroup_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Usergroup Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"usergroup_filter\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"in_group\",\n \"not_in_group\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Usergroup Filter\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"sort_order\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"default\": \"desc\",\n \"title\": \"Sort Order\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"role_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Role Id\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"verified\",\n \"unverified\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Status\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/users/export\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_export_org_users_api_v1_orgs_org_id_users_export_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Export organization users as CSV\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_final_grade_submission_api_v1_assignments_assignment_uuid_submissions_user_i\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Compute and store the final grade for an assignment submission. Accepts an optional overall_feedback note that will be stored alongside the grade.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_final_grade_submission_api_v1_assignments_assignment_uuid_submissions_user_i\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions/{user_id}/grade\",\n \"request_body\": {\n \"anyOf\": [\n {\n \"$ref\": \"#/components/schemas/GradeSubmissionBody\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Body\"\n },\n \"security\": null,\n \"skill_name\": \"api_final_grade_submission_api_v1_assignments_assignment_uuid_submissions_user_i\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Finalize assignment submission grade\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_get_activity_api_v1_activities_activity_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a single activity by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_activity_api_v1_activities_activity_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_activity_api_v1_activities_activity_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get activity by UUID\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_get_activity_state_api_v1_activities_activity_uuid_state_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get the current state of an activity for conflict detection. Returns lightweight info (update_date, current_version, last_modified_by) used by the frontend to detect remote changes.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_activity_state_api_v1_activities_activity_uuid_state_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}/state\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_activity_state_api_v1_activities_activity_uuid_state_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get activity state\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_get_activity_version_api_v1_activities_activity_uuid_versions_version_number\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a specific historical version of an activity by its version number.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_activity_version_api_v1_activities_activity_uuid_versions_version_number\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"version_number\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Version Number\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}/versions/{version_number}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_activity_version_api_v1_activities_activity_uuid_versions_version_number\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get activity version\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_get_activity_versions_api_v1_activities_activity_uuid_versions_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get the version history for an activity, ordered newest first. Supports pagination via limit and offset.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_activity_versions_api_v1_activities_activity_uuid_versions_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 20,\n \"maximum\": 100,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}/versions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_activity_versions_api_v1_activities_activity_uuid_versions_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List activity versions\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_get_activityby_id_api_v1_activities_id_activity_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a single activity by its numeric database ID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_activityby_id_api_v1_activities_id_activity_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/id/{activity_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_activityby_id_api_v1_activities_id_activity_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get activity by ID\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_get_all_user_certificates_api_v1_certifications_user_all_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get every certificate awarded to the current user across all courses, with complete linked information.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_all_user_certificates_api_v1_certifications_user_all_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/certifications/user/all\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_all_user_certificates_api_v1_certifications_user_all_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List my certificates\",\n \"tags\": [\n \"certifications\"\n ]\n },\n \"api_get_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get details of a specific API token. Returns token metadata, but never the full token secret.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"token_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Token Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/api-tokens/{token_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get API token\",\n \"tags\": [\n \"api-tokens\"\n ]\n },\n \"api_get_assignments_api_v1_assignments_course_course_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get all assignments attached to activities within the given course.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_assignments_api_v1_assignments_course_course_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/course/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_assignments_api_v1_assignments_course_course_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List course assignments\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_get_audio_file_block_api_v1_blocks_audio_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve an audio block by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_audio_file_block_api_v1_blocks_audio_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"block_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Block Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/blocks/audio\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_audio_file_block_api_v1_blocks_audio_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get audio block\",\n \"tags\": [\n \"blocks\"\n ]\n },\n \"api_get_authorization_status_api_v1_users_authorize_ressource_ressource_uuid_act\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Check whether the current user is authorized to perform the given action (create/read/update/delete) on a specific resource.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_authorization_status_api_v1_users_authorize_ressource_ressource_uuid_act\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"ressource_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Ressource Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"action\",\n \"required\": true,\n \"schema\": {\n \"enum\": [\n \"create\",\n \"read\",\n \"update\",\n \"delete\"\n ],\n \"title\": \"Action\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/users/authorize/ressource/{ressource_uuid}/action/{action}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_authorization_status_api_v1_users_authorize_ressource_ressource_uuid_act\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Check authorization for resource action\",\n \"tags\": [\n \"users\"\n ]\n },\n \"api_get_board_api_v1_boards_board_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a single board by its UUID. The current user must be a member of the board.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_board_api_v1_boards_board_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_board_api_v1_boards_board_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a board by UUID\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_get_board_members_api_v1_boards_board_uuid_members_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the list of members on a given board. The current user must be a member of the board.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_board_members_api_v1_boards_board_uuid_members_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/members\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_board_members_api_v1_boards_board_uuid_members_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List board members\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_get_boards_by_org_api_v1_boards_org_org_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List all boards in the given organization that the current user is a member of or allowed to see.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_boards_by_org_api_v1_boards_org_org_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/org/{org_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_boards_by_org_api_v1_boards_org_org_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List boards for an organization\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_get_certificate_by_user_certification_uuid_api_v1_certifications_certificate\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get an awarded certificate by its user_certification UUID, with linked certification and course details.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_certificate_by_user_certification_uuid_api_v1_certifications_certificate\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_certification_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Certification Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/certifications/certificate/{user_certification_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_certificate_by_user_certification_uuid_api_v1_certifications_certificate\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get awarded certificate\",\n \"tags\": [\n \"certifications\"\n ]\n },\n \"api_get_certification_api_v1_certifications_certification_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a single certification template by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_certification_api_v1_certifications_certification_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"certification_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Certification Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/certifications/{certification_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_certification_api_v1_certifications_certification_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get certification\",\n \"tags\": [\n \"certifications\"\n ]\n },\n \"api_get_certifications_by_course_api_v1_certifications_course_course_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get all certification templates attached to a course.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_certifications_by_course_api_v1_certifications_course_course_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/certifications/course/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_certifications_by_course_api_v1_certifications_course_course_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List course certifications\",\n \"tags\": [\n \"certifications\"\n ]\n },\n \"api_get_chapter_activities_api_v1_activities_chapter_chapter_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get all activities that belong to the given chapter, in their configured order.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_chapter_activities_api_v1_activities_chapter_chapter_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"chapter_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Chapter Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/chapter/{chapter_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_chapter_activities_api_v1_activities_chapter_chapter_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List chapter activities\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_get_chapter_by_api_v1_chapters_course_course_id_page_page_limit_limit_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Paginated list of chapters for the specified course.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_chapter_by_api_v1_chapters_course_course_id_page_page_limit_limit_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"page\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"limit\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/course/{course_id}/page/{page}/limit/{limit}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_chapter_by_api_v1_chapters_course_course_id_page_page_limit_limit_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List course chapters\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_get_chapter_meta_api_v1_chapters_course_course_uuid_meta_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Deprecated endpoint returning chapter metadata for a course. Use /course/{course_uuid}/meta on the courses router instead.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_chapter_meta_api_v1_chapters_course_course_uuid_meta_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/course/{course_uuid}/meta\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_chapter_meta_api_v1_chapters_course_course_uuid_meta_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get chapters metadata (deprecated)\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_get_collection_api_v1_collections_collection_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a single collection by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_collection_api_v1_collections_collection_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"collection_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Collection Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/collections/{collection_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_collection_api_v1_collections_collection_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get collection\",\n \"tags\": [\n \"collections\"\n ]\n },\n \"api_get_collections_by_api_v1_collections_org_org_id_page_page_limit_limit_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get collections for an organization, paginated by `page` and `limit`.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_collections_by_api_v1_collections_org_org_id_page_page_limit_limit_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"page\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"limit\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/collections/org/{org_id}/page/{page}/limit/{limit}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_collections_by_api_v1_collections_org_org_id_page_page_limit_limit_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List collections for org\",\n \"tags\": [\n \"collections\"\n ]\n },\n \"api_get_comment_count_api_v1_discussions_discussion_uuid_comments_count_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the total number of comments on a discussion. This endpoint is unauthenticated and safe to call for counters.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_comment_count_api_v1_discussions_discussion_uuid_comments_count_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/comments/count\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_comment_count_api_v1_discussions_discussion_uuid_comments_count_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get comment count for a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_get_comments_by_discussion_api_v1_discussions_discussion_uuid_comments_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a paginated list of comments belonging to a discussion, including the current user's vote status.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_comments_by_discussion_api_v1_discussions_discussion_uuid_comments_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"minimum\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 100,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/comments\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_comments_by_discussion_api_v1_discussions_discussion_uuid_comments_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List comments for a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_get_communities_by_org_api_v1_communities_org_org_id_page_page_limit_limit_g\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a paginated list of communities belonging to an organization.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_communities_by_org_api_v1_communities_org_org_id_page_page_limit_limit_g\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"page\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"limit\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/org/{org_id}/page/{page}/limit/{limit}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_communities_by_org_api_v1_communities_org_org_id_page_page_limit_limit_g\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List communities for an organization\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_get_community_api_v1_communities_community_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a community by its UUID. The caller must be able to read the community.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_community_api_v1_communities_community_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_community_api_v1_communities_community_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a community\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_get_community_by_course_api_v1_communities_course_course_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve the community that is linked to a specific course, if one exists.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_community_by_course_api_v1_communities_course_course_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/course/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_community_by_course_api_v1_communities_course_course_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get community for a course\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_get_community_rights_api_v1_communities_community_uuid_rights_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return a detailed breakdown of the rights the current user has on a community (read, write, moderate, admin).\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_community_rights_api_v1_communities_community_uuid_rights_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}/rights\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_community_rights_api_v1_communities_community_uuid_rights_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get current user rights for a community\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_get_course_api_v1_courses_course_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a single course by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_course_api_v1_courses_course_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_course_api_v1_courses_course_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get course by UUID\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_get_course_by_id_api_v1_courses_id_course_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a single course by its numeric database ID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_course_by_id_api_v1_courses_id_course_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/id/{course_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_course_by_id_api_v1_courses_id_course_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get course by ID\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_get_course_by_orgslug_api_v1_courses_org_slug_org_slug_page_page_limit_limit\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Paginated list of courses for an organization identified by slug. Set include_unpublished=true to include unpublished courses (requires update permission on the organization).\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_course_by_orgslug_api_v1_courses_org_slug_org_slug_page_page_limit_limit\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"page\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"limit\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"include_unpublished\",\n \"required\": false,\n \"schema\": {\n \"default\": false,\n \"title\": \"Include Unpublished\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/org_slug/{org_slug}/page/{page}/limit/{limit}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_course_by_orgslug_api_v1_courses_org_slug_org_slug_page_page_limit_limit\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List courses for an organization\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_get_course_contributors_api_v1_courses_course_uuid_contributors_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return all contributors attached to a given course along with their authorship role and status.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_course_contributors_api_v1_courses_course_uuid_contributors_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/contributors\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_course_contributors_api_v1_courses_course_uuid_contributors_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List course contributors\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_get_course_meta_api_v1_courses_course_uuid_meta_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve full course metadata including chapters and activities. Use slim=true to exclude heavy activity content/details, useful for navigation menus.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_course_meta_api_v1_courses_course_uuid_meta_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"with_unpublished_activities\",\n \"required\": false,\n \"schema\": {\n \"default\": false,\n \"title\": \"With Unpublished Activities\",\n \"type\": \"boolean\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"slim\",\n \"required\": false,\n \"schema\": {\n \"default\": false,\n \"title\": \"Slim\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/meta\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_course_meta_api_v1_courses_course_uuid_meta_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get course metadata\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_get_course_updates_api_v1_courses_course_uuid_updates_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return all course update posts for a given course.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_course_updates_api_v1_courses_course_uuid_updates_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/updates\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_course_updates_api_v1_courses_course_uuid_updates_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List course updates\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_get_course_user_rights_api_v1_courses_course_uuid_rights_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the current user's detailed rights on a course (permissions, ownership, roles). Intended for UI-level feature gating; anonymous users only see rights for public courses.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_course_user_rights_api_v1_courses_course_uuid_rights_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/rights\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_course_user_rights_api_v1_courses_course_uuid_rights_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get course user rights\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_get_coursechapter_api_v1_chapters_chapter_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a single chapter by its numeric ID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_coursechapter_api_v1_chapters_chapter_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"chapter_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Chapter Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/{chapter_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_coursechapter_api_v1_chapters_chapter_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get chapter by ID\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_get_courses_count_api_v1_courses_org_slug_org_slug_count_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the total number of courses for the organization identified by slug.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_courses_count_api_v1_courses_org_slug_org_slug_count_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/org_slug/{org_slug}/count\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_courses_count_api_v1_courses_org_slug_org_slug_count_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Count courses in an organization\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_get_current_user_api_v1_users_profile_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the currently authenticated user, or an anonymous user object if no session is present.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_current_user_api_v1_users_profile_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/users/profile\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_current_user_api_v1_users_profile_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get current user profile\",\n \"tags\": [\n \"users\"\n ]\n },\n \"api_get_current_user_session_api_v1_users_session_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the full session for the current user, including org memberships and roles. Cached in Redis for up to 10 minutes per user.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_current_user_session_api_v1_users_session_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/users/session\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_current_user_session_api_v1_users_session_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get current user session\",\n \"tags\": [\n \"users\"\n ]\n },\n \"api_get_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get details of a single custom domain by its UUID, including verification status.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"domain_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Domain Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/domains/{domain_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a custom domain\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_get_discussion_api_v1_discussions_discussion_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a single discussion by its UUID, including the current user's vote status.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_discussion_api_v1_discussions_discussion_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_discussion_api_v1_discussions_discussion_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_get_discussion_labels_api_v1_discussions_labels_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the catalog of labels (category tags) that can be assigned to discussions.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_discussion_labels_api_v1_discussions_labels_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/discussions/labels\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_discussion_labels_api_v1_discussions_labels_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List discussion labels\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_get_discussions_by_community_api_v1_communities_community_uuid_discussions_g\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a paginated list of discussions for a community with sorting and optional label filtering. Pinned discussions are always returned first.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_discussions_by_community_api_v1_communities_community_uuid_discussions_g\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"sort_by\",\n \"required\": false,\n \"schema\": {\n \"$ref\": \"#/components/schemas/DiscussionSortBy\",\n \"default\": \"recent\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"minimum\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 10,\n \"maximum\": 100,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"label\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Label\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}/discussions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_discussions_by_community_api_v1_communities_community_uuid_discussions_g\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List discussions in a community\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_get_domain_verification_info_api_v1_orgs_org_id_domains_domain_uuid_verifica\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the DNS records (TXT and CNAME) that must be configured at the domain provider in order to verify the custom domain.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_domain_verification_info_api_v1_orgs_org_id_domains_domain_uuid_verifica\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"domain_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Domain Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/domains/{domain_uuid}/verification-info\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_domain_verification_info_api_v1_orgs_org_id_domains_domain_uuid_verifica\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get DNS verification info\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_get_editor_bootstrap_api_v1_activities_activity_uuid_editor_bootstrap_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Single-roundtrip payload for the activity editor: activity + minimal course + org with resolved features.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_editor_bootstrap_api_v1_activities_activity_uuid_editor_bootstrap_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}/editor-bootstrap\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_editor_bootstrap_api_v1_activities_activity_uuid_editor_bootstrap_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Editor bootstrap payload\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_get_episode_api_v1_podcasts_episodes_episode_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Fetch a podcast episode by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_episode_api_v1_podcasts_episodes_episode_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"episode_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Episode Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/episodes/{episode_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_episode_api_v1_podcasts_episodes_episode_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a podcast episode\",\n \"tags\": [\n \"podcasts\",\n \"episodes\"\n ]\n },\n \"api_get_image_file_block_api_v1_blocks_image_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve an image block by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_image_file_block_api_v1_blocks_image_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"block_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Block Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/blocks/image\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_image_file_block_api_v1_blocks_image_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get image block\",\n \"tags\": [\n \"blocks\"\n ]\n },\n \"api_get_invite_code_api_v1_orgs_org_id_invites_code_invite_code_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Fetch details for a single invite code.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_invite_code_api_v1_orgs_org_id_invites_code_invite_code_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"invite_code\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Invite Code\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/invites/code/{invite_code}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_invite_code_api_v1_orgs_org_id_invites_code_invite_code_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get an invite code\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_get_invite_codes_api_v1_orgs_org_id_invites_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List all invite codes for the organization.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_invite_codes_api_v1_orgs_org_id_invites_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/invites\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_invite_codes_api_v1_orgs_org_id_invites_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List invite codes\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_get_org_by_slug_api_v1_orgs_slug_org_slug_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Fetch a single organization by its URL slug.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_org_by_slug_api_v1_orgs_slug_org_slug_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/slug/{org_slug}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_org_by_slug_api_v1_orgs_slug_org_slug_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get organization by slug\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_get_org_by_uuid_api_v1_orgs_uuid_org_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Fetch a single organization by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_org_by_uuid_api_v1_orgs_uuid_org_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/uuid/{org_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_org_by_uuid_api_v1_orgs_uuid_org_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get organization by UUID\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_get_org_pack_summary_api_v1_orgs_org_id_packs_summary_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return aggregated totals from the organization's active packs (AI credits, member seats, and active pack count). Only organization admins can view the summary.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_org_pack_summary_api_v1_orgs_org_id_packs_summary_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/packs/summary\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_org_pack_summary_api_v1_orgs_org_id_packs_summary_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get pack totals summary\",\n \"tags\": [\n \"packs\"\n ]\n },\n \"api_get_org_packs_api_v1_orgs_org_id_packs_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the organization's active packs along with the full catalog of available packs. Only organization admins can view packs.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_org_packs_api_v1_orgs_org_id_packs_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/packs\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_org_packs_api_v1_orgs_org_id_packs_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List active and available packs\",\n \"tags\": [\n \"packs\"\n ]\n },\n \"api_get_org_signup_mechanism_api_v1_orgs_org_id_signup_mechanism_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Change whether the organization allows open signup or requires an invite code.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_get_org_signup_mechanism_api_v1_orgs_org_id_signup_mechanism_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"signup_mechanism\",\n \"required\": true,\n \"schema\": {\n \"enum\": [\n \"open\",\n \"inviteOnly\"\n ],\n \"title\": \"Signup Mechanism\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/signup_mechanism\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_org_signup_mechanism_api_v1_orgs_org_id_signup_mechanism_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization signup mechanism\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_get_org_usage_api_v1_orgs_org_id_usage_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return current usage, plan limits, and remaining quota for the organization's plan-based features.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_org_usage_api_v1_orgs_org_id_usage_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/usage\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_org_usage_api_v1_orgs_org_id_usage_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get organization usage and limits\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_get_org_users_api_v1_orgs_org_id_users_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List organization users with pagination, search and filters. Requires authentication; anonymous access is rejected. The limit is capped at 100 to prevent data dumping.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_org_users_api_v1_orgs_org_id_users_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"Page number\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"description\": \"Page number\",\n \"minimum\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"Items per page (max 100)\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 20,\n \"description\": \"Items per page (max 100)\",\n \"maximum\": 100,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"search\",\n \"required\": false,\n \"schema\": {\n \"default\": \"\",\n \"title\": \"Search\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Filter by usergroup membership\",\n \"in\": \"query\",\n \"name\": \"usergroup_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter by usergroup membership\",\n \"title\": \"Usergroup Id\"\n }\n },\n {\n \"description\": \"Membership filter: 'in_group' or 'not_in_group'\",\n \"in\": \"query\",\n \"name\": \"usergroup_filter\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"in_group\",\n \"not_in_group\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Membership filter: 'in_group' or 'not_in_group'\",\n \"title\": \"Usergroup Filter\"\n }\n },\n {\n \"description\": \"Sort order for join date\",\n \"in\": \"query\",\n \"name\": \"sort_order\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"default\": \"desc\",\n \"description\": \"Sort order for join date\",\n \"title\": \"Sort Order\"\n }\n },\n {\n \"description\": \"Filter by role ID\",\n \"in\": \"query\",\n \"name\": \"role_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter by role ID\",\n \"title\": \"Role Id\"\n }\n },\n {\n \"description\": \"Filter by verification status\",\n \"in\": \"query\",\n \"name\": \"status\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"enum\": [\n \"verified\",\n \"unverified\"\n ],\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"description\": \"Filter by verification status\",\n \"title\": \"Status\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/users\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_org_users_api_v1_orgs_org_id_users_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List organization users\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_get_org_users_invites_api_v1_orgs_org_id_invites_users_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List users who have been invited to the organization but have not joined yet.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_org_users_invites_api_v1_orgs_org_id_invites_users_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/invites/users\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_org_users_invites_api_v1_orgs_org_id_invites_users_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List invited users\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_get_pdf_file_block_api_v1_blocks_pdf_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a PDF block by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_pdf_file_block_api_v1_blocks_pdf_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"block_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Block Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/blocks/pdf\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_pdf_file_block_api_v1_blocks_pdf_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get PDF block\",\n \"tags\": [\n \"blocks\"\n ]\n },\n \"api_get_plan_limits_api_v1_plans_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Public endpoint that returns the feature limits (courses, members, admin seats, AI credits) for every available plan. Used by the frontend to render pricing pages and plan comparison tables.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_plan_limits_api_v1_plans_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/plans\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_plan_limits_api_v1_plans_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get plan feature limits\",\n \"tags\": [\n \"plans\"\n ]\n },\n \"api_get_playground_api_v1_playgrounds_playground_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a single playground by its UUID. The current user must have access to the playground.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_playground_api_v1_playgrounds_playground_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_playground_api_v1_playgrounds_playground_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a playground by UUID\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_get_playground_reactions_api_v1_playgrounds_playground_uuid_reactions_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return reaction counts and the current user's reactions for a playground. Supports anonymous viewers.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_playground_reactions_api_v1_playgrounds_playground_uuid_reactions_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}/reactions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_playground_reactions_api_v1_playgrounds_playground_uuid_reactions_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List reactions on a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_get_playground_usergroups_api_v1_playgrounds_playground_uuid_usergroups_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the list of usergroups that have access to a given playground.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_playground_usergroups_api_v1_playgrounds_playground_uuid_usergroups_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}/usergroups\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_playground_usergroups_api_v1_playgrounds_playground_uuid_usergroups_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List usergroups attached to a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_get_podcast_api_v1_podcasts_podcast_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Fetch a podcast by its UUID. The caller must have read access to the podcast.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_podcast_api_v1_podcasts_podcast_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_podcast_api_v1_podcasts_podcast_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a podcast\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_get_podcast_episodes_api_v1_podcasts_podcast_uuid_episodes_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return all episodes for a podcast. Set `include_unpublished=true` to include unpublished episodes (requires appropriate permissions).\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_podcast_episodes_api_v1_podcasts_podcast_uuid_episodes_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"include_unpublished\",\n \"required\": false,\n \"schema\": {\n \"default\": false,\n \"title\": \"Include Unpublished\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}/episodes\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_podcast_episodes_api_v1_podcasts_podcast_uuid_episodes_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List podcast episodes\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_get_podcast_meta_api_v1_podcasts_podcast_uuid_meta_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Fetch a podcast along with its episodes and related metadata.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_podcast_meta_api_v1_podcasts_podcast_uuid_meta_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}/meta\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_podcast_meta_api_v1_podcasts_podcast_uuid_meta_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get podcast metadata\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_get_podcast_rights_api_v1_podcasts_podcast_uuid_rights_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the current user's rights (read, update, delete) on a given podcast.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_podcast_rights_api_v1_podcasts_podcast_uuid_rights_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}/rights\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_podcast_rights_api_v1_podcasts_podcast_uuid_rights_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get podcast user rights\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_get_podcasts_count_orgslug_api_v1_podcasts_org_slug_org_slug_count_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the total number of podcasts belonging to an organization.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_podcasts_count_orgslug_api_v1_podcasts_org_slug_org_slug_count_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/org_slug/{org_slug}/count\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_podcasts_count_orgslug_api_v1_podcasts_org_slug_org_slug_count_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Count podcasts for an organization\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_get_podcasts_orgslug_api_v1_podcasts_org_slug_org_slug_page_page_limit_limit\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return a paginated list of podcasts belonging to an organization, with episode counts. Set `include_unpublished=true` to include unpublished podcasts (requires appropriate permissions).\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_podcasts_orgslug_api_v1_podcasts_org_slug_org_slug_page_page_limit_limit\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"page\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"limit\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"include_unpublished\",\n \"required\": false,\n \"schema\": {\n \"default\": false,\n \"title\": \"Include Unpublished\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/org_slug/{org_slug}/page/{page}/limit/{limit}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_podcasts_orgslug_api_v1_podcasts_org_slug_org_slug_page_page_limit_limit\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List podcasts for an organization\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_get_reactions_api_v1_discussions_discussion_uuid_reactions_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return all emoji reactions on a discussion, grouped by emoji, with counts and a flag indicating whether the current user has reacted.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_reactions_api_v1_discussions_discussion_uuid_reactions_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/reactions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_reactions_api_v1_discussions_discussion_uuid_reactions_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List reactions on a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_get_resources_linked_to_usergroup_api_v1_usergroups_usergroup_id_resources_g\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the UUIDs of resources (courses, collections, etc.) that are linked to a usergroup.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_resources_linked_to_usergroup_api_v1_usergroups_usergroup_id_resources_g\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}/resources\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_resources_linked_to_usergroup_api_v1_usergroups_usergroup_id_resources_g\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List resources linked to a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_get_role_api_v1_roles_role_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a single role by its role_id.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_role_api_v1_roles_role_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"role_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Role Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/roles/{role_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_role_api_v1_roles_role_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get role\",\n \"tags\": [\n \"roles\"\n ]\n },\n \"api_get_roles_by_organization_api_v1_roles_org_org_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get all roles for a specific organization, including global roles available to every org.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_roles_by_organization_api_v1_roles_org_org_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/roles/org/{org_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_roles_by_organization_api_v1_roles_org_org_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List roles for organization\",\n \"tags\": [\n \"roles\"\n ]\n },\n \"api_get_submission_grade_api_v1_assignments_assignment_uuid_submissions_user_id_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read the computed grade for a user's assignment submission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_submission_grade_api_v1_assignments_assignment_uuid_submissions_user_id_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions/{user_id}/grade\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_submission_grade_api_v1_assignments_assignment_uuid_submissions_user_id_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get assignment submission grade\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_get_trail_by_org_id_api_v1_trail_org_org_id_trail_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve the current user's learning trail scoped to a specific organization.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_trail_by_org_id_api_v1_trail_org_org_id_trail_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/trail/org/{org_id}/trail\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_trail_by_org_id_api_v1_trail_org_org_id_trail_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user trail by organization\",\n \"tags\": [\n \"trail\"\n ]\n },\n \"api_get_user_by_id_api_v1_users_id_user_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a user by numeric ID. Requires authentication to prevent user enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_user_by_id_api_v1_users_id_user_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/id/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_user_by_id_api_v1_users_id_user_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user by ID\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_get_user_by_username_api_v1_users_username_username_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a user by username. Requires authentication to prevent username enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_user_by_username_api_v1_users_username_username_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"username\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Username\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/users/username/{username}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_user_by_username_api_v1_users_username_username_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user by username\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_get_user_by_uuid_api_v1_users_uuid_user_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get a user by UUID. Requires authentication to prevent user enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_user_by_uuid_api_v1_users_uuid_user_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/users/uuid/{user_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_user_by_uuid_api_v1_users_uuid_user_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get user by UUID\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_get_user_certificates_for_course_api_v1_certifications_user_course_course_uu\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Get all certificates awarded to the current user for a specific course, including certification details.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_user_certificates_for_course_api_v1_certifications_user_course_course_uu\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/certifications/user/course/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_user_certificates_for_course_api_v1_certifications_user_course_course_uu\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List my certificates for course\",\n \"tags\": [\n \"certifications\"\n ]\n },\n \"api_get_user_courses_api_v1_users_user_id_courses_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List courses authored or contributed to by a user. Paginated; the maximum page size is 50 to prevent bulk data extraction.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_user_courses_api_v1_users_user_id_courses_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"Page number\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"description\": \"Page number\",\n \"minimum\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"Items per page (max 50)\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 10,\n \"description\": \"Items per page (max 50)\",\n \"maximum\": 50,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/{user_id}/courses\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_user_courses_api_v1_users_user_id_courses_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List courses for user\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_get_user_trail_api_v1_trail_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve the learning trails associated with the currently authenticated user.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_user_trail_api_v1_trail_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/trail/\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_user_trail_api_v1_trail_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get current user's trails\",\n \"tags\": [\n \"trail\"\n ]\n },\n \"api_get_user_votes_batch_api_v1_discussions_votes_batch_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Check in bulk whether the current user has upvoted each of the supplied discussion UUIDs. Returns a mapping of discussion_uuid to voted status.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_get_user_votes_batch_api_v1_discussions_votes_batch_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/discussions/votes/batch\",\n \"request_body\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"title\": \"Discussion Uuids\",\n \"type\": \"array\"\n },\n \"security\": null,\n \"skill_name\": \"api_get_user_votes_batch_api_v1_discussions_votes_batch_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Batch check user vote status\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_get_usergroup_api_v1_usergroups_usergroup_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a usergroup by its numeric identifier.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_usergroup_api_v1_usergroups_usergroup_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_usergroup_api_v1_usergroups_usergroup_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_get_usergroups_api_v1_usergroups_org_org_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve every usergroup that belongs to a given organization.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_usergroups_api_v1_usergroups_org_org_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/org/{org_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_usergroups_api_v1_usergroups_org_org_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List usergroups for an organization\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_get_usergroupsby_resource_api_v1_usergroups_resource_resource_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve every usergroup that is linked to a given resource UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_usergroupsby_resource_api_v1_usergroups_resource_resource_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"resource_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Resource Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/resource/{resource_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_usergroupsby_resource_api_v1_usergroups_resource_resource_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List usergroups linked to a resource\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_get_users_linked_to_usergroup_api_v1_usergroups_usergroup_id_users_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve the list of users that belong to a specific usergroup.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_users_linked_to_usergroup_api_v1_usergroups_usergroup_id_users_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}/users\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_users_linked_to_usergroup_api_v1_usergroups_usergroup_id_users_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List users in a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_get_video_file_block_api_v1_blocks_video_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve a video block by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_video_file_block_api_v1_blocks_video_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"block_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Block Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/blocks/video\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_video_file_block_api_v1_blocks_video_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get video block\",\n \"tags\": [\n \"blocks\"\n ]\n },\n \"api_get_webhook_deliveries_api_v1_orgs_org_id_webhooks_webhook_uuid_deliveries_g\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns recent webhook delivery attempts and their outcomes for the specified endpoint, up to the requested limit.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_webhook_deliveries_api_v1_orgs_org_id_webhooks_webhook_uuid_deliveries_g\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"webhook_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Webhook Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks/{webhook_uuid}/deliveries\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_webhook_deliveries_api_v1_orgs_org_id_webhooks_webhook_uuid_deliveries_g\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List webhook delivery logs\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_get_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns details of a specific webhook endpoint by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"webhook_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Webhook Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks/{webhook_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get a webhook endpoint\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_get_ydoc_state_api_v1_boards_board_uuid_ydoc_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the persisted Yjs document binary state for a board. Internal endpoint used by the Hocuspocus collab server; requires the shared internal key header.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_get_ydoc_state_api_v1_boards_board_uuid_ydoc_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"header\",\n \"name\": \"x-internal-key\",\n \"required\": true,\n \"schema\": {\n \"title\": \"X-Internal-Key\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/ydoc\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_get_ydoc_state_api_v1_boards_board_uuid_ydoc_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Fetch the Yjs document state for a board\",\n \"tags\": [\n \"boards-internal\"\n ]\n },\n \"api_handle_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create or update the current user's submission for an assignment task.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_handle_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}/submissions\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/AssignmentTaskSubmissionUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_handle_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upsert assignment task submission\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_import_courses_api_v1_courses_import_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Import previously analyzed courses into an organization. Uses the temp_id returned by the analyze step along with the list of course UUIDs to import. Up to 20 courses can be imported per request.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_import_courses_api_v1_courses_import_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/import\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ImportRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_import_courses_api_v1_courses_import_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Import courses from an analyzed package\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_invite_batch_users_api_v1_orgs_org_id_invites_users_batch_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Invite multiple users by email in a single request, optionally using a specific invite code.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_invite_batch_users_api_v1_orgs_org_id_invites_users_batch_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"emails\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Emails\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"invite_code_uuid\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Invite Code Uuid\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/invites/users/batch\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_invite_batch_users_api_v1_orgs_org_id_invites_users_batch_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Invite a batch of users\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_join_an_org_api_v1_orgs_join_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Join an existing organization, optionally consuming an invite code.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_join_an_org_api_v1_orgs_join_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/orgs/join\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/JoinOrg\"\n },\n \"security\": null,\n \"skill_name\": \"api_join_an_org_api_v1_orgs_join_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Join an organization\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_link_community_to_course_api_v1_communities_community_uuid_link_course_cours\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Associate a community with a course so that course members can participate. Requires admin/maintainer role.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_link_community_to_course_api_v1_communities_community_uuid_link_course_cours\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}/link-course/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_link_community_to_course_api_v1_communities_community_uuid_link_course_cours\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Link community to a course\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_list_activity_usergroups_api_v1_activities_activity_uuid_usergroups_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the user groups that can access this activity when lock_type is 'restricted'.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_list_activity_usergroups_api_v1_activities_activity_uuid_usergroups_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}/usergroups\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_list_activity_usergroups_api_v1_activities_activity_uuid_usergroups_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List user groups assigned to a locked activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_list_all_verified_domains_api_v1_internal_domains_verified_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return every verified custom domain across all organizations. Protected by an internal API key and used by the domain sync CronJob.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_list_all_verified_domains_api_v1_internal_domains_verified_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"header\",\n \"name\": \"x-internal-key\",\n \"required\": true,\n \"schema\": {\n \"title\": \"X-Internal-Key\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/internal/domains/verified\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_list_all_verified_domains_api_v1_internal_domains_verified_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List all verified custom domains\",\n \"tags\": [\n \"custom-domains-internal\"\n ]\n },\n \"api_list_api_tokens_api_v1_orgs_org_id_api_tokens_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List all API tokens for an organization. Returns token metadata including the prefix, but never the full token secret. Requires `roles.action_read` permission.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_list_api_tokens_api_v1_orgs_org_id_api_tokens_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/api-tokens\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_list_api_tokens_api_v1_orgs_org_id_api_tokens_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List API tokens\",\n \"tags\": [\n \"api-tokens\"\n ]\n },\n \"api_list_chapter_usergroups_api_v1_chapters_chapter_uuid_usergroups_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the user groups that can access this chapter when lock_type is 'restricted'.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_list_chapter_usergroups_api_v1_chapters_chapter_uuid_usergroups_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"chapter_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Chapter Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/{chapter_uuid}/usergroups\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_list_chapter_usergroups_api_v1_chapters_chapter_uuid_usergroups_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List user groups assigned to a locked chapter\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_list_custom_domains_api_v1_orgs_org_id_domains_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List all custom domains for an organization, including their verification status.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_list_custom_domains_api_v1_orgs_org_id_domains_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/domains\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_list_custom_domains_api_v1_orgs_org_id_domains_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List custom domains\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_list_org_playgrounds_api_v1_playgrounds_org_org_id_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List all playgrounds in the given organization that the current user is allowed to see.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_list_org_playgrounds_api_v1_playgrounds_org_org_id_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/org/{org_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_list_org_playgrounds_api_v1_playgrounds_org_org_id_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List playgrounds for an organization\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_list_webhook_endpoints_api_v1_orgs_org_id_webhooks_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns all webhook endpoints configured for the given organization.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_list_webhook_endpoints_api_v1_orgs_org_id_webhooks_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_list_webhook_endpoints_api_v1_orgs_org_id_webhooks_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List webhook endpoints\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_list_webhook_events_api_v1_orgs_org_id_webhooks_events_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns the catalogue of webhook event types supported by LearnHouse along with their descriptions.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_list_webhook_events_api_v1_orgs_org_id_webhooks_events_get\",\n \"parameters\": [\n {\n \"description\": \"Path parameter `org_id`.\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks/events\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_list_webhook_events_api_v1_orgs_org_id_webhooks_events_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List available webhook event types\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_lock_discussion_api_v1_discussions_discussion_uuid_lock_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Toggle the locked state of a discussion. Locked discussions cannot receive new comments. Requires a community admin or maintainer role.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_lock_discussion_api_v1_discussions_discussion_uuid_lock_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/lock\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/DiscussionLockUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_lock_discussion_api_v1_discussions_discussion_uuid_lock_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Lock or unlock a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_mark_pack_canceling_api_v1_internal_packs_org_id_mark_canceling_patch\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Internal endpoint used by the billing platform to mark a pack as pending cancellation for the given subscription. Requires a valid platform API key.\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"api_mark_pack_canceling_api_v1_internal_packs_org_id_mark_canceling_patch\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"header\",\n \"name\": \"x-platform-key\",\n \"required\": true,\n \"schema\": {\n \"title\": \"X-Platform-Key\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/internal/packs/{org_id}/mark-canceling\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/MarkCancelingRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_mark_pack_canceling_api_v1_internal_packs_org_id_mark_canceling_patch\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Mark a pack as canceling\",\n \"tags\": [\n \"packs-internal\"\n ]\n },\n \"api_pin_discussion_api_v1_discussions_discussion_uuid_pin_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Toggle the pinned state of a discussion. Requires a community admin or maintainer role.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_pin_discussion_api_v1_discussions_discussion_uuid_pin_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/pin\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/DiscussionPinUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_pin_discussion_api_v1_discussions_discussion_uuid_pin_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Pin or unpin a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_put_assignment_task_ref_file_api_v1_assignments_assignment_uuid_tasks_assign\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload or replace the reference file for an assignment task. Instructors use this to attach a canonical solution or prompt attachment.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_put_assignment_task_ref_file_api_v1_assignments_assignment_uuid_tasks_assign\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}/ref_file\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_put_assignment_task_ref_file_api_v1_assignments__assignment_uuid__tasks__assignment_task_uuid__ref_file_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_put_assignment_task_ref_file_api_v1_assignments_assignment_uuid_tasks_assign\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload task reference file\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_put_assignment_task_sub_file_api_v1_assignments_assignment_uuid_tasks_assign\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload or replace the submission file for an assignment task on behalf of the current user.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_put_assignment_task_sub_file_api_v1_assignments_assignment_uuid_tasks_assign\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}/sub_file\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_put_assignment_task_sub_file_api_v1_assignments__assignment_uuid__tasks__assignment_task_uuid__sub_file_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_put_assignment_task_sub_file_api_v1_assignments_assignment_uuid_tasks_assign\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload task submission file\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_rag_chat_api_v1_ai_rag_chat_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Streaming RAG chatbot grounded in course content. If `course_uuid` is provided, searches within that course only. Otherwise searches across all courses for the user's organization. Responses are delivered as Server-Sent Events (SSE).\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_rag_chat_api_v1_ai_rag_chat_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/rag/chat\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/RAGChatRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_rag_chat_api_v1_ai_rag_chat_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"RAG chat (streaming)\",\n \"tags\": [\n \"ai\",\n \"rag\"\n ]\n },\n \"api_rag_index_api_v1_ai_rag_index_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Manually trigger re-indexing (embedding) of a course's content for the RAG chatbot. Requires admin/maintainer role on the course's organization.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_rag_index_api_v1_ai_rag_index_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/rag/index\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/RAGIndexRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_rag_index_api_v1_ai_rag_index_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Reindex course content for RAG\",\n \"tags\": [\n \"ai\",\n \"rag\"\n ]\n },\n \"api_rag_session_delete_api_v1_ai_rag_sessions_aichat_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a RAG chat session and all its messages. The session must belong to the current user.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_rag_session_delete_api_v1_ai_rag_sessions_aichat_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"aichat_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Aichat Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/ai/rag/sessions/{aichat_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_rag_session_delete_api_v1_ai_rag_sessions_aichat_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete a RAG chat session\",\n \"tags\": [\n \"ai\",\n \"rag\"\n ]\n },\n \"api_rag_session_messages_api_v1_ai_rag_sessions_aichat_uuid_messages_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Load the full message history for a specific RAG chat session owned by the current user.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_rag_session_messages_api_v1_ai_rag_sessions_aichat_uuid_messages_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"aichat_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Aichat Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/ai/rag/sessions/{aichat_uuid}/messages\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_rag_session_messages_api_v1_ai_rag_sessions_aichat_uuid_messages_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get RAG chat session messages\",\n \"tags\": [\n \"ai\",\n \"rag\"\n ]\n },\n \"api_rag_session_update_api_v1_ai_rag_sessions_aichat_uuid_patch\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a RAG chat session's title and/or favorite status. The session must belong to the current user.\",\n \"destructive\": true,\n \"method\": \"PATCH\",\n \"operation_id\": \"api_rag_session_update_api_v1_ai_rag_sessions_aichat_uuid_patch\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"aichat_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Aichat Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/ai/rag/sessions/{aichat_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/RAGSessionUpdateRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_rag_session_update_api_v1_ai_rag_sessions_aichat_uuid_patch\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a RAG chat session\",\n \"tags\": [\n \"ai\",\n \"rag\"\n ]\n },\n \"api_rag_sessions_api_v1_ai_rag_sessions_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List all RAG chat sessions owned by the current user, optionally filtered by organization via `org_slug`.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_rag_sessions_api_v1_ai_rag_sessions_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_slug\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Org Slug\"\n }\n }\n ],\n \"path\": \"/api/v1/ai/rag/sessions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_rag_sessions_api_v1_ai_rag_sessions_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List RAG chat sessions\",\n \"tags\": [\n \"ai\",\n \"rag\"\n ]\n },\n \"api_read_assignment_api_v1_assignments_assignment_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read an assignment by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_assignment_api_v1_assignments_assignment_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_assignment_api_v1_assignments_assignment_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get assignment\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_assignment_from_activity_api_v1_assignments_activity_activity_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read the assignment attached to a given activity UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_assignment_from_activity_api_v1_assignments_activity_activity_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/activity/{activity_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_assignment_from_activity_api_v1_assignments_activity_activity_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get assignment by activity\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_assignment_submissions_api_v1_assignments_assignment_uuid_submissions_g\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read all assignment-level submissions for the given assignment (instructor view).\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_assignment_submissions_api_v1_assignments_assignment_uuid_submissions_g\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 500,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_assignment_submissions_api_v1_assignments_assignment_uuid_submissions_g\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List assignment submissions\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_assignment_task_api_v1_assignments_task_assignment_task_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read a single assignment task by its UUID.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_assignment_task_api_v1_assignments_task_assignment_task_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/task/{assignment_task_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_assignment_task_api_v1_assignments_task_assignment_task_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get assignment task\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_as\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read all submissions for a given assignment task (instructor view).\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_as\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 50,\n \"maximum\": 500,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"offset\",\n \"required\": false,\n \"schema\": {\n \"default\": 0,\n \"minimum\": 0,\n \"title\": \"Offset\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}/submissions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_as\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List task submissions\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read all tasks for the given assignment.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List assignment tasks\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_user_assignment_submission_me_api_v1_assignments_assignment_uuid_submis\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read the current user's assignment-level submission for the given assignment.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_user_assignment_submission_me_api_v1_assignments_assignment_uuid_submis\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions/me\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_user_assignment_submission_me_api_v1_assignments_assignment_uuid_submis\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get current user's assignment submission\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_user_assignment_submissions_api_v1_assignments_assignment_uuid_submissi\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read the assignment-level submission for a specific user on the given assignment (instructor view).\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_user_assignment_submissions_api_v1_assignments_assignment_uuid_submissi\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_user_assignment_submissions_api_v1_assignments_assignment_uuid_submissi\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get assignment submission for user\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_user_assignment_task_submissions_api_v1_assignments_assignment_uuid_tas\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read the task submissions made by a specific user for the given assignment task.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_user_assignment_task_submissions_api_v1_assignments_assignment_uuid_tas\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}/submissions/user/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_user_assignment_task_submissions_api_v1_assignments_assignment_uuid_tas\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List task submissions for user\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_user_assignment_task_submissions_me_api_v1_assignments_assignment_uuid_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read the current user's submission for a specific assignment task. Returns 404 if the user has no submission yet.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_user_assignment_task_submissions_me_api_v1_assignments_assignment_uuid_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}/submissions/me\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_user_assignment_task_submissions_me_api_v1_assignments_assignment_uuid_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get current user's task submission\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_read_user_assignment_task_submissions_me_batch_api_v1_assignments_assignment\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Read all current-user task submissions for an assignment in one round trip. Returns a map keyed by assignment_task_uuid (value is null if no submission). Registered before the per-task variant so the literal submissions path segment isn't shadowed.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_read_user_assignment_task_submissions_me_batch_api_v1_assignments_assignment\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/submissions/me\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_read_user_assignment_task_submissions_me_batch_api_v1_assignments_assignment\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Batch read current user's task submissions\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_regenerate_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_regenerate_pos\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Regenerate the secret for an API token. The old token will immediately stop working. The new full token value is only returned once \\u2014 store it securely. Requires `roles.action_update` permission.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_regenerate_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_regenerate_pos\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"token_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Token Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/api-tokens/{token_uuid}/regenerate\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_regenerate_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_regenerate_pos\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Regenerate API token secret\",\n \"tags\": [\n \"api-tokens\"\n ]\n },\n \"api_regenerate_webhook_secret_api_v1_orgs_org_id_webhooks_webhook_uuid_regenerat\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Regenerates the signing secret for a webhook endpoint. The new secret is only returned once and must be stored securely.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_regenerate_webhook_secret_api_v1_orgs_org_id_webhooks_webhook_uuid_regenerat\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"webhook_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Webhook Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks/{webhook_uuid}/regenerate-secret\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_regenerate_webhook_secret_api_v1_orgs_org_id_webhooks_webhook_uuid_regenerat\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Regenerate a webhook signing secret\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_remove_activity_from_trail_api_v1_trail_remove_activity_activity_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Detach an activity from the current user's learning trail.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_activity_from_trail_api_v1_trail_remove_activity_activity_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/trail/remove_activity/{activity_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_activity_from_trail_api_v1_trail_remove_activity_activity_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove activity from trail\",\n \"tags\": [\n \"trail\"\n ]\n },\n \"api_remove_activity_usergroup_api_v1_activities_activity_uuid_usergroups_usergro\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove the association between a user group and this activity.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_activity_usergroup_api_v1_activities_activity_uuid_usergroups_usergro\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}/usergroups/{usergroup_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_activity_usergroup_api_v1_activities_activity_uuid_usergroups_usergro\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Revoke a user group's access to a locked activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_remove_batch_users_from_org_api_v1_orgs_org_id_users_batch_remove_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove a batch of users from the organization in a single call.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_batch_users_from_org_api_v1_orgs_org_id_users_batch_remove_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"List of user IDs to remove\",\n \"in\": \"query\",\n \"name\": \"user_ids\",\n \"required\": true,\n \"schema\": {\n \"description\": \"List of user IDs to remove\",\n \"items\": {\n \"type\": \"integer\"\n },\n \"title\": \"User Ids\",\n \"type\": \"array\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/users/batch/remove\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_batch_users_from_org_api_v1_orgs_org_id_users_batch_remove_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove multiple users from organization\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_remove_board_member_api_v1_boards_board_uuid_members_user_id_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove a user from a board's member list. The board owner cannot be removed via this endpoint.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_board_member_api_v1_boards_board_uuid_members_user_id_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/members/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_board_member_api_v1_boards_board_uuid_members_user_id_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove a member from a board\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_remove_bulk_course_contributors_api_v1_courses_course_uuid_bulk_remove_contr\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove multiple contributors from a course by their usernames in a single call.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_remove_bulk_course_contributors_api_v1_courses_course_uuid_bulk_remove_contr\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/bulk-remove-contributors\",\n \"request_body\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"title\": \"Usernames\",\n \"type\": \"array\"\n },\n \"security\": null,\n \"skill_name\": \"api_remove_bulk_course_contributors_api_v1_courses_course_uuid_bulk_remove_contr\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Bulk remove course contributors\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_remove_chapter_usergroup_api_v1_chapters_chapter_uuid_usergroups_usergroup_u\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove the association between a user group and this chapter.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_chapter_usergroup_api_v1_chapters_chapter_uuid_usergroups_usergroup_u\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"chapter_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Chapter Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/{chapter_uuid}/usergroups/{usergroup_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_chapter_usergroup_api_v1_chapters_chapter_uuid_usergroups_usergroup_u\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Revoke a user group's access to a locked chapter\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_remove_comment_upvote_api_v1_comments_comment_uuid_vote_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove the current user's upvote from a comment. The user must have previously voted.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_comment_upvote_api_v1_comments_comment_uuid_vote_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"comment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Comment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/comments/{comment_uuid}/vote\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_comment_upvote_api_v1_comments_comment_uuid_vote_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove an upvote from a comment\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_remove_course_to_trail_api_v1_trail_remove_course_course_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Detach a course from the current user's learning trail.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_course_to_trail_api_v1_trail_remove_course_course_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/trail/remove_course/{course_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_course_to_trail_api_v1_trail_remove_course_course_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove course from trail\",\n \"tags\": [\n \"trail\"\n ]\n },\n \"api_remove_upvote_api_v1_discussions_discussion_uuid_vote_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove the current user's upvote from a discussion. The user must have previously voted.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_upvote_api_v1_discussions_discussion_uuid_vote_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/vote\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_upvote_api_v1_discussions_discussion_uuid_vote_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove an upvote from a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_remove_user_from_org_api_v1_orgs_org_id_users_user_id_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove a single user from the organization.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_user_from_org_api_v1_orgs_org_id_users_user_id_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/users/{user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_user_from_org_api_v1_orgs_org_id_users_user_id_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Remove a user from organization\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_remove_usergroup_from_playground_api_v1_playgrounds_playground_uuid_usergrou\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove a usergroup's access to a playground. The current user must have update permission on the playground.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_remove_usergroup_from_playground_api_v1_playgrounds_playground_uuid_usergrou\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}/usergroups/{usergroup_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_remove_usergroup_from_playground_api_v1_playgrounds_playground_uuid_usergrou\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Revoke a usergroup from a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_reorder_episodes_api_v1_podcasts_podcast_uuid_episodes_reorder_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Reorder the episodes of a podcast by providing a list of episode ordering objects.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_reorder_episodes_api_v1_podcasts_podcast_uuid_episodes_reorder_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}/episodes/reorder\",\n \"request_body\": {\n \"items\": {\n \"additionalProperties\": true,\n \"type\": \"object\"\n },\n \"title\": \"Episode Orders\",\n \"type\": \"array\"\n },\n \"security\": null,\n \"skill_name\": \"api_reorder_episodes_api_v1_podcasts_podcast_uuid_episodes_reorder_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Reorder podcast episodes\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_resend_verification_email_api_v1_auth_resend_verification_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Resend the email-verification email for a user. The underlying service enforces its own rate limiting and will return a generic response whether or not an account exists.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_resend_verification_email_api_v1_auth_resend_verification_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/auth/resend-verification\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ResendVerificationRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_resend_verification_email_api_v1_auth_resend_verification_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Resend verification email\",\n \"tags\": [\n \"auth\"\n ]\n },\n \"api_resolve_domain_api_v1_orgs_resolve_domain_domain_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Public endpoint used by the frontend proxy to route custom domain requests to the correct organization. Returns 404 if the domain is not registered or not verified.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_resolve_domain_api_v1_orgs_resolve_domain_domain_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"domain\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Domain\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/resolve/domain/{domain}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_resolve_domain_api_v1_orgs_resolve_domain_domain_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Resolve custom domain to organization\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_restore_activity_version_api_v1_activities_activity_uuid_versions_version_nu\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Restore an activity to a previous version. Creates a new version with the restored content rather than rewriting history.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_restore_activity_version_api_v1_activities_activity_uuid_versions_version_nu\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"version_number\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Version Number\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}/versions/{version_number}/restore\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_restore_activity_version_api_v1_activities_activity_uuid_versions_version_nu\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Restore activity version\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_retry_assignment_submission_api_v1_assignments_assignment_uuid_submissions_m\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Reset the current user's submission so they can attempt the assignment again. Only allowed when the assignment has allow_retries=true, the existing submission is in GRADED state, and the attempt counter is still below max_retries (0 means unlimited). Wipes per-task submissions, resets the trail step, and revokes any course certificate.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_retry_assignment_submission_api_v1_assignments_assignment_uuid_submissions_m\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions/me/retry\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_retry_assignment_submission_api_v1_assignments_assignment_uuid_submissions_m\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Retry assignment for current user\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_revoke_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Revoke an API token. The token will immediately stop working and this action cannot be undone. Requires `roles.action_delete` permission.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_revoke_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_delete\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"token_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Token Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/api-tokens/{token_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_revoke_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Revoke API token\",\n \"tags\": [\n \"api-tokens\"\n ]\n },\n \"api_search_across_org_api_v1_search_org_slug_org_slug_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Performs a paginated search across courses, collections, and users within the given organization. Query length and page size are capped to prevent data dumping. Requires authentication.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_search_across_org_api_v1_search_org_slug_org_slug_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Search query\",\n \"in\": \"query\",\n \"name\": \"query\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Search query\",\n \"maxLength\": 200,\n \"minLength\": 3,\n \"title\": \"Query\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Page number\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"description\": \"Page number\",\n \"minimum\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"Items per page (max 50)\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 10,\n \"description\": \"Items per page (max 50)\",\n \"maximum\": 50,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/search/org_slug/{org_slug}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_search_across_org_api_v1_search_org_slug_org_slug_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Search within an organization\",\n \"tags\": [\n \"search\"\n ]\n },\n \"api_search_courses_api_v1_courses_org_slug_org_slug_search_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Full-text search courses by title and description within an organization. Query length is capped at 200 characters and results are paginated with a maximum page size of 50 to prevent data dumping.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_search_courses_api_v1_courses_org_slug_org_slug_search_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_slug\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Slug\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Search query\",\n \"in\": \"query\",\n \"name\": \"query\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Search query\",\n \"maxLength\": 200,\n \"minLength\": 1,\n \"title\": \"Query\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Page number\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"description\": \"Page number\",\n \"minimum\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"Items per page (max 50)\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 10,\n \"description\": \"Items per page (max 50)\",\n \"maximum\": 50,\n \"minimum\": 1,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/org_slug/{org_slug}/search\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_search_courses_api_v1_courses_org_slug_org_slug_search_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Search courses\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_send_password_reset_email_api_v1_users_reset_password_send_reset_code_email_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Deprecated: use /reset_password/send_reset_code with email in the body.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_send_password_reset_email_api_v1_users_reset_password_send_reset_code_email_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"email\",\n \"required\": true,\n \"schema\": {\n \"format\": \"email\",\n \"title\": \"Email\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/reset_password/send_reset_code/{email}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_send_password_reset_email_api_v1_users_reset_password_send_reset_code_email_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Send password reset code (legacy path)\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_send_password_reset_email_platform_api_v1_users_reset_password_platform_send\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Deprecated: use /reset_password/platform/send_reset_code with email in the body.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_send_password_reset_email_platform_api_v1_users_reset_password_platform_send\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"email\",\n \"required\": true,\n \"schema\": {\n \"format\": \"email\",\n \"title\": \"Email\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/users/reset_password/platform/send_reset_code/{email}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_send_password_reset_email_platform_api_v1_users_reset_password_platform_send\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Send platform password reset code (legacy path)\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_send_password_reset_email_platform_v2_api_v1_users_reset_password_platform_s\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Dispatch a platform-level password reset code (email supplied in body so it does not appear in access logs). Subject to rate limiting per email.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_send_password_reset_email_platform_v2_api_v1_users_reset_password_platform_s\",\n \"parameters\": [],\n \"path\": \"/api/v1/users/reset_password/platform/send_reset_code\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendPlatformResetCodeRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_send_password_reset_email_platform_v2_api_v1_users_reset_password_platform_s\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Send platform password reset code\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_send_password_reset_email_v2_api_v1_users_reset_password_send_reset_code_pos\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Dispatch an org-scoped password reset code to the given email address (email supplied in body so it never appears in access logs). Returns a generic response regardless of whether the email exists to avoid user enumeration.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_send_password_reset_email_v2_api_v1_users_reset_password_send_reset_code_pos\",\n \"parameters\": [],\n \"path\": \"/api/v1/users/reset_password/send_reset_code\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendResetCodeRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_send_password_reset_email_v2_api_v1_users_reset_password_send_reset_code_pos\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Send password reset code\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_send_test_event_api_v1_orgs_org_id_webhooks_webhook_uuid_test_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Sends a synthetic 'ping' event to the webhook endpoint to verify it is reachable and correctly configured.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_send_test_event_api_v1_orgs_org_id_webhooks_webhook_uuid_test_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"webhook_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Webhook Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks/{webhook_uuid}/test\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_send_test_event_api_v1_orgs_org_id_webhooks_webhook_uuid_test_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Send a test webhook event\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_start_trail_api_v1_trail_start_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Create a new learning trail for the current user within an organization.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_start_trail_api_v1_trail_start_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/trail/start\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/TrailCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_start_trail_api_v1_trail_start_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Start a trail\",\n \"tags\": [\n \"trail\"\n ]\n },\n \"api_store_ydoc_state_api_v1_boards_board_uuid_ydoc_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Store the latest Yjs document binary state for a board. Internal endpoint used by the Hocuspocus collab server; requires the shared internal key header.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_store_ydoc_state_api_v1_boards_board_uuid_ydoc_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"header\",\n \"name\": \"x-internal-key\",\n \"required\": true,\n \"schema\": {\n \"title\": \"X-Internal-Key\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/ydoc\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_store_ydoc_state_api_v1_boards_board_uuid_ydoc_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Persist the Yjs document state for a board\",\n \"tags\": [\n \"boards-internal\"\n ]\n },\n \"api_submission_mark_as_done_api_v1_assignments_assignment_uuid_submissions_user_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Mark the underlying activity as completed for a user once their assignment submission is accepted.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_submission_mark_as_done_api_v1_assignments_assignment_uuid_submissions_user_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions/{user_id}/done\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_submission_mark_as_done_api_v1_assignments_assignment_uuid_submissions_user_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Mark assignment as done for user\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_suggest_structure_api_v1_courses_migrate_suggest_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Use AI to suggest a course structure from previously uploaded migration files.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_suggest_structure_api_v1_courses_migrate_suggest_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/migrate/suggest\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SuggestStructureRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_suggest_structure_api_v1_courses_migrate_suggest_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Suggest migration structure\",\n \"tags\": [\n \"migration\"\n ]\n },\n \"api_toggle_playground_reaction_api_v1_playgrounds_playground_uuid_reactions_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Toggle the current user's reaction (emoji) on a playground. Adds the reaction if missing or removes it if already present.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_toggle_playground_reaction_api_v1_playgrounds_playground_uuid_reactions_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}/reactions\",\n \"request_body\": {\n \"additionalProperties\": true,\n \"title\": \"Reaction\",\n \"type\": \"object\"\n },\n \"security\": null,\n \"skill_name\": \"api_toggle_playground_reaction_api_v1_playgrounds_playground_uuid_reactions_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Toggle a reaction on a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_toggle_reaction_api_v1_discussions_discussion_uuid_reactions_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Toggle an emoji reaction on a discussion for the current user. If the user has already reacted with this emoji it is removed; otherwise it is added. Requires read access to the community.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_toggle_reaction_api_v1_discussions_discussion_uuid_reactions_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/reactions\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ReactionRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_toggle_reaction_api_v1_discussions_discussion_uuid_reactions_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Toggle a reaction on a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_unlink_community_from_course_api_v1_communities_community_uuid_unlink_course\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Remove the association between a community and its currently linked course. Requires admin/maintainer role.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"api_unlink_community_from_course_api_v1_communities_community_uuid_unlink_course\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}/unlink-course\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_unlink_community_from_course_api_v1_communities_community_uuid_unlink_course\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Unlink community from its course\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_update_activity_api_v1_activities_activity_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update an activity's fields by its UUID. Creates a new version when content changes.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_activity_api_v1_activities_activity_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/{activity_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ActivityUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_activity_api_v1_activities_activity_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_update_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update an API token's name, description, rights, or expiration. The token secret cannot be changed here \\u2014 use the regenerate endpoint for that. Requires `roles.action_update` permission.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"token_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Token Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/api-tokens/{token_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/APITokenUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update API token\",\n \"tags\": [\n \"api-tokens\"\n ]\n },\n \"api_update_assignment_api_v1_assignments_assignment_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update an assignment by its UUID. The authenticated user must have permission to edit the parent course.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_assignment_api_v1_assignments_assignment_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/AssignmentUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_assignment_api_v1_assignments_assignment_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update assignment\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_update_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_assignment_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update an assignment task by its UUID. The authenticated user must have permission to edit the parent course.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_assignment_\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_task_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Task Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Path parameter `assignment_uuid`.\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/tasks/{assignment_task_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/AssignmentTaskUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_assignment_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update assignment task\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_update_avatar_user_api_v1_users_update_avatar_user_id_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a new avatar image for a user. Users can only update their own avatar (the `user_id` in the URL must match the authenticated user's ID).\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_avatar_user_api_v1_users_update_avatar_user_id_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/update_avatar/{user_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_avatar_user_api_v1_users_update_avatar__user_id__put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_avatar_user_api_v1_users_update_avatar_user_id_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update user avatar\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_update_board_api_v1_boards_board_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a board's fields. The current user must have update permission on the board.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_board_api_v1_boards_board_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/BoardUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_board_api_v1_boards_board_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a board\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_update_board_thumbnail_api_v1_boards_board_uuid_thumbnail_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload or replace the thumbnail image for a board. The current user must have update permission on the board.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_update_board_thumbnail_api_v1_boards_board_uuid_thumbnail_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"board_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Board Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/{board_uuid}/thumbnail\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_board_thumbnail_api_v1_boards__board_uuid__thumbnail_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_board_thumbnail_api_v1_boards_board_uuid_thumbnail_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload a board thumbnail\",\n \"tags\": [\n \"boards\"\n ]\n },\n \"api_update_certification_api_v1_certifications_certification_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a certification template by its UUID.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_certification_api_v1_certifications_certification_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"certification_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Certification Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/certifications/{certification_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CertificationUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_certification_api_v1_certifications_certification_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update certification\",\n \"tags\": [\n \"certifications\"\n ]\n },\n \"api_update_chapter_meta_api_v1_chapters_course_course_uuid_order_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the ordering of chapters and the activities nested inside them for a given course.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_chapter_meta_api_v1_chapters_course_course_uuid_order_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/course/{course_uuid}/order\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ChapterUpdateOrder\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_chapter_meta_api_v1_chapters_course_course_uuid_order_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Reorder chapters and activities\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_update_collection_api_v1_collections_collection_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a collection by its UUID.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_collection_api_v1_collections_collection_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"collection_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Collection Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/collections/{collection_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CollectionUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_collection_api_v1_collections_collection_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update collection\",\n \"tags\": [\n \"collections\"\n ]\n },\n \"api_update_comment_api_v1_comments_comment_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Edit the content of an existing comment. Requires the comment author.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_comment_api_v1_comments_comment_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"comment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Comment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/comments/{comment_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/DiscussionCommentUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_comment_api_v1_comments_comment_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a comment\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_update_community_api_v1_communities_community_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update an existing community's attributes. Requires admin/maintainer role.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_community_api_v1_communities_community_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CommunityUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_community_api_v1_communities_community_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a community\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_update_community_thumbnail_api_v1_communities_community_uuid_thumbnail_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload or replace the thumbnail image for a community. Requires admin/maintainer role.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_community_thumbnail_api_v1_communities_community_uuid_thumbnail_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"community_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Community Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/communities/{community_uuid}/thumbnail\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_community_thumbnail_api_v1_communities__community_uuid__thumbnail_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_community_thumbnail_api_v1_communities_community_uuid_thumbnail_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload a community thumbnail\",\n \"tags\": [\n \"communities\"\n ]\n },\n \"api_update_course_api_v1_courses_course_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update course metadata (name, description, about, tags, visibility, etc.) by UUID.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_course_api_v1_courses_course_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CourseUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_course_api_v1_courses_course_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update course\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_update_course_contributor_api_v1_courses_course_uuid_contributors_contributo\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a course contributor's authorship role and status. Only course administrators or maintainers can perform this action.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_course_contributor_api_v1_courses_course_uuid_contributors_contributo\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"contributor_user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Contributor User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"authorship\",\n \"required\": true,\n \"schema\": {\n \"$ref\": \"#/components/schemas/ResourceAuthorshipEnum\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"authorship_status\",\n \"required\": true,\n \"schema\": {\n \"$ref\": \"#/components/schemas/ResourceAuthorshipStatusEnum\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/contributors/{contributor_user_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_course_contributor_api_v1_courses_course_uuid_contributors_contributo\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update course contributor\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_update_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Edit an existing course update post identified by its UUID.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"courseupdate_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Courseupdate Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/{course_uuid}/update/{courseupdate_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/CourseUpdateUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update course update\",\n \"tags\": [\n \"courses\"\n ]\n },\n \"api_update_coursechapter_api_v1_chapters_chapter_id_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the name or other metadata of a chapter by its ID.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_coursechapter_api_v1_chapters_chapter_id_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"chapter_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Chapter Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/chapters/{chapter_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ChapterUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_coursechapter_api_v1_chapters_chapter_id_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update chapter\",\n \"tags\": [\n \"chapters\"\n ]\n },\n \"api_update_discussion_api_v1_discussions_discussion_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a discussion's title, content, or label. Requires the discussion author or an admin role.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_discussion_api_v1_discussions_discussion_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/DiscussionUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_discussion_api_v1_discussions_discussion_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_update_documentpdf_activity_api_v1_activities_documentpdf_activity_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update PDF document activity\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_documentpdf_activity_api_v1_activities_documentpdf_activity_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/documentpdf/{activity_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_documentpdf_activity_api_v1_activities_documentpdf__activity_uuid__put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_documentpdf_activity_api_v1_activities_documentpdf_activity_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update PDF document activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_update_episode_api_v1_podcasts_episodes_episode_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update an episode's metadata. The caller must have write access to the parent podcast.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_episode_api_v1_podcasts_episodes_episode_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"episode_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Episode Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/episodes/{episode_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/PodcastEpisodeUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_episode_api_v1_podcasts_episodes_episode_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a podcast episode\",\n \"tags\": [\n \"podcasts\",\n \"episodes\"\n ]\n },\n \"api_update_external_video_activity_api_v1_activities_external_video_activity_uui\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update external video activity\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_external_video_activity_api_v1_activities_external_video_activity_uui\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/external_video/{activity_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ExternalVideoUpdateBody\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_external_video_activity_api_v1_activities_external_video_activity_uui\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update external video activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_update_org_ai_config_api_v1_orgs_org_id_config_ai_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the organization's AI feature configuration, including the Copilot toggle. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_ai_config_api_v1_orgs_org_id_config_ai_put\",\n \"parameters\": [\n {\n \"description\": \"Organization ID\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization ID\",\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"ai_enabled\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Ai Enabled\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"copilot_enabled\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Copilot Enabled\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/ai\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_ai_config_api_v1_orgs_org_id_config_ai_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization AI config\",\n \"tags\": [\n \"orgs\",\n \"Feature Configuration\"\n ]\n },\n \"api_update_org_api_v1_orgs_org_id_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update an organization's core fields by ID.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_api_v1_orgs_org_id_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/OrganizationUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_org_api_v1_orgs_org_id_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update an organization\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_auth_branding_config_api_v1_orgs_org_id_config_auth_branding_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update branding configuration for the organization's authentication pages.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_auth_branding_config_api_v1_orgs_org_id_config_auth_branding_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/auth_branding\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/AuthBrandingConfig\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_org_auth_branding_config_api_v1_orgs_org_id_config_auth_branding_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update auth page branding\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_boards_config_api_v1_orgs_org_id_config_boards_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enable or disable the boards feature for the organization. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_boards_config_api_v1_orgs_org_id_config_boards_put\",\n \"parameters\": [\n {\n \"description\": \"Organization ID\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization ID\",\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"boards_enabled\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Boards Enabled\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/boards\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_boards_config_api_v1_orgs_org_id_config_boards_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization boards config\",\n \"tags\": [\n \"orgs\",\n \"Feature Configuration\"\n ]\n },\n \"api_update_org_collections_config_api_v1_orgs_org_id_config_collections_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enable or disable the collections feature for the organization. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_collections_config_api_v1_orgs_org_id_config_collections_put\",\n \"parameters\": [\n {\n \"description\": \"Organization ID\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization ID\",\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"collections_enabled\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Collections Enabled\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/collections\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_collections_config_api_v1_orgs_org_id_config_collections_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization collections config\",\n \"tags\": [\n \"orgs\",\n \"Feature Configuration\"\n ]\n },\n \"api_update_org_color_config_api_v1_orgs_org_id_config_color_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the organization's primary color used for branding.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_color_config_api_v1_orgs_org_id_config_color_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"color\",\n \"required\": false,\n \"schema\": {\n \"default\": \"\",\n \"title\": \"Color\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/color\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_color_config_api_v1_orgs_org_id_config_color_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization color\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_communities_config_api_v1_orgs_org_id_config_communities_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enable or disable the communities feature for the organization. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_communities_config_api_v1_orgs_org_id_config_communities_put\",\n \"parameters\": [\n {\n \"description\": \"Organization ID\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization ID\",\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"communities_enabled\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Communities Enabled\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/communities\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_communities_config_api_v1_orgs_org_id_config_communities_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization communities config\",\n \"tags\": [\n \"orgs\",\n \"Feature Configuration\"\n ]\n },\n \"api_update_org_courses_config_api_v1_orgs_org_id_config_courses_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enable or disable the courses feature for the organization. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_courses_config_api_v1_orgs_org_id_config_courses_put\",\n \"parameters\": [\n {\n \"description\": \"Organization ID\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization ID\",\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"courses_enabled\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Courses Enabled\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/courses\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_courses_config_api_v1_orgs_org_id_config_courses_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization courses config\",\n \"tags\": [\n \"orgs\",\n \"Feature Configuration\"\n ]\n },\n \"api_update_org_default_language_config_api_v1_orgs_org_id_config_default_languag\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the organization's default language used for the public UI and outgoing emails. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_default_language_config_api_v1_orgs_org_id_config_default_languag\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"default_language\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Default Language\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/default_language\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_default_language_config_api_v1_orgs_org_id_config_default_languag\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization default language\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_favicon_api_v1_orgs_org_id_favicon_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a new favicon image for the organization.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_favicon_api_v1_orgs_org_id_favicon_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/favicon\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_org_favicon_api_v1_orgs__org_id__favicon_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_org_favicon_api_v1_orgs_org_id_favicon_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization favicon\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_font_config_api_v1_orgs_org_id_config_font_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the organization's branding font family.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_font_config_api_v1_orgs_org_id_config_font_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"font\",\n \"required\": false,\n \"schema\": {\n \"default\": \"\",\n \"title\": \"Font\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/font\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_font_config_api_v1_orgs_org_id_config_font_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization font\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_footer_text_config_api_v1_orgs_org_id_config_footer_text_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the organization's footer text used across learner-facing pages.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_footer_text_config_api_v1_orgs_org_id_config_footer_text_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"footer_text\",\n \"required\": false,\n \"schema\": {\n \"default\": \"\",\n \"title\": \"Footer Text\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/footer_text\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_footer_text_config_api_v1_orgs_org_id_config_footer_text_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization footer text\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_landing_api_v1_orgs_org_id_landing_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the organization's landing page content object.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_landing_api_v1_orgs_org_id_landing_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/landing\",\n \"request_body\": {\n \"additionalProperties\": true,\n \"title\": \"Landing Object\",\n \"type\": \"object\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_org_landing_api_v1_orgs_org_id_landing_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization landing page\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_logo_api_v1_orgs_org_id_logo_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a new logo image for the organization.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_logo_api_v1_orgs_org_id_logo_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/logo\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_org_logo_api_v1_orgs__org_id__logo_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_org_logo_api_v1_orgs_org_id_logo_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization logo\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_payments_config_api_v1_orgs_org_id_config_payments_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enable or disable the payments feature for the organization. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_payments_config_api_v1_orgs_org_id_config_payments_put\",\n \"parameters\": [\n {\n \"description\": \"Organization ID\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization ID\",\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"payments_enabled\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Payments Enabled\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/payments\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_payments_config_api_v1_orgs_org_id_config_payments_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization payments config\",\n \"tags\": [\n \"orgs\",\n \"Feature Configuration\"\n ]\n },\n \"api_update_org_playgrounds_config_api_v1_orgs_org_id_config_playgrounds_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enable or disable the playgrounds feature for the organization. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_playgrounds_config_api_v1_orgs_org_id_config_playgrounds_put\",\n \"parameters\": [\n {\n \"description\": \"Organization ID\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization ID\",\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"playgrounds_enabled\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playgrounds Enabled\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/playgrounds\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_playgrounds_config_api_v1_orgs_org_id_config_playgrounds_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization playgrounds config\",\n \"tags\": [\n \"orgs\",\n \"Feature Configuration\"\n ]\n },\n \"api_update_org_podcasts_config_api_v1_orgs_org_id_config_podcasts_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enable or disable the podcasts feature for the organization. Admin only.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_podcasts_config_api_v1_orgs_org_id_config_podcasts_put\",\n \"parameters\": [\n {\n \"description\": \"Organization ID\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization ID\",\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"podcasts_enabled\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcasts Enabled\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/podcasts\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_podcasts_config_api_v1_orgs_org_id_config_podcasts_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization podcasts config\",\n \"tags\": [\n \"orgs\",\n \"Feature Configuration\"\n ]\n },\n \"api_update_org_preview_api_v1_orgs_org_id_preview_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a new preview image used on the organization's landing page.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_preview_api_v1_orgs_org_id_preview_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/preview\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_org_preview_api_v1_orgs__org_id__preview_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_org_preview_api_v1_orgs_org_id_preview_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization preview image\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_seo_config_api_v1_orgs_org_id_config_seo_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update SEO-related configuration such as titles, descriptions and keywords.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_seo_config_api_v1_orgs_org_id_config_seo_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/seo\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SeoOrgConfig\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_org_seo_config_api_v1_orgs_org_id_config_seo_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization SEO config\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_thumbnail_api_v1_orgs_org_id_thumbnail_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a new thumbnail image for the organization.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_thumbnail_api_v1_orgs_org_id_thumbnail_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/thumbnail\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_org_thumbnail_api_v1_orgs__org_id__thumbnail_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_org_thumbnail_api_v1_orgs_org_id_thumbnail_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization thumbnail\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_org_watermark_config_api_v1_orgs_org_id_config_watermark_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Enable or disable the watermark. Free plan organizations are not allowed to disable it.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_org_watermark_config_api_v1_orgs_org_id_config_watermark_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"watermark_enabled\",\n \"required\": false,\n \"schema\": {\n \"default\": true,\n \"title\": \"Watermark Enabled\",\n \"type\": \"boolean\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/config/watermark\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_org_watermark_config_api_v1_orgs_org_id_config_watermark_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update organization watermark\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_playground_api_v1_playgrounds_playground_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a playground's fields. The current user must have update permission on the playground.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_playground_api_v1_playgrounds_playground_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/PlaygroundUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_playground_api_v1_playgrounds_playground_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a playground\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_update_playground_thumbnail_api_v1_playgrounds_playground_uuid_thumbnail_pos\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload or replace the thumbnail image for a playground. The current user must have update permission on the playground.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_update_playground_thumbnail_api_v1_playgrounds_playground_uuid_thumbnail_pos\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"playground_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Playground Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/{playground_uuid}/thumbnail\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_playground_thumbnail_api_v1_playgrounds__playground_uuid__thumbnail_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_playground_thumbnail_api_v1_playgrounds_playground_uuid_thumbnail_pos\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload a playground thumbnail\",\n \"tags\": [\n \"playgrounds\"\n ]\n },\n \"api_update_podcast_api_v1_podcasts_podcast_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a podcast's metadata. The caller must have write access to the podcast.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_podcast_api_v1_podcasts_podcast_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/PodcastUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_podcast_api_v1_podcasts_podcast_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a podcast\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_update_podcast_thumbnail_api_v1_podcasts_podcast_uuid_thumbnail_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload or replace the thumbnail image for a podcast.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_podcast_thumbnail_api_v1_podcasts_podcast_uuid_thumbnail_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/{podcast_uuid}/thumbnail\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_podcast_thumbnail_api_v1_podcasts__podcast_uuid__thumbnail_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_podcast_thumbnail_api_v1_podcasts_podcast_uuid_thumbnail_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update podcast thumbnail\",\n \"tags\": [\n \"podcasts\"\n ]\n },\n \"api_update_role_api_v1_roles_role_id_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a role by its role_id. The role_id path parameter must be numeric.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_role_api_v1_roles_role_id_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"role_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Role Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/roles/{role_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/RoleUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_role_api_v1_roles_role_id_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update role\",\n \"tags\": [\n \"roles\"\n ]\n },\n \"api_update_user_api_v1_users_user_id_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a user's profile fields. Invalidates the user's cached session so subsequent session reads reflect the change.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_user_api_v1_users_user_id_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/{user_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/UserUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_user_api_v1_users_user_id_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update user\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_update_user_assignment_submissions_api_v1_assignments_assignment_uuid_submis\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a user's assignment-level submission on the given assignment.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_user_assignment_submissions_api_v1_assignments_assignment_uuid_submis\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"assignment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Assignment Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/assignments/{assignment_uuid}/submissions/{user_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/AssignmentUserSubmissionCreate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_user_assignment_submissions_api_v1_assignments_assignment_uuid_submis\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update assignment submission for user\",\n \"tags\": [\n \"assignments\"\n ]\n },\n \"api_update_user_password_api_v1_users_change_password_user_id_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update a user's password. The authenticated user must either be the target user or otherwise authorized by the service layer.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_user_password_api_v1_users_change_password_user_id_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/users/change_password/{user_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/UserUpdatePassword\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_user_password_api_v1_users_change_password_user_id_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Change user password\",\n \"tags\": [\n \"users\",\n \"users\"\n ]\n },\n \"api_update_user_role_api_v1_orgs_org_id_users_user_id_role_role_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the role of a user within an organization by role UUID.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_user_role_api_v1_orgs_org_id_users_user_id_role_role_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"user_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"User Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"role_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Role Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/users/{user_id}/role/{role_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_update_user_role_api_v1_orgs_org_id_users_user_id_role_role_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update user role in organization\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_update_usergroup_api_v1_usergroups_usergroup_id_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update the name, description, or other attributes of a usergroup.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_usergroup_api_v1_usergroups_usergroup_id_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"usergroup_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Usergroup Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/usergroups/{usergroup_id}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/UserGroupUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_usergroup_api_v1_usergroups_usergroup_id_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a usergroup\",\n \"tags\": [\n \"usergroups\",\n \"usergroups\"\n ]\n },\n \"api_update_video_activity_api_v1_activities_video_activity_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Update hosted video activity\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_video_activity_api_v1_activities_video_activity_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/activities/video/{activity_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_update_video_activity_api_v1_activities_video__activity_uuid__put\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_video_activity_api_v1_activities_video_activity_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update hosted video activity\",\n \"tags\": [\n \"activities\"\n ]\n },\n \"api_update_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Updates mutable fields of a webhook endpoint (URL, subscribed events, active flag).\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_update_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"webhook_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Webhook Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/webhooks/{webhook_uuid}\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/WebhookEndpointUpdate\"\n },\n \"security\": null,\n \"skill_name\": \"api_update_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Update a webhook endpoint\",\n \"tags\": [\n \"webhooks\"\n ]\n },\n \"api_upload_episode_audio_api_v1_podcasts_episodes_episode_uuid_audio_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload or replace the audio file for a podcast episode.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_upload_episode_audio_api_v1_podcasts_episodes_episode_uuid_audio_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"episode_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Episode Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/episodes/{episode_uuid}/audio\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_upload_episode_audio_api_v1_podcasts_episodes__episode_uuid__audio_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_upload_episode_audio_api_v1_podcasts_episodes_episode_uuid_audio_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload episode audio\",\n \"tags\": [\n \"podcasts\",\n \"episodes\"\n ]\n },\n \"api_upload_episode_thumbnail_api_v1_podcasts_episodes_episode_uuid_thumbnail_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload or replace the thumbnail image for a podcast episode.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_upload_episode_thumbnail_api_v1_podcasts_episodes_episode_uuid_thumbnail_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"episode_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Episode Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/podcasts/episodes/{episode_uuid}/thumbnail\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_upload_episode_thumbnail_api_v1_podcasts_episodes__episode_uuid__thumbnail_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_upload_episode_thumbnail_api_v1_podcasts_episodes_episode_uuid_thumbnail_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload episode thumbnail\",\n \"tags\": [\n \"podcasts\",\n \"episodes\"\n ]\n },\n \"api_upload_migration_files_api_v1_courses_migrate_upload_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload files for content migration from another LMS. Pass an existing `temp_id` to append additional files to a prior upload.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_upload_migration_files_api_v1_courses_migrate_upload_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"temp_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Temp Id\"\n }\n }\n ],\n \"path\": \"/api/v1/courses/migrate/upload\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_upload_migration_files_api_v1_courses_migrate_upload_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_upload_migration_files_api_v1_courses_migrate_upload_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload migration files\",\n \"tags\": [\n \"migration\"\n ]\n },\n \"api_upload_org_auth_background_api_v1_orgs_org_id_auth_background_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload the background image shown on the organization's authentication pages.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_upload_org_auth_background_api_v1_orgs_org_id_auth_background_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/auth_background\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_upload_org_auth_background_api_v1_orgs__org_id__auth_background_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_upload_org_auth_background_api_v1_orgs_org_id_auth_background_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload auth page background\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_upload_org_landing_content_api_v1_orgs_org_id_landing_content_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a content asset (image or file) to attach to the organization's landing page.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_upload_org_landing_content_api_v1_orgs_org_id_landing_content_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/landing/content\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_upload_org_landing_content_api_v1_orgs__org_id__landing_content_post\"\n },\n \"security\": null,\n \"skill_name\": \"api_upload_org_landing_content_api_v1_orgs_org_id_landing_content_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload landing page content\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_upload_org_og_image_api_v1_orgs_org_id_og_image_put\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload the OpenGraph image used for social media sharing previews.\",\n \"destructive\": true,\n \"method\": \"PUT\",\n \"operation_id\": \"api_upload_org_og_image_api_v1_orgs_org_id_og_image_put\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/og_image\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_api_upload_org_og_image_api_v1_orgs__org_id__og_image_put\"\n },\n \"security\": null,\n \"skill_name\": \"api_upload_org_og_image_api_v1_orgs_org_id_og_image_put\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload OG image\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_upvote_comment_api_v1_comments_comment_uuid_vote_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Cast an upvote for a comment on behalf of the current user. Requires read access to the parent community.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_upvote_comment_api_v1_comments_comment_uuid_vote_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"comment_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Comment Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/comments/{comment_uuid}/vote\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_upvote_comment_api_v1_comments_comment_uuid_vote_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upvote a comment\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_upvote_discussion_api_v1_discussions_discussion_uuid_vote_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Cast an upvote for a discussion on behalf of the current user. Requires read access to the community.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_upvote_discussion_api_v1_discussions_discussion_uuid_vote_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"discussion_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Discussion Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/discussions/{discussion_uuid}/vote\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_upvote_discussion_api_v1_discussions_discussion_uuid_vote_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upvote a discussion\",\n \"tags\": [\n \"discussions\"\n ]\n },\n \"api_user_orgs_admin_api_v1_orgs_user_admin_page_page_limit_limit_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return a paginated list of organizations where the current user has admin rights.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_user_orgs_admin_api_v1_orgs_user_admin_page_page_limit_limit_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"page\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"limit\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/user_admin/page/{page}/limit/{limit}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_user_orgs_admin_api_v1_orgs_user_admin_page_page_limit_limit_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List organizations the user administers\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_user_orgs_api_v1_orgs_user_page_page_limit_limit_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return a paginated list of organizations the current user belongs to.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"api_user_orgs_api_v1_orgs_user_page_page_limit_limit_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"page\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"limit\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/user/page/{page}/limit/{limit}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_user_orgs_api_v1_orgs_user_page_page_limit_limit_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List organizations for current user\",\n \"tags\": [\n \"orgs\"\n ]\n },\n \"api_verify_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_verify_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Verify the DNS configuration for a custom domain by checking that the expected TXT verification record is in place. Only organization administrators can verify domains.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_verify_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_verify_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"domain_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Domain Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/domains/{domain_uuid}/verify\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"api_verify_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_verify_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Verify custom domain DNS\",\n \"tags\": [\n \"custom-domains\"\n ]\n },\n \"api_verify_email_api_v1_auth_verify_email_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Verify a user's email address using the token delivered via verification email. Rate limited to 5 attempts per 5 minutes per user_uuid.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"api_verify_email_api_v1_auth_verify_email_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/auth/verify-email\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/VerifyEmailRequest\"\n },\n \"security\": null,\n \"skill_name\": \"api_verify_email_api_v1_auth_verify_email_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Verify user email\",\n \"tags\": [\n \"auth\"\n ]\n },\n \"config_api_v1_dev_config_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns the current LearnHouse configuration with sensitive values redacted. Restricted to superadmin users.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"config_api_v1_dev_config_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/dev/config\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"config_api_v1_dev_config_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get LearnHouse runtime config\",\n \"tags\": [\n \"dev\"\n ]\n },\n \"execute_batch_api_v1_code_execute_batch_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Run a code snippet against multiple test cases in parallel and return per-test pass/fail results. Supports SQL execution via a bundled SQLite database; API tokens are not permitted.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"execute_batch_api_v1_code_execute_batch_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/code/execute-batch\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ExecuteBatchRequest\"\n },\n \"security\": null,\n \"skill_name\": \"execute_batch_api_v1_code_execute_batch_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Execute code against a batch of test cases\",\n \"tags\": [\n \"code-execution\"\n ]\n },\n \"execute_code_api_v1_code_execute_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Submit a single code snippet to the Judge0 sandbox and return its result. Supports SQL execution via a bundled SQLite database; API tokens are not permitted for this endpoint.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"execute_code_api_v1_code_execute_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/code/execute\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ExecuteRequest\"\n },\n \"security\": null,\n \"skill_name\": \"execute_code_api_v1_code_execute_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Execute a code snippet\",\n \"tags\": [\n \"code-execution\"\n ]\n },\n \"export_analytics_api_v1_analytics_export_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Exports results for a comma-separated list of analytics queries in either JSON or CSV format. Requires org admin privileges.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"export_analytics_api_v1_analytics_export_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/analytics/export\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"export_analytics_api_v1_analytics_export_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Export analytics data\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"finalize_course_plan_api_v1_ai_courseplanning_finalize_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Finalize an AI-generated course plan and persist the course, chapters, and activities in the database. The calling user becomes the creator of the resulting course.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"finalize_course_plan_api_v1_ai_courseplanning_finalize_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/courseplanning/finalize\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/FinalizeCoursePlanRequest\"\n },\n \"security\": null,\n \"skill_name\": \"finalize_course_plan_api_v1_ai_courseplanning_finalize_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Finalize course plan\",\n \"tags\": [\n \"ai\",\n \"courseplanning\"\n ]\n },\n \"generate_activity_content_api_v1_ai_courseplanning_generate_activity_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Generate AI content for a specific activity within a course planning session and stream it as Server-Sent Events (SSE). Bounded by the session's max activity iterations. Content must subsequently be persisted via the save-activity-content endpoint.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"generate_activity_content_api_v1_ai_courseplanning_generate_activity_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/courseplanning/generate-activity\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/GenerateActivityContentRequest\"\n },\n \"security\": null,\n \"skill_name\": \"generate_activity_content_api_v1_ai_courseplanning_generate_activity_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Generate activity content (streaming)\",\n \"tags\": [\n \"ai\",\n \"courseplanning\"\n ]\n },\n \"get_instance_info_api_v1_instance_info_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Public endpoint returning instance configuration (deployment mode, default org slug, frontend domain, and multi-org flag). Result is cached for performance.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_instance_info_api_v1_instance_info_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/instance/info\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_instance_info_api_v1_instance_info_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get instance info\",\n \"tags\": [\n \"instance\"\n ]\n },\n \"get_org_ai_credits_api_v1_orgs_org_id_ai_credits_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the AI credits summary for an organization, including base, purchased, used, and remaining credits. The caller must be a member of the organization.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_org_ai_credits_api_v1_orgs_org_id_ai_credits_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/ai-credits\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_org_ai_credits_api_v1_orgs_org_id_ai_credits_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get AI credits summary\",\n \"tags\": [\n \"ai-credits\"\n ]\n },\n \"get_plan_info_api_v1_analytics_plan_info_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns the analytics tier (core or advanced) available to the organization based on its current plan.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_plan_info_api_v1_analytics_plan_info_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/analytics/plan-info\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_plan_info_api_v1_analytics_plan_info_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get analytics plan tier for an organization\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"get_session_state_api_v1_ai_courseplanning_session_session_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the current state of a course planning session, including the current plan, iteration counts, message history, and any linked course.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_session_state_api_v1_ai_courseplanning_session_session_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"session_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Session Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/ai/courseplanning/session/{session_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_session_state_api_v1_ai_courseplanning_session_session_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get course planning session state\",\n \"tags\": [\n \"ai\",\n \"courseplanning\"\n ]\n },\n \"get_session_state_api_v1_ai_magicblocks_session_session_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the current state of a MagicBlock session, including iteration count, generated HTML, and full message history.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_session_state_api_v1_ai_magicblocks_session_session_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"session_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Session Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/ai/magicblocks/session/{session_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_session_state_api_v1_ai_magicblocks_session_session_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get MagicBlock session state\",\n \"tags\": [\n \"ai\",\n \"magicblocks\"\n ]\n },\n \"get_session_state_api_v1_boards_playground_session_session_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve the current state of a Boards Playground generation session, including iteration count, current HTML, and message history.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_session_state_api_v1_boards_playground_session_session_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"session_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Session Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/boards/playground/session/{session_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_session_state_api_v1_boards_playground_session_session_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get boards playground session state\",\n \"tags\": [\n \"boards\",\n \"boards-playground\"\n ]\n },\n \"get_session_state_api_v1_playgrounds_generate_session_session_uuid_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Retrieve the current state of a Playground generation session, including iteration count, current HTML, and message history.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_session_state_api_v1_playgrounds_generate_session_session_uuid_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"session_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Session Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/playgrounds/generate/session/{session_uuid}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_session_state_api_v1_playgrounds_generate_session_session_uuid_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get playground generation session state\",\n \"tags\": [\n \"playgrounds\",\n \"playgrounds-generator\"\n ]\n },\n \"get_submission_history_api_v1_code_submissions_history_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the authenticated user's previous code submissions for a given activity block, paginated by page and limit.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"get_submission_history_api_v1_code_submissions_history_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"block_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Block Id\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"page\",\n \"required\": false,\n \"schema\": {\n \"default\": 1,\n \"title\": \"Page\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 20,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/code/submissions/history\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"get_submission_history_api_v1_code_submissions_history_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List a user's code submission history\",\n \"tags\": [\n \"code_submissions\"\n ]\n },\n \"head_activity_video_api_v1_stream_video_org_uuid_course_uuid_activity_uuid_filen\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns metadata for an activity video without the body. Used by video players to probe file size and Range support before playback.\",\n \"destructive\": false,\n \"method\": \"HEAD\",\n \"operation_id\": \"head_activity_video_api_v1_stream_video_org_uuid_course_uuid_activity_uuid_filen\",\n \"parameters\": [\n {\n \"description\": \"Organization UUID\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization UUID\",\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Course UUID\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Course UUID\",\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Activity UUID\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Activity UUID\",\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Video filename\",\n \"in\": \"path\",\n \"name\": \"filename\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Video filename\",\n \"title\": \"Filename\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/stream/video/{org_uuid}/{course_uuid}/{activity_uuid}/{filename}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"head_activity_video_api_v1_stream_video_org_uuid_course_uuid_activity_uuid_filen\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get activity video metadata\",\n \"tags\": [\n \"stream\"\n ]\n },\n \"head_block_audio_api_v1_stream_block_audio_org_uuid_course_uuid_activity_uuid_bl\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns metadata for an audio block file without the body. Used by audio players to probe file size and MIME type before playback.\",\n \"destructive\": false,\n \"method\": \"HEAD\",\n \"operation_id\": \"head_block_audio_api_v1_stream_block_audio_org_uuid_course_uuid_activity_uuid_bl\",\n \"parameters\": [\n {\n \"description\": \"Organization UUID\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization UUID\",\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Course UUID\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Course UUID\",\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Activity UUID\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Activity UUID\",\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Block UUID\",\n \"in\": \"path\",\n \"name\": \"block_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Block UUID\",\n \"title\": \"Block Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Audio filename\",\n \"in\": \"path\",\n \"name\": \"filename\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Audio filename\",\n \"title\": \"Filename\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/stream/block/audio/{org_uuid}/{course_uuid}/{activity_uuid}/{block_uuid}/{filename}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"head_block_audio_api_v1_stream_block_audio_org_uuid_course_uuid_activity_uuid_bl\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get audio block file metadata\",\n \"tags\": [\n \"stream\"\n ]\n },\n \"head_block_video_api_v1_stream_block_org_uuid_course_uuid_activity_uuid_block_uu\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns metadata for a video block file without the body. Used by video players to probe file size and Range support before playback.\",\n \"destructive\": false,\n \"method\": \"HEAD\",\n \"operation_id\": \"head_block_video_api_v1_stream_block_org_uuid_course_uuid_activity_uuid_block_uu\",\n \"parameters\": [\n {\n \"description\": \"Organization UUID\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization UUID\",\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Course UUID\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Course UUID\",\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Activity UUID\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Activity UUID\",\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Block UUID\",\n \"in\": \"path\",\n \"name\": \"block_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Block UUID\",\n \"title\": \"Block Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Video filename\",\n \"in\": \"path\",\n \"name\": \"filename\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Video filename\",\n \"title\": \"Filename\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/stream/block/{org_uuid}/{course_uuid}/{activity_uuid}/{block_uuid}/{filename}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"head_block_video_api_v1_stream_block_org_uuid_course_uuid_activity_uuid_block_uu\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get video block file metadata\",\n \"tags\": [\n \"stream\"\n ]\n },\n \"head_content_file_content_file_path_head\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns metadata for a content file without the body. Used by clients to probe file size, MIME type, and Range support before issuing a GET.\",\n \"destructive\": false,\n \"method\": \"HEAD\",\n \"operation_id\": \"head_content_file_content_file_path_head\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"file_path\",\n \"required\": true,\n \"schema\": {\n \"title\": \"File Path\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/content/{file_path}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"head_content_file_content_file_path_head\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get content file metadata\",\n \"tags\": []\n },\n \"head_podcast_audio_api_v1_stream_audio_org_uuid_podcast_uuid_episode_uuid_filena\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns metadata for a podcast episode audio file without the body. Used by audio players to probe file size and Range support before playback.\",\n \"destructive\": false,\n \"method\": \"HEAD\",\n \"operation_id\": \"head_podcast_audio_api_v1_stream_audio_org_uuid_podcast_uuid_episode_uuid_filena\",\n \"parameters\": [\n {\n \"description\": \"Organization UUID\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization UUID\",\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Podcast UUID\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Podcast UUID\",\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Episode UUID\",\n \"in\": \"path\",\n \"name\": \"episode_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Episode UUID\",\n \"title\": \"Episode Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Audio filename\",\n \"in\": \"path\",\n \"name\": \"filename\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Audio filename\",\n \"title\": \"Filename\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/stream/audio/{org_uuid}/{podcast_uuid}/{episode_uuid}/{filename}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"head_podcast_audio_api_v1_stream_audio_org_uuid_podcast_uuid_episode_uuid_filena\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Get podcast audio metadata\",\n \"tags\": [\n \"stream\"\n ]\n },\n \"health_api_v1_health_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Returns the overall health of the service and its dependencies (e.g. database connectivity).\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"health_api_v1_health_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/health\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"health_api_v1_health_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Health check\",\n \"tags\": [\n \"health\"\n ]\n },\n \"ingest_frontend_event_api_v1_analytics_events_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Proxies a whitelisted analytics event from the frontend to the analytics backend. The authenticated user must belong to the target organization, and the event name must be in the allowed list.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"ingest_frontend_event_api_v1_analytics_events_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/analytics/events\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/FrontendEvent\"\n },\n \"security\": null,\n \"skill_name\": \"ingest_frontend_event_api_v1_analytics_events_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Ingest a frontend analytics event\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"iterate_boards_playground_session_api_v1_boards_playground_iterate_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Continue an existing Boards Playground session with a new message, streaming the updated output. Deducts AI credits and enforces the session's iteration limit.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"iterate_boards_playground_session_api_v1_boards_playground_iterate_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/boards/playground/iterate\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendBoardsPlaygroundMessage\"\n },\n \"security\": null,\n \"skill_name\": \"iterate_boards_playground_session_api_v1_boards_playground_iterate_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Iterate on a boards playground AI session\",\n \"tags\": [\n \"boards\",\n \"boards-playground\"\n ]\n },\n \"iterate_course_planning_session_api_v1_ai_courseplanning_iterate_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Continue an existing course planning session with a new user message and stream the updated plan as Server-Sent Events (SSE). Bounded by the session's max planning iterations.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"iterate_course_planning_session_api_v1_ai_courseplanning_iterate_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/courseplanning/iterate\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendCoursePlanningMessage\"\n },\n \"security\": null,\n \"skill_name\": \"iterate_course_planning_session_api_v1_ai_courseplanning_iterate_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Iterate course planning session (streaming)\",\n \"tags\": [\n \"ai\",\n \"courseplanning\"\n ]\n },\n \"iterate_magicblock_session_api_v1_ai_magicblocks_iterate_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Continue an existing MagicBlock session with a new user message. Streams the updated HTML as Server-Sent Events (SSE). Consumes AI credits and is bounded by the session's max iterations.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"iterate_magicblock_session_api_v1_ai_magicblocks_iterate_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/magicblocks/iterate\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendMagicBlockMessage\"\n },\n \"security\": null,\n \"skill_name\": \"iterate_magicblock_session_api_v1_ai_magicblocks_iterate_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Iterate MagicBlock session (streaming)\",\n \"tags\": [\n \"ai\",\n \"magicblocks\"\n ]\n },\n \"iterate_playground_session_api_v1_playgrounds_generate_iterate_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Continue an existing Playground session with a new message, streaming the updated output. Deducts AI credits and enforces the session's iteration limit.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"iterate_playground_session_api_v1_playgrounds_generate_iterate_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/playgrounds/generate/iterate\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SendPlaygroundMessage\"\n },\n \"security\": null,\n \"skill_name\": \"iterate_playground_session_api_v1_playgrounds_generate_iterate_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Iterate on a playground generation session\",\n \"tags\": [\n \"playgrounds\",\n \"playgrounds-generator\"\n ]\n },\n \"link_preview_api_v1_utils_link_preview_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Fetches OpenGraph-style preview metadata (title, description, image) for a given URL. Requires an authenticated user.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"link_preview_api_v1_utils_link_preview_get\",\n \"parameters\": [\n {\n \"description\": \"URL to preview\",\n \"in\": \"query\",\n \"name\": \"url\",\n \"required\": true,\n \"schema\": {\n \"description\": \"URL to preview\",\n \"title\": \"Url\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/utils/link-preview\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"link_preview_api_v1_utils_link_preview_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Fetch link preview metadata\",\n \"tags\": [\n \"utils\"\n ]\n },\n \"login_api_v1_auth_login_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Authenticate a user with username (email) and password. On success, sets httpOnly access and refresh cookies and returns the user profile and tokens. Subject to IP-based rate limiting and account lockout after repeated failures. In SaaS mode, the account's email must be verified.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"login_api_v1_auth_login_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/auth/login\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_login_api_v1_auth_login_post\"\n },\n \"security\": null,\n \"skill_name\": \"login_api_v1_auth_login_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Log in with email and password\",\n \"tags\": [\n \"auth\"\n ]\n },\n \"logout_api_v1_auth_logout_delete\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Log out the current user by clearing the access and refresh cookies. Because JWTs are stored in httpOnly cookies, the frontend cannot clear them directly \\u2014 the backend must respond with cookie-clearing headers.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"logout_api_v1_auth_logout_delete\",\n \"parameters\": [],\n \"path\": \"/api/v1/auth/logout\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"logout_api_v1_auth_logout_delete\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Log out the current user\",\n \"tags\": [\n \"auth\"\n ]\n },\n \"migrate_api_v1_dev_migrate_orgconfig_v0_to_v1_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Runs the v0 to v1 schema migration across every organization's configuration. Restricted to superadmin users.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"migrate_api_v1_dev_migrate_orgconfig_v0_to_v1_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/dev/migrate_orgconfig_v0_to_v1\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"migrate_api_v1_dev_migrate_orgconfig_v0_to_v1_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Migrate organization config v0 to v1\",\n \"tags\": [\n \"dev\"\n ]\n },\n \"migratev1_1_api_v1_dev_migrate_orgconfig_v1_to_v1_1_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Runs the v1 to v1.1 schema migration across every organization's configuration. Restricted to superadmin users.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"migratev1_1_api_v1_dev_migrate_orgconfig_v1_to_v1_1_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/dev/migrate_orgconfig_v1_to_v1.1\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"migratev1_1_api_v1_dev_migrate_orgconfig_v1_to_v1_1_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Migrate organization config v1 to v1.1\",\n \"tags\": [\n \"dev\"\n ]\n },\n \"migratev1_2_api_v1_dev_migrate_orgconfig_v1_to_v1_2_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Runs the v1 to v1.2 schema migration across every organization's configuration. Restricted to superadmin users.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"migratev1_2_api_v1_dev_migrate_orgconfig_v1_to_v1_2_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/dev/migrate_orgconfig_v1_to_v1.2\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"migratev1_2_api_v1_dev_migrate_orgconfig_v1_to_v1_2_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Migrate organization config v1 to v1.2\",\n \"tags\": [\n \"dev\"\n ]\n },\n \"query_course_dashboard_api_v1_analytics_dashboard_course_query_name_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Executes a predefined course-level analytics query via Tinybird and returns enriched aggregated results. Requires org admin privileges and a Pro plan or higher.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"query_course_dashboard_api_v1_analytics_dashboard_course_query_name_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"query_name\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Query Name\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/analytics/dashboard/course/{query_name}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"query_course_dashboard_api_v1_analytics_dashboard_course_query_name_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Run a course-level analytics query\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"query_course_dashboard_detail_api_v1_analytics_dashboard_course_detail_query_nam\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Executes a predefined course-level detail query via Tinybird with fallback to PostgreSQL TrailRun data, and enriches results with course, activity, and user metadata. Requires org admin privileges and a Pro plan or higher.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"query_course_dashboard_detail_api_v1_analytics_dashboard_course_detail_query_nam\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"query_name\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Query Name\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/analytics/dashboard/course/detail/{query_name}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"query_course_dashboard_detail_api_v1_analytics_dashboard_course_detail_query_nam\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Run a course-level detail analytics query\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"query_dashboard_api_v1_analytics_dashboard_query_name_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Executes a predefined analytics query via Tinybird and returns the aggregated results. Advanced queries require an Enterprise plan. Requires org admin privileges.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"query_dashboard_api_v1_analytics_dashboard_query_name_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"query_name\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Query Name\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/analytics/dashboard/{query_name}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"query_dashboard_api_v1_analytics_dashboard_query_name_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Run a dashboard analytics query\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"query_dashboard_db_api_v1_analytics_dashboard_db_query_name_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Executes a predefined PostgreSQL analytics query (e.g. grade distribution histogram). Requires org admin privileges and a Pro plan or higher.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"query_dashboard_db_api_v1_analytics_dashboard_db_query_name_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"query_name\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Query Name\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/analytics/dashboard/db/{query_name}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"query_dashboard_db_api_v1_analytics_dashboard_db_query_name_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Run a PostgreSQL-backed dashboard query\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"query_dashboard_detail_api_v1_analytics_dashboard_detail_query_name_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Executes a predefined analytics detail query against Tinybird and enriches the result rows with course, activity, and user metadata from PostgreSQL. Requires org admin privileges.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"query_dashboard_detail_api_v1_analytics_dashboard_detail_query_name_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"query_name\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Query Name\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/analytics/dashboard/detail/{query_name}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"query_dashboard_detail_api_v1_analytics_dashboard_detail_query_name_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Run a detail dashboard query\",\n \"tags\": [\n \"analytics\"\n ]\n },\n \"refresh_api_v1_auth_refresh_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Validate the refresh token (read from the `refresh_token` httpOnly cookie) and issue a new access token. Subject to IP-based rate limiting.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"refresh_api_v1_auth_refresh_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/auth/refresh\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"refresh_api_v1_auth_refresh_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Refresh access token\",\n \"tags\": [\n \"auth\"\n ]\n },\n \"reset_org_ai_credits_api_v1_orgs_org_id_ai_credits_reset_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Reset AI credits usage for an organization. Typically used at the start of a new billing period. Only organization admins can reset credits.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"reset_org_ai_credits_api_v1_orgs_org_id_ai_credits_reset_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/ai-credits/reset\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"reset_org_ai_credits_api_v1_orgs_org_id_ai_credits_reset_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Reset AI credits usage\",\n \"tags\": [\n \"ai-credits\"\n ]\n },\n \"root_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Root\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"root_get\",\n \"parameters\": [],\n \"path\": \"/\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"root_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Root\",\n \"tags\": []\n },\n \"save_activity_content_api_v1_ai_courseplanning_save_activity_content_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Persist AI-generated ProseMirror content to an activity. The content is validated for correct document structure before being saved.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"save_activity_content_api_v1_ai_courseplanning_save_activity_content_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/courseplanning/save-activity-content\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SaveActivityContentRequest\"\n },\n \"security\": null,\n \"skill_name\": \"save_activity_content_api_v1_ai_courseplanning_save_activity_content_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Save AI-generated activity content\",\n \"tags\": [\n \"ai\",\n \"courseplanning\"\n ]\n },\n \"save_submission_api_v1_code_submissions_save_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Persist a code submission (source, results, pass/fail counts) for the authenticated user on an activity block.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"save_submission_api_v1_code_submissions_save_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/code/submissions/save\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SaveSubmissionRequest\"\n },\n \"security\": null,\n \"skill_name\": \"save_submission_api_v1_code_submissions_save_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Save a code submission\",\n \"tags\": [\n \"code_submissions\"\n ]\n },\n \"serve_content_file_content_file_path_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Streams a content file (videos, PDFs, images, etc.) from S3 storage. Supports HTTP Range requests for video/audio seeking. Access is enforced based on the path prefix: activity and podcast episode content require authentication and org membership for non-public resources, while course metadata and org branding are public.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"serve_content_file_content_file_path_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"file_path\",\n \"required\": true,\n \"schema\": {\n \"title\": \"File Path\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/content/{file_path}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"serve_content_file_content_file_path_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Serve a content file\",\n \"tags\": []\n },\n \"set_org_ai_credits_api_v1_orgs_org_id_ai_credits_set_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Overwrite the org's purchased AI credit balance to an absolute value. Restricted to superadmins; bypasses the additive /add flow so it can grant, correct, or zero out credits in one call.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"set_org_ai_credits_api_v1_orgs_org_id_ai_credits_set_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"org_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Org Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/orgs/{org_id}/ai-credits/set\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/SetCreditsRequest\"\n },\n \"security\": null,\n \"skill_name\": \"set_org_ai_credits_api_v1_orgs_org_id_ai_credits_set_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Set purchased AI credits (superadmin only)\",\n \"tags\": [\n \"ai-credits\"\n ]\n },\n \"start_boards_playground_session_api_v1_boards_playground_start_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Start a new Boards Playground AI generation session with a server-sent events stream. Deducts AI credits and requires a valid board and organization.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"start_boards_playground_session_api_v1_boards_playground_start_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/boards/playground/start\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/StartBoardsPlaygroundSession\"\n },\n \"security\": null,\n \"skill_name\": \"start_boards_playground_session_api_v1_boards_playground_start_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Start a boards playground AI session\",\n \"tags\": [\n \"boards\",\n \"boards-playground\"\n ]\n },\n \"start_course_planning_session_api_v1_ai_courseplanning_start_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Start a new AI course planning session for an organization and stream the generated course plan as Server-Sent Events (SSE). Consumes AI credits based on the organization's plan tier.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"start_course_planning_session_api_v1_ai_courseplanning_start_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/courseplanning/start\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/StartCoursePlanningSession\"\n },\n \"security\": null,\n \"skill_name\": \"start_course_planning_session_api_v1_ai_courseplanning_start_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Start course planning session (streaming)\",\n \"tags\": [\n \"ai\",\n \"courseplanning\"\n ]\n },\n \"start_magicblock_session_api_v1_ai_magicblocks_start_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Start a new MagicBlock AI generation session for an activity block. Streams generated HTML as Server-Sent Events (SSE). Consumes AI credits from the owning organization.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"start_magicblock_session_api_v1_ai_magicblocks_start_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/ai/magicblocks/start\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/StartMagicBlockSession\"\n },\n \"security\": null,\n \"skill_name\": \"start_magicblock_session_api_v1_ai_magicblocks_start_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Start MagicBlock session (streaming)\",\n \"tags\": [\n \"ai\",\n \"magicblocks\"\n ]\n },\n \"start_playground_session_api_v1_playgrounds_generate_start_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Start a new Playground AI generation session with a server-sent events stream. Deducts AI credits and requires update permission on the target playground.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"start_playground_session_api_v1_playgrounds_generate_start_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/playgrounds/generate/start\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/StartPlaygroundSession\"\n },\n \"security\": null,\n \"skill_name\": \"start_playground_session_api_v1_playgrounds_generate_start_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Start a playground generation session\",\n \"tags\": [\n \"playgrounds\",\n \"playgrounds-generator\"\n ]\n },\n \"stream_activity_video_api_v1_stream_video_org_uuid_course_uuid_activity_uuid_fil\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Streams a video file for a course activity with HTTP Range request support. Validates user read access via RBAC before serving the file.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"stream_activity_video_api_v1_stream_video_org_uuid_course_uuid_activity_uuid_fil\",\n \"parameters\": [\n {\n \"description\": \"Organization UUID\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization UUID\",\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Course UUID\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Course UUID\",\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Activity UUID\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Activity UUID\",\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Video filename\",\n \"in\": \"path\",\n \"name\": \"filename\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Video filename\",\n \"title\": \"Filename\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/stream/video/{org_uuid}/{course_uuid}/{activity_uuid}/{filename}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"stream_activity_video_api_v1_stream_video_org_uuid_course_uuid_activity_uuid_fil\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Stream an activity video\",\n \"tags\": [\n \"stream\"\n ]\n },\n \"stream_block_audio_api_v1_stream_block_audio_org_uuid_course_uuid_activity_uuid_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Streams an audio file attached to an audio block within an activity, with HTTP Range request support. Validates user read access to the parent course via RBAC.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"stream_block_audio_api_v1_stream_block_audio_org_uuid_course_uuid_activity_uuid_\",\n \"parameters\": [\n {\n \"description\": \"Organization UUID\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization UUID\",\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Course UUID\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Course UUID\",\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Activity UUID\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Activity UUID\",\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Block UUID\",\n \"in\": \"path\",\n \"name\": \"block_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Block UUID\",\n \"title\": \"Block Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Audio filename\",\n \"in\": \"path\",\n \"name\": \"filename\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Audio filename\",\n \"title\": \"Filename\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/stream/block/audio/{org_uuid}/{course_uuid}/{activity_uuid}/{block_uuid}/{filename}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"stream_block_audio_api_v1_stream_block_audio_org_uuid_course_uuid_activity_uuid_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Stream an audio block file\",\n \"tags\": [\n \"stream\"\n ]\n },\n \"stream_block_video_api_v1_stream_block_org_uuid_course_uuid_activity_uuid_block_\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Streams a video file attached to a video block within an activity, with HTTP Range request support. Validates user read access to the parent course via RBAC.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"stream_block_video_api_v1_stream_block_org_uuid_course_uuid_activity_uuid_block_\",\n \"parameters\": [\n {\n \"description\": \"Organization UUID\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization UUID\",\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Course UUID\",\n \"in\": \"path\",\n \"name\": \"course_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Course UUID\",\n \"title\": \"Course Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Activity UUID\",\n \"in\": \"path\",\n \"name\": \"activity_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Activity UUID\",\n \"title\": \"Activity Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Block UUID\",\n \"in\": \"path\",\n \"name\": \"block_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Block UUID\",\n \"title\": \"Block Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Video filename\",\n \"in\": \"path\",\n \"name\": \"filename\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Video filename\",\n \"title\": \"Filename\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/stream/block/{org_uuid}/{course_uuid}/{activity_uuid}/{block_uuid}/{filename}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"stream_block_video_api_v1_stream_block_org_uuid_course_uuid_activity_uuid_block_\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Stream a video block file\",\n \"tags\": [\n \"stream\"\n ]\n },\n \"stream_podcast_audio_api_v1_stream_audio_org_uuid_podcast_uuid_episode_uuid_file\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Streams a podcast episode audio file with HTTP Range request support. Validates user read access to the podcast via RBAC before serving the file.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"stream_podcast_audio_api_v1_stream_audio_org_uuid_podcast_uuid_episode_uuid_file\",\n \"parameters\": [\n {\n \"description\": \"Organization UUID\",\n \"in\": \"path\",\n \"name\": \"org_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Organization UUID\",\n \"title\": \"Org Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Podcast UUID\",\n \"in\": \"path\",\n \"name\": \"podcast_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Podcast UUID\",\n \"title\": \"Podcast Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Episode UUID\",\n \"in\": \"path\",\n \"name\": \"episode_uuid\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Episode UUID\",\n \"title\": \"Episode Uuid\",\n \"type\": \"string\"\n }\n },\n {\n \"description\": \"Audio filename\",\n \"in\": \"path\",\n \"name\": \"filename\",\n \"required\": true,\n \"schema\": {\n \"description\": \"Audio filename\",\n \"title\": \"Filename\",\n \"type\": \"string\"\n }\n }\n ],\n \"path\": \"/api/v1/stream/audio/{org_uuid}/{podcast_uuid}/{episode_uuid}/{filename}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"stream_podcast_audio_api_v1_stream_audio_org_uuid_podcast_uuid_episode_uuid_file\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Stream a podcast episode audio\",\n \"tags\": [\n \"stream\"\n ]\n },\n \"submit_feedback_api_v1_monitoring_feedback_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Relay user feedback to Sentry from the server so requests aren't dropped by client-side ad/tracker blockers.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"submit_feedback_api_v1_monitoring_feedback_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/monitoring/feedback\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_submit_feedback_api_v1_monitoring_feedback_post\"\n },\n \"security\": null,\n \"skill_name\": \"submit_feedback_api_v1_monitoring_feedback_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Submit user feedback\",\n \"tags\": [\n \"monitoring\"\n ]\n },\n \"third_party_login_api_v1_auth_oauth_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Sign in or sign up using a third-party OAuth provider (currently Google). On success, sets httpOnly access and refresh cookies and returns the user profile and tokens.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"third_party_login_api_v1_auth_oauth_post\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"org_id\",\n \"required\": false,\n \"schema\": {\n \"anyOf\": [\n {\n \"type\": \"integer\"\n },\n {\n \"type\": \"null\"\n }\n ],\n \"title\": \"Org Id\"\n }\n }\n ],\n \"path\": \"/api/v1/auth/oauth\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ThirdPartyLogin\"\n },\n \"security\": null,\n \"skill_name\": \"third_party_login_api_v1_auth_oauth_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Log in via third-party provider\",\n \"tags\": [\n \"auth\"\n ]\n },\n \"upload_sqlite_db_api_v1_code_upload_sqlite_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Upload a SQLite database file for a code playground block. Requires an authenticated user with update permission on the target course; API tokens are not permitted.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"upload_sqlite_db_api_v1_code_upload_sqlite_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/code/upload-sqlite\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/Body_upload_sqlite_db_api_v1_code_upload_sqlite_post\"\n },\n \"security\": null,\n \"skill_name\": \"upload_sqlite_db_api_v1_code_upload_sqlite_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Upload a SQLite database for a code playground block\",\n \"tags\": [\n \"code-execution\"\n ]\n },\n \"zapier_create_subscription_api_v1_integrations_zapier_subscriptions_post\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Register a Zapier REST Hook subscription. Called by Zapier when a Zap is enabled. Creates a webhook endpoint tagged `source=\\\"zapier\\\"` that the dispatcher will deliver events to.\",\n \"destructive\": true,\n \"method\": \"POST\",\n \"operation_id\": \"zapier_create_subscription_api_v1_integrations_zapier_subscriptions_post\",\n \"parameters\": [],\n \"path\": \"/api/v1/integrations/zapier/subscriptions\",\n \"request_body\": {\n \"$ref\": \"#/components/schemas/ZapierSubscriptionCreate\"\n },\n \"security\": null,\n \"skill_name\": \"zapier_create_subscription_api_v1_integrations_zapier_subscriptions_post\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Create Zap subscription\",\n \"tags\": [\n \"integrations\",\n \"zapier\"\n ]\n },\n \"zapier_delete_subscription_api_v1_integrations_zapier_subscriptions_subscription\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Delete a Zapier REST Hook subscription. Called by Zapier when a Zap is disabled or deleted.\",\n \"destructive\": true,\n \"method\": \"DELETE\",\n \"operation_id\": \"zapier_delete_subscription_api_v1_integrations_zapier_subscriptions_subscription\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"path\",\n \"name\": \"subscription_id\",\n \"required\": true,\n \"schema\": {\n \"title\": \"Subscription Id\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/integrations/zapier/subscriptions/{subscription_id}\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"zapier_delete_subscription_api_v1_integrations_zapier_subscriptions_subscription\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Delete Zap subscription\",\n \"tags\": [\n \"integrations\",\n \"zapier\"\n ]\n },\n \"zapier_list_courses_api_v1_integrations_zapier_courses_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List courses in the caller's organization for use as Zapier trigger samples. Maximum 500 rows.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"zapier_list_courses_api_v1_integrations_zapier_courses_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 100,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/integrations/zapier/courses\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"zapier_list_courses_api_v1_integrations_zapier_courses_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List courses for Zapier\",\n \"tags\": [\n \"integrations\",\n \"zapier\"\n ]\n },\n \"zapier_list_events_api_v1_integrations_zapier_events_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List every webhook event name a Zap can subscribe to.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"zapier_list_events_api_v1_integrations_zapier_events_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/integrations/zapier/events\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"zapier_list_events_api_v1_integrations_zapier_events_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List webhook events\",\n \"tags\": [\n \"integrations\",\n \"zapier\"\n ]\n },\n \"zapier_list_subscriptions_api_v1_integrations_zapier_subscriptions_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List every active Zapier REST Hook subscription for the caller's organization.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"zapier_list_subscriptions_api_v1_integrations_zapier_subscriptions_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/integrations/zapier/subscriptions\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"zapier_list_subscriptions_api_v1_integrations_zapier_subscriptions_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List Zap subscriptions\",\n \"tags\": [\n \"integrations\",\n \"zapier\"\n ]\n },\n \"zapier_list_usergroups_api_v1_integrations_zapier_usergroups_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List cohorts / user groups in the caller's organization. Maximum 500 rows.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"zapier_list_usergroups_api_v1_integrations_zapier_usergroups_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 100,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/integrations/zapier/usergroups\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"zapier_list_usergroups_api_v1_integrations_zapier_usergroups_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List user groups for Zapier\",\n \"tags\": [\n \"integrations\",\n \"zapier\"\n ]\n },\n \"zapier_list_users_api_v1_integrations_zapier_users_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"List users that belong to the caller's organization for use as Zapier trigger samples. Maximum 500 rows.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"zapier_list_users_api_v1_integrations_zapier_users_get\",\n \"parameters\": [\n {\n \"description\": \"\",\n \"in\": \"query\",\n \"name\": \"limit\",\n \"required\": false,\n \"schema\": {\n \"default\": 100,\n \"title\": \"Limit\",\n \"type\": \"integer\"\n }\n }\n ],\n \"path\": \"/api/v1/integrations/zapier/users\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"zapier_list_users_api_v1_integrations_zapier_users_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"List users for Zapier\",\n \"tags\": [\n \"integrations\",\n \"zapier\"\n ]\n },\n \"zapier_me_api_v1_integrations_zapier_me_get\": {\n \"base_url\": \"https://learnhouse.a2acloud.io\",\n \"base_url_field\": \"OPENAPI_BASE_URL\",\n \"description\": \"Return the organization and token identity for the current Zapier API token. Used by Zapier as the auth test endpoint.\",\n \"destructive\": false,\n \"method\": \"GET\",\n \"operation_id\": \"zapier_me_api_v1_integrations_zapier_me_get\",\n \"parameters\": [],\n \"path\": \"/api/v1/integrations/zapier/me\",\n \"request_body\": null,\n \"security\": null,\n \"skill_name\": \"zapier_me_api_v1_integrations_zapier_me_get\",\n \"source_index\": 1,\n \"source_openapi_url\": \"https://learnhouse.a2acloud.io/openapi.json\",\n \"source_title\": \"LearnHouse\",\n \"summary\": \"Identify Zapier caller\",\n \"tags\": [\n \"integrations\",\n \"zapier\"\n ]\n }\n}")
|
|
OPERATION_GROUPS = json.loads("[\n {\n \"common_prefix\": \"/content/{file_path}\",\n \"description\": \"Handle 2 OpenAPI operation(s) under /content/{file_path} for the content route group.\",\n \"id\": \"content\",\n \"label\": \"content\",\n \"operation_ids\": [\n \"serve_content_file_content_file_path_get\",\n \"head_content_file_content_file_path_head\"\n ],\n \"skill_dir\": \"content\",\n \"skill_name\": \"content-routes\",\n \"skill_path\": \"skills/content/SKILL.md\",\n \"subagent_name\": \"content-api\"\n },\n {\n \"common_prefix\": \"/api/v1/users\",\n \"description\": \"Handle 22 OpenAPI operation(s) under /api/v1/users for the users route group.\",\n \"id\": \"users\",\n \"label\": \"users\",\n \"operation_ids\": [\n \"api_get_current_user_api_v1_users_profile_get\",\n \"api_get_current_user_session_api_v1_users_session_get\",\n \"api_get_authorization_status_api_v1_users_authorize_ressource_ressource_uuid_act\",\n \"api_create_user_with_orgid_api_v1_users_org_id_post\",\n \"api_create_user_with_orgid_and_invite_api_v1_users_org_id_invite_invite_code_pos\",\n \"api_create_user_without_org_api_v1_users_post\",\n \"api_get_user_by_id_api_v1_users_id_user_id_get\",\n \"api_get_user_by_uuid_api_v1_users_uuid_user_uuid_get\",\n \"api_get_user_by_username_api_v1_users_username_username_get\",\n \"api_update_user_api_v1_users_user_id_put\",\n \"api_update_avatar_user_api_v1_users_update_avatar_user_id_put\",\n \"api_update_user_password_api_v1_users_change_password_user_id_put\",\n \"api_change_password_with_reset_code_v2_api_v1_users_reset_password_change_passwo\",\n \"api_change_password_with_reset_code_api_v1_users_reset_password_change_password_\",\n \"api_send_password_reset_email_v2_api_v1_users_reset_password_send_reset_code_pos\",\n \"api_send_password_reset_email_api_v1_users_reset_password_send_reset_code_email_\",\n \"api_send_password_reset_email_platform_v2_api_v1_users_reset_password_platform_s\",\n \"api_send_password_reset_email_platform_api_v1_users_reset_password_platform_send\",\n \"api_change_password_with_reset_code_platform_v2_api_v1_users_reset_password_plat\",\n \"api_change_password_with_reset_code_platform_api_v1_users_reset_password_platfor\",\n \"api_delete_user_api_v1_users_user_id_user_id_delete\",\n \"api_get_user_courses_api_v1_users_user_id_courses_get\"\n ],\n \"skill_dir\": \"users\",\n \"skill_name\": \"users-routes\",\n \"skill_path\": \"skills/users/SKILL.md\",\n \"subagent_name\": \"users-api\"\n },\n {\n \"common_prefix\": \"/api/v1/usergroups\",\n \"description\": \"Handle 12 OpenAPI operation(s) under /api/v1/usergroups for the usergroups route group.\",\n \"id\": \"usergroups\",\n \"label\": \"usergroups\",\n \"operation_ids\": [\n \"api_create_usergroup_api_v1_usergroups_post\",\n \"api_get_usergroup_api_v1_usergroups_usergroup_id_get\",\n \"api_update_usergroup_api_v1_usergroups_usergroup_id_put\",\n \"api_delete_usergroup_api_v1_usergroups_usergroup_id_delete\",\n \"api_get_users_linked_to_usergroup_api_v1_usergroups_usergroup_id_users_get\",\n \"api_get_usergroups_api_v1_usergroups_org_org_id_get\",\n \"api_get_resources_linked_to_usergroup_api_v1_usergroups_usergroup_id_resources_g\",\n \"api_get_usergroupsby_resource_api_v1_usergroups_resource_resource_uuid_get\",\n \"api_add_users_to_usergroup_api_v1_usergroups_usergroup_id_add_users_post\",\n \"api_delete_users_from_usergroup_api_v1_usergroups_usergroup_id_remove_users_dele\",\n \"api_add_resources_to_usergroup_api_v1_usergroups_usergroup_id_add_resources_post\",\n \"api_delete_resources_from_usergroup_api_v1_usergroups_usergroup_id_remove_resour\"\n ],\n \"skill_dir\": \"usergroups\",\n \"skill_name\": \"usergroups-routes\",\n \"skill_path\": \"skills/usergroups/SKILL.md\",\n \"subagent_name\": \"usergroups-api\"\n },\n {\n \"common_prefix\": \"/api/v1/auth\",\n \"description\": \"Handle 6 OpenAPI operation(s) under /api/v1/auth for the auth route group.\",\n \"id\": \"auth\",\n \"label\": \"auth\",\n \"operation_ids\": [\n \"refresh_api_v1_auth_refresh_get\",\n \"login_api_v1_auth_login_post\",\n \"third_party_login_api_v1_auth_oauth_post\",\n \"logout_api_v1_auth_logout_delete\",\n \"api_verify_email_api_v1_auth_verify_email_post\",\n \"api_resend_verification_email_api_v1_auth_resend_verification_post\"\n ],\n \"skill_dir\": \"auth\",\n \"skill_name\": \"auth-routes\",\n \"skill_path\": \"skills/auth/SKILL.md\",\n \"subagent_name\": \"auth-api\"\n },\n {\n \"common_prefix\": \"/api/v1/orgs\",\n \"description\": \"Handle 76 OpenAPI operation(s) under /api/v1/orgs for the orgs route group.\",\n \"id\": \"orgs\",\n \"label\": \"orgs\",\n \"operation_ids\": [\n \"api_create_org_api_v1_orgs_post\",\n \"api_create_org_withconfig_api_v1_orgs_withconfig_post\",\n \"api_get_org_by_uuid_api_v1_orgs_uuid_org_uuid_get\",\n \"api_export_org_users_api_v1_orgs_org_id_users_export_get\",\n \"api_get_org_users_api_v1_orgs_org_id_users_get\",\n \"api_join_an_org_api_v1_orgs_join_post\",\n \"api_update_user_role_api_v1_orgs_org_id_users_user_id_role_role_uuid_put\",\n \"api_remove_batch_users_from_org_api_v1_orgs_org_id_users_batch_remove_delete\",\n \"api_remove_user_from_org_api_v1_orgs_org_id_users_user_id_delete\",\n \"api_get_org_signup_mechanism_api_v1_orgs_org_id_signup_mechanism_put\",\n \"api_update_org_color_config_api_v1_orgs_org_id_config_color_put\",\n \"api_update_org_font_config_api_v1_orgs_org_id_config_font_put\",\n \"api_update_org_footer_text_config_api_v1_orgs_org_id_config_footer_text_put\",\n \"api_update_org_default_language_config_api_v1_orgs_org_id_config_default_languag\",\n \"api_update_org_watermark_config_api_v1_orgs_org_id_config_watermark_put\",\n \"api_update_org_auth_branding_config_api_v1_orgs_org_id_config_auth_branding_put\",\n \"api_upload_org_auth_background_api_v1_orgs_org_id_auth_background_put\",\n \"api_update_org_seo_config_api_v1_orgs_org_id_config_seo_put\",\n \"api_upload_org_og_image_api_v1_orgs_org_id_og_image_put\",\n \"api_create_invite_code_api_v1_orgs_org_id_invites_post\",\n \"api_get_invite_codes_api_v1_orgs_org_id_invites_get\",\n \"api_get_invite_code_api_v1_orgs_org_id_invites_code_invite_code_get\",\n \"api_delete_invite_code_api_v1_orgs_org_id_invites_org_invite_code_uuid_delete\",\n \"api_invite_batch_users_api_v1_orgs_org_id_invites_users_batch_post\",\n \"api_get_org_users_invites_api_v1_orgs_org_id_invites_users_get\",\n \"api_delete_org_users_invites_api_v1_orgs_org_id_invites_users_email_delete\",\n \"api_get_org_by_slug_api_v1_orgs_slug_org_slug_get\",\n \"api_update_org_logo_api_v1_orgs_org_id_logo_put\",\n \"api_update_org_favicon_api_v1_orgs_org_id_favicon_put\",\n \"api_update_org_thumbnail_api_v1_orgs_org_id_thumbnail_put\",\n \"api_update_org_preview_api_v1_orgs_org_id_preview_put\",\n \"api_user_orgs_api_v1_orgs_user_page_page_limit_limit_get\",\n \"api_user_orgs_admin_api_v1_orgs_user_admin_page_page_limit_limit_get\",\n \"api_update_org_api_v1_orgs_org_id_put\",\n \"api_delete_org_api_v1_orgs_org_id_delete\",\n \"api_update_org_landing_api_v1_orgs_org_id_landing_put\",\n \"api_upload_org_landing_content_api_v1_orgs_org_id_landing_content_post\",\n \"api_get_org_usage_api_v1_orgs_org_id_usage_get\",\n \"api_update_org_ai_config_api_v1_orgs_org_id_config_ai_put\",\n \"api_update_org_communities_config_api_v1_orgs_org_id_config_communities_put\",\n \"api_update_org_payments_config_api_v1_orgs_org_id_config_payments_put\",\n \"api_update_org_courses_config_api_v1_orgs_org_id_config_courses_put\",\n \"api_update_org_collections_config_api_v1_orgs_org_id_config_collections_put\",\n \"api_update_org_podcasts_config_api_v1_orgs_org_id_config_podcasts_put\",\n \"api_update_org_boards_config_api_v1_orgs_org_id_config_boards_put\",\n \"api_update_org_playgrounds_config_api_v1_orgs_org_id_config_playgrounds_put\",\n \"get_org_ai_credits_api_v1_orgs_org_id_ai_credits_get\",\n \"add_org_ai_credits_api_v1_orgs_org_id_ai_credits_add_post\",\n \"reset_org_ai_credits_api_v1_orgs_org_id_ai_credits_reset_post\",\n \"set_org_ai_credits_api_v1_orgs_org_id_ai_credits_set_post\",\n \"api_create_api_token_api_v1_orgs_org_id_api_tokens_post\",\n \"api_list_api_tokens_api_v1_orgs_org_id_api_tokens_get\",\n \"api_get_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_get\",\n \"api_update_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_put\",\n \"api_revoke_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_delete\",\n \"api_regenerate_api_token_api_v1_orgs_org_id_api_tokens_token_uuid_regenerate_pos\",\n \"api_list_webhook_events_api_v1_orgs_org_id_webhooks_events_get\",\n \"api_create_webhook_endpoint_api_v1_orgs_org_id_webhooks_post\",\n \"api_list_webhook_endpoints_api_v1_orgs_org_id_webhooks_get\",\n \"api_get_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_get\",\n \"api_update_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_put\",\n \"api_delete_webhook_endpoint_api_v1_orgs_org_id_webhooks_webhook_uuid_delete\",\n \"api_regenerate_webhook_secret_api_v1_orgs_org_id_webhooks_webhook_uuid_regenerat\",\n \"api_send_test_event_api_v1_orgs_org_id_webhooks_webhook_uuid_test_post\",\n \"api_get_webhook_deliveries_api_v1_orgs_org_id_webhooks_webhook_uuid_deliveries_g\",\n \"api_add_custom_domain_api_v1_orgs_org_id_domains_post\",\n \"api_list_custom_domains_api_v1_orgs_org_id_domains_get\",\n \"api_get_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_get\",\n \"api_delete_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_delete\",\n \"api_get_domain_verification_info_api_v1_orgs_org_id_domains_domain_uuid_verifica\",\n \"api_verify_custom_domain_api_v1_orgs_org_id_domains_domain_uuid_verify_post\",\n \"api_check_domain_ssl_status_api_v1_orgs_org_id_domains_domain_uuid_ssl_status_ge\",\n \"api_resolve_domain_api_v1_orgs_resolve_domain_domain_get\",\n \"api_check_domain_api_v1_orgs_domains_check_get\",\n \"api_get_org_packs_api_v1_orgs_org_id_packs_get\",\n \"api_get_org_pack_summary_api_v1_orgs_org_id_packs_summary_get\"\n ],\n \"skill_dir\": \"orgs\",\n \"skill_name\": \"orgs-routes\",\n \"skill_path\": \"skills/orgs/SKILL.md\",\n \"subagent_name\": \"orgs-api\"\n },\n {\n \"common_prefix\": \"/api/v1/roles\",\n \"description\": \"Handle 5 OpenAPI operation(s) under /api/v1/roles for the roles route group.\",\n \"id\": \"roles\",\n \"label\": \"roles\",\n \"operation_ids\": [\n \"api_create_role_api_v1_roles_org_org_id_post\",\n \"api_get_roles_by_organization_api_v1_roles_org_org_id_get\",\n \"api_get_role_api_v1_roles_role_id_get\",\n \"api_update_role_api_v1_roles_role_id_put\",\n \"api_delete_role_api_v1_roles_role_id_delete\"\n ],\n \"skill_dir\": \"roles\",\n \"skill_name\": \"roles-routes\",\n \"skill_path\": \"skills/roles/SKILL.md\",\n \"subagent_name\": \"roles-api\"\n },\n {\n \"common_prefix\": \"/api/v1/integrations/zapier\",\n \"description\": \"Handle 8 OpenAPI operation(s) under /api/v1/integrations/zapier for the integrations route group.\",\n \"id\": \"integrations\",\n \"label\": \"integrations\",\n \"operation_ids\": [\n \"zapier_me_api_v1_integrations_zapier_me_get\",\n \"zapier_list_events_api_v1_integrations_zapier_events_get\",\n \"zapier_list_courses_api_v1_integrations_zapier_courses_get\",\n \"zapier_list_users_api_v1_integrations_zapier_users_get\",\n \"zapier_list_usergroups_api_v1_integrations_zapier_usergroups_get\",\n \"zapier_list_subscriptions_api_v1_integrations_zapier_subscriptions_get\",\n \"zapier_create_subscription_api_v1_integrations_zapier_subscriptions_post\",\n \"zapier_delete_subscription_api_v1_integrations_zapier_subscriptions_subscription\"\n ],\n \"skill_dir\": \"integrations\",\n \"skill_name\": \"integrations-routes\",\n \"skill_path\": \"skills/integrations/SKILL.md\",\n \"subagent_name\": \"integrations-api\"\n },\n {\n \"common_prefix\": \"/api/v1/internal\",\n \"description\": \"Handle 5 OpenAPI operation(s) under /api/v1/internal for the internal route group.\",\n \"id\": \"internal\",\n \"label\": \"internal\",\n \"operation_ids\": [\n \"api_list_all_verified_domains_api_v1_internal_domains_verified_get\",\n \"api_activate_pack_api_v1_internal_packs_org_id_activate_post\",\n \"api_mark_pack_canceling_api_v1_internal_packs_org_id_mark_canceling_patch\",\n \"api_deactivate_pack_api_v1_internal_packs_org_id_deactivate_delete\",\n \"api_deactivate_all_packs_api_v1_internal_packs_org_id_deactivate_all_delete\"\n ],\n \"skill_dir\": \"internal\",\n \"skill_name\": \"internal-routes\",\n \"skill_path\": \"skills/internal/SKILL.md\",\n \"subagent_name\": \"internal-api\"\n },\n {\n \"common_prefix\": \"/api/v1/blocks\",\n \"description\": \"Handle 8 OpenAPI operation(s) under /api/v1/blocks for the blocks route group.\",\n \"id\": \"blocks\",\n \"label\": \"blocks\",\n \"operation_ids\": [\n \"api_create_image_file_block_api_v1_blocks_image_post\",\n \"api_get_image_file_block_api_v1_blocks_image_get\",\n \"api_create_video_file_block_api_v1_blocks_video_post\",\n \"api_get_video_file_block_api_v1_blocks_video_get\",\n \"api_create_pdf_file_block_api_v1_blocks_pdf_post\",\n \"api_get_pdf_file_block_api_v1_blocks_pdf_get\",\n \"api_create_audio_file_block_api_v1_blocks_audio_post\",\n \"api_get_audio_file_block_api_v1_blocks_audio_get\"\n ],\n \"skill_dir\": \"blocks\",\n \"skill_name\": \"blocks-routes\",\n \"skill_path\": \"skills/blocks/SKILL.md\",\n \"subagent_name\": \"blocks-api\"\n },\n {\n \"common_prefix\": \"/api/v1/admin/{org_slug}\",\n \"description\": \"Handle 37 OpenAPI operation(s) under /api/v1/admin/{org_slug} for the admin route group.\",\n \"id\": \"admin\",\n \"label\": \"admin\",\n \"operation_ids\": [\n \"api_admin_issue_token_api_v1_admin_org_slug_auth_token_post\",\n \"api_admin_check_course_access_api_v1_admin_org_slug_courses_course_uuid_access_u\",\n \"api_admin_bulk_unenroll_api_v1_admin_org_slug_enrollments_bulk_unenroll_post\",\n \"api_admin_enroll_user_api_v1_admin_org_slug_enrollments_user_id_course_uuid_post\",\n \"api_admin_unenroll_user_api_v1_admin_org_slug_enrollments_user_id_course_uuid_de\",\n \"api_admin_get_user_enrollments_api_v1_admin_org_slug_enrollments_user_id_get\",\n \"api_admin_get_user_progress_api_v1_admin_org_slug_progress_user_id_course_uuid_g\",\n \"api_admin_complete_activity_api_v1_admin_org_slug_progress_user_id_activities_ac\",\n \"api_admin_uncomplete_activity_api_v1_admin_org_slug_progress_user_id_activities_\",\n \"api_admin_complete_course_api_v1_admin_org_slug_progress_user_id_course_uuid_com\",\n \"api_admin_get_all_user_progress_api_v1_admin_org_slug_progress_user_id_get\",\n \"api_admin_get_user_trail_detail_api_v1_admin_org_slug_trails_user_id_get\",\n \"api_admin_get_user_course_trail_detail_api_v1_admin_org_slug_trails_user_id_cour\",\n \"api_admin_get_user_certificates_api_v1_admin_org_slug_certifications_user_id_get\",\n \"api_admin_provision_user_api_v1_admin_org_slug_users_post\",\n \"api_admin_remove_user_api_v1_admin_org_slug_users_user_id_delete\",\n \"api_admin_update_user_profile_api_v1_admin_org_slug_users_user_id_patch\",\n \"api_admin_get_user_by_email_api_v1_admin_org_slug_users_by_email_email_get\",\n \"api_admin_issue_magic_link_api_v1_admin_org_slug_auth_magic_link_post\",\n \"api_admin_magic_consume_api_v1_admin_org_slug_auth_magic_consume_get\",\n \"api_admin_bulk_enroll_api_v1_admin_org_slug_enrollments_bulk_post\",\n \"api_admin_list_course_enrollments_api_v1_admin_org_slug_courses_course_uuid_enro\",\n \"api_admin_reset_user_progress_api_v1_admin_org_slug_progress_user_id_course_uuid\",\n \"api_admin_award_certificate_api_v1_admin_org_slug_certifications_user_id_course_\",\n \"api_admin_revoke_certificate_api_v1_admin_org_slug_certifications_user_id_user_c\",\n \"api_admin_add_usergroup_member_api_v1_admin_org_slug_usergroups_usergroup_uuid_m\",\n \"api_admin_remove_usergroup_member_api_v1_admin_org_slug_usergroups_usergroup_uui\",\n \"api_admin_change_user_role_api_v1_admin_org_slug_users_user_id_role_patch\",\n \"api_admin_create_usergroup_api_v1_admin_org_slug_usergroups_post\",\n \"api_admin_delete_usergroup_api_v1_admin_org_slug_usergroups_usergroup_uuid_delet\",\n \"api_admin_list_usergroup_members_api_v1_admin_org_slug_usergroups_usergroup_uuid\",\n \"api_admin_get_user_groups_api_v1_admin_org_slug_users_user_id_groups_get\",\n \"api_admin_add_course_to_usergroup_api_v1_admin_org_slug_usergroups_usergroup_uui\",\n \"api_admin_remove_course_from_usergroup_api_v1_admin_org_slug_usergroups_usergrou\",\n \"api_admin_export_user_data_api_v1_admin_org_slug_users_user_id_export_get\",\n \"api_admin_anonymize_user_api_v1_admin_org_slug_users_user_id_anonymize_post\",\n \"api_admin_get_course_analytics_api_v1_admin_org_slug_courses_course_uuid_analyti\"\n ],\n \"skill_dir\": \"admin\",\n \"skill_name\": \"admin-routes\",\n \"skill_path\": \"skills/admin/SKILL.md\",\n \"subagent_name\": \"admin-api\"\n },\n {\n \"common_prefix\": \"/api/v1/courses\",\n \"description\": \"Handle 28 OpenAPI operation(s) under /api/v1/courses for the courses route group.\",\n \"id\": \"courses\",\n \"label\": \"courses\",\n \"operation_ids\": [\n \"api_export_courses_batch_api_v1_courses_export_batch_post\",\n \"api_analyze_import_package_api_v1_courses_import_analyze_post\",\n \"api_import_courses_api_v1_courses_import_post\",\n \"api_create_course_api_v1_courses_post\",\n \"api_create_course_thumbnail_api_v1_courses_course_uuid_thumbnail_put\",\n \"api_get_course_api_v1_courses_course_uuid_get\",\n \"api_update_course_api_v1_courses_course_uuid_put\",\n \"api_delete_course_api_v1_courses_course_uuid_delete\",\n \"api_get_course_by_id_api_v1_courses_id_course_id_get\",\n \"api_get_course_meta_api_v1_courses_course_uuid_meta_get\",\n \"api_get_course_by_orgslug_api_v1_courses_org_slug_org_slug_page_page_limit_limit\",\n \"api_get_courses_count_api_v1_courses_org_slug_org_slug_count_get\",\n \"api_search_courses_api_v1_courses_org_slug_org_slug_search_get\",\n \"api_clone_course_api_v1_courses_course_uuid_clone_post\",\n \"api_export_course_api_v1_courses_course_uuid_export_get\",\n \"api_apply_course_contributor_api_v1_courses_course_uuid_apply_contributor_post\",\n \"api_get_course_updates_api_v1_courses_course_uuid_updates_get\",\n \"api_create_course_update_api_v1_courses_course_uuid_updates_post\",\n \"api_update_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_put\",\n \"api_delete_course_update_api_v1_courses_course_uuid_update_courseupdate_uuid_del\",\n \"api_get_course_contributors_api_v1_courses_course_uuid_contributors_get\",\n \"api_update_course_contributor_api_v1_courses_course_uuid_contributors_contributo\",\n \"api_add_bulk_course_contributors_api_v1_courses_course_uuid_bulk_add_contributor\",\n \"api_remove_bulk_course_contributors_api_v1_courses_course_uuid_bulk_remove_contr\",\n \"api_get_course_user_rights_api_v1_courses_course_uuid_rights_get\",\n \"api_upload_migration_files_api_v1_courses_migrate_upload_post\",\n \"api_suggest_structure_api_v1_courses_migrate_suggest_post\",\n \"api_create_from_migration_api_v1_courses_migrate_create_post\"\n ],\n \"skill_dir\": \"courses\",\n \"skill_name\": \"courses-routes\",\n \"skill_path\": \"skills/courses/SKILL.md\",\n \"subagent_name\": \"courses-api\"\n },\n {\n \"common_prefix\": \"/api/v1/search/org_slug/{org_slug}\",\n \"description\": \"Handle 1 OpenAPI operation(s) under /api/v1/search/org_slug/{org_slug} for the search route group.\",\n \"id\": \"search\",\n \"label\": \"search\",\n \"operation_ids\": [\n \"api_search_across_org_api_v1_search_org_slug_org_slug_get\"\n ],\n \"skill_dir\": \"search\",\n \"skill_name\": \"search-routes\",\n \"skill_path\": \"skills/search/SKILL.md\",\n \"subagent_name\": \"search-api\"\n },\n {\n \"common_prefix\": \"/api/v1/assignments\",\n \"description\": \"Handle 30 OpenAPI operation(s) under /api/v1/assignments for the assignments route group.\",\n \"id\": \"assignments\",\n \"label\": \"assignments\",\n \"operation_ids\": [\n \"api_create_assignments_api_v1_assignments_post\",\n \"api_read_assignment_api_v1_assignments_assignment_uuid_get\",\n \"api_update_assignment_api_v1_assignments_assignment_uuid_put\",\n \"api_delete_assignment_api_v1_assignments_assignment_uuid_delete\",\n \"api_read_assignment_from_activity_api_v1_assignments_activity_activity_uuid_get\",\n \"api_delete_assignment_from_activity_api_v1_assignments_activity_activity_uuid_de\",\n \"api_create_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_post\",\n \"api_read_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_get\",\n \"api_read_assignment_task_api_v1_assignments_task_assignment_task_uuid_get\",\n \"api_update_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_assignment_\",\n \"api_delete_assignment_tasks_api_v1_assignments_assignment_uuid_tasks_assignment_\",\n \"api_put_assignment_task_ref_file_api_v1_assignments_assignment_uuid_tasks_assign\",\n \"api_put_assignment_task_sub_file_api_v1_assignments_assignment_uuid_tasks_assign\",\n \"api_handle_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_\",\n \"api_read_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_as\",\n \"api_read_user_assignment_task_submissions_api_v1_assignments_assignment_uuid_tas\",\n \"api_read_user_assignment_task_submissions_me_batch_api_v1_assignments_assignment\",\n \"api_read_user_assignment_task_submissions_me_api_v1_assignments_assignment_uuid_\",\n \"api_delete_assignment_task_submissions_api_v1_assignments_assignment_uuid_tasks_\",\n \"api_create_assignment_submissions_api_v1_assignments_assignment_uuid_submissions\",\n \"api_read_assignment_submissions_api_v1_assignments_assignment_uuid_submissions_g\",\n \"api_read_user_assignment_submission_me_api_v1_assignments_assignment_uuid_submis\",\n \"api_read_user_assignment_submissions_api_v1_assignments_assignment_uuid_submissi\",\n \"api_update_user_assignment_submissions_api_v1_assignments_assignment_uuid_submis\",\n \"api_delete_user_assignment_submissions_api_v1_assignments_assignment_uuid_submis\",\n \"api_get_submission_grade_api_v1_assignments_assignment_uuid_submissions_user_id_\",\n \"api_final_grade_submission_api_v1_assignments_assignment_uuid_submissions_user_i\",\n \"api_retry_assignment_submission_api_v1_assignments_assignment_uuid_submissions_m\",\n \"api_submission_mark_as_done_api_v1_assignments_assignment_uuid_submissions_user_\",\n \"api_get_assignments_api_v1_assignments_course_course_uuid_get\"\n ],\n \"skill_dir\": \"assignments\",\n \"skill_name\": \"assignments-routes\",\n \"skill_path\": \"skills/assignments/SKILL.md\",\n \"subagent_name\": \"assignments-api\"\n },\n {\n \"common_prefix\": \"/api/v1/chapters\",\n \"description\": \"Handle 10 OpenAPI operation(s) under /api/v1/chapters for the chapters route group.\",\n \"id\": \"chapters\",\n \"label\": \"chapters\",\n \"operation_ids\": [\n \"api_create_coursechapter_api_v1_chapters_post\",\n \"api_get_coursechapter_api_v1_chapters_chapter_id_get\",\n \"api_update_coursechapter_api_v1_chapters_chapter_id_put\",\n \"api_delete_coursechapter_api_v1_chapters_chapter_id_delete\",\n \"api_get_chapter_meta_api_v1_chapters_course_course_uuid_meta_get\",\n \"api_update_chapter_meta_api_v1_chapters_course_course_uuid_order_put\",\n \"api_get_chapter_by_api_v1_chapters_course_course_id_page_page_limit_limit_get\",\n \"api_list_chapter_usergroups_api_v1_chapters_chapter_uuid_usergroups_get\",\n \"api_add_chapter_usergroup_api_v1_chapters_chapter_uuid_usergroups_usergroup_uuid\",\n \"api_remove_chapter_usergroup_api_v1_chapters_chapter_uuid_usergroups_usergroup_u\"\n ],\n \"skill_dir\": \"chapters\",\n \"skill_name\": \"chapters-routes\",\n \"skill_path\": \"skills/chapters/SKILL.md\",\n \"subagent_name\": \"chapters-api\"\n },\n {\n \"common_prefix\": \"/api/v1/activities\",\n \"description\": \"Handle 20 OpenAPI operation(s) under /api/v1/activities for the activities route group.\",\n \"id\": \"activities\",\n \"label\": \"activities\",\n \"operation_ids\": [\n \"api_create_activity_api_v1_activities_post\",\n \"api_get_activity_versions_api_v1_activities_activity_uuid_versions_get\",\n \"api_get_activity_version_api_v1_activities_activity_uuid_versions_version_number\",\n \"api_get_activity_state_api_v1_activities_activity_uuid_state_get\",\n \"api_restore_activity_version_api_v1_activities_activity_uuid_versions_version_nu\",\n \"api_get_editor_bootstrap_api_v1_activities_activity_uuid_editor_bootstrap_get\",\n \"api_get_activity_api_v1_activities_activity_uuid_get\",\n \"api_update_activity_api_v1_activities_activity_uuid_put\",\n \"api_delete_activity_api_v1_activities_activity_uuid_delete\",\n \"api_get_activityby_id_api_v1_activities_id_activity_id_get\",\n \"api_get_chapter_activities_api_v1_activities_chapter_chapter_id_get\",\n \"api_create_video_activity_api_v1_activities_video_post\",\n \"api_create_external_video_activity_api_v1_activities_external_video_post\",\n \"api_create_documentpdf_activity_api_v1_activities_documentpdf_post\",\n \"api_update_video_activity_api_v1_activities_video_activity_uuid_put\",\n \"api_update_external_video_activity_api_v1_activities_external_video_activity_uui\",\n \"api_update_documentpdf_activity_api_v1_activities_documentpdf_activity_uuid_put\",\n \"api_list_activity_usergroups_api_v1_activities_activity_uuid_usergroups_get\",\n \"api_add_activity_usergroup_api_v1_activities_activity_uuid_usergroups_usergroup_\",\n \"api_remove_activity_usergroup_api_v1_activities_activity_uuid_usergroups_usergro\"\n ],\n \"skill_dir\": \"activities\",\n \"skill_name\": \"activities-routes\",\n \"skill_path\": \"skills/activities/SKILL.md\",\n \"subagent_name\": \"activities-api\"\n },\n {\n \"common_prefix\": \"/api/v1/collections\",\n \"description\": \"Handle 5 OpenAPI operation(s) under /api/v1/collections for the collections route group.\",\n \"id\": \"collections\",\n \"label\": \"collections\",\n \"operation_ids\": [\n \"api_create_collection_api_v1_collections_post\",\n \"api_get_collection_api_v1_collections_collection_uuid_get\",\n \"api_update_collection_api_v1_collections_collection_uuid_put\",\n \"api_delete_collection_api_v1_collections_collection_uuid_delete\",\n \"api_get_collections_by_api_v1_collections_org_org_id_page_page_limit_limit_get\"\n ],\n \"skill_dir\": \"collections\",\n \"skill_name\": \"collections-routes\",\n \"skill_path\": \"skills/collections/SKILL.md\",\n \"subagent_name\": \"collections-api\"\n },\n {\n \"common_prefix\": \"/api/v1/communities\",\n \"description\": \"Handle 12 OpenAPI operation(s) under /api/v1/communities for the communities route group.\",\n \"id\": \"communities\",\n \"label\": \"communities\",\n \"operation_ids\": [\n \"api_create_community_api_v1_communities_post\",\n \"api_get_community_api_v1_communities_community_uuid_get\",\n \"api_update_community_api_v1_communities_community_uuid_put\",\n \"api_delete_community_api_v1_communities_community_uuid_delete\",\n \"api_get_communities_by_org_api_v1_communities_org_org_id_page_page_limit_limit_g\",\n \"api_get_community_by_course_api_v1_communities_course_course_uuid_get\",\n \"api_link_community_to_course_api_v1_communities_community_uuid_link_course_cours\",\n \"api_unlink_community_from_course_api_v1_communities_community_uuid_unlink_course\",\n \"api_get_community_rights_api_v1_communities_community_uuid_rights_get\",\n \"api_update_community_thumbnail_api_v1_communities_community_uuid_thumbnail_put\",\n \"api_create_discussion_api_v1_communities_community_uuid_discussions_post\",\n \"api_get_discussions_by_community_api_v1_communities_community_uuid_discussions_g\"\n ],\n \"skill_dir\": \"communities\",\n \"skill_name\": \"communities-routes\",\n \"skill_path\": \"skills/communities/SKILL.md\",\n \"subagent_name\": \"communities-api\"\n },\n {\n \"common_prefix\": \"/api/v1/discussions\",\n \"description\": \"Handle 14 OpenAPI operation(s) under /api/v1/discussions for the discussions route group.\",\n \"id\": \"discussions\",\n \"label\": \"discussions\",\n \"operation_ids\": [\n \"api_get_discussion_labels_api_v1_discussions_labels_get\",\n \"api_get_discussion_api_v1_discussions_discussion_uuid_get\",\n \"api_update_discussion_api_v1_discussions_discussion_uuid_put\",\n \"api_delete_discussion_api_v1_discussions_discussion_uuid_delete\",\n \"api_pin_discussion_api_v1_discussions_discussion_uuid_pin_put\",\n \"api_lock_discussion_api_v1_discussions_discussion_uuid_lock_put\",\n \"api_upvote_discussion_api_v1_discussions_discussion_uuid_vote_post\",\n \"api_remove_upvote_api_v1_discussions_discussion_uuid_vote_delete\",\n \"api_get_user_votes_batch_api_v1_discussions_votes_batch_post\",\n \"api_create_comment_api_v1_discussions_discussion_uuid_comments_post\",\n \"api_get_comments_by_discussion_api_v1_discussions_discussion_uuid_comments_get\",\n \"api_get_comment_count_api_v1_discussions_discussion_uuid_comments_count_get\",\n \"api_get_reactions_api_v1_discussions_discussion_uuid_reactions_get\",\n \"api_toggle_reaction_api_v1_discussions_discussion_uuid_reactions_post\"\n ],\n \"skill_dir\": \"discussions\",\n \"skill_name\": \"discussions-routes\",\n \"skill_path\": \"skills/discussions/SKILL.md\",\n \"subagent_name\": \"discussions-api\"\n },\n {\n \"common_prefix\": \"/api/v1/comments/{comment_uuid}\",\n \"description\": \"Handle 4 OpenAPI operation(s) under /api/v1/comments/{comment_uuid} for the comments route group.\",\n \"id\": \"comments\",\n \"label\": \"comments\",\n \"operation_ids\": [\n \"api_update_comment_api_v1_comments_comment_uuid_put\",\n \"api_delete_comment_api_v1_comments_comment_uuid_delete\",\n \"api_upvote_comment_api_v1_comments_comment_uuid_vote_post\",\n \"api_remove_comment_upvote_api_v1_comments_comment_uuid_vote_delete\"\n ],\n \"skill_dir\": \"comments\",\n \"skill_name\": \"comments-routes\",\n \"skill_path\": \"skills/comments/SKILL.md\",\n \"subagent_name\": \"comments-api\"\n },\n {\n \"common_prefix\": \"/api/v1/podcasts\",\n \"description\": \"Handle 17 OpenAPI operation(s) under /api/v1/podcasts for the podcasts route group.\",\n \"id\": \"podcasts\",\n \"label\": \"podcasts\",\n \"operation_ids\": [\n \"api_create_podcast_api_v1_podcasts_post\",\n \"api_get_podcast_api_v1_podcasts_podcast_uuid_get\",\n \"api_update_podcast_api_v1_podcasts_podcast_uuid_put\",\n \"api_delete_podcast_api_v1_podcasts_podcast_uuid_delete\",\n \"api_get_podcast_meta_api_v1_podcasts_podcast_uuid_meta_get\",\n \"api_get_podcasts_orgslug_api_v1_podcasts_org_slug_org_slug_page_page_limit_limit\",\n \"api_get_podcasts_count_orgslug_api_v1_podcasts_org_slug_org_slug_count_get\",\n \"api_update_podcast_thumbnail_api_v1_podcasts_podcast_uuid_thumbnail_put\",\n \"api_get_podcast_rights_api_v1_podcasts_podcast_uuid_rights_get\",\n \"api_get_podcast_episodes_api_v1_podcasts_podcast_uuid_episodes_get\",\n \"api_create_episode_api_v1_podcasts_podcast_uuid_episodes_post\",\n \"api_reorder_episodes_api_v1_podcasts_podcast_uuid_episodes_reorder_put\",\n \"api_get_episode_api_v1_podcasts_episodes_episode_uuid_get\",\n \"api_update_episode_api_v1_podcasts_episodes_episode_uuid_put\",\n \"api_delete_episode_api_v1_podcasts_episodes_episode_uuid_delete\",\n \"api_upload_episode_audio_api_v1_podcasts_episodes_episode_uuid_audio_put\",\n \"api_upload_episode_thumbnail_api_v1_podcasts_episodes_episode_uuid_thumbnail_put\"\n ],\n \"skill_dir\": \"podcasts\",\n \"skill_name\": \"podcasts-routes\",\n \"skill_path\": \"skills/podcasts/SKILL.md\",\n \"subagent_name\": \"podcasts-api\"\n },\n {\n \"common_prefix\": \"/api/v1/certifications\",\n \"description\": \"Handle 8 OpenAPI operation(s) under /api/v1/certifications for the certifications route group.\",\n \"id\": \"certifications\",\n \"label\": \"certifications\",\n \"operation_ids\": [\n \"api_create_certification_api_v1_certifications_post\",\n \"api_get_certification_api_v1_certifications_certification_uuid_get\",\n \"api_update_certification_api_v1_certifications_certification_uuid_put\",\n \"api_delete_certification_api_v1_certifications_certification_uuid_delete\",\n \"api_get_certifications_by_course_api_v1_certifications_course_course_uuid_get\",\n \"api_get_user_certificates_for_course_api_v1_certifications_user_course_course_uu\",\n \"api_get_certificate_by_user_certification_uuid_api_v1_certifications_certificate\",\n \"api_get_all_user_certificates_api_v1_certifications_user_all_get\"\n ],\n \"skill_dir\": \"certifications\",\n \"skill_name\": \"certifications-routes\",\n \"skill_path\": \"skills/certifications/SKILL.md\",\n \"subagent_name\": \"certifications-api\"\n },\n {\n \"common_prefix\": \"/api/v1/boards\",\n \"description\": \"Handle 17 OpenAPI operation(s) under /api/v1/boards for the boards route group.\",\n \"id\": \"boards\",\n \"label\": \"boards\",\n \"operation_ids\": [\n \"api_create_board_api_v1_boards_post\",\n \"api_get_boards_by_org_api_v1_boards_org_org_id_get\",\n \"api_get_board_api_v1_boards_board_uuid_get\",\n \"api_update_board_api_v1_boards_board_uuid_put\",\n \"api_delete_board_api_v1_boards_board_uuid_delete\",\n \"api_duplicate_board_api_v1_boards_board_uuid_duplicate_post\",\n \"api_get_board_members_api_v1_boards_board_uuid_members_get\",\n \"api_add_board_member_api_v1_boards_board_uuid_members_post\",\n \"api_update_board_thumbnail_api_v1_boards_board_uuid_thumbnail_post\",\n \"api_add_board_members_batch_api_v1_boards_board_uuid_members_batch_post\",\n \"api_remove_board_member_api_v1_boards_board_uuid_members_user_id_delete\",\n \"api_check_board_membership_api_v1_boards_board_uuid_membership_get\",\n \"api_get_ydoc_state_api_v1_boards_board_uuid_ydoc_get\",\n \"api_store_ydoc_state_api_v1_boards_board_uuid_ydoc_put\",\n \"start_boards_playground_session_api_v1_boards_playground_start_post\",\n \"iterate_boards_playground_session_api_v1_boards_playground_iterate_post\",\n \"get_session_state_api_v1_boards_playground_session_session_uuid_get\"\n ],\n \"skill_dir\": \"boards\",\n \"skill_name\": \"boards-routes\",\n \"skill_path\": \"skills/boards/SKILL.md\",\n \"subagent_name\": \"boards-api\"\n },\n {\n \"common_prefix\": \"/api/v1/trail\",\n \"description\": \"Handle 7 OpenAPI operation(s) under /api/v1/trail for the trail route group.\",\n \"id\": \"trail\",\n \"label\": \"trail\",\n \"operation_ids\": [\n \"api_start_trail_api_v1_trail_start_post\",\n \"api_get_user_trail_api_v1_trail_get\",\n \"api_get_trail_by_org_id_api_v1_trail_org_org_id_trail_get\",\n \"api_add_course_to_trail_api_v1_trail_add_course_course_uuid_post\",\n \"api_remove_course_to_trail_api_v1_trail_remove_course_course_uuid_delete\",\n \"api_add_activity_to_trail_api_v1_trail_add_activity_activity_uuid_post\",\n \"api_remove_activity_from_trail_api_v1_trail_remove_activity_activity_uuid_delete\"\n ],\n \"skill_dir\": \"trail\",\n \"skill_name\": \"trail-routes\",\n \"skill_path\": \"skills/trail/SKILL.md\",\n \"subagent_name\": \"trail-api\"\n },\n {\n \"common_prefix\": \"/api/v1/ai\",\n \"description\": \"Handle 21 OpenAPI operation(s) under /api/v1/ai for the ai route group.\",\n \"id\": \"ai\",\n \"label\": \"ai\",\n \"operation_ids\": [\n \"api_ai_start_activity_chat_session_api_v1_ai_start_activity_chat_session_post\",\n \"api_ai_send_activity_chat_message_api_v1_ai_send_activity_chat_message_post\",\n \"api_ai_start_activity_chat_session_stream_api_v1_ai_stream_start_activity_chat_s\",\n \"api_ai_send_activity_chat_message_stream_api_v1_ai_stream_send_activity_chat_mes\",\n \"api_editor_ai_start_chat_session_stream_api_v1_ai_stream_editor_start_post\",\n \"api_editor_ai_send_message_stream_api_v1_ai_stream_editor_message_post\",\n \"start_magicblock_session_api_v1_ai_magicblocks_start_post\",\n \"iterate_magicblock_session_api_v1_ai_magicblocks_iterate_post\",\n \"get_session_state_api_v1_ai_magicblocks_session_session_uuid_get\",\n \"start_course_planning_session_api_v1_ai_courseplanning_start_post\",\n \"iterate_course_planning_session_api_v1_ai_courseplanning_iterate_post\",\n \"finalize_course_plan_api_v1_ai_courseplanning_finalize_post\",\n \"generate_activity_content_api_v1_ai_courseplanning_generate_activity_post\",\n \"save_activity_content_api_v1_ai_courseplanning_save_activity_content_post\",\n \"get_session_state_api_v1_ai_courseplanning_session_session_uuid_get\",\n \"api_rag_chat_api_v1_ai_rag_chat_post\",\n \"api_rag_index_api_v1_ai_rag_index_post\",\n \"api_rag_sessions_api_v1_ai_rag_sessions_get\",\n \"api_rag_session_messages_api_v1_ai_rag_sessions_aichat_uuid_messages_get\",\n \"api_rag_session_delete_api_v1_ai_rag_sessions_aichat_uuid_delete\",\n \"api_rag_session_update_api_v1_ai_rag_sessions_aichat_uuid_patch\"\n ],\n \"skill_dir\": \"ai\",\n \"skill_name\": \"ai-routes\",\n \"skill_path\": \"skills/ai/SKILL.md\",\n \"subagent_name\": \"ai-api\"\n },\n {\n \"common_prefix\": \"/api/v1/playgrounds\",\n \"description\": \"Handle 15 OpenAPI operation(s) under /api/v1/playgrounds for the playgrounds route group.\",\n \"id\": \"playgrounds\",\n \"label\": \"playgrounds\",\n \"operation_ids\": [\n \"api_create_playground_api_v1_playgrounds_post\",\n \"api_list_org_playgrounds_api_v1_playgrounds_org_org_id_get\",\n \"api_get_playground_api_v1_playgrounds_playground_uuid_get\",\n \"api_update_playground_api_v1_playgrounds_playground_uuid_put\",\n \"api_delete_playground_api_v1_playgrounds_playground_uuid_delete\",\n \"api_duplicate_playground_api_v1_playgrounds_playground_uuid_duplicate_post\",\n \"api_update_playground_thumbnail_api_v1_playgrounds_playground_uuid_thumbnail_pos\",\n \"api_add_usergroup_to_playground_api_v1_playgrounds_playground_uuid_usergroups_us\",\n \"api_remove_usergroup_from_playground_api_v1_playgrounds_playground_uuid_usergrou\",\n \"api_get_playground_usergroups_api_v1_playgrounds_playground_uuid_usergroups_get\",\n \"api_get_playground_reactions_api_v1_playgrounds_playground_uuid_reactions_get\",\n \"api_toggle_playground_reaction_api_v1_playgrounds_playground_uuid_reactions_post\",\n \"start_playground_session_api_v1_playgrounds_generate_start_post\",\n \"iterate_playground_session_api_v1_playgrounds_generate_iterate_post\",\n \"get_session_state_api_v1_playgrounds_generate_session_session_uuid_get\"\n ],\n \"skill_dir\": \"playgrounds\",\n \"skill_name\": \"playgrounds-routes\",\n \"skill_path\": \"skills/playgrounds/SKILL.md\",\n \"subagent_name\": \"playgrounds-api\"\n },\n {\n \"common_prefix\": \"/api/v1/analytics\",\n \"description\": \"Handle 9 OpenAPI operation(s) under /api/v1/analytics for the analytics route group.\",\n \"id\": \"analytics\",\n \"label\": \"analytics\",\n \"operation_ids\": [\n \"analytics_status_api_v1_analytics_status_get\",\n \"ingest_frontend_event_api_v1_analytics_events_post\",\n \"query_dashboard_detail_api_v1_analytics_dashboard_detail_query_name_get\",\n \"query_dashboard_api_v1_analytics_dashboard_query_name_get\",\n \"query_dashboard_db_api_v1_analytics_dashboard_db_query_name_get\",\n \"query_course_dashboard_detail_api_v1_analytics_dashboard_course_detail_query_nam\",\n \"query_course_dashboard_api_v1_analytics_dashboard_course_query_name_get\",\n \"export_analytics_api_v1_analytics_export_get\",\n \"get_plan_info_api_v1_analytics_plan_info_get\"\n ],\n \"skill_dir\": \"analytics\",\n \"skill_name\": \"analytics-routes\",\n \"skill_path\": \"skills/analytics/SKILL.md\",\n \"subagent_name\": \"analytics-api\"\n },\n {\n \"common_prefix\": \"/api/v1/code\",\n \"description\": \"Handle 5 OpenAPI operation(s) under /api/v1/code for the code route group.\",\n \"id\": \"code\",\n \"label\": \"code\",\n \"operation_ids\": [\n \"execute_code_api_v1_code_execute_post\",\n \"execute_batch_api_v1_code_execute_batch_post\",\n \"upload_sqlite_db_api_v1_code_upload_sqlite_post\",\n \"get_submission_history_api_v1_code_submissions_history_get\",\n \"save_submission_api_v1_code_submissions_save_post\"\n ],\n \"skill_dir\": \"code\",\n \"skill_name\": \"code-routes\",\n \"skill_path\": \"skills/code/SKILL.md\",\n \"subagent_name\": \"code-api\"\n },\n {\n \"common_prefix\": \"/api/v1/instance/info\",\n \"description\": \"Handle 1 OpenAPI operation(s) under /api/v1/instance/info for the instance route group.\",\n \"id\": \"instance\",\n \"label\": \"instance\",\n \"operation_ids\": [\n \"get_instance_info_api_v1_instance_info_get\"\n ],\n \"skill_dir\": \"instance\",\n \"skill_name\": \"instance-routes\",\n \"skill_path\": \"skills/instance/SKILL.md\",\n \"subagent_name\": \"instance-api\"\n },\n {\n \"common_prefix\": \"/api/v1/monitoring/feedback\",\n \"description\": \"Handle 1 OpenAPI operation(s) under /api/v1/monitoring/feedback for the monitoring route group.\",\n \"id\": \"monitoring\",\n \"label\": \"monitoring\",\n \"operation_ids\": [\n \"submit_feedback_api_v1_monitoring_feedback_post\"\n ],\n \"skill_dir\": \"monitoring\",\n \"skill_name\": \"monitoring-routes\",\n \"skill_path\": \"skills/monitoring/SKILL.md\",\n \"subagent_name\": \"monitoring-api\"\n },\n {\n \"common_prefix\": \"/api/v1/plans\",\n \"description\": \"Handle 1 OpenAPI operation(s) under /api/v1/plans for the plans route group.\",\n \"id\": \"plans\",\n \"label\": \"plans\",\n \"operation_ids\": [\n \"api_get_plan_limits_api_v1_plans_get\"\n ],\n \"skill_dir\": \"plans\",\n \"skill_name\": \"plans-routes\",\n \"skill_path\": \"skills/plans/SKILL.md\",\n \"subagent_name\": \"plans-api\"\n },\n {\n \"common_prefix\": \"/api/v1/health\",\n \"description\": \"Handle 1 OpenAPI operation(s) under /api/v1/health for the health route group.\",\n \"id\": \"health\",\n \"label\": \"health\",\n \"operation_ids\": [\n \"health_api_v1_health_get\"\n ],\n \"skill_dir\": \"health\",\n \"skill_name\": \"health-routes\",\n \"skill_path\": \"skills/health/SKILL.md\",\n \"subagent_name\": \"health-api\"\n },\n {\n \"common_prefix\": \"/api/v1/dev\",\n \"description\": \"Handle 4 OpenAPI operation(s) under /api/v1/dev for the dev route group.\",\n \"id\": \"dev\",\n \"label\": \"dev\",\n \"operation_ids\": [\n \"config_api_v1_dev_config_get\",\n \"migrate_api_v1_dev_migrate_orgconfig_v0_to_v1_post\",\n \"migratev1_1_api_v1_dev_migrate_orgconfig_v1_to_v1_1_post\",\n \"migratev1_2_api_v1_dev_migrate_orgconfig_v1_to_v1_2_post\"\n ],\n \"skill_dir\": \"dev\",\n \"skill_name\": \"dev-routes\",\n \"skill_path\": \"skills/dev/SKILL.md\",\n \"subagent_name\": \"dev-api\"\n },\n {\n \"common_prefix\": \"/api/v1/utils/link-preview\",\n \"description\": \"Handle 1 OpenAPI operation(s) under /api/v1/utils/link-preview for the utils route group.\",\n \"id\": \"utils\",\n \"label\": \"utils\",\n \"operation_ids\": [\n \"link_preview_api_v1_utils_link_preview_get\"\n ],\n \"skill_dir\": \"utils\",\n \"skill_name\": \"utils-routes\",\n \"skill_path\": \"skills/utils/SKILL.md\",\n \"subagent_name\": \"utils-api\"\n },\n {\n \"common_prefix\": \"/api/v1/stream\",\n \"description\": \"Handle 8 OpenAPI operation(s) under /api/v1/stream for the stream route group.\",\n \"id\": \"stream\",\n \"label\": \"stream\",\n \"operation_ids\": [\n \"stream_activity_video_api_v1_stream_video_org_uuid_course_uuid_activity_uuid_fil\",\n \"head_activity_video_api_v1_stream_video_org_uuid_course_uuid_activity_uuid_filen\",\n \"stream_block_audio_api_v1_stream_block_audio_org_uuid_course_uuid_activity_uuid_\",\n \"head_block_audio_api_v1_stream_block_audio_org_uuid_course_uuid_activity_uuid_bl\",\n \"stream_block_video_api_v1_stream_block_org_uuid_course_uuid_activity_uuid_block_\",\n \"head_block_video_api_v1_stream_block_org_uuid_course_uuid_activity_uuid_block_uu\",\n \"stream_podcast_audio_api_v1_stream_audio_org_uuid_podcast_uuid_episode_uuid_file\",\n \"head_podcast_audio_api_v1_stream_audio_org_uuid_podcast_uuid_episode_uuid_filena\"\n ],\n \"skill_dir\": \"stream\",\n \"skill_name\": \"stream-routes\",\n \"skill_path\": \"skills/stream/SKILL.md\",\n \"subagent_name\": \"stream-api\"\n },\n {\n \"common_prefix\": \"/\",\n \"description\": \"Handle 1 OpenAPI operation(s) for the LearnHouse route group.\",\n \"id\": \"learn_house\",\n \"label\": \"LearnHouse\",\n \"operation_ids\": [\n \"root_get\"\n ],\n \"skill_dir\": \"learn-house\",\n \"skill_name\": \"learn-house-routes\",\n \"skill_path\": \"skills/learn-house/SKILL.md\",\n \"subagent_name\": \"learn-house-api\"\n }\n]")
|
|
ROOT_SECURITY = json.loads("[]")
|
|
SECURITY_SCHEMES = json.loads("{}")
|
|
SECURITY_FIELDS = json.loads("{}")
|
|
PATH_PARAMETER_RE = re.compile(r"{([^}/]+)}")
|
|
SOURCE_ROOT = Path(globals().get("__file__", "agent.py")).resolve().parent
|
|
SOURCE_SKILLS_DIR = SOURCE_ROOT / "skills"
|
|
RUNTIME_SKILLS_DIR = ".deepagents/openapi-skills/"
|
|
MAX_OPENAI_TOOL_NAME_LENGTH = 64
|
|
|
|
|
|
def _openai_safe_tool_name(name: str, used: set[str]) -> str:
|
|
safe = re.sub(r"[^a-zA-Z0-9_-]+", "_", name).strip("_") or "operation"
|
|
if len(safe) > MAX_OPENAI_TOOL_NAME_LENGTH:
|
|
digest = hashlib.sha1(safe.encode("utf-8")).hexdigest()[:10]
|
|
prefix = safe[: MAX_OPENAI_TOOL_NAME_LENGTH - len(digest) - 1].rstrip("_-")
|
|
safe = f"{prefix or 'operation'}_{digest}"
|
|
candidate = safe
|
|
index = 2
|
|
while candidate in used:
|
|
suffix = f"_{index}"
|
|
candidate = safe[: MAX_OPENAI_TOOL_NAME_LENGTH - len(suffix)].rstrip("_-") + suffix
|
|
index += 1
|
|
used.add(candidate)
|
|
return candidate
|
|
|
|
|
|
def _normalize_operation_tool_names() -> None:
|
|
used: set[str] = set()
|
|
for operation_id, operation in OPERATIONS.items():
|
|
original = str(operation.get("skill_name") or operation_id)
|
|
operation["original_skill_name"] = original
|
|
operation["skill_name"] = _openai_safe_tool_name(original, used)
|
|
|
|
|
|
_normalize_operation_tool_names()
|
|
|
|
|
|
class OperationInput(BaseModel):
|
|
parameters: dict[str, Any] = Field(
|
|
default_factory=dict,
|
|
description="Path, query, header, and cookie parameters keyed by OpenAPI parameter name.",
|
|
)
|
|
body: Any | None = Field(default=None, description="JSON request body, when the operation accepts one.")
|
|
|
|
|
|
class Learnhouse(A2AAgent):
|
|
name = "learnhouse"
|
|
description = "LearnHouse is an open-source platform tailored for learning experiences."
|
|
version = "1.2.7"
|
|
consumer_setup = ConsumerSetup.from_fields(
|
|
ConsumerSetupField.config("OPENAPI_BASE_URL", label="API base URL", description="Override the default API server (https://learnhouse.a2acloud.io).", required=False, input_type="url"),
|
|
ConsumerSetupField.secret("LEARNHOUSE_API_KEY", label="LearnHouse API key", description="Bearer token or API key for LearnHouse requests.", required=True),
|
|
)
|
|
llm_provisioning = LLMProvisioning.PLATFORM
|
|
pricing = Pricing(
|
|
price_per_call_usd=0.0,
|
|
caller_pays_llm=True,
|
|
notes="Uses the caller's saved LLM credential through ctx.llm.",
|
|
)
|
|
resources = Resources(cpu="200m", memory="512Mi")
|
|
workspace_access = WorkspaceAccess.dynamic(
|
|
max_files=50,
|
|
allowed_modes=(WorkspaceMode.READ_ONLY, WorkspaceMode.READ_WRITE_OVERLAY),
|
|
require_reason=False,
|
|
)
|
|
egress = EgressPolicy(
|
|
allow_hosts=('learnhouse.a2acloud.io',),
|
|
deny_internet_by_default=True,
|
|
)
|
|
tools_used = ("openapi", "deepagents")
|
|
capabilities = {
|
|
"openapi_auto_agent": {
|
|
"operation_count": len(OPERATIONS),
|
|
"default_base_url": DEFAULT_BASE_URL,
|
|
"source_openapi_url": 'https://learnhouse.a2acloud.io/openapi.json',
|
|
"source_openapi_urls": ['https://learnhouse.a2acloud.io/openapi.json'],
|
|
"server_urls": ['https://learnhouse.a2acloud.io'],
|
|
"regenerable": True,
|
|
"security_schemes": list(SECURITY_SCHEMES),
|
|
}
|
|
}
|
|
|
|
@skill(
|
|
name="auto",
|
|
description="Use the OpenAPI service to complete a natural-language goal.",
|
|
tags=("openapi", "auto"),
|
|
timeout_seconds=900,
|
|
)
|
|
async def auto(self, ctx: RunContext, goal: str) -> dict[str, Any]:
|
|
creds = ctx.llm
|
|
if not creds.api_key:
|
|
return {
|
|
"error": "llm_credentials_missing",
|
|
"final": (
|
|
"LLM key required. Add an LLM credential in Settings > "
|
|
"LLM credentials before running this agent."
|
|
),
|
|
"messages": [],
|
|
}
|
|
backend = ctx.workspace_backend()
|
|
skills_root = _seed_runtime_skills(backend, ctx)
|
|
graph = create_a2a_deep_agent(
|
|
ctx,
|
|
creds=creds,
|
|
backend=backend,
|
|
tools=[],
|
|
subagents=self._operation_subagents(ctx, skills_root),
|
|
system_prompt=self._system_prompt(),
|
|
)
|
|
result = await graph.ainvoke({"messages": [{"role": "user", "content": goal}]})
|
|
messages = result.get("messages", []) if isinstance(result, dict) else []
|
|
final = _message_text(messages[-1]) if messages else result
|
|
return {
|
|
"final": final,
|
|
"messages": [_message_to_dict(message) for message in messages[-8:]],
|
|
}
|
|
|
|
|
|
|
|
def _operation_subagents(self, ctx: RunContext, skills_root: str) -> list[dict[str, Any]]:
|
|
subagents: list[dict[str, Any]] = []
|
|
for group in OPERATION_GROUPS:
|
|
skill_path = (
|
|
f"{skills_root}{group['skill_dir']}/"
|
|
if skills_root
|
|
else ""
|
|
)
|
|
subagent = {
|
|
"name": group["subagent_name"],
|
|
"description": group["description"],
|
|
"system_prompt": self._subagent_prompt(group),
|
|
"tools": self._operation_tools(ctx, set(group["operation_ids"])),
|
|
}
|
|
if skill_path:
|
|
subagent["skills"] = [skill_path]
|
|
subagents.append(subagent)
|
|
return subagents
|
|
|
|
def _operation_tools(
|
|
self,
|
|
ctx: RunContext,
|
|
operation_ids: set[str] | None = None,
|
|
) -> list[StructuredTool]:
|
|
tools: list[StructuredTool] = []
|
|
for operation_id, operation in OPERATIONS.items():
|
|
if operation_ids is not None and operation_id not in operation_ids:
|
|
continue
|
|
async def call(
|
|
parameters: dict[str, Any] | None = None,
|
|
body: Any | None = None,
|
|
*,
|
|
_operation_id: str = operation_id,
|
|
) -> dict[str, Any]:
|
|
return await self._request(
|
|
ctx,
|
|
_operation_id,
|
|
parameters=parameters or {},
|
|
body=body,
|
|
)
|
|
|
|
tools.append(
|
|
StructuredTool.from_function(
|
|
coroutine=call,
|
|
name=operation["skill_name"],
|
|
description=self._tool_description(operation),
|
|
args_schema=OperationInput,
|
|
)
|
|
)
|
|
return tools
|
|
|
|
def _system_prompt(self) -> str:
|
|
if OPERATION_GROUPS:
|
|
lines = [
|
|
"You coordinate route-specific OpenAPI subagents.",
|
|
"Delegate API work to the matching subagent with the task tool.",
|
|
"Do not invent API responses; ask subagents to call their tools for real results.",
|
|
"For smoke tests, health checks, status checks, or ping-style requests, prefer explicit health/status/ping route groups over a generic root '/' route group.",
|
|
"If a subagent reports missing consumer setup, tell the user which setup field is required.",
|
|
"If a subagent reports that the generated OpenAPI agent may be stale, ask whether the user wants to refresh it from the latest OpenAPI spec.",
|
|
"",
|
|
"Available route groups:",
|
|
]
|
|
for group in OPERATION_GROUPS:
|
|
lines.append(
|
|
f"- {group['subagent_name']}: {group['description']}"
|
|
)
|
|
return "\n".join(lines)
|
|
lines = [
|
|
"You operate an API through generated OpenAPI tools.",
|
|
"Call tools to get real results. Do not invent API responses.",
|
|
"For smoke tests, health checks, status checks, or ping-style requests, prefer explicit health/status/ping GET operations over generic root '/' operations.",
|
|
"Use a root '/' operation only when the user asks for the service root/homepage or no more specific read-only operation fits.",
|
|
"For write, update, or delete operations, explain the intended action before calling the tool.",
|
|
"If an operation reports missing consumer setup, tell the user which setup field is required.",
|
|
"If an operation returns 404, 405, 410, or a schema/validation error that suggests the live API no longer matches these tools, tell the user this generated agent may need to be refreshed from the latest OpenAPI spec and ask whether they want to refresh it.",
|
|
"",
|
|
"Available operations:",
|
|
]
|
|
for operation in OPERATIONS.values():
|
|
marker = "WRITE" if operation.get("destructive") else "READ"
|
|
lines.append(
|
|
f"- {operation['skill_name']}: {marker} {operation['method']} {operation['path']} — {operation['summary']}"
|
|
)
|
|
return "\n".join(lines)
|
|
|
|
def _subagent_prompt(self, group: dict[str, Any]) -> str:
|
|
lines = [
|
|
"You operate one route group from a generated OpenAPI API.",
|
|
"Use the available operation tools to make real API calls. Do not invent API responses.",
|
|
"Read the route group's SKILL.md when it applies; it lists every route you cover.",
|
|
"For smoke tests, health checks, status checks, or ping-style requests, prefer explicit health/status/ping GET operations over generic root '/' operations.",
|
|
"Use a root '/' operation only when the user asks for the service root/homepage or no more specific read-only operation fits.",
|
|
"For write, update, or delete operations, explain the intended action before calling the tool.",
|
|
"If an operation reports missing consumer setup, return the exact setup field name.",
|
|
"If an operation returns 404, 405, 410, or a schema/validation error that suggests the live API no longer matches these tools, say the generated agent may need to be refreshed from the latest OpenAPI spec.",
|
|
"",
|
|
f"Route group: {group['label']}",
|
|
f"Common prefix: {group.get('common_prefix') or '/'}",
|
|
"Available operation tools:",
|
|
]
|
|
for operation_id in group["operation_ids"]:
|
|
operation = OPERATIONS[operation_id]
|
|
marker = "WRITE" if operation.get("destructive") else "READ"
|
|
lines.append(
|
|
f"- {operation['skill_name']}: {marker} {operation['method']} {operation['path']} - {operation['summary']}"
|
|
)
|
|
return "\n".join(lines)
|
|
|
|
def _tool_description(self, operation: dict[str, Any]) -> str:
|
|
parts = [
|
|
f"{operation['method']} {operation['path']}",
|
|
str(operation.get("description") or operation.get("summary") or ""),
|
|
]
|
|
if operation.get("parameters"):
|
|
parts.append(
|
|
"Parameters: "
|
|
+ ", ".join(
|
|
f"{p['name']} in {p['in']}{' required' if p.get('required') else ''}"
|
|
for p in operation["parameters"]
|
|
)
|
|
)
|
|
if operation.get("request_body") is not None:
|
|
parts.append("Accepts a JSON request body.")
|
|
parts.append(f"Operation ID: {operation.get('operation_id') or operation.get('original_skill_name')}")
|
|
return "\n".join(part for part in parts if part)
|
|
|
|
async def _request(
|
|
self,
|
|
ctx: RunContext,
|
|
operation_id: str,
|
|
*,
|
|
parameters: dict[str, Any],
|
|
body: Any | None,
|
|
) -> dict[str, Any]:
|
|
operation = OPERATIONS[operation_id]
|
|
default_base_url = str(operation.get("base_url") or DEFAULT_BASE_URL).rstrip("/")
|
|
base_url_field = str(operation.get("base_url_field") or "OPENAPI_BASE_URL")
|
|
base_url = str(ctx.consumer_config(base_url_field, default_base_url) or default_base_url).rstrip("/")
|
|
url, query, headers = self._request_parts(ctx, operation, parameters)
|
|
request_kwargs: dict[str, Any] = {
|
|
"params": query,
|
|
"headers": headers,
|
|
}
|
|
if body is not None:
|
|
if isinstance(body, (bytes, bytearray)):
|
|
body = body.decode("utf-8", errors="replace")
|
|
if isinstance(body, str):
|
|
stripped = body.strip()
|
|
if stripped and stripped[0] in "{[":
|
|
try:
|
|
body = json.loads(stripped)
|
|
except ValueError:
|
|
pass
|
|
request_kwargs["json"] = body
|
|
async with httpx.AsyncClient(timeout=60.0, follow_redirects=True) as client:
|
|
response = await client.request(
|
|
operation["method"],
|
|
f"{base_url}{url}",
|
|
**request_kwargs,
|
|
)
|
|
content_type = response.headers.get("content-type", "")
|
|
try:
|
|
payload: Any = response.json() if "json" in content_type else response.text
|
|
except ValueError:
|
|
payload = response.text
|
|
if response.status_code >= 400:
|
|
out = {
|
|
"ok": False,
|
|
"status_code": response.status_code,
|
|
"operation_id": operation_id,
|
|
"tool_name": operation.get("skill_name"),
|
|
"error": payload,
|
|
}
|
|
if response.status_code in {404, 405, 410, 422}:
|
|
out["stale_openapi_hint"] = (
|
|
"This generated OpenAPI agent may be stale. Ask the user "
|
|
"whether they want to refresh it from the latest OpenAPI spec."
|
|
)
|
|
return out
|
|
return {
|
|
"ok": True,
|
|
"status_code": response.status_code,
|
|
"operation_id": operation_id,
|
|
"tool_name": operation.get("skill_name"),
|
|
"result": payload,
|
|
}
|
|
|
|
def _request_parts(
|
|
self,
|
|
ctx: RunContext,
|
|
operation: dict[str, Any],
|
|
parameters: dict[str, Any],
|
|
) -> tuple[str, dict[str, Any], dict[str, str]]:
|
|
path = operation["path"]
|
|
query: dict[str, Any] = {}
|
|
headers: dict[str, str] = {}
|
|
cookies: dict[str, Any] = {}
|
|
for param in operation.get("parameters") or []:
|
|
name = param["name"]
|
|
if name not in parameters:
|
|
if param.get("required"):
|
|
raise ValueError(f"missing required parameter {name!r}")
|
|
continue
|
|
value = parameters[name]
|
|
location = param["in"]
|
|
if location == "path":
|
|
path = path.replace("{" + name + "}", str(value))
|
|
elif location == "query":
|
|
query[name] = value
|
|
elif location == "header":
|
|
headers[name] = str(value)
|
|
elif location == "cookie":
|
|
cookies[name] = value
|
|
unresolved = PATH_PARAMETER_RE.findall(path)
|
|
if unresolved:
|
|
missing = ", ".join(sorted(set(unresolved)))
|
|
raise ValueError("missing required path parameter(s): " + missing)
|
|
if cookies:
|
|
headers["cookie"] = "; ".join(f"{key}={value}" for key, value in cookies.items())
|
|
auth_headers, auth_query = self._auth_for_operation(ctx, operation)
|
|
headers.update(auth_headers)
|
|
query.update(auth_query)
|
|
return path, query, headers
|
|
|
|
def _auth_for_operation(self, ctx: RunContext, operation: dict[str, Any]) -> tuple[dict[str, str], dict[str, Any]]:
|
|
requirements = operation.get("security")
|
|
if requirements is None:
|
|
requirements = ROOT_SECURITY
|
|
if requirements == []:
|
|
return {}, {}
|
|
missing: list[str] = []
|
|
for requirement in requirements or []:
|
|
if not isinstance(requirement, dict) or not requirement:
|
|
return {}, {}
|
|
headers: dict[str, str] = {}
|
|
query: dict[str, Any] = {}
|
|
ok = True
|
|
for scheme_name in requirement:
|
|
mapping = SECURITY_FIELDS.get(scheme_name) or {}
|
|
secret_name = mapping.get("field")
|
|
value = _consumer_secret_optional(ctx, secret_name) if secret_name else ""
|
|
if not value:
|
|
ok = False
|
|
if secret_name:
|
|
missing.append(secret_name)
|
|
continue
|
|
kind = mapping.get("kind")
|
|
if kind == "apiKey":
|
|
prefix = mapping.get("prefix") or ""
|
|
sent_value = f"{prefix}{value}"
|
|
if mapping.get("location") == "query":
|
|
query[mapping.get("name") or scheme_name] = sent_value
|
|
else:
|
|
headers[mapping.get("name") or scheme_name] = sent_value
|
|
elif kind in {"http", "oauth2"}:
|
|
scheme = mapping.get("scheme") or "Bearer"
|
|
if scheme.lower() == "basic":
|
|
token = base64.b64encode(value.encode("utf-8")).decode("ascii")
|
|
headers["authorization"] = f"Basic {token}"
|
|
else:
|
|
headers["authorization"] = f"{scheme} {value}"
|
|
else:
|
|
ok = False
|
|
if ok:
|
|
return headers, query
|
|
if missing:
|
|
raise ConsumerSetupMissing(
|
|
"operation requires consumer setup secret(s): "
|
|
+ ", ".join(sorted(set(missing)))
|
|
)
|
|
return {}, {}
|
|
|
|
|
|
def _learnhouse_auth_header(value: str) -> str:
|
|
token = value.strip()
|
|
if token.lower().startswith(("bearer ", "basic ", "token ")):
|
|
return token
|
|
return f"Bearer {token}"
|
|
|
|
|
|
def _consumer_secret_optional(ctx: RunContext, name: str | None) -> str:
|
|
if not name:
|
|
return ""
|
|
try:
|
|
return ctx.consumer_secret(name)
|
|
except ConsumerSetupMissing:
|
|
return ""
|
|
|
|
|
|
def _runtime_skills_root(ctx: RunContext) -> str:
|
|
workspace = getattr(ctx, "_workspace", None)
|
|
prefixes = tuple(getattr(workspace, "write_prefixes", ()) or ())
|
|
if not prefixes:
|
|
outputs_prefix = getattr(workspace, "outputs_prefix", None)
|
|
prefixes = (outputs_prefix or "outputs/",)
|
|
prefix = str(prefixes[0]).strip("/")
|
|
return f"/{prefix}/{RUNTIME_SKILLS_DIR}" if prefix else f"/{RUNTIME_SKILLS_DIR}"
|
|
|
|
|
|
def _seed_runtime_skills(backend: Any, ctx: RunContext) -> str:
|
|
if not SOURCE_SKILLS_DIR.exists():
|
|
return ""
|
|
runtime_root = _runtime_skills_root(ctx)
|
|
uploads: list[tuple[str, bytes]] = []
|
|
for path in SOURCE_SKILLS_DIR.rglob("*"):
|
|
if not path.is_file():
|
|
continue
|
|
rel = path.relative_to(SOURCE_SKILLS_DIR).as_posix()
|
|
uploads.append((runtime_root + rel, path.read_bytes()))
|
|
if not uploads:
|
|
return ""
|
|
backend.upload_files(uploads)
|
|
return runtime_root
|
|
|
|
|
|
def _message_text(message: Any) -> Any:
|
|
content = getattr(message, "content", message)
|
|
return content
|
|
|
|
|
|
def _message_to_dict(message: Any) -> dict[str, Any]:
|
|
if isinstance(message, BaseMessage):
|
|
return message.model_dump(mode="json")
|
|
if hasattr(message, "model_dump"):
|
|
return message.model_dump(mode="json")
|
|
if isinstance(message, dict):
|
|
return message
|
|
return {"content": str(message)}
|
|
|
|
|
|
agent = Learnhouse()
|