@apteva/integrations 0.2.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/apps/activecampaign.json +209 -0
- package/src/apps/activecollab.json +417 -0
- package/src/apps/airtable.json +235 -0
- package/src/apps/alpaca-trading.json +1554 -0
- package/src/apps/amadeus.json +225 -0
- package/src/apps/anthropic-api.json +96 -0
- package/src/apps/apify.json +203 -0
- package/src/apps/apollo.json +748 -0
- package/src/apps/apple-podcasts.json +116 -0
- package/src/apps/archive-api.json +104 -0
- package/src/apps/archive.json +151 -0
- package/src/apps/arduino-cloud.json +301 -0
- package/src/apps/arest.json +492 -0
- package/src/apps/asana.json +184 -0
- package/src/apps/ashby.json +176 -0
- package/src/apps/assemblyai.json +163 -0
- package/src/apps/attio.json +243 -0
- package/src/apps/aws-cloudfront.json +132 -0
- package/src/apps/aws-dynamodb.json +295 -0
- package/src/apps/aws-ec2.json +184 -0
- package/src/apps/aws-lambda.json +361 -0
- package/src/apps/aws-route53.json +110 -0
- package/src/apps/aws-s3.json +303 -0
- package/src/apps/aws-ses.json +556 -0
- package/src/apps/aws-sns.json +217 -0
- package/src/apps/aws-sqs.json +234 -0
- package/src/apps/axiom.json +123 -0
- package/src/apps/beehiiv.json +252 -0
- package/src/apps/binance-trading.json +555 -0
- package/src/apps/bitly.json +175 -0
- package/src/apps/bloobirds.json +246 -0
- package/src/apps/bluesky.json +201 -0
- package/src/apps/blynk.json +316 -0
- package/src/apps/booking-com.json +144 -0
- package/src/apps/box.json +289 -0
- package/src/apps/brevo.json +1423 -0
- package/src/apps/browse-ai.json +148 -0
- package/src/apps/bunny-cdn.json +330 -0
- package/src/apps/bunny-stream.json +387 -0
- package/src/apps/cal-com.json +240 -0
- package/src/apps/calendly.json +578 -0
- package/src/apps/calflow-calendar.json +706 -0
- package/src/apps/callrail.json +190 -0
- package/src/apps/canva.json +197 -0
- package/src/apps/cartesia.json +201 -0
- package/src/apps/castbase.json +753 -0
- package/src/apps/chargebee.json +226 -0
- package/src/apps/cleanster.json +359 -0
- package/src/apps/clicksend.json +278 -0
- package/src/apps/clickup.json +266 -0
- package/src/apps/clipkit.json +517 -0
- package/src/apps/close.json +359 -0
- package/src/apps/cloudflare.json +329 -0
- package/src/apps/cloudinary.json +164 -0
- package/src/apps/coda.json +288 -0
- package/src/apps/cohere.json +158 -0
- package/src/apps/coinbase.json +268 -0
- package/src/apps/composio.json +146 -0
- package/src/apps/confluence.json +270 -0
- package/src/apps/consensus.json +879 -0
- package/src/apps/contabo.json +733 -0
- package/src/apps/convertkit.json +211 -0
- package/src/apps/core-image.json +426 -0
- package/src/apps/core-video.json +1246 -0
- package/src/apps/craftcloud.json +298 -0
- package/src/apps/datadog.json +401 -0
- package/src/apps/dataforseo.json +1273 -0
- package/src/apps/deepseek.json +150 -0
- package/src/apps/dialpad.json +229 -0
- package/src/apps/discord.json +239 -0
- package/src/apps/dnsimple.json +405 -0
- package/src/apps/docusign.json +214 -0
- package/src/apps/docx.json +282 -0
- package/src/apps/dropbox.json +185 -0
- package/src/apps/duffel.json +231 -0
- package/src/apps/dux-soup.json +694 -0
- package/src/apps/dynadot.json +250 -0
- package/src/apps/elevenlabs.json +327 -0
- package/src/apps/eventbrite-events.json +598 -0
- package/src/apps/facebook-ads.json +1399 -0
- package/src/apps/facebook-api.json +282 -0
- package/src/apps/fal-ai.json +400 -0
- package/src/apps/fathom.json +86 -0
- package/src/apps/figma.json +162 -0
- package/src/apps/filestack.json +159 -0
- package/src/apps/firebase.json +271 -0
- package/src/apps/firecrawl.json +278 -0
- package/src/apps/folk.json +564 -0
- package/src/apps/forecast-app.json +377 -0
- package/src/apps/freshdesk.json +283 -0
- package/src/apps/gemini.json +528 -0
- package/src/apps/ghost.json +439 -0
- package/src/apps/gigs-marketplace.json +1442 -0
- package/src/apps/github.json +1479 -47
- package/src/apps/gitlab.json +448 -0
- package/src/apps/gmail.json +839 -28
- package/src/apps/gohighlevel.json +596 -0
- package/src/apps/google-ads.json +270 -0
- package/src/apps/google-calendar.json +996 -36
- package/src/apps/google-docs.json +278 -0
- package/src/apps/google-drive.json +360 -0
- package/src/apps/google-maps.json +473 -0
- package/src/apps/google-sheets.json +330 -0
- package/src/apps/gooten.json +411 -0
- package/src/apps/gravity-forms.json +385 -0
- package/src/apps/gusto.json +171 -0
- package/src/apps/hackernews.json +221 -0
- package/src/apps/harmonic.json +86 -0
- package/src/apps/helpscout.json +664 -0
- package/src/apps/hetzner.json +658 -0
- package/src/apps/heygen.json +184 -0
- package/src/apps/heyreach.json +388 -0
- package/src/apps/hospitable.json +340 -0
- package/src/apps/hostinger.json +374 -0
- package/src/apps/hubspot.json +682 -0
- package/src/apps/huggingface.json +97 -0
- package/src/apps/hunter.json +504 -0
- package/src/apps/ig-trading.json +849 -0
- package/src/apps/imaterialise.json +349 -0
- package/src/apps/instagram-api.json +538 -0
- package/src/apps/intercom.json +648 -0
- package/src/apps/jira.json +226 -0
- package/src/apps/klaviyo.json +199 -0
- package/src/apps/kling-ai.json +206 -0
- package/src/apps/kraken.json +870 -0
- package/src/apps/late.json +1056 -0
- package/src/apps/leadpages.json +243 -0
- package/src/apps/learning-platform.json +2244 -0
- package/src/apps/linear.json +184 -57
- package/src/apps/linkedin.json +179 -0
- package/src/apps/listen-notes.json +136 -0
- package/src/apps/lnk-bio.json +125 -0
- package/src/apps/loom.json +188 -0
- package/src/apps/luma.json +280 -0
- package/src/apps/mailchimp.json +238 -0
- package/src/apps/mailgun.json +310 -0
- package/src/apps/manychat.json +312 -0
- package/src/apps/marin-software.json +843 -0
- package/src/apps/media-downloader.json +157 -0
- package/src/apps/meetup-events.json +361 -0
- package/src/apps/meshy.json +248 -0
- package/src/apps/microsoft-teams.json +162 -0
- package/src/apps/monday.json +213 -0
- package/src/apps/mongodb-atlas.json +467 -0
- package/src/apps/namecheap.json +252 -0
- package/src/apps/nexar.json +289 -0
- package/src/apps/notion.json +530 -50
- package/src/apps/omnikit-analytics.json +374 -0
- package/src/apps/omnikit-api-gateway.json +660 -0
- package/src/apps/omnikit-billing.json +1781 -0
- package/src/apps/omnikit-cms.json +899 -0
- package/src/apps/omnikit-functions.json +329 -0
- package/src/apps/omnikit-intelligence.json +650 -0
- package/src/apps/omnikit-management.json +214 -0
- package/src/apps/omnikit-media.json +646 -0
- package/src/apps/omnikit-messaging.json +1826 -0
- package/src/apps/omnikit-redirects.json +209 -0
- package/src/apps/omnikit-webhooks.json +269 -0
- package/src/apps/omnikit-workflows.json +323 -0
- package/src/apps/openai-api.json +462 -0
- package/src/apps/openmeteo-weather.json +75 -0
- package/src/apps/optinmonster.json +244 -0
- package/src/apps/paidkit.json +1218 -0
- package/src/apps/paypal.json +254 -0
- package/src/apps/pdf.json +366 -0
- package/src/apps/pipedrive.json +255 -0
- package/src/apps/polymarket.json +653 -0
- package/src/apps/porkbun.json +417 -0
- package/src/apps/portfolio.json +501 -0
- package/src/apps/postmark.json +257 -0
- package/src/apps/printful.json +273 -0
- package/src/apps/printify.json +295 -0
- package/src/apps/producthunt.json +346 -0
- package/src/apps/pushover-notifications.json +113 -0
- package/src/apps/qonto.json +366 -0
- package/src/apps/quickbooks.json +234 -0
- package/src/apps/replicate.json +106 -0
- package/src/apps/rss.json +281 -0
- package/src/apps/salesflow.json +538 -0
- package/src/apps/salesforce-crm.json +216 -0
- package/src/apps/sap.json +256 -0
- package/src/apps/scaleway.json +911 -0
- package/src/apps/sculpteo.json +234 -0
- package/src/apps/sendgrid-email.json +233 -0
- package/src/apps/sendgrid.json +160 -35
- package/src/apps/shapeways.json +188 -0
- package/src/apps/shopify.json +1217 -0
- package/src/apps/skai.json +779 -0
- package/src/apps/slack.json +228 -38
- package/src/apps/slant3d.json +231 -0
- package/src/apps/slides.json +760 -0
- package/src/apps/smartly.json +504 -0
- package/src/apps/snov.json +467 -0
- package/src/apps/socialcast.json +553 -63
- package/src/apps/square.json +274 -0
- package/src/apps/storage-management.json +788 -0
- package/src/apps/storylane.json +180 -0
- package/src/apps/strapi.json +338 -0
- package/src/apps/stripe-payments.json +847 -0
- package/src/apps/stripe.json +472 -35
- package/src/apps/supabase.json +169 -0
- package/src/apps/supademo.json +115 -0
- package/src/apps/taskflow.json +714 -0
- package/src/apps/teamwork.json +457 -0
- package/src/apps/telegram.json +444 -0
- package/src/apps/thinger.json +458 -0
- package/src/apps/ticktick.json +169 -0
- package/src/apps/tiktok-api.json +406 -0
- package/src/apps/todoist.json +151 -0
- package/src/apps/together.json +123 -0
- package/src/apps/torrent.json +267 -0
- package/src/apps/trading.json +1012 -0
- package/src/apps/trading212.json +383 -0
- package/src/apps/trello.json +205 -0
- package/src/apps/tripo.json +157 -0
- package/src/apps/twilio.json +1008 -0
- package/src/apps/twitter-ads.json +875 -0
- package/src/apps/twitter-api.json +1151 -0
- package/src/apps/twitterapiio.json +548 -0
- package/src/apps/typeform.json +210 -0
- package/src/apps/vidforge.json +1020 -0
- package/src/apps/vonage.json +394 -0
- package/src/apps/vultr.json +225 -0
- package/src/apps/webflow.json +223 -0
- package/src/apps/wise.json +273 -0
- package/src/apps/wistia.json +283 -0
- package/src/apps/woocommerce.json +288 -0
- package/src/apps/wordpress.json +1675 -0
- package/src/apps/xero.json +257 -0
- package/src/apps/youtube-api.json +861 -0
- package/src/apps/zendesk.json +295 -0
- package/src/apps/zite.json +173 -0
- package/src/apps/zoho-crm.json +386 -0
- package/src/apps/zoo.json +193 -0
- package/src/apps/zoom.json +334 -0
|
@@ -0,0 +1,2244 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "learning-platform",
|
|
3
|
+
"name": "Learning Platform",
|
|
4
|
+
"description": "Complete learning and community platform - manage courses, enrollments, sections, lessons, certificates, communities, spaces, posts, and memberships",
|
|
5
|
+
"logo": "https://cdn.omnikit.co/cdn/project-10/public/10_1770556267491_eecb0n/603050903_10162713420734412_6016628635295692734_n.jpg",
|
|
6
|
+
"categories": [
|
|
7
|
+
"learning",
|
|
8
|
+
"courses",
|
|
9
|
+
"communities",
|
|
10
|
+
"education",
|
|
11
|
+
"enrollment",
|
|
12
|
+
"certificates",
|
|
13
|
+
"lms",
|
|
14
|
+
"membership",
|
|
15
|
+
"spaces",
|
|
16
|
+
"posts"
|
|
17
|
+
],
|
|
18
|
+
"base_url": "https://learning.schwartzindustries.com",
|
|
19
|
+
"auth": {
|
|
20
|
+
"types": [
|
|
21
|
+
"bearer"
|
|
22
|
+
],
|
|
23
|
+
"headers": {
|
|
24
|
+
"Authorization": "Bearer {{token}}"
|
|
25
|
+
},
|
|
26
|
+
"credential_fields": [
|
|
27
|
+
{
|
|
28
|
+
"name": "token",
|
|
29
|
+
"label": "API Key"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"tools": [
|
|
34
|
+
{
|
|
35
|
+
"name": "learning_list_courses",
|
|
36
|
+
"description": "List courses with filtering by category, instructor, status, and pagination",
|
|
37
|
+
"method": "GET",
|
|
38
|
+
"path": "/courses",
|
|
39
|
+
"input_schema": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"properties": {
|
|
42
|
+
"category_id": {
|
|
43
|
+
"type": "integer",
|
|
44
|
+
"description": "Filter by category ID"
|
|
45
|
+
},
|
|
46
|
+
"instructor_id": {
|
|
47
|
+
"type": "integer",
|
|
48
|
+
"description": "Filter by instructor ID"
|
|
49
|
+
},
|
|
50
|
+
"status": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"enum": [
|
|
53
|
+
"draft",
|
|
54
|
+
"published",
|
|
55
|
+
"archived"
|
|
56
|
+
],
|
|
57
|
+
"description": "Filter by course status"
|
|
58
|
+
},
|
|
59
|
+
"is_featured": {
|
|
60
|
+
"type": "boolean",
|
|
61
|
+
"description": "Filter featured courses only"
|
|
62
|
+
},
|
|
63
|
+
"search": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"description": "Search courses by name"
|
|
66
|
+
},
|
|
67
|
+
"sort": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"default": "created_at",
|
|
70
|
+
"description": "Sort field"
|
|
71
|
+
},
|
|
72
|
+
"order": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"default": "desc",
|
|
75
|
+
"enum": [
|
|
76
|
+
"asc",
|
|
77
|
+
"desc"
|
|
78
|
+
],
|
|
79
|
+
"description": "Sort order"
|
|
80
|
+
},
|
|
81
|
+
"page": {
|
|
82
|
+
"type": "integer",
|
|
83
|
+
"default": 1,
|
|
84
|
+
"description": "Page number"
|
|
85
|
+
},
|
|
86
|
+
"limit": {
|
|
87
|
+
"type": "integer",
|
|
88
|
+
"default": 20,
|
|
89
|
+
"description": "Results per page"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "learning_create_course",
|
|
96
|
+
"description": "Create a new course with title, description, pricing, and configuration",
|
|
97
|
+
"method": "POST",
|
|
98
|
+
"path": "/courses",
|
|
99
|
+
"input_schema": {
|
|
100
|
+
"type": "object",
|
|
101
|
+
"properties": {
|
|
102
|
+
"name": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"description": "Course name"
|
|
105
|
+
},
|
|
106
|
+
"slug": {
|
|
107
|
+
"type": "string",
|
|
108
|
+
"description": "URL-friendly identifier"
|
|
109
|
+
},
|
|
110
|
+
"description": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"description": "Course description"
|
|
113
|
+
},
|
|
114
|
+
"tagline": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"description": "Short tagline"
|
|
117
|
+
},
|
|
118
|
+
"thumbnail_url": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"description": "Thumbnail image URL"
|
|
121
|
+
},
|
|
122
|
+
"promo_video_url": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"description": "Promotional video URL"
|
|
125
|
+
},
|
|
126
|
+
"course_type": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"default": "self_paced",
|
|
129
|
+
"enum": [
|
|
130
|
+
"self_paced",
|
|
131
|
+
"live",
|
|
132
|
+
"cohort"
|
|
133
|
+
],
|
|
134
|
+
"description": "Course delivery type"
|
|
135
|
+
},
|
|
136
|
+
"difficulty_level": {
|
|
137
|
+
"type": "string",
|
|
138
|
+
"default": "beginner",
|
|
139
|
+
"enum": [
|
|
140
|
+
"beginner",
|
|
141
|
+
"intermediate",
|
|
142
|
+
"advanced"
|
|
143
|
+
],
|
|
144
|
+
"description": "Difficulty level"
|
|
145
|
+
},
|
|
146
|
+
"estimated_duration_minutes": {
|
|
147
|
+
"type": "integer",
|
|
148
|
+
"description": "Estimated course duration in minutes"
|
|
149
|
+
},
|
|
150
|
+
"is_free": {
|
|
151
|
+
"type": "boolean",
|
|
152
|
+
"default": false,
|
|
153
|
+
"description": "Whether the course is free"
|
|
154
|
+
},
|
|
155
|
+
"is_featured": {
|
|
156
|
+
"type": "boolean",
|
|
157
|
+
"default": false,
|
|
158
|
+
"description": "Whether to feature this course"
|
|
159
|
+
},
|
|
160
|
+
"requires_approval": {
|
|
161
|
+
"type": "boolean",
|
|
162
|
+
"default": false,
|
|
163
|
+
"description": "Require approval for enrollment"
|
|
164
|
+
},
|
|
165
|
+
"drip_enabled": {
|
|
166
|
+
"type": "boolean",
|
|
167
|
+
"default": false,
|
|
168
|
+
"description": "Enable drip content scheduling"
|
|
169
|
+
},
|
|
170
|
+
"category_id": {
|
|
171
|
+
"type": "integer",
|
|
172
|
+
"description": "Category ID"
|
|
173
|
+
},
|
|
174
|
+
"instructor_id": {
|
|
175
|
+
"type": "integer",
|
|
176
|
+
"description": "Instructor user ID"
|
|
177
|
+
},
|
|
178
|
+
"certificate_enabled": {
|
|
179
|
+
"type": "boolean",
|
|
180
|
+
"default": false,
|
|
181
|
+
"description": "Enable certificates on completion"
|
|
182
|
+
},
|
|
183
|
+
"certificate_template_id": {
|
|
184
|
+
"type": "integer",
|
|
185
|
+
"description": "Certificate template ID"
|
|
186
|
+
},
|
|
187
|
+
"passing_grade_percent": {
|
|
188
|
+
"type": "integer",
|
|
189
|
+
"default": 70,
|
|
190
|
+
"description": "Passing grade percentage"
|
|
191
|
+
},
|
|
192
|
+
"product_id": {
|
|
193
|
+
"type": "integer",
|
|
194
|
+
"description": "Associated product ID for pricing"
|
|
195
|
+
},
|
|
196
|
+
"keywords": {
|
|
197
|
+
"type": "array",
|
|
198
|
+
"items": {
|
|
199
|
+
"type": "string"
|
|
200
|
+
},
|
|
201
|
+
"description": "Course keywords/tags"
|
|
202
|
+
},
|
|
203
|
+
"status": {
|
|
204
|
+
"type": "string",
|
|
205
|
+
"default": "draft",
|
|
206
|
+
"enum": [
|
|
207
|
+
"draft",
|
|
208
|
+
"published",
|
|
209
|
+
"archived"
|
|
210
|
+
],
|
|
211
|
+
"description": "Initial status"
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
"required": [
|
|
215
|
+
"name"
|
|
216
|
+
]
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"name": "learning_get_course",
|
|
221
|
+
"description": "Get course details by ID, optionally including sections and instructor info",
|
|
222
|
+
"method": "GET",
|
|
223
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D",
|
|
224
|
+
"input_schema": {
|
|
225
|
+
"type": "object",
|
|
226
|
+
"properties": {
|
|
227
|
+
"course_id": {
|
|
228
|
+
"type": "integer",
|
|
229
|
+
"description": "Course ID"
|
|
230
|
+
},
|
|
231
|
+
"include_sections": {
|
|
232
|
+
"type": "boolean",
|
|
233
|
+
"default": true,
|
|
234
|
+
"description": "Include sections and lessons"
|
|
235
|
+
},
|
|
236
|
+
"include_instructor": {
|
|
237
|
+
"type": "boolean",
|
|
238
|
+
"default": true,
|
|
239
|
+
"description": "Include instructor info"
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
"required": [
|
|
243
|
+
"course_id"
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"name": "learning_get_course_by_slug",
|
|
249
|
+
"description": "Get course details by URL slug",
|
|
250
|
+
"method": "GET",
|
|
251
|
+
"path": "/courses/by-slug/%7B%7Bslug%7D%7D",
|
|
252
|
+
"input_schema": {
|
|
253
|
+
"type": "object",
|
|
254
|
+
"properties": {
|
|
255
|
+
"slug": {
|
|
256
|
+
"type": "string",
|
|
257
|
+
"description": "Course URL slug"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"required": [
|
|
261
|
+
"slug"
|
|
262
|
+
]
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"name": "learning_update_course",
|
|
267
|
+
"description": "Update course details like name, description, status, pricing, etc.",
|
|
268
|
+
"method": "PUT",
|
|
269
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D",
|
|
270
|
+
"input_schema": {
|
|
271
|
+
"type": "object",
|
|
272
|
+
"properties": {
|
|
273
|
+
"course_id": {
|
|
274
|
+
"type": "integer",
|
|
275
|
+
"description": "Course ID to update"
|
|
276
|
+
},
|
|
277
|
+
"name": {
|
|
278
|
+
"type": "string",
|
|
279
|
+
"description": "Updated course name"
|
|
280
|
+
},
|
|
281
|
+
"description": {
|
|
282
|
+
"type": "string",
|
|
283
|
+
"description": "Updated description"
|
|
284
|
+
},
|
|
285
|
+
"tagline": {
|
|
286
|
+
"type": "string",
|
|
287
|
+
"description": "Updated tagline"
|
|
288
|
+
},
|
|
289
|
+
"status": {
|
|
290
|
+
"type": "string",
|
|
291
|
+
"enum": [
|
|
292
|
+
"draft",
|
|
293
|
+
"published",
|
|
294
|
+
"archived"
|
|
295
|
+
],
|
|
296
|
+
"description": "Updated status"
|
|
297
|
+
},
|
|
298
|
+
"is_free": {
|
|
299
|
+
"type": "boolean",
|
|
300
|
+
"description": "Whether the course is free"
|
|
301
|
+
},
|
|
302
|
+
"is_featured": {
|
|
303
|
+
"type": "boolean",
|
|
304
|
+
"description": "Whether to feature this course"
|
|
305
|
+
},
|
|
306
|
+
"difficulty_level": {
|
|
307
|
+
"type": "string",
|
|
308
|
+
"enum": [
|
|
309
|
+
"beginner",
|
|
310
|
+
"intermediate",
|
|
311
|
+
"advanced"
|
|
312
|
+
],
|
|
313
|
+
"description": "Updated difficulty"
|
|
314
|
+
},
|
|
315
|
+
"thumbnail_url": {
|
|
316
|
+
"type": "string",
|
|
317
|
+
"description": "Updated thumbnail URL"
|
|
318
|
+
},
|
|
319
|
+
"certificate_enabled": {
|
|
320
|
+
"type": "boolean",
|
|
321
|
+
"description": "Enable/disable certificates"
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
"required": [
|
|
325
|
+
"course_id"
|
|
326
|
+
]
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"name": "learning_delete_course",
|
|
331
|
+
"description": "Soft-delete a course",
|
|
332
|
+
"method": "DELETE",
|
|
333
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D",
|
|
334
|
+
"input_schema": {
|
|
335
|
+
"type": "object",
|
|
336
|
+
"properties": {
|
|
337
|
+
"course_id": {
|
|
338
|
+
"type": "integer",
|
|
339
|
+
"description": "Course ID to delete"
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
"required": [
|
|
343
|
+
"course_id"
|
|
344
|
+
]
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"name": "learning_enroll_in_course",
|
|
349
|
+
"description": "Enroll current user in a course (shorthand for enrollment-create)",
|
|
350
|
+
"method": "POST",
|
|
351
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D/enroll",
|
|
352
|
+
"input_schema": {
|
|
353
|
+
"type": "object",
|
|
354
|
+
"properties": {
|
|
355
|
+
"course_id": {
|
|
356
|
+
"type": "integer",
|
|
357
|
+
"description": "Course ID to enroll in"
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
"required": [
|
|
361
|
+
"course_id"
|
|
362
|
+
]
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"name": "learning_purchase_course",
|
|
367
|
+
"description": "Initialize a course purchase with payment processing",
|
|
368
|
+
"method": "POST",
|
|
369
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D/purchase",
|
|
370
|
+
"input_schema": {
|
|
371
|
+
"type": "object",
|
|
372
|
+
"properties": {
|
|
373
|
+
"course_id": {
|
|
374
|
+
"type": "integer",
|
|
375
|
+
"description": "Course ID to purchase"
|
|
376
|
+
},
|
|
377
|
+
"user_id": {
|
|
378
|
+
"type": "integer",
|
|
379
|
+
"description": "User ID making the purchase"
|
|
380
|
+
},
|
|
381
|
+
"price_id": {
|
|
382
|
+
"type": "integer",
|
|
383
|
+
"description": "Price ID to use"
|
|
384
|
+
},
|
|
385
|
+
"discount_code": {
|
|
386
|
+
"type": "string",
|
|
387
|
+
"description": "Discount/coupon code"
|
|
388
|
+
},
|
|
389
|
+
"customer_email": {
|
|
390
|
+
"type": "string",
|
|
391
|
+
"description": "Customer email for receipt"
|
|
392
|
+
},
|
|
393
|
+
"return_url": {
|
|
394
|
+
"type": "string",
|
|
395
|
+
"description": "URL to redirect after payment"
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
"required": [
|
|
399
|
+
"course_id"
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"name": "learning_complete_purchase",
|
|
405
|
+
"description": "Complete a course purchase after payment confirmation",
|
|
406
|
+
"method": "POST",
|
|
407
|
+
"path": "/purchases/complete",
|
|
408
|
+
"input_schema": {
|
|
409
|
+
"type": "object",
|
|
410
|
+
"properties": {
|
|
411
|
+
"order_id": {
|
|
412
|
+
"type": "integer",
|
|
413
|
+
"description": "Order ID to complete"
|
|
414
|
+
},
|
|
415
|
+
"payment_intent_id": {
|
|
416
|
+
"type": "string",
|
|
417
|
+
"description": "Stripe payment intent ID"
|
|
418
|
+
},
|
|
419
|
+
"payment_status": {
|
|
420
|
+
"type": "string",
|
|
421
|
+
"default": "paid",
|
|
422
|
+
"description": "Payment status"
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
"required": [
|
|
426
|
+
"order_id"
|
|
427
|
+
]
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"name": "learning_get_my_progress",
|
|
432
|
+
"description": "Get current user's enrollment and progress for a specific course",
|
|
433
|
+
"method": "GET",
|
|
434
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D/my-progress",
|
|
435
|
+
"input_schema": {
|
|
436
|
+
"type": "object",
|
|
437
|
+
"properties": {
|
|
438
|
+
"course_id": {
|
|
439
|
+
"type": "integer",
|
|
440
|
+
"description": "Course ID"
|
|
441
|
+
}
|
|
442
|
+
},
|
|
443
|
+
"required": [
|
|
444
|
+
"course_id"
|
|
445
|
+
]
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"name": "learning_check_course_access",
|
|
450
|
+
"description": "Check if a user has access to a course",
|
|
451
|
+
"method": "GET",
|
|
452
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D/access",
|
|
453
|
+
"input_schema": {
|
|
454
|
+
"type": "object",
|
|
455
|
+
"properties": {
|
|
456
|
+
"course_id": {
|
|
457
|
+
"type": "integer",
|
|
458
|
+
"description": "Course ID"
|
|
459
|
+
},
|
|
460
|
+
"user_id": {
|
|
461
|
+
"type": "integer",
|
|
462
|
+
"description": "User ID to check access for"
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
"required": [
|
|
466
|
+
"course_id"
|
|
467
|
+
]
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"name": "learning_create_enrollment",
|
|
472
|
+
"description": "Enroll a specific user in a course (admin enrollment)",
|
|
473
|
+
"method": "POST",
|
|
474
|
+
"path": "/enrollments",
|
|
475
|
+
"input_schema": {
|
|
476
|
+
"type": "object",
|
|
477
|
+
"properties": {
|
|
478
|
+
"course_id": {
|
|
479
|
+
"type": "integer",
|
|
480
|
+
"description": "Course ID"
|
|
481
|
+
},
|
|
482
|
+
"user_id": {
|
|
483
|
+
"type": "integer",
|
|
484
|
+
"description": "User ID to enroll"
|
|
485
|
+
},
|
|
486
|
+
"source": {
|
|
487
|
+
"type": "string",
|
|
488
|
+
"default": "admin",
|
|
489
|
+
"enum": [
|
|
490
|
+
"purchase",
|
|
491
|
+
"admin",
|
|
492
|
+
"gift",
|
|
493
|
+
"scholarship",
|
|
494
|
+
"subscription"
|
|
495
|
+
],
|
|
496
|
+
"description": "Enrollment source"
|
|
497
|
+
},
|
|
498
|
+
"expires_at": {
|
|
499
|
+
"type": "string",
|
|
500
|
+
"description": "Enrollment expiration date (ISO 8601)"
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
"required": [
|
|
504
|
+
"course_id",
|
|
505
|
+
"user_id"
|
|
506
|
+
]
|
|
507
|
+
}
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"name": "learning_list_enrollments",
|
|
511
|
+
"description": "List enrollments with filtering by course, user, and status",
|
|
512
|
+
"method": "GET",
|
|
513
|
+
"path": "/enrollments",
|
|
514
|
+
"input_schema": {
|
|
515
|
+
"type": "object",
|
|
516
|
+
"properties": {
|
|
517
|
+
"course_id": {
|
|
518
|
+
"type": "integer",
|
|
519
|
+
"description": "Filter by course ID"
|
|
520
|
+
},
|
|
521
|
+
"user_id": {
|
|
522
|
+
"type": "integer",
|
|
523
|
+
"description": "Filter by user ID"
|
|
524
|
+
},
|
|
525
|
+
"status": {
|
|
526
|
+
"type": "string",
|
|
527
|
+
"description": "Filter by enrollment status"
|
|
528
|
+
},
|
|
529
|
+
"source": {
|
|
530
|
+
"type": "string",
|
|
531
|
+
"description": "Filter by enrollment source"
|
|
532
|
+
},
|
|
533
|
+
"page": {
|
|
534
|
+
"type": "integer",
|
|
535
|
+
"default": 1,
|
|
536
|
+
"description": "Page number"
|
|
537
|
+
},
|
|
538
|
+
"limit": {
|
|
539
|
+
"type": "integer",
|
|
540
|
+
"default": 20,
|
|
541
|
+
"description": "Results per page"
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
"name": "learning_get_enrollment",
|
|
548
|
+
"description": "Get enrollment details with progress information",
|
|
549
|
+
"method": "GET",
|
|
550
|
+
"path": "/enrollments/%7B%7Benrollment_id%7D%7D",
|
|
551
|
+
"input_schema": {
|
|
552
|
+
"type": "object",
|
|
553
|
+
"properties": {
|
|
554
|
+
"enrollment_id": {
|
|
555
|
+
"type": "integer",
|
|
556
|
+
"description": "Enrollment ID"
|
|
557
|
+
},
|
|
558
|
+
"include_progress": {
|
|
559
|
+
"type": "boolean",
|
|
560
|
+
"default": true,
|
|
561
|
+
"description": "Include lesson progress details"
|
|
562
|
+
}
|
|
563
|
+
},
|
|
564
|
+
"required": [
|
|
565
|
+
"enrollment_id"
|
|
566
|
+
]
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"name": "learning_update_progress",
|
|
571
|
+
"description": "Update progress for a specific lesson within an enrollment",
|
|
572
|
+
"method": "POST",
|
|
573
|
+
"path": "/enrollments/%7B%7Benrollment_id%7D%7D/progress",
|
|
574
|
+
"input_schema": {
|
|
575
|
+
"type": "object",
|
|
576
|
+
"properties": {
|
|
577
|
+
"enrollment_id": {
|
|
578
|
+
"type": "integer",
|
|
579
|
+
"description": "Enrollment ID"
|
|
580
|
+
},
|
|
581
|
+
"lesson_id": {
|
|
582
|
+
"type": "integer",
|
|
583
|
+
"description": "Lesson ID"
|
|
584
|
+
},
|
|
585
|
+
"status": {
|
|
586
|
+
"type": "string",
|
|
587
|
+
"description": "Lesson completion status"
|
|
588
|
+
},
|
|
589
|
+
"progress_percent": {
|
|
590
|
+
"type": "number",
|
|
591
|
+
"description": "Progress percentage (0-100)"
|
|
592
|
+
},
|
|
593
|
+
"time_spent_seconds": {
|
|
594
|
+
"type": "integer",
|
|
595
|
+
"description": "Time spent on lesson in seconds"
|
|
596
|
+
},
|
|
597
|
+
"video_position_seconds": {
|
|
598
|
+
"type": "number",
|
|
599
|
+
"description": "Current video position"
|
|
600
|
+
},
|
|
601
|
+
"quiz_score": {
|
|
602
|
+
"type": "number",
|
|
603
|
+
"description": "Quiz score if applicable"
|
|
604
|
+
},
|
|
605
|
+
"quiz_passed": {
|
|
606
|
+
"type": "boolean",
|
|
607
|
+
"description": "Whether quiz was passed"
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
"required": [
|
|
611
|
+
"enrollment_id",
|
|
612
|
+
"lesson_id"
|
|
613
|
+
]
|
|
614
|
+
}
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
"name": "learning_complete_enrollment",
|
|
618
|
+
"description": "Mark an enrollment as completed and optionally issue a certificate",
|
|
619
|
+
"method": "POST",
|
|
620
|
+
"path": "/enrollments/%7B%7Benrollment_id%7D%7D/complete",
|
|
621
|
+
"input_schema": {
|
|
622
|
+
"type": "object",
|
|
623
|
+
"properties": {
|
|
624
|
+
"enrollment_id": {
|
|
625
|
+
"type": "integer",
|
|
626
|
+
"description": "Enrollment ID"
|
|
627
|
+
},
|
|
628
|
+
"issue_certificate": {
|
|
629
|
+
"type": "boolean",
|
|
630
|
+
"default": true,
|
|
631
|
+
"description": "Whether to issue a completion certificate"
|
|
632
|
+
},
|
|
633
|
+
"final_grade": {
|
|
634
|
+
"type": "number",
|
|
635
|
+
"description": "Final grade percentage"
|
|
636
|
+
},
|
|
637
|
+
"grade_label": {
|
|
638
|
+
"type": "string",
|
|
639
|
+
"description": "Grade label (e.g. 'A', 'Pass')"
|
|
640
|
+
}
|
|
641
|
+
},
|
|
642
|
+
"required": [
|
|
643
|
+
"enrollment_id"
|
|
644
|
+
]
|
|
645
|
+
}
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"name": "learning_revoke_enrollment",
|
|
649
|
+
"description": "Revoke a user's enrollment/access to a course",
|
|
650
|
+
"method": "POST",
|
|
651
|
+
"path": "/enrollments/%7B%7Benrollment_id%7D%7D/revoke",
|
|
652
|
+
"input_schema": {
|
|
653
|
+
"type": "object",
|
|
654
|
+
"properties": {
|
|
655
|
+
"enrollment_id": {
|
|
656
|
+
"type": "integer",
|
|
657
|
+
"description": "Enrollment ID to revoke"
|
|
658
|
+
},
|
|
659
|
+
"reason": {
|
|
660
|
+
"type": "string",
|
|
661
|
+
"default": "admin",
|
|
662
|
+
"description": "Reason for revocation"
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
"required": [
|
|
666
|
+
"enrollment_id"
|
|
667
|
+
]
|
|
668
|
+
}
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
"name": "learning_list_sections",
|
|
672
|
+
"description": "List all sections for a course",
|
|
673
|
+
"method": "GET",
|
|
674
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D/sections",
|
|
675
|
+
"input_schema": {
|
|
676
|
+
"type": "object",
|
|
677
|
+
"properties": {
|
|
678
|
+
"course_id": {
|
|
679
|
+
"type": "integer",
|
|
680
|
+
"description": "Course ID"
|
|
681
|
+
}
|
|
682
|
+
},
|
|
683
|
+
"required": [
|
|
684
|
+
"course_id"
|
|
685
|
+
]
|
|
686
|
+
}
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"name": "learning_create_section",
|
|
690
|
+
"description": "Create a new section within a course",
|
|
691
|
+
"method": "POST",
|
|
692
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D/sections",
|
|
693
|
+
"input_schema": {
|
|
694
|
+
"type": "object",
|
|
695
|
+
"properties": {
|
|
696
|
+
"course_id": {
|
|
697
|
+
"type": "integer",
|
|
698
|
+
"description": "Course ID"
|
|
699
|
+
},
|
|
700
|
+
"title": {
|
|
701
|
+
"type": "string",
|
|
702
|
+
"description": "Section title"
|
|
703
|
+
},
|
|
704
|
+
"slug": {
|
|
705
|
+
"type": "string",
|
|
706
|
+
"description": "URL-friendly identifier"
|
|
707
|
+
},
|
|
708
|
+
"description": {
|
|
709
|
+
"type": "string",
|
|
710
|
+
"description": "Section description"
|
|
711
|
+
},
|
|
712
|
+
"position": {
|
|
713
|
+
"type": "integer",
|
|
714
|
+
"description": "Display order position"
|
|
715
|
+
},
|
|
716
|
+
"is_published": {
|
|
717
|
+
"type": "boolean",
|
|
718
|
+
"default": true,
|
|
719
|
+
"description": "Whether section is published"
|
|
720
|
+
},
|
|
721
|
+
"drip_delay_days": {
|
|
722
|
+
"type": "integer",
|
|
723
|
+
"description": "Days to delay content (drip scheduling)"
|
|
724
|
+
},
|
|
725
|
+
"drip_date": {
|
|
726
|
+
"type": "string",
|
|
727
|
+
"description": "Specific date for drip release (ISO 8601)"
|
|
728
|
+
}
|
|
729
|
+
},
|
|
730
|
+
"required": [
|
|
731
|
+
"course_id",
|
|
732
|
+
"title"
|
|
733
|
+
]
|
|
734
|
+
}
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
"name": "learning_update_section",
|
|
738
|
+
"description": "Update a course section",
|
|
739
|
+
"method": "PUT",
|
|
740
|
+
"path": "/sections/%7B%7Bsection_id%7D%7D",
|
|
741
|
+
"input_schema": {
|
|
742
|
+
"type": "object",
|
|
743
|
+
"properties": {
|
|
744
|
+
"section_id": {
|
|
745
|
+
"type": "integer",
|
|
746
|
+
"description": "Section ID to update"
|
|
747
|
+
},
|
|
748
|
+
"title": {
|
|
749
|
+
"type": "string",
|
|
750
|
+
"description": "Updated title"
|
|
751
|
+
},
|
|
752
|
+
"description": {
|
|
753
|
+
"type": "string",
|
|
754
|
+
"description": "Updated description"
|
|
755
|
+
},
|
|
756
|
+
"position": {
|
|
757
|
+
"type": "integer",
|
|
758
|
+
"description": "Updated position"
|
|
759
|
+
},
|
|
760
|
+
"is_published": {
|
|
761
|
+
"type": "boolean",
|
|
762
|
+
"description": "Updated publish status"
|
|
763
|
+
}
|
|
764
|
+
},
|
|
765
|
+
"required": [
|
|
766
|
+
"section_id"
|
|
767
|
+
]
|
|
768
|
+
}
|
|
769
|
+
},
|
|
770
|
+
{
|
|
771
|
+
"name": "learning_delete_section",
|
|
772
|
+
"description": "Delete a course section and its lessons",
|
|
773
|
+
"method": "DELETE",
|
|
774
|
+
"path": "/sections/%7B%7Bsection_id%7D%7D",
|
|
775
|
+
"input_schema": {
|
|
776
|
+
"type": "object",
|
|
777
|
+
"properties": {
|
|
778
|
+
"section_id": {
|
|
779
|
+
"type": "integer",
|
|
780
|
+
"description": "Section ID to delete"
|
|
781
|
+
}
|
|
782
|
+
},
|
|
783
|
+
"required": [
|
|
784
|
+
"section_id"
|
|
785
|
+
]
|
|
786
|
+
}
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
"name": "learning_list_lessons",
|
|
790
|
+
"description": "List all lessons for a course",
|
|
791
|
+
"method": "GET",
|
|
792
|
+
"path": "/courses/%7B%7Bcourse_id%7D%7D/lessons",
|
|
793
|
+
"input_schema": {
|
|
794
|
+
"type": "object",
|
|
795
|
+
"properties": {
|
|
796
|
+
"course_id": {
|
|
797
|
+
"type": "integer",
|
|
798
|
+
"description": "Course ID"
|
|
799
|
+
}
|
|
800
|
+
},
|
|
801
|
+
"required": [
|
|
802
|
+
"course_id"
|
|
803
|
+
]
|
|
804
|
+
}
|
|
805
|
+
},
|
|
806
|
+
{
|
|
807
|
+
"name": "learning_list_lessons_by_section",
|
|
808
|
+
"description": "List lessons within a specific section",
|
|
809
|
+
"method": "GET",
|
|
810
|
+
"path": "/sections/%7B%7Bsection_id%7D%7D/lessons",
|
|
811
|
+
"input_schema": {
|
|
812
|
+
"type": "object",
|
|
813
|
+
"properties": {
|
|
814
|
+
"section_id": {
|
|
815
|
+
"type": "integer",
|
|
816
|
+
"description": "Section ID"
|
|
817
|
+
}
|
|
818
|
+
},
|
|
819
|
+
"required": [
|
|
820
|
+
"section_id"
|
|
821
|
+
]
|
|
822
|
+
}
|
|
823
|
+
},
|
|
824
|
+
{
|
|
825
|
+
"name": "learning_create_lesson",
|
|
826
|
+
"description": "Create a new lesson within a section",
|
|
827
|
+
"method": "POST",
|
|
828
|
+
"path": "/sections/%7B%7Bsection_id%7D%7D/lessons",
|
|
829
|
+
"input_schema": {
|
|
830
|
+
"type": "object",
|
|
831
|
+
"properties": {
|
|
832
|
+
"section_id": {
|
|
833
|
+
"type": "integer",
|
|
834
|
+
"description": "Section ID to add lesson to"
|
|
835
|
+
},
|
|
836
|
+
"title": {
|
|
837
|
+
"type": "string",
|
|
838
|
+
"description": "Lesson title"
|
|
839
|
+
},
|
|
840
|
+
"slug": {
|
|
841
|
+
"type": "string",
|
|
842
|
+
"description": "URL-friendly identifier"
|
|
843
|
+
},
|
|
844
|
+
"content": {
|
|
845
|
+
"type": "string",
|
|
846
|
+
"description": "Lesson content (HTML or markdown)"
|
|
847
|
+
},
|
|
848
|
+
"type": {
|
|
849
|
+
"type": "string",
|
|
850
|
+
"enum": [
|
|
851
|
+
"video",
|
|
852
|
+
"text",
|
|
853
|
+
"quiz",
|
|
854
|
+
"assignment",
|
|
855
|
+
"live"
|
|
856
|
+
],
|
|
857
|
+
"description": "Lesson type"
|
|
858
|
+
},
|
|
859
|
+
"duration_minutes": {
|
|
860
|
+
"type": "integer",
|
|
861
|
+
"description": "Estimated duration in minutes"
|
|
862
|
+
},
|
|
863
|
+
"position": {
|
|
864
|
+
"type": "integer",
|
|
865
|
+
"description": "Display order within section"
|
|
866
|
+
},
|
|
867
|
+
"is_published": {
|
|
868
|
+
"type": "boolean",
|
|
869
|
+
"default": true,
|
|
870
|
+
"description": "Whether lesson is published"
|
|
871
|
+
}
|
|
872
|
+
},
|
|
873
|
+
"required": [
|
|
874
|
+
"section_id",
|
|
875
|
+
"title"
|
|
876
|
+
]
|
|
877
|
+
}
|
|
878
|
+
},
|
|
879
|
+
{
|
|
880
|
+
"name": "learning_get_lesson",
|
|
881
|
+
"description": "Get lesson details with content and attachments",
|
|
882
|
+
"method": "GET",
|
|
883
|
+
"path": "/lessons/%7B%7Blesson_id%7D%7D",
|
|
884
|
+
"input_schema": {
|
|
885
|
+
"type": "object",
|
|
886
|
+
"properties": {
|
|
887
|
+
"lesson_id": {
|
|
888
|
+
"type": "integer",
|
|
889
|
+
"description": "Lesson ID"
|
|
890
|
+
},
|
|
891
|
+
"include_attachments": {
|
|
892
|
+
"type": "boolean",
|
|
893
|
+
"default": true,
|
|
894
|
+
"description": "Include lesson attachments"
|
|
895
|
+
}
|
|
896
|
+
},
|
|
897
|
+
"required": [
|
|
898
|
+
"lesson_id"
|
|
899
|
+
]
|
|
900
|
+
}
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"name": "learning_update_lesson",
|
|
904
|
+
"description": "Update lesson content, title, or settings",
|
|
905
|
+
"method": "PUT",
|
|
906
|
+
"path": "/lessons/%7B%7Blesson_id%7D%7D",
|
|
907
|
+
"input_schema": {
|
|
908
|
+
"type": "object",
|
|
909
|
+
"properties": {
|
|
910
|
+
"lesson_id": {
|
|
911
|
+
"type": "integer",
|
|
912
|
+
"description": "Lesson ID to update"
|
|
913
|
+
},
|
|
914
|
+
"title": {
|
|
915
|
+
"type": "string",
|
|
916
|
+
"description": "Updated title"
|
|
917
|
+
},
|
|
918
|
+
"content": {
|
|
919
|
+
"type": "string",
|
|
920
|
+
"description": "Updated content"
|
|
921
|
+
},
|
|
922
|
+
"type": {
|
|
923
|
+
"type": "string",
|
|
924
|
+
"description": "Updated lesson type"
|
|
925
|
+
},
|
|
926
|
+
"duration_minutes": {
|
|
927
|
+
"type": "integer",
|
|
928
|
+
"description": "Updated duration"
|
|
929
|
+
},
|
|
930
|
+
"position": {
|
|
931
|
+
"type": "integer",
|
|
932
|
+
"description": "Updated position"
|
|
933
|
+
},
|
|
934
|
+
"is_published": {
|
|
935
|
+
"type": "boolean",
|
|
936
|
+
"description": "Updated publish status"
|
|
937
|
+
}
|
|
938
|
+
},
|
|
939
|
+
"required": [
|
|
940
|
+
"lesson_id"
|
|
941
|
+
]
|
|
942
|
+
}
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
"name": "learning_delete_lesson",
|
|
946
|
+
"description": "Delete a lesson",
|
|
947
|
+
"method": "DELETE",
|
|
948
|
+
"path": "/lessons/%7B%7Blesson_id%7D%7D",
|
|
949
|
+
"input_schema": {
|
|
950
|
+
"type": "object",
|
|
951
|
+
"properties": {
|
|
952
|
+
"lesson_id": {
|
|
953
|
+
"type": "integer",
|
|
954
|
+
"description": "Lesson ID to delete"
|
|
955
|
+
}
|
|
956
|
+
},
|
|
957
|
+
"required": [
|
|
958
|
+
"lesson_id"
|
|
959
|
+
]
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
"name": "learning_create_lesson_comment",
|
|
964
|
+
"description": "Add a comment to a lesson",
|
|
965
|
+
"method": "POST",
|
|
966
|
+
"path": "/lessons/%7B%7Blesson_id%7D%7D/comments",
|
|
967
|
+
"input_schema": {
|
|
968
|
+
"type": "object",
|
|
969
|
+
"properties": {
|
|
970
|
+
"lesson_id": {
|
|
971
|
+
"type": "integer",
|
|
972
|
+
"description": "Lesson ID"
|
|
973
|
+
},
|
|
974
|
+
"user_id": {
|
|
975
|
+
"type": "integer",
|
|
976
|
+
"description": "Commenting user ID"
|
|
977
|
+
},
|
|
978
|
+
"body": {
|
|
979
|
+
"type": "string",
|
|
980
|
+
"description": "Comment text"
|
|
981
|
+
},
|
|
982
|
+
"parent_id": {
|
|
983
|
+
"type": "integer",
|
|
984
|
+
"description": "Parent comment ID for replies"
|
|
985
|
+
}
|
|
986
|
+
},
|
|
987
|
+
"required": [
|
|
988
|
+
"lesson_id",
|
|
989
|
+
"body"
|
|
990
|
+
]
|
|
991
|
+
}
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
"name": "learning_list_lesson_comments",
|
|
995
|
+
"description": "List comments on a lesson",
|
|
996
|
+
"method": "GET",
|
|
997
|
+
"path": "/lessons/%7B%7Blesson_id%7D%7D/comments",
|
|
998
|
+
"input_schema": {
|
|
999
|
+
"type": "object",
|
|
1000
|
+
"properties": {
|
|
1001
|
+
"lesson_id": {
|
|
1002
|
+
"type": "integer",
|
|
1003
|
+
"description": "Lesson ID"
|
|
1004
|
+
},
|
|
1005
|
+
"page": {
|
|
1006
|
+
"type": "integer",
|
|
1007
|
+
"default": 1,
|
|
1008
|
+
"description": "Page number"
|
|
1009
|
+
},
|
|
1010
|
+
"limit": {
|
|
1011
|
+
"type": "integer",
|
|
1012
|
+
"default": 20,
|
|
1013
|
+
"description": "Results per page"
|
|
1014
|
+
}
|
|
1015
|
+
},
|
|
1016
|
+
"required": [
|
|
1017
|
+
"lesson_id"
|
|
1018
|
+
]
|
|
1019
|
+
}
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
"name": "learning_list_certificates",
|
|
1023
|
+
"description": "List certificates with filtering by user, course, and revocation status",
|
|
1024
|
+
"method": "GET",
|
|
1025
|
+
"path": "/certificates",
|
|
1026
|
+
"input_schema": {
|
|
1027
|
+
"type": "object",
|
|
1028
|
+
"properties": {
|
|
1029
|
+
"user_id": {
|
|
1030
|
+
"type": "integer",
|
|
1031
|
+
"description": "Filter by user ID"
|
|
1032
|
+
},
|
|
1033
|
+
"course_id": {
|
|
1034
|
+
"type": "integer",
|
|
1035
|
+
"description": "Filter by course ID"
|
|
1036
|
+
},
|
|
1037
|
+
"is_revoked": {
|
|
1038
|
+
"type": "boolean",
|
|
1039
|
+
"description": "Filter by revocation status"
|
|
1040
|
+
},
|
|
1041
|
+
"page": {
|
|
1042
|
+
"type": "integer",
|
|
1043
|
+
"default": 1,
|
|
1044
|
+
"description": "Page number"
|
|
1045
|
+
},
|
|
1046
|
+
"limit": {
|
|
1047
|
+
"type": "integer",
|
|
1048
|
+
"default": 20,
|
|
1049
|
+
"description": "Results per page"
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
"name": "learning_get_certificate",
|
|
1056
|
+
"description": "Get certificate details by ID, UUID, or verification code",
|
|
1057
|
+
"method": "GET",
|
|
1058
|
+
"path": "/certificates/%7B%7Bcertificate_id%7D%7D",
|
|
1059
|
+
"input_schema": {
|
|
1060
|
+
"type": "object",
|
|
1061
|
+
"properties": {
|
|
1062
|
+
"certificate_id": {
|
|
1063
|
+
"type": "integer",
|
|
1064
|
+
"description": "Certificate ID"
|
|
1065
|
+
}
|
|
1066
|
+
},
|
|
1067
|
+
"required": [
|
|
1068
|
+
"certificate_id"
|
|
1069
|
+
]
|
|
1070
|
+
}
|
|
1071
|
+
},
|
|
1072
|
+
{
|
|
1073
|
+
"name": "learning_verify_certificate",
|
|
1074
|
+
"description": "Verify a certificate's authenticity by verification code (public endpoint)",
|
|
1075
|
+
"method": "GET",
|
|
1076
|
+
"path": "/certificates/verify",
|
|
1077
|
+
"input_schema": {
|
|
1078
|
+
"type": "object",
|
|
1079
|
+
"properties": {
|
|
1080
|
+
"code": {
|
|
1081
|
+
"type": "string",
|
|
1082
|
+
"description": "Certificate verification code"
|
|
1083
|
+
}
|
|
1084
|
+
},
|
|
1085
|
+
"required": [
|
|
1086
|
+
"code"
|
|
1087
|
+
]
|
|
1088
|
+
}
|
|
1089
|
+
},
|
|
1090
|
+
{
|
|
1091
|
+
"name": "learning_revoke_certificate",
|
|
1092
|
+
"description": "Revoke a certificate",
|
|
1093
|
+
"method": "POST",
|
|
1094
|
+
"path": "/certificates/%7B%7Bcertificate_id%7D%7D/revoke",
|
|
1095
|
+
"input_schema": {
|
|
1096
|
+
"type": "object",
|
|
1097
|
+
"properties": {
|
|
1098
|
+
"certificate_id": {
|
|
1099
|
+
"type": "integer",
|
|
1100
|
+
"description": "Certificate ID to revoke"
|
|
1101
|
+
},
|
|
1102
|
+
"reason": {
|
|
1103
|
+
"type": "string",
|
|
1104
|
+
"description": "Reason for revocation"
|
|
1105
|
+
}
|
|
1106
|
+
},
|
|
1107
|
+
"required": [
|
|
1108
|
+
"certificate_id"
|
|
1109
|
+
]
|
|
1110
|
+
}
|
|
1111
|
+
},
|
|
1112
|
+
{
|
|
1113
|
+
"name": "learning_create_certificate_template",
|
|
1114
|
+
"description": "Create a certificate template with custom HTML/CSS design",
|
|
1115
|
+
"method": "POST",
|
|
1116
|
+
"path": "/certificate-templates",
|
|
1117
|
+
"input_schema": {
|
|
1118
|
+
"type": "object",
|
|
1119
|
+
"properties": {
|
|
1120
|
+
"name": {
|
|
1121
|
+
"type": "string",
|
|
1122
|
+
"description": "Template name"
|
|
1123
|
+
},
|
|
1124
|
+
"description": {
|
|
1125
|
+
"type": "string",
|
|
1126
|
+
"description": "Template description"
|
|
1127
|
+
},
|
|
1128
|
+
"html_template": {
|
|
1129
|
+
"type": "string",
|
|
1130
|
+
"description": "HTML template with variable placeholders"
|
|
1131
|
+
},
|
|
1132
|
+
"css_styles": {
|
|
1133
|
+
"type": "string",
|
|
1134
|
+
"description": "CSS styles for the certificate"
|
|
1135
|
+
},
|
|
1136
|
+
"width_px": {
|
|
1137
|
+
"type": "integer",
|
|
1138
|
+
"default": 1056,
|
|
1139
|
+
"description": "Certificate width in pixels"
|
|
1140
|
+
},
|
|
1141
|
+
"height_px": {
|
|
1142
|
+
"type": "integer",
|
|
1143
|
+
"default": 816,
|
|
1144
|
+
"description": "Certificate height in pixels"
|
|
1145
|
+
},
|
|
1146
|
+
"orientation": {
|
|
1147
|
+
"type": "string",
|
|
1148
|
+
"default": "landscape",
|
|
1149
|
+
"enum": [
|
|
1150
|
+
"landscape",
|
|
1151
|
+
"portrait"
|
|
1152
|
+
],
|
|
1153
|
+
"description": "Certificate orientation"
|
|
1154
|
+
},
|
|
1155
|
+
"background_url": {
|
|
1156
|
+
"type": "string",
|
|
1157
|
+
"description": "Background image URL"
|
|
1158
|
+
},
|
|
1159
|
+
"background_color": {
|
|
1160
|
+
"type": "string",
|
|
1161
|
+
"description": "Background color"
|
|
1162
|
+
},
|
|
1163
|
+
"is_default": {
|
|
1164
|
+
"type": "boolean",
|
|
1165
|
+
"default": false,
|
|
1166
|
+
"description": "Set as default template"
|
|
1167
|
+
}
|
|
1168
|
+
},
|
|
1169
|
+
"required": [
|
|
1170
|
+
"name",
|
|
1171
|
+
"html_template"
|
|
1172
|
+
]
|
|
1173
|
+
}
|
|
1174
|
+
},
|
|
1175
|
+
{
|
|
1176
|
+
"name": "learning_list_certificate_templates",
|
|
1177
|
+
"description": "List available certificate templates",
|
|
1178
|
+
"method": "GET",
|
|
1179
|
+
"path": "/certificate-templates",
|
|
1180
|
+
"input_schema": {
|
|
1181
|
+
"type": "object",
|
|
1182
|
+
"properties": {
|
|
1183
|
+
"is_active": {
|
|
1184
|
+
"type": "boolean",
|
|
1185
|
+
"description": "Filter by active status"
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
},
|
|
1190
|
+
{
|
|
1191
|
+
"name": "learning_list_communities",
|
|
1192
|
+
"description": "List communities accessible to the user with filtering",
|
|
1193
|
+
"method": "GET",
|
|
1194
|
+
"path": "/communities",
|
|
1195
|
+
"input_schema": {
|
|
1196
|
+
"type": "object",
|
|
1197
|
+
"properties": {
|
|
1198
|
+
"visibility": {
|
|
1199
|
+
"type": "string",
|
|
1200
|
+
"enum": [
|
|
1201
|
+
"public",
|
|
1202
|
+
"private"
|
|
1203
|
+
],
|
|
1204
|
+
"description": "Filter by visibility"
|
|
1205
|
+
},
|
|
1206
|
+
"access_type": {
|
|
1207
|
+
"type": "string",
|
|
1208
|
+
"enum": [
|
|
1209
|
+
"free",
|
|
1210
|
+
"paid"
|
|
1211
|
+
],
|
|
1212
|
+
"description": "Filter by access type"
|
|
1213
|
+
},
|
|
1214
|
+
"is_featured": {
|
|
1215
|
+
"type": "boolean",
|
|
1216
|
+
"description": "Filter featured communities"
|
|
1217
|
+
},
|
|
1218
|
+
"search": {
|
|
1219
|
+
"type": "string",
|
|
1220
|
+
"description": "Search by name"
|
|
1221
|
+
},
|
|
1222
|
+
"limit": {
|
|
1223
|
+
"type": "integer",
|
|
1224
|
+
"default": 20,
|
|
1225
|
+
"description": "Results per page"
|
|
1226
|
+
},
|
|
1227
|
+
"offset": {
|
|
1228
|
+
"type": "integer",
|
|
1229
|
+
"default": 0,
|
|
1230
|
+
"description": "Pagination offset"
|
|
1231
|
+
},
|
|
1232
|
+
"orderBy": {
|
|
1233
|
+
"type": "string",
|
|
1234
|
+
"default": "created_at:desc",
|
|
1235
|
+
"description": "Sort field and order"
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
},
|
|
1240
|
+
{
|
|
1241
|
+
"name": "learning_discover_communities",
|
|
1242
|
+
"description": "List public communities for discovery, sorted by popularity",
|
|
1243
|
+
"method": "GET",
|
|
1244
|
+
"path": "/communities/discover",
|
|
1245
|
+
"input_schema": {
|
|
1246
|
+
"type": "object",
|
|
1247
|
+
"properties": {
|
|
1248
|
+
"category": {
|
|
1249
|
+
"type": "string",
|
|
1250
|
+
"description": "Filter by category"
|
|
1251
|
+
},
|
|
1252
|
+
"search": {
|
|
1253
|
+
"type": "string",
|
|
1254
|
+
"description": "Search communities"
|
|
1255
|
+
},
|
|
1256
|
+
"is_featured": {
|
|
1257
|
+
"type": "boolean",
|
|
1258
|
+
"description": "Featured only"
|
|
1259
|
+
},
|
|
1260
|
+
"access_type": {
|
|
1261
|
+
"type": "string",
|
|
1262
|
+
"description": "Filter by access type"
|
|
1263
|
+
},
|
|
1264
|
+
"limit": {
|
|
1265
|
+
"type": "integer",
|
|
1266
|
+
"default": 20,
|
|
1267
|
+
"description": "Results per page"
|
|
1268
|
+
},
|
|
1269
|
+
"offset": {
|
|
1270
|
+
"type": "integer",
|
|
1271
|
+
"default": 0,
|
|
1272
|
+
"description": "Pagination offset"
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
},
|
|
1277
|
+
{
|
|
1278
|
+
"name": "learning_create_community",
|
|
1279
|
+
"description": "Create a new community with customization options",
|
|
1280
|
+
"method": "POST",
|
|
1281
|
+
"path": "/communities",
|
|
1282
|
+
"input_schema": {
|
|
1283
|
+
"type": "object",
|
|
1284
|
+
"properties": {
|
|
1285
|
+
"name": {
|
|
1286
|
+
"type": "string",
|
|
1287
|
+
"description": "Community name"
|
|
1288
|
+
},
|
|
1289
|
+
"slug": {
|
|
1290
|
+
"type": "string",
|
|
1291
|
+
"description": "URL-friendly identifier"
|
|
1292
|
+
},
|
|
1293
|
+
"tagline": {
|
|
1294
|
+
"type": "string",
|
|
1295
|
+
"description": "Short tagline"
|
|
1296
|
+
},
|
|
1297
|
+
"description": {
|
|
1298
|
+
"type": "string",
|
|
1299
|
+
"description": "Community description"
|
|
1300
|
+
},
|
|
1301
|
+
"about_content": {
|
|
1302
|
+
"type": "string",
|
|
1303
|
+
"description": "Detailed about content (HTML)"
|
|
1304
|
+
},
|
|
1305
|
+
"logo_url": {
|
|
1306
|
+
"type": "string",
|
|
1307
|
+
"description": "Logo image URL"
|
|
1308
|
+
},
|
|
1309
|
+
"cover_url": {
|
|
1310
|
+
"type": "string",
|
|
1311
|
+
"description": "Cover image URL"
|
|
1312
|
+
},
|
|
1313
|
+
"color_primary": {
|
|
1314
|
+
"type": "string",
|
|
1315
|
+
"description": "Primary brand color (hex)"
|
|
1316
|
+
},
|
|
1317
|
+
"visibility": {
|
|
1318
|
+
"type": "string",
|
|
1319
|
+
"default": "public",
|
|
1320
|
+
"enum": [
|
|
1321
|
+
"public",
|
|
1322
|
+
"private"
|
|
1323
|
+
],
|
|
1324
|
+
"description": "Community visibility"
|
|
1325
|
+
},
|
|
1326
|
+
"access_type": {
|
|
1327
|
+
"type": "string",
|
|
1328
|
+
"default": "free",
|
|
1329
|
+
"enum": [
|
|
1330
|
+
"free",
|
|
1331
|
+
"paid"
|
|
1332
|
+
],
|
|
1333
|
+
"description": "Access type"
|
|
1334
|
+
},
|
|
1335
|
+
"price": {
|
|
1336
|
+
"type": "number",
|
|
1337
|
+
"description": "Membership price (for paid communities)"
|
|
1338
|
+
},
|
|
1339
|
+
"currency": {
|
|
1340
|
+
"type": "string",
|
|
1341
|
+
"default": "USD",
|
|
1342
|
+
"description": "Currency code"
|
|
1343
|
+
},
|
|
1344
|
+
"member_limit": {
|
|
1345
|
+
"type": "integer",
|
|
1346
|
+
"description": "Maximum member count"
|
|
1347
|
+
},
|
|
1348
|
+
"is_featured": {
|
|
1349
|
+
"type": "boolean",
|
|
1350
|
+
"default": false,
|
|
1351
|
+
"description": "Feature this community"
|
|
1352
|
+
}
|
|
1353
|
+
},
|
|
1354
|
+
"required": [
|
|
1355
|
+
"name"
|
|
1356
|
+
]
|
|
1357
|
+
}
|
|
1358
|
+
},
|
|
1359
|
+
{
|
|
1360
|
+
"name": "learning_get_community",
|
|
1361
|
+
"description": "Get community details by ID, optionally including spaces and courses",
|
|
1362
|
+
"method": "GET",
|
|
1363
|
+
"path": "/communities/%7B%7Bid%7D%7D",
|
|
1364
|
+
"input_schema": {
|
|
1365
|
+
"type": "object",
|
|
1366
|
+
"properties": {
|
|
1367
|
+
"id": {
|
|
1368
|
+
"type": "integer",
|
|
1369
|
+
"description": "Community ID"
|
|
1370
|
+
},
|
|
1371
|
+
"include_spaces": {
|
|
1372
|
+
"type": "boolean",
|
|
1373
|
+
"description": "Include community spaces"
|
|
1374
|
+
},
|
|
1375
|
+
"include_courses": {
|
|
1376
|
+
"type": "boolean",
|
|
1377
|
+
"description": "Include linked courses"
|
|
1378
|
+
}
|
|
1379
|
+
},
|
|
1380
|
+
"required": [
|
|
1381
|
+
"id"
|
|
1382
|
+
]
|
|
1383
|
+
}
|
|
1384
|
+
},
|
|
1385
|
+
{
|
|
1386
|
+
"name": "learning_get_community_public",
|
|
1387
|
+
"description": "Get public community landing page by slug",
|
|
1388
|
+
"method": "GET",
|
|
1389
|
+
"path": "/communities/c/%7B%7Bslug%7D%7D",
|
|
1390
|
+
"input_schema": {
|
|
1391
|
+
"type": "object",
|
|
1392
|
+
"properties": {
|
|
1393
|
+
"slug": {
|
|
1394
|
+
"type": "string",
|
|
1395
|
+
"description": "Community slug"
|
|
1396
|
+
}
|
|
1397
|
+
},
|
|
1398
|
+
"required": [
|
|
1399
|
+
"slug"
|
|
1400
|
+
]
|
|
1401
|
+
}
|
|
1402
|
+
},
|
|
1403
|
+
{
|
|
1404
|
+
"name": "learning_update_community",
|
|
1405
|
+
"description": "Update community settings, branding, and configuration",
|
|
1406
|
+
"method": "PUT",
|
|
1407
|
+
"path": "/communities/%7B%7Bid%7D%7D",
|
|
1408
|
+
"input_schema": {
|
|
1409
|
+
"type": "object",
|
|
1410
|
+
"properties": {
|
|
1411
|
+
"id": {
|
|
1412
|
+
"type": "integer",
|
|
1413
|
+
"description": "Community ID"
|
|
1414
|
+
},
|
|
1415
|
+
"name": {
|
|
1416
|
+
"type": "string",
|
|
1417
|
+
"description": "Updated name"
|
|
1418
|
+
},
|
|
1419
|
+
"tagline": {
|
|
1420
|
+
"type": "string",
|
|
1421
|
+
"description": "Updated tagline"
|
|
1422
|
+
},
|
|
1423
|
+
"description": {
|
|
1424
|
+
"type": "string",
|
|
1425
|
+
"description": "Updated description"
|
|
1426
|
+
},
|
|
1427
|
+
"visibility": {
|
|
1428
|
+
"type": "string",
|
|
1429
|
+
"enum": [
|
|
1430
|
+
"public",
|
|
1431
|
+
"private"
|
|
1432
|
+
],
|
|
1433
|
+
"description": "Updated visibility"
|
|
1434
|
+
},
|
|
1435
|
+
"access_type": {
|
|
1436
|
+
"type": "string",
|
|
1437
|
+
"enum": [
|
|
1438
|
+
"free",
|
|
1439
|
+
"paid"
|
|
1440
|
+
],
|
|
1441
|
+
"description": "Updated access type"
|
|
1442
|
+
},
|
|
1443
|
+
"is_active": {
|
|
1444
|
+
"type": "boolean",
|
|
1445
|
+
"description": "Active status"
|
|
1446
|
+
}
|
|
1447
|
+
},
|
|
1448
|
+
"required": [
|
|
1449
|
+
"id"
|
|
1450
|
+
]
|
|
1451
|
+
}
|
|
1452
|
+
},
|
|
1453
|
+
{
|
|
1454
|
+
"name": "learning_delete_community",
|
|
1455
|
+
"description": "Delete a community",
|
|
1456
|
+
"method": "DELETE",
|
|
1457
|
+
"path": "/communities/%7B%7Bid%7D%7D",
|
|
1458
|
+
"input_schema": {
|
|
1459
|
+
"type": "object",
|
|
1460
|
+
"properties": {
|
|
1461
|
+
"id": {
|
|
1462
|
+
"type": "integer",
|
|
1463
|
+
"description": "Community ID to delete"
|
|
1464
|
+
}
|
|
1465
|
+
},
|
|
1466
|
+
"required": [
|
|
1467
|
+
"id"
|
|
1468
|
+
]
|
|
1469
|
+
}
|
|
1470
|
+
},
|
|
1471
|
+
{
|
|
1472
|
+
"name": "learning_join_community",
|
|
1473
|
+
"description": "Join a community as a member",
|
|
1474
|
+
"method": "POST",
|
|
1475
|
+
"path": "/communities/%7B%7Bcommunity_id%7D%7D/join",
|
|
1476
|
+
"input_schema": {
|
|
1477
|
+
"type": "object",
|
|
1478
|
+
"properties": {
|
|
1479
|
+
"community_id": {
|
|
1480
|
+
"type": "integer",
|
|
1481
|
+
"description": "Community ID to join"
|
|
1482
|
+
},
|
|
1483
|
+
"user_id": {
|
|
1484
|
+
"type": "integer",
|
|
1485
|
+
"description": "User ID"
|
|
1486
|
+
},
|
|
1487
|
+
"invite_code": {
|
|
1488
|
+
"type": "string",
|
|
1489
|
+
"description": "Invite code (for private communities)"
|
|
1490
|
+
}
|
|
1491
|
+
},
|
|
1492
|
+
"required": [
|
|
1493
|
+
"community_id"
|
|
1494
|
+
]
|
|
1495
|
+
}
|
|
1496
|
+
},
|
|
1497
|
+
{
|
|
1498
|
+
"name": "learning_leave_community",
|
|
1499
|
+
"description": "Leave a community",
|
|
1500
|
+
"method": "POST",
|
|
1501
|
+
"path": "/communities/%7B%7Bcommunity_id%7D%7D/leave",
|
|
1502
|
+
"input_schema": {
|
|
1503
|
+
"type": "object",
|
|
1504
|
+
"properties": {
|
|
1505
|
+
"community_id": {
|
|
1506
|
+
"type": "integer",
|
|
1507
|
+
"description": "Community ID to leave"
|
|
1508
|
+
}
|
|
1509
|
+
},
|
|
1510
|
+
"required": [
|
|
1511
|
+
"community_id"
|
|
1512
|
+
]
|
|
1513
|
+
}
|
|
1514
|
+
},
|
|
1515
|
+
{
|
|
1516
|
+
"name": "learning_list_community_members",
|
|
1517
|
+
"description": "List members of a community with filtering by role and status",
|
|
1518
|
+
"method": "GET",
|
|
1519
|
+
"path": "/communities/%7B%7Bcommunity_id%7D%7D/members",
|
|
1520
|
+
"input_schema": {
|
|
1521
|
+
"type": "object",
|
|
1522
|
+
"properties": {
|
|
1523
|
+
"community_id": {
|
|
1524
|
+
"type": "integer",
|
|
1525
|
+
"description": "Community ID"
|
|
1526
|
+
},
|
|
1527
|
+
"role": {
|
|
1528
|
+
"type": "string",
|
|
1529
|
+
"description": "Filter by member role"
|
|
1530
|
+
},
|
|
1531
|
+
"status": {
|
|
1532
|
+
"type": "string",
|
|
1533
|
+
"default": "active",
|
|
1534
|
+
"description": "Filter by status"
|
|
1535
|
+
},
|
|
1536
|
+
"search": {
|
|
1537
|
+
"type": "string",
|
|
1538
|
+
"description": "Search members by name"
|
|
1539
|
+
},
|
|
1540
|
+
"limit": {
|
|
1541
|
+
"type": "integer",
|
|
1542
|
+
"default": 20,
|
|
1543
|
+
"description": "Results per page"
|
|
1544
|
+
},
|
|
1545
|
+
"offset": {
|
|
1546
|
+
"type": "integer",
|
|
1547
|
+
"default": 0,
|
|
1548
|
+
"description": "Pagination offset"
|
|
1549
|
+
}
|
|
1550
|
+
},
|
|
1551
|
+
"required": [
|
|
1552
|
+
"community_id"
|
|
1553
|
+
]
|
|
1554
|
+
}
|
|
1555
|
+
},
|
|
1556
|
+
{
|
|
1557
|
+
"name": "learning_update_community_member",
|
|
1558
|
+
"description": "Update a community member's role, status, or settings",
|
|
1559
|
+
"method": "PUT",
|
|
1560
|
+
"path": "/communities/%7B%7Bcommunity_id%7D%7D/members/%7B%7Buser_id%7D%7D",
|
|
1561
|
+
"input_schema": {
|
|
1562
|
+
"type": "object",
|
|
1563
|
+
"properties": {
|
|
1564
|
+
"community_id": {
|
|
1565
|
+
"type": "integer",
|
|
1566
|
+
"description": "Community ID"
|
|
1567
|
+
},
|
|
1568
|
+
"user_id": {
|
|
1569
|
+
"type": "integer",
|
|
1570
|
+
"description": "Member user ID"
|
|
1571
|
+
},
|
|
1572
|
+
"role": {
|
|
1573
|
+
"type": "string",
|
|
1574
|
+
"description": "Updated role (e.g. admin, moderator, member)"
|
|
1575
|
+
},
|
|
1576
|
+
"status": {
|
|
1577
|
+
"type": "string",
|
|
1578
|
+
"description": "Updated status (active, banned, muted)"
|
|
1579
|
+
},
|
|
1580
|
+
"points": {
|
|
1581
|
+
"type": "integer",
|
|
1582
|
+
"description": "Set member points"
|
|
1583
|
+
},
|
|
1584
|
+
"notes": {
|
|
1585
|
+
"type": "string",
|
|
1586
|
+
"description": "Admin notes about the member"
|
|
1587
|
+
}
|
|
1588
|
+
},
|
|
1589
|
+
"required": [
|
|
1590
|
+
"community_id",
|
|
1591
|
+
"user_id"
|
|
1592
|
+
]
|
|
1593
|
+
}
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
"name": "learning_get_community_leaderboard",
|
|
1597
|
+
"description": "Get the community leaderboard rankings",
|
|
1598
|
+
"method": "GET",
|
|
1599
|
+
"path": "/communities/%7B%7Bcommunity_id%7D%7D/leaderboard",
|
|
1600
|
+
"input_schema": {
|
|
1601
|
+
"type": "object",
|
|
1602
|
+
"properties": {
|
|
1603
|
+
"community_id": {
|
|
1604
|
+
"type": "integer",
|
|
1605
|
+
"description": "Community ID"
|
|
1606
|
+
},
|
|
1607
|
+
"period": {
|
|
1608
|
+
"type": "string",
|
|
1609
|
+
"description": "Time period (e.g. weekly, monthly, all_time)"
|
|
1610
|
+
},
|
|
1611
|
+
"limit": {
|
|
1612
|
+
"type": "integer",
|
|
1613
|
+
"default": 20,
|
|
1614
|
+
"description": "Number of results"
|
|
1615
|
+
},
|
|
1616
|
+
"offset": {
|
|
1617
|
+
"type": "integer",
|
|
1618
|
+
"default": 0,
|
|
1619
|
+
"description": "Pagination offset"
|
|
1620
|
+
}
|
|
1621
|
+
},
|
|
1622
|
+
"required": [
|
|
1623
|
+
"community_id"
|
|
1624
|
+
]
|
|
1625
|
+
}
|
|
1626
|
+
},
|
|
1627
|
+
{
|
|
1628
|
+
"name": "learning_create_community_invite",
|
|
1629
|
+
"description": "Create an invite code/link for a community",
|
|
1630
|
+
"method": "POST",
|
|
1631
|
+
"path": "/communities/%7B%7Bcommunity_id%7D%7D/invites",
|
|
1632
|
+
"input_schema": {
|
|
1633
|
+
"type": "object",
|
|
1634
|
+
"properties": {
|
|
1635
|
+
"community_id": {
|
|
1636
|
+
"type": "integer",
|
|
1637
|
+
"description": "Community ID"
|
|
1638
|
+
},
|
|
1639
|
+
"max_uses": {
|
|
1640
|
+
"type": "integer",
|
|
1641
|
+
"description": "Maximum number of uses (null = unlimited)"
|
|
1642
|
+
},
|
|
1643
|
+
"expires_in_days": {
|
|
1644
|
+
"type": "integer",
|
|
1645
|
+
"description": "Days until invite expires"
|
|
1646
|
+
},
|
|
1647
|
+
"note": {
|
|
1648
|
+
"type": "string",
|
|
1649
|
+
"description": "Note about the invite"
|
|
1650
|
+
}
|
|
1651
|
+
},
|
|
1652
|
+
"required": [
|
|
1653
|
+
"community_id"
|
|
1654
|
+
]
|
|
1655
|
+
}
|
|
1656
|
+
},
|
|
1657
|
+
{
|
|
1658
|
+
"name": "learning_use_community_invite",
|
|
1659
|
+
"description": "Redeem an invite code to join a community",
|
|
1660
|
+
"method": "POST",
|
|
1661
|
+
"path": "/communities/invite/%7B%7Bcode%7D%7D",
|
|
1662
|
+
"input_schema": {
|
|
1663
|
+
"type": "object",
|
|
1664
|
+
"properties": {
|
|
1665
|
+
"code": {
|
|
1666
|
+
"type": "string",
|
|
1667
|
+
"description": "Invite code"
|
|
1668
|
+
},
|
|
1669
|
+
"user_id": {
|
|
1670
|
+
"type": "integer",
|
|
1671
|
+
"description": "User ID accepting the invite"
|
|
1672
|
+
}
|
|
1673
|
+
},
|
|
1674
|
+
"required": [
|
|
1675
|
+
"code"
|
|
1676
|
+
]
|
|
1677
|
+
}
|
|
1678
|
+
},
|
|
1679
|
+
{
|
|
1680
|
+
"name": "learning_list_spaces",
|
|
1681
|
+
"description": "List community spaces with filtering",
|
|
1682
|
+
"method": "GET",
|
|
1683
|
+
"path": "/spaces",
|
|
1684
|
+
"input_schema": {
|
|
1685
|
+
"type": "object",
|
|
1686
|
+
"properties": {
|
|
1687
|
+
"space_type": {
|
|
1688
|
+
"type": "string",
|
|
1689
|
+
"enum": [
|
|
1690
|
+
"discussion",
|
|
1691
|
+
"announcement",
|
|
1692
|
+
"resource",
|
|
1693
|
+
"course"
|
|
1694
|
+
],
|
|
1695
|
+
"description": "Filter by space type"
|
|
1696
|
+
},
|
|
1697
|
+
"visibility": {
|
|
1698
|
+
"type": "string",
|
|
1699
|
+
"enum": [
|
|
1700
|
+
"public",
|
|
1701
|
+
"private"
|
|
1702
|
+
],
|
|
1703
|
+
"description": "Filter by visibility"
|
|
1704
|
+
},
|
|
1705
|
+
"page": {
|
|
1706
|
+
"type": "integer",
|
|
1707
|
+
"default": 1,
|
|
1708
|
+
"description": "Page number"
|
|
1709
|
+
},
|
|
1710
|
+
"limit": {
|
|
1711
|
+
"type": "integer",
|
|
1712
|
+
"default": 50,
|
|
1713
|
+
"description": "Results per page"
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
},
|
|
1718
|
+
{
|
|
1719
|
+
"name": "learning_create_space",
|
|
1720
|
+
"description": "Create a new community space",
|
|
1721
|
+
"method": "POST",
|
|
1722
|
+
"path": "/spaces",
|
|
1723
|
+
"input_schema": {
|
|
1724
|
+
"type": "object",
|
|
1725
|
+
"properties": {
|
|
1726
|
+
"name": {
|
|
1727
|
+
"type": "string",
|
|
1728
|
+
"description": "Space name"
|
|
1729
|
+
},
|
|
1730
|
+
"description": {
|
|
1731
|
+
"type": "string",
|
|
1732
|
+
"description": "Space description"
|
|
1733
|
+
},
|
|
1734
|
+
"space_type": {
|
|
1735
|
+
"type": "string",
|
|
1736
|
+
"default": "discussion",
|
|
1737
|
+
"enum": [
|
|
1738
|
+
"discussion",
|
|
1739
|
+
"announcement",
|
|
1740
|
+
"resource",
|
|
1741
|
+
"course"
|
|
1742
|
+
],
|
|
1743
|
+
"description": "Space type"
|
|
1744
|
+
},
|
|
1745
|
+
"visibility": {
|
|
1746
|
+
"type": "string",
|
|
1747
|
+
"default": "public",
|
|
1748
|
+
"enum": [
|
|
1749
|
+
"public",
|
|
1750
|
+
"private"
|
|
1751
|
+
],
|
|
1752
|
+
"description": "Space visibility"
|
|
1753
|
+
},
|
|
1754
|
+
"color": {
|
|
1755
|
+
"type": "string",
|
|
1756
|
+
"description": "Space color (hex)"
|
|
1757
|
+
}
|
|
1758
|
+
},
|
|
1759
|
+
"required": [
|
|
1760
|
+
"name"
|
|
1761
|
+
]
|
|
1762
|
+
}
|
|
1763
|
+
},
|
|
1764
|
+
{
|
|
1765
|
+
"name": "learning_get_space",
|
|
1766
|
+
"description": "Get space details by ID",
|
|
1767
|
+
"method": "GET",
|
|
1768
|
+
"path": "/spaces/%7B%7Bspace_id%7D%7D",
|
|
1769
|
+
"input_schema": {
|
|
1770
|
+
"type": "object",
|
|
1771
|
+
"properties": {
|
|
1772
|
+
"space_id": {
|
|
1773
|
+
"type": "integer",
|
|
1774
|
+
"description": "Space ID"
|
|
1775
|
+
}
|
|
1776
|
+
},
|
|
1777
|
+
"required": [
|
|
1778
|
+
"space_id"
|
|
1779
|
+
]
|
|
1780
|
+
}
|
|
1781
|
+
},
|
|
1782
|
+
{
|
|
1783
|
+
"name": "learning_update_space",
|
|
1784
|
+
"description": "Update a community space",
|
|
1785
|
+
"method": "PUT",
|
|
1786
|
+
"path": "/spaces/%7B%7Bspace_id%7D%7D",
|
|
1787
|
+
"input_schema": {
|
|
1788
|
+
"type": "object",
|
|
1789
|
+
"properties": {
|
|
1790
|
+
"space_id": {
|
|
1791
|
+
"type": "integer",
|
|
1792
|
+
"description": "Space ID"
|
|
1793
|
+
},
|
|
1794
|
+
"name": {
|
|
1795
|
+
"type": "string",
|
|
1796
|
+
"description": "Updated name"
|
|
1797
|
+
},
|
|
1798
|
+
"description": {
|
|
1799
|
+
"type": "string",
|
|
1800
|
+
"description": "Updated description"
|
|
1801
|
+
},
|
|
1802
|
+
"visibility": {
|
|
1803
|
+
"type": "string",
|
|
1804
|
+
"enum": [
|
|
1805
|
+
"public",
|
|
1806
|
+
"private"
|
|
1807
|
+
],
|
|
1808
|
+
"description": "Updated visibility"
|
|
1809
|
+
}
|
|
1810
|
+
},
|
|
1811
|
+
"required": [
|
|
1812
|
+
"space_id"
|
|
1813
|
+
]
|
|
1814
|
+
}
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
"name": "learning_join_space",
|
|
1818
|
+
"description": "Join a community space",
|
|
1819
|
+
"method": "POST",
|
|
1820
|
+
"path": "/spaces/%7B%7Bspace_id%7D%7D/join",
|
|
1821
|
+
"input_schema": {
|
|
1822
|
+
"type": "object",
|
|
1823
|
+
"properties": {
|
|
1824
|
+
"space_id": {
|
|
1825
|
+
"type": "integer",
|
|
1826
|
+
"description": "Space ID to join"
|
|
1827
|
+
},
|
|
1828
|
+
"user_id": {
|
|
1829
|
+
"type": "integer",
|
|
1830
|
+
"description": "User ID"
|
|
1831
|
+
}
|
|
1832
|
+
},
|
|
1833
|
+
"required": [
|
|
1834
|
+
"space_id"
|
|
1835
|
+
]
|
|
1836
|
+
}
|
|
1837
|
+
},
|
|
1838
|
+
{
|
|
1839
|
+
"name": "learning_leave_space",
|
|
1840
|
+
"description": "Leave a community space",
|
|
1841
|
+
"method": "POST",
|
|
1842
|
+
"path": "/spaces/%7B%7Bspace_id%7D%7D/leave",
|
|
1843
|
+
"input_schema": {
|
|
1844
|
+
"type": "object",
|
|
1845
|
+
"properties": {
|
|
1846
|
+
"space_id": {
|
|
1847
|
+
"type": "integer",
|
|
1848
|
+
"description": "Space ID to leave"
|
|
1849
|
+
}
|
|
1850
|
+
},
|
|
1851
|
+
"required": [
|
|
1852
|
+
"space_id"
|
|
1853
|
+
]
|
|
1854
|
+
}
|
|
1855
|
+
},
|
|
1856
|
+
{
|
|
1857
|
+
"name": "learning_list_space_posts",
|
|
1858
|
+
"description": "List posts within a specific space",
|
|
1859
|
+
"method": "GET",
|
|
1860
|
+
"path": "/spaces/%7B%7Bspace_id%7D%7D/posts",
|
|
1861
|
+
"input_schema": {
|
|
1862
|
+
"type": "object",
|
|
1863
|
+
"properties": {
|
|
1864
|
+
"space_id": {
|
|
1865
|
+
"type": "integer",
|
|
1866
|
+
"description": "Space ID"
|
|
1867
|
+
},
|
|
1868
|
+
"page": {
|
|
1869
|
+
"type": "integer",
|
|
1870
|
+
"default": 1,
|
|
1871
|
+
"description": "Page number"
|
|
1872
|
+
},
|
|
1873
|
+
"limit": {
|
|
1874
|
+
"type": "integer",
|
|
1875
|
+
"default": 20,
|
|
1876
|
+
"description": "Results per page"
|
|
1877
|
+
}
|
|
1878
|
+
},
|
|
1879
|
+
"required": [
|
|
1880
|
+
"space_id"
|
|
1881
|
+
]
|
|
1882
|
+
}
|
|
1883
|
+
},
|
|
1884
|
+
{
|
|
1885
|
+
"name": "learning_create_space_post",
|
|
1886
|
+
"description": "Create a new post in a space",
|
|
1887
|
+
"method": "POST",
|
|
1888
|
+
"path": "/spaces/%7B%7Bspace_id%7D%7D/posts",
|
|
1889
|
+
"input_schema": {
|
|
1890
|
+
"type": "object",
|
|
1891
|
+
"properties": {
|
|
1892
|
+
"space_id": {
|
|
1893
|
+
"type": "integer",
|
|
1894
|
+
"description": "Space ID"
|
|
1895
|
+
},
|
|
1896
|
+
"user_id": {
|
|
1897
|
+
"type": "integer",
|
|
1898
|
+
"description": "Author user ID"
|
|
1899
|
+
},
|
|
1900
|
+
"title": {
|
|
1901
|
+
"type": "string",
|
|
1902
|
+
"description": "Post title"
|
|
1903
|
+
},
|
|
1904
|
+
"body": {
|
|
1905
|
+
"type": "string",
|
|
1906
|
+
"description": "Post body content"
|
|
1907
|
+
},
|
|
1908
|
+
"body_html": {
|
|
1909
|
+
"type": "string",
|
|
1910
|
+
"description": "Post body as HTML"
|
|
1911
|
+
},
|
|
1912
|
+
"post_type": {
|
|
1913
|
+
"type": "string",
|
|
1914
|
+
"default": "discussion",
|
|
1915
|
+
"description": "Post type"
|
|
1916
|
+
}
|
|
1917
|
+
},
|
|
1918
|
+
"required": [
|
|
1919
|
+
"space_id",
|
|
1920
|
+
"title",
|
|
1921
|
+
"body"
|
|
1922
|
+
]
|
|
1923
|
+
}
|
|
1924
|
+
},
|
|
1925
|
+
{
|
|
1926
|
+
"name": "learning_list_posts",
|
|
1927
|
+
"description": "List all posts with optional filtering by space",
|
|
1928
|
+
"method": "GET",
|
|
1929
|
+
"path": "/posts",
|
|
1930
|
+
"input_schema": {
|
|
1931
|
+
"type": "object",
|
|
1932
|
+
"properties": {
|
|
1933
|
+
"space_id": {
|
|
1934
|
+
"type": "integer",
|
|
1935
|
+
"description": "Filter by space ID"
|
|
1936
|
+
},
|
|
1937
|
+
"user_id": {
|
|
1938
|
+
"type": "integer",
|
|
1939
|
+
"description": "Filter by author user ID"
|
|
1940
|
+
},
|
|
1941
|
+
"page": {
|
|
1942
|
+
"type": "integer",
|
|
1943
|
+
"default": 1,
|
|
1944
|
+
"description": "Page number"
|
|
1945
|
+
},
|
|
1946
|
+
"limit": {
|
|
1947
|
+
"type": "integer",
|
|
1948
|
+
"default": 20,
|
|
1949
|
+
"description": "Results per page"
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
}
|
|
1953
|
+
},
|
|
1954
|
+
{
|
|
1955
|
+
"name": "learning_get_post",
|
|
1956
|
+
"description": "Get post details by ID",
|
|
1957
|
+
"method": "GET",
|
|
1958
|
+
"path": "/posts/%7B%7Bpost_id%7D%7D",
|
|
1959
|
+
"input_schema": {
|
|
1960
|
+
"type": "object",
|
|
1961
|
+
"properties": {
|
|
1962
|
+
"post_id": {
|
|
1963
|
+
"type": "integer",
|
|
1964
|
+
"description": "Post ID"
|
|
1965
|
+
}
|
|
1966
|
+
},
|
|
1967
|
+
"required": [
|
|
1968
|
+
"post_id"
|
|
1969
|
+
]
|
|
1970
|
+
}
|
|
1971
|
+
},
|
|
1972
|
+
{
|
|
1973
|
+
"name": "learning_update_post",
|
|
1974
|
+
"description": "Update a post's content or title",
|
|
1975
|
+
"method": "PUT",
|
|
1976
|
+
"path": "/posts/%7B%7Bpost_id%7D%7D",
|
|
1977
|
+
"input_schema": {
|
|
1978
|
+
"type": "object",
|
|
1979
|
+
"properties": {
|
|
1980
|
+
"post_id": {
|
|
1981
|
+
"type": "integer",
|
|
1982
|
+
"description": "Post ID to update"
|
|
1983
|
+
},
|
|
1984
|
+
"title": {
|
|
1985
|
+
"type": "string",
|
|
1986
|
+
"description": "Updated title"
|
|
1987
|
+
},
|
|
1988
|
+
"body": {
|
|
1989
|
+
"type": "string",
|
|
1990
|
+
"description": "Updated body"
|
|
1991
|
+
},
|
|
1992
|
+
"body_html": {
|
|
1993
|
+
"type": "string",
|
|
1994
|
+
"description": "Updated body as HTML"
|
|
1995
|
+
}
|
|
1996
|
+
},
|
|
1997
|
+
"required": [
|
|
1998
|
+
"post_id"
|
|
1999
|
+
]
|
|
2000
|
+
}
|
|
2001
|
+
},
|
|
2002
|
+
{
|
|
2003
|
+
"name": "learning_delete_post",
|
|
2004
|
+
"description": "Delete a post",
|
|
2005
|
+
"method": "DELETE",
|
|
2006
|
+
"path": "/posts/%7B%7Bpost_id%7D%7D",
|
|
2007
|
+
"input_schema": {
|
|
2008
|
+
"type": "object",
|
|
2009
|
+
"properties": {
|
|
2010
|
+
"post_id": {
|
|
2011
|
+
"type": "integer",
|
|
2012
|
+
"description": "Post ID to delete"
|
|
2013
|
+
}
|
|
2014
|
+
},
|
|
2015
|
+
"required": [
|
|
2016
|
+
"post_id"
|
|
2017
|
+
]
|
|
2018
|
+
}
|
|
2019
|
+
},
|
|
2020
|
+
{
|
|
2021
|
+
"name": "learning_like_post",
|
|
2022
|
+
"description": "Toggle like on a post",
|
|
2023
|
+
"method": "POST",
|
|
2024
|
+
"path": "/posts/%7B%7Bpost_id%7D%7D/like",
|
|
2025
|
+
"input_schema": {
|
|
2026
|
+
"type": "object",
|
|
2027
|
+
"properties": {
|
|
2028
|
+
"post_id": {
|
|
2029
|
+
"type": "integer",
|
|
2030
|
+
"description": "Post ID"
|
|
2031
|
+
},
|
|
2032
|
+
"user_id": {
|
|
2033
|
+
"type": "integer",
|
|
2034
|
+
"description": "User ID"
|
|
2035
|
+
}
|
|
2036
|
+
},
|
|
2037
|
+
"required": [
|
|
2038
|
+
"post_id"
|
|
2039
|
+
]
|
|
2040
|
+
}
|
|
2041
|
+
},
|
|
2042
|
+
{
|
|
2043
|
+
"name": "learning_bookmark_post",
|
|
2044
|
+
"description": "Toggle bookmark on a post",
|
|
2045
|
+
"method": "POST",
|
|
2046
|
+
"path": "/posts/%7B%7Bpost_id%7D%7D/bookmark",
|
|
2047
|
+
"input_schema": {
|
|
2048
|
+
"type": "object",
|
|
2049
|
+
"properties": {
|
|
2050
|
+
"post_id": {
|
|
2051
|
+
"type": "integer",
|
|
2052
|
+
"description": "Post ID"
|
|
2053
|
+
},
|
|
2054
|
+
"user_id": {
|
|
2055
|
+
"type": "integer",
|
|
2056
|
+
"description": "User ID"
|
|
2057
|
+
}
|
|
2058
|
+
},
|
|
2059
|
+
"required": [
|
|
2060
|
+
"post_id"
|
|
2061
|
+
]
|
|
2062
|
+
}
|
|
2063
|
+
},
|
|
2064
|
+
{
|
|
2065
|
+
"name": "learning_list_post_comments",
|
|
2066
|
+
"description": "List comments on a post",
|
|
2067
|
+
"method": "GET",
|
|
2068
|
+
"path": "/posts/%7B%7Bpost_id%7D%7D/comments",
|
|
2069
|
+
"input_schema": {
|
|
2070
|
+
"type": "object",
|
|
2071
|
+
"properties": {
|
|
2072
|
+
"post_id": {
|
|
2073
|
+
"type": "integer",
|
|
2074
|
+
"description": "Post ID"
|
|
2075
|
+
},
|
|
2076
|
+
"page": {
|
|
2077
|
+
"type": "integer",
|
|
2078
|
+
"default": 1,
|
|
2079
|
+
"description": "Page number"
|
|
2080
|
+
},
|
|
2081
|
+
"limit": {
|
|
2082
|
+
"type": "integer",
|
|
2083
|
+
"default": 20,
|
|
2084
|
+
"description": "Results per page"
|
|
2085
|
+
}
|
|
2086
|
+
},
|
|
2087
|
+
"required": [
|
|
2088
|
+
"post_id"
|
|
2089
|
+
]
|
|
2090
|
+
}
|
|
2091
|
+
},
|
|
2092
|
+
{
|
|
2093
|
+
"name": "learning_create_post_comment",
|
|
2094
|
+
"description": "Add a comment to a post, with optional threading via parent_id",
|
|
2095
|
+
"method": "POST",
|
|
2096
|
+
"path": "/posts/%7B%7Bpost_id%7D%7D/comments",
|
|
2097
|
+
"input_schema": {
|
|
2098
|
+
"type": "object",
|
|
2099
|
+
"properties": {
|
|
2100
|
+
"post_id": {
|
|
2101
|
+
"type": "integer",
|
|
2102
|
+
"description": "Post ID"
|
|
2103
|
+
},
|
|
2104
|
+
"user_id": {
|
|
2105
|
+
"type": "integer",
|
|
2106
|
+
"description": "Commenting user ID"
|
|
2107
|
+
},
|
|
2108
|
+
"body": {
|
|
2109
|
+
"type": "string",
|
|
2110
|
+
"description": "Comment text"
|
|
2111
|
+
},
|
|
2112
|
+
"body_html": {
|
|
2113
|
+
"type": "string",
|
|
2114
|
+
"description": "Comment as HTML"
|
|
2115
|
+
},
|
|
2116
|
+
"parent_id": {
|
|
2117
|
+
"type": "integer",
|
|
2118
|
+
"description": "Parent comment ID for threading"
|
|
2119
|
+
}
|
|
2120
|
+
},
|
|
2121
|
+
"required": [
|
|
2122
|
+
"post_id",
|
|
2123
|
+
"body"
|
|
2124
|
+
]
|
|
2125
|
+
}
|
|
2126
|
+
},
|
|
2127
|
+
{
|
|
2128
|
+
"name": "learning_update_comment",
|
|
2129
|
+
"description": "Update a comment's content",
|
|
2130
|
+
"method": "PUT",
|
|
2131
|
+
"path": "/comments/%7B%7Bcomment_id%7D%7D",
|
|
2132
|
+
"input_schema": {
|
|
2133
|
+
"type": "object",
|
|
2134
|
+
"properties": {
|
|
2135
|
+
"comment_id": {
|
|
2136
|
+
"type": "integer",
|
|
2137
|
+
"description": "Comment ID to update"
|
|
2138
|
+
},
|
|
2139
|
+
"body": {
|
|
2140
|
+
"type": "string",
|
|
2141
|
+
"description": "Updated comment text"
|
|
2142
|
+
},
|
|
2143
|
+
"body_html": {
|
|
2144
|
+
"type": "string",
|
|
2145
|
+
"description": "Updated comment as HTML"
|
|
2146
|
+
}
|
|
2147
|
+
},
|
|
2148
|
+
"required": [
|
|
2149
|
+
"comment_id",
|
|
2150
|
+
"body"
|
|
2151
|
+
]
|
|
2152
|
+
}
|
|
2153
|
+
},
|
|
2154
|
+
{
|
|
2155
|
+
"name": "learning_delete_comment",
|
|
2156
|
+
"description": "Delete a comment",
|
|
2157
|
+
"method": "POST",
|
|
2158
|
+
"path": "/comments/%7B%7Bcomment_id%7D%7D/delete",
|
|
2159
|
+
"input_schema": {
|
|
2160
|
+
"type": "object",
|
|
2161
|
+
"properties": {
|
|
2162
|
+
"comment_id": {
|
|
2163
|
+
"type": "integer",
|
|
2164
|
+
"description": "Comment ID to delete"
|
|
2165
|
+
}
|
|
2166
|
+
},
|
|
2167
|
+
"required": [
|
|
2168
|
+
"comment_id"
|
|
2169
|
+
]
|
|
2170
|
+
}
|
|
2171
|
+
},
|
|
2172
|
+
{
|
|
2173
|
+
"name": "learning_list_members",
|
|
2174
|
+
"description": "List community members with filtering by role and status",
|
|
2175
|
+
"method": "GET",
|
|
2176
|
+
"path": "/members",
|
|
2177
|
+
"input_schema": {
|
|
2178
|
+
"type": "object",
|
|
2179
|
+
"properties": {
|
|
2180
|
+
"role": {
|
|
2181
|
+
"type": "string",
|
|
2182
|
+
"description": "Filter by role"
|
|
2183
|
+
},
|
|
2184
|
+
"status": {
|
|
2185
|
+
"type": "string",
|
|
2186
|
+
"description": "Filter by status"
|
|
2187
|
+
},
|
|
2188
|
+
"search": {
|
|
2189
|
+
"type": "string",
|
|
2190
|
+
"description": "Search by name"
|
|
2191
|
+
},
|
|
2192
|
+
"page": {
|
|
2193
|
+
"type": "integer",
|
|
2194
|
+
"default": 1,
|
|
2195
|
+
"description": "Page number"
|
|
2196
|
+
},
|
|
2197
|
+
"limit": {
|
|
2198
|
+
"type": "integer",
|
|
2199
|
+
"default": 50,
|
|
2200
|
+
"description": "Results per page"
|
|
2201
|
+
}
|
|
2202
|
+
}
|
|
2203
|
+
}
|
|
2204
|
+
},
|
|
2205
|
+
{
|
|
2206
|
+
"name": "learning_subscribe_membership",
|
|
2207
|
+
"description": "Subscribe a user to a membership product",
|
|
2208
|
+
"method": "POST",
|
|
2209
|
+
"path": "/memberships/%7B%7Bproduct_id%7D%7D/subscribe",
|
|
2210
|
+
"input_schema": {
|
|
2211
|
+
"type": "object",
|
|
2212
|
+
"properties": {
|
|
2213
|
+
"product_id": {
|
|
2214
|
+
"type": "integer",
|
|
2215
|
+
"description": "Membership product ID"
|
|
2216
|
+
},
|
|
2217
|
+
"user_id": {
|
|
2218
|
+
"type": "integer",
|
|
2219
|
+
"description": "User ID"
|
|
2220
|
+
},
|
|
2221
|
+
"price_id": {
|
|
2222
|
+
"type": "integer",
|
|
2223
|
+
"description": "Price ID"
|
|
2224
|
+
},
|
|
2225
|
+
"discount_code": {
|
|
2226
|
+
"type": "string",
|
|
2227
|
+
"description": "Discount code"
|
|
2228
|
+
},
|
|
2229
|
+
"payment_method_id": {
|
|
2230
|
+
"type": "string",
|
|
2231
|
+
"description": "Stripe payment method ID"
|
|
2232
|
+
},
|
|
2233
|
+
"trial_period_days": {
|
|
2234
|
+
"type": "integer",
|
|
2235
|
+
"description": "Trial period in days"
|
|
2236
|
+
}
|
|
2237
|
+
},
|
|
2238
|
+
"required": [
|
|
2239
|
+
"product_id"
|
|
2240
|
+
]
|
|
2241
|
+
}
|
|
2242
|
+
}
|
|
2243
|
+
]
|
|
2244
|
+
}
|