{"openapi":"3.0.0","info":{"title":"Honen Connector API","version":"1.0.0","description":"Workspace Connector HTTP API. Every command is POST /api/v1/{domain}/{action} with a JSON body, authenticated with a Connector Bearer token and authorized by the Connector's policy. Mutating commands accept Idempotency-Key so network retries cannot duplicate writes."},"servers":[{"url":"https://honen.com"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"A Connector secret or child token (Authorization: Bearer hn_…)."}},"schemas":{},"parameters":{}},"paths":{"/api/v1/analytics/hero":{"post":{"operationId":"analytics_hero","summary":"Workspace top-line counts (students, courses, completions).","tags":["analytics"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/analytics/courses":{"post":{"operationId":"analytics_courses","summary":"Per-course performance rows for the workspace.","tags":["analytics"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/analytics/students":{"post":{"operationId":"analytics_students","summary":"Student roster with assigned vs completed counts.","tags":["analytics"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/analytics/needs-attention":{"post":{"operationId":"analytics_needs-attention","summary":"Students with assigned coursework but zero completions.","tags":["analytics"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/analytics/top-performers":{"post":{"operationId":"analytics_top-performers","summary":"Students ranked by completion ratio.","tags":["analytics"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/performance/student":{"post":{"operationId":"performance_student","summary":"One student's quiz/test scores and activity completion.","tags":["performance"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"courseId":{"type":"string"}},"required":["userId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/performance/course":{"post":{"operationId":"performance_course","summary":"Class-wide rollup for a course.","tags":["performance"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"}},"required":["courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/performance/test":{"post":{"operationId":"performance_test","summary":"Score distribution for one unit test.","tags":["performance"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"testId":{"type":"string"}},"required":["testId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/performance/quiz":{"post":{"operationId":"performance_quiz","summary":"Score distribution for one quiz activity.","tags":["performance"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"activityId":{"type":"string"}},"required":["activityId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/course-units":{"post":{"operationId":"learning_course-units","summary":"Per-unit completion %, avg test score, avg time-on-task.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"groupId":{"type":"string"}},"required":["courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/unit-topics":{"post":{"operationId":"learning_unit-topics","summary":"Per-topic completion %, avg quiz score, avg time-on-task.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitId":{"type":"string"},"groupId":{"type":"string"}},"required":["unitId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/struggling-topics":{"post":{"operationId":"learning_struggling-topics","summary":"Ranked hardest topics (low completion + low scores).","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"groupId":{"type":"string"},"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"required":["courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/question-stats":{"post":{"operationId":"learning_question-stats","summary":"Cohort wrong-answer rates per question (worst-first).","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["test","quiz"]},"refId":{"type":"string"},"groupId":{"type":"string"}},"required":["kind","refId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/student-units":{"post":{"operationId":"learning_student-units","summary":"One learner's unit/topic/activity breakdown + times vs team avg.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"courseId":{"type":"string"},"groupId":{"type":"string"}},"required":["userId","courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/course-detail":{"post":{"operationId":"learning_course-detail","summary":"All assigned members with progress %, scores, status.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"groupId":{"type":"string"}},"required":["courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/completions":{"post":{"operationId":"learning_completions","summary":"Paginated course completion events.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"userId":{"type":"string"},"groupId":{"type":"string"},"page":{"type":"integer","minimum":0,"exclusiveMinimum":true},"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/assignment-cohort":{"post":{"operationId":"learning_assignment-cohort","summary":"Assignment assignees: completion %, weak units, struggling topics.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assignmentId":{"type":"string"}},"required":["assignmentId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/learning-modes":{"post":{"operationId":"learning_learning-modes","summary":"Which modalities learners used (% of cohort).","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"userId":{"type":"string"},"groupId":{"type":"string"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/learning-modes-time":{"post":{"operationId":"learning_learning-modes-time","summary":"Time spent per modality.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"userId":{"type":"string"},"groupId":{"type":"string"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/completion-time":{"post":{"operationId":"learning_completion-time","summary":"Fastest/slowest learners by avg tracked time-to-complete.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"},"search":{"type":"string"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/training-activity":{"post":{"operationId":"learning_training-activity","summary":"Daily active learners for the last 7 days.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/student-questions":{"post":{"operationId":"learning_student-questions","summary":"One learner's per-question answers (office-hours drill-down).","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"kind":{"type":"string","enum":["test","quiz"]},"refId":{"type":"string"},"attemptId":{"type":"string"}},"required":["userId","kind","refId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/course-at-risk":{"post":{"operationId":"learning_course-at-risk","summary":"Who hasn't started, is behind, or has low test scores.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"groupId":{"type":"string"},"behindBelow":{"type":"integer"},"scoreBelow":{"type":"integer"}},"required":["courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/overdue-assignments":{"post":{"operationId":"learning_overdue-assignments","summary":"All incomplete assignments past due date in scope.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"groupId":{"type":"string"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/project-scenarios":{"post":{"operationId":"learning_project-scenarios","summary":"Role-play / scenario completion, attempts, avg best score.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"unitId":{"type":"string"},"groupId":{"type":"string"}},"required":["courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/scenario-attempts":{"post":{"operationId":"learning_scenario-attempts","summary":"One learner's scenario attempt: evaluation + transcript.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"projectId":{"type":"string"},"attemptId":{"type":"string"}},"required":["userId","projectId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/project-results":{"post":{"operationId":"learning_project-results","summary":"One learner's graded project: rubric grade + submission (form field responses, etc.).","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"projectId":{"type":"string"},"attemptId":{"type":"string"}},"required":["userId","projectId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/learning/creator-review":{"post":{"operationId":"learning_creator-review","summary":"One creator's video-review submission + the Creator Team's feedback thread + acknowledgment status.","tags":["learning"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"projectId":{"type":"string"}},"required":["userId","projectId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/courses/list":{"post":{"operationId":"courses_list","summary":"List courses visible to this Connector (owner/editor/admin).","tags":["courses"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/courses/structure":{"post":{"operationId":"courses_structure","summary":"Unit/topic structure for a course.","tags":["courses"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"}},"required":["courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/courses/topic":{"post":{"operationId":"courses_topic","summary":"Topic detail (learning goals + activities).","tags":["courses"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"topicId":{"type":"string"}},"required":["topicId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/courses/activity":{"post":{"operationId":"courses_activity","summary":"Activity detail (cards/questions/body by type).","tags":["courses"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"activityId":{"type":"string"}},"required":["activityId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/courses/project":{"post":{"operationId":"courses_project","summary":"Project detail (type, config, learning goals).","tags":["courses"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"string"}},"required":["projectId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/courses/unit-test":{"post":{"operationId":"courses_unit-test","summary":"Unit test detail (questions).","tags":["courses"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"testId":{"type":"string"}},"required":["testId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/members/list":{"post":{"operationId":"members_list","summary":"List workspace members and their roles.","tags":["members"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/members/remove":{"post":{"operationId":"members_remove","summary":"Remove a member from the workspace.","tags":["members"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"}},"required":["userId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/members/set-role":{"post":{"operationId":"members_set-role","summary":"Set a member's workspace role.","tags":["members"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"systemKey":{"type":"string","enum":["ADMIN","INSTRUCTOR","MEMBER"]}},"required":["userId","systemKey"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/members/set-tags":{"post":{"operationId":"members_set-tags","summary":"Replace a member's organizational tags (labels). Creates missing tags; [] clears.","tags":["members"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"tags":{"type":"array","items":{"type":"string"},"maxItems":20}},"required":["userId","tags"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/invites/list":{"post":{"operationId":"invites_list","summary":"List invites, optionally filtered by status.","tags":["invites"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","ACCEPTED","EXPIRED","REVOKED"]}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/invites/create":{"post":{"operationId":"invites_create","summary":"Invite a person to the workspace (or a group).","tags":["invites"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"firstName":{"type":"string"},"lastName":{"type":"string"},"role":{"type":"string","enum":["ADMIN","INSTRUCTOR","MEMBER"],"default":"MEMBER"},"groupId":{"type":"string"}},"required":["email"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/invites/revoke":{"post":{"operationId":"invites_revoke","summary":"Revoke a pending invite.","tags":["invites"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inviteId":{"type":"string"}},"required":["inviteId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/invites/resend":{"post":{"operationId":"invites_resend","summary":"Resend a pending invite email.","tags":["invites"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inviteId":{"type":"string"}},"required":["inviteId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/groups/list":{"post":{"operationId":"groups_list","summary":"List groups (optionally a subtree).","tags":["groups"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"parentId":{"type":"string","nullable":true},"includeDescendants":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/groups/members-list":{"post":{"operationId":"groups_members-list","summary":"List members of a group.","tags":["groups"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"}},"required":["groupId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/groups/create":{"post":{"operationId":"groups_create","summary":"Create a group.","tags":["groups"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"parentId":{"type":"string"}},"required":["name"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/groups/update":{"post":{"operationId":"groups_update","summary":"Update a group's name, description, or lead instructor.","tags":["groups"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"leadInstructorId":{"type":"string"}},"required":["groupId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/groups/delete":{"post":{"operationId":"groups_delete","summary":"Delete a group (cascades children + memberships).","tags":["groups"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"}},"required":["groupId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/groups/member-add":{"post":{"operationId":"groups_member-add","summary":"Add a user to a group.","tags":["groups"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"},"userId":{"type":"string"},"systemKey":{"type":"string","enum":["ADMIN","INSTRUCTOR","MEMBER"],"default":"MEMBER"}},"required":["groupId","userId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/groups/member-remove":{"post":{"operationId":"groups_member-remove","summary":"Remove a user from a group.","tags":["groups"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"},"userId":{"type":"string"}},"required":["groupId","userId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/groups/member-set-status":{"post":{"operationId":"groups_member-set-status","summary":"Set a group member's status (ACTIVE/INACTIVE).","tags":["groups"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupId":{"type":"string"},"userId":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","INACTIVE"]}},"required":["groupId","userId","status"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/assignments/list":{"post":{"operationId":"assignments_list","summary":"List course assignments in the workspace.","tags":["assignments"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["WORKSPACE","GROUP","CUSTOM"]},"groupId":{"type":"string"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/assignments/get":{"post":{"operationId":"assignments_get","summary":"Get one assignment with completion stats.","tags":["assignments"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assignmentId":{"type":"string"}},"required":["assignmentId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/assignments/for-user":{"post":{"operationId":"assignments_for-user","summary":"List one user's assignments and completion state.","tags":["assignments"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"}},"required":["userId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/assignments/create":{"post":{"operationId":"assignments_create","summary":"Assign one or more courses to a scope.","tags":["assignments"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseIds":{"type":"array","items":{"type":"string"},"minItems":1},"scopeType":{"type":"string","enum":["WORKSPACE","GROUP","CUSTOM"]},"groupId":{"type":"string"},"name":{"type":"string"},"dueDate":{"type":"string"},"message":{"type":"string"},"includedGroupIds":{"type":"array","items":{"type":"string"}},"includedUserIds":{"type":"array","items":{"type":"string"}},"excludedGroupIds":{"type":"array","items":{"type":"string"}},"excludedUserIds":{"type":"array","items":{"type":"string"}}},"required":["courseIds","scopeType"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/assignments/remove":{"post":{"operationId":"assignments_remove","summary":"Remove an assignment.","tags":["assignments"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assignmentId":{"type":"string"}},"required":["assignmentId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/workspace/get":{"post":{"operationId":"workspace_get","summary":"Get workspace metadata (name, member + group counts).","tags":["workspace"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/workspace/update":{"post":{"operationId":"workspace_update","summary":"Update workspace name and/or slug.","tags":["workspace"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/radar/monitors-list":{"post":{"operationId":"radar_monitors-list","summary":"List Radar monitors.","tags":["radar"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/radar/alerts-list":{"post":{"operationId":"radar_alerts-list","summary":"List Radar alerts by status.","tags":["radar"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["new","dismissed","actioned","partially_actioned","all"]},"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/radar/monitor-create":{"post":{"operationId":"radar_monitor-create","summary":"Create a Radar monitor.","tags":["radar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"query":{"type":"string"},"frequency":{"type":"string","enum":["1h","1d","1w"],"default":"1d"},"tags":{"type":"array","items":{"type":"string"}},"attachedCourseIds":{"type":"array","items":{"type":"string"}},"description":{"type":"string"}},"required":["name","query"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/radar/monitor-trigger":{"post":{"operationId":"radar_monitor-trigger","summary":"Schedule an immediate monitor run.","tags":["radar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"monitorId":{"type":"string"}},"required":["monitorId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/radar/monitor-cancel":{"post":{"operationId":"radar_monitor-cancel","summary":"Cancel a monitor.","tags":["radar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"monitorId":{"type":"string"}},"required":["monitorId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/radar/alert-dismiss":{"post":{"operationId":"radar_alert-dismiss","summary":"Dismiss a Radar alert.","tags":["radar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alertId":{"type":"string"}},"required":["alertId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/sections-list":{"post":{"operationId":"explore_sections-list","summary":"List Explore sections + the master toggle state.","tags":["explore"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/candidate-courses":{"post":{"operationId":"explore_candidate-courses","summary":"List courses eligible to feature on Explore.","tags":["explore"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/toggle":{"post":{"operationId":"explore_toggle","summary":"Show or hide the Explore page for learners.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"exploreEnabled":{"type":"boolean"}},"required":["exploreEnabled"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/toggle-home":{"post":{"operationId":"explore_toggle-home","summary":"Also show the Explore rows on the learner home page.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"exploreOnHome":{"type":"boolean"}},"required":["exploreOnHome"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/set-courses":{"post":{"operationId":"explore_set-courses","summary":"Replace a section's course list, in order.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string"},"courseIds":{"type":"array","items":{"type":"string"}}},"required":["sectionId","courseIds"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/set-audience":{"post":{"operationId":"explore_set-audience","summary":"Limit a section to groups, or hide it from groups.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string"},"visibleToGroupIds":{"type":"array","items":{"type":"string"}},"hiddenFromGroupIds":{"type":"array","items":{"type":"string"}}},"required":["sectionId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/create-section":{"post":{"operationId":"explore_create-section","summary":"Create an Explore section.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"subtitle":{"type":"string"},"tag":{"type":"string"},"description":{"type":"string"},"color":{"type":"string"},"layout":{"type":"string","enum":["row","featured","trending","path","path-vertical"]},"position":{"type":"integer","minimum":0},"isActive":{"type":"boolean"},"curriculumId":{"type":"string","nullable":true}},"required":["slug","title"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/update-section":{"post":{"operationId":"explore_update-section","summary":"Update an Explore section.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string"},"slug":{"type":"string"},"title":{"type":"string"},"subtitle":{"type":"string"},"tag":{"type":"string"},"description":{"type":"string"},"color":{"type":"string"},"layout":{"type":"string","enum":["row","featured","trending","path","path-vertical"]},"position":{"type":"integer","minimum":0},"isActive":{"type":"boolean"},"curriculumId":{"type":"string","nullable":true}},"required":["sectionId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/delete-section":{"post":{"operationId":"explore_delete-section","summary":"Delete an Explore section.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string"}},"required":["sectionId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/reorder":{"post":{"operationId":"explore_reorder","summary":"Reorder Explore sections top-to-bottom.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderedIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["orderedIds"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/add-course":{"post":{"operationId":"explore_add-course","summary":"Add a course to an Explore section.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string"},"courseId":{"type":"string"}},"required":["sectionId","courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/explore/remove-course":{"post":{"operationId":"explore_remove-course","summary":"Remove a course from an Explore section.","tags":["explore"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string"},"courseId":{"type":"string"}},"required":["sectionId","courseId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/tree":{"post":{"operationId":"kb_tree","summary":"List KB folders and documents.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"parentId":{"type":"string","nullable":true},"includeDescendants":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/search":{"post":{"operationId":"kb_search","summary":"Keyword + vector search over the KB.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"required":["query"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/read":{"post":{"operationId":"kb_read","summary":"Read a document's canonical HTML.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/walkthrough-import-start":{"post":{"operationId":"kb_walkthrough-import-start","summary":"Create a walkthrough import and return a presigned video PUT URL.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":255},"mimeType":{"type":"string","enum":["video/mp4","video/webm","video/quicktime"]},"sizeBytes":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"parentId":{"type":"string","nullable":true},"title":{"type":"string","minLength":1,"maxLength":200}},"required":["filename","mimeType","sizeBytes","sha256"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/import-dispatch":{"post":{"operationId":"kb_import-dispatch","summary":"Dispatch a completed presigned upload for processing.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"}},"required":["jobId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/import-status":{"post":{"operationId":"kb_import-status","summary":"Poll transcript and visual-analysis status for an import.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"}},"required":["jobId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/walkthrough-read":{"post":{"operationId":"kb_walkthrough-read","summary":"Read structured walkthrough steps and short-lived media URLs.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"}},"required":["jobId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/versions":{"post":{"operationId":"kb_versions","summary":"List document revision history.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"limit":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100},"offset":{"type":"integer","minimum":0}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/read-version":{"post":{"operationId":"kb_read-version","summary":"Read one historical document revision.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"versionId":{"type":"string"}},"required":["itemId","versionId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-branches":{"post":{"operationId":"kb_artifact-branches","summary":"List Git branches for a migrated document.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-files":{"post":{"operationId":"kb_artifact-files","summary":"List files on an ACL-scoped Knowledge Base branch.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branchId":{"type":"string"}},"required":["branchId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-read-file":{"post":{"operationId":"kb_artifact-read-file","summary":"Read one file from an ACL-scoped Knowledge Base branch.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branchId":{"type":"string"},"path":{"type":"string"}},"required":["branchId","path"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-diff":{"post":{"operationId":"kb_artifact-diff","summary":"Compare an ACL-scoped branch with its base commit.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branchId":{"type":"string"}},"required":["branchId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/permissions":{"post":{"operationId":"kb_permissions","summary":"List permission grants on an item.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/public-link-get":{"post":{"operationId":"kb_public-link-get","summary":"Get a document's public link status.","tags":["kb"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/write":{"post":{"operationId":"kb_write","summary":"Overwrite a document's HTML.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"html":{"type":"string"}},"required":["itemId","html"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/str-replace":{"post":{"operationId":"kb_str-replace","summary":"Surgical exact-match HTML edit.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"oldString":{"type":"string","minLength":1},"newString":{"type":"string"},"replaceAll":{"type":"boolean"},"expectedReplacements":{"type":"integer","minimum":0,"exclusiveMinimum":true}},"required":["itemId","oldString","newString"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/create":{"post":{"operationId":"kb_create","summary":"Create a document or folder.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"itemType":{"type":"string","enum":["FOLDER","DOCUMENT"],"default":"DOCUMENT"},"html":{"type":"string"},"parentId":{"type":"string","nullable":true},"tags":{"type":"array","items":{"type":"string"}}},"required":["title"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/update":{"post":{"operationId":"kb_update","summary":"Rename and/or retag an item.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"title":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/move":{"post":{"operationId":"kb_move","summary":"Move an item under a folder (or to root).","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"parentId":{"type":"string","nullable":true}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/delete":{"post":{"operationId":"kb_delete","summary":"Soft-delete (or permanently delete) an item.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"permanent":{"type":"boolean"}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/restore":{"post":{"operationId":"kb_restore","summary":"Restore a soft-deleted item.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/restore-version":{"post":{"operationId":"kb_restore-version","summary":"Restore a historical revision as a new current version.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"versionId":{"type":"string"}},"required":["itemId","versionId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-create-branch":{"post":{"operationId":"kb_artifact-create-branch","summary":"Create an isolated Git draft/agent/review branch.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"branch":{"type":"string"}},"required":["itemId","branch"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-write-file":{"post":{"operationId":"kb_artifact-write-file","summary":"Commit one UTF-8 file to an ACL-scoped branch.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branchId":{"type":"string"},"path":{"type":"string"},"content":{"type":"string"},"reason":{"type":"string","maxLength":500}},"required":["branchId","path","content"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-merge":{"post":{"operationId":"kb_artifact-merge","summary":"Merge an ACL-scoped branch into canonical main.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branchId":{"type":"string"},"reason":{"type":"string","maxLength":500}},"required":["branchId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-move":{"post":{"operationId":"kb_artifact-move","summary":"Move an item on an ACL-scoped branch.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branchId":{"type":"string"},"itemId":{"type":"string"},"parentId":{"type":"string","nullable":true},"reason":{"type":"string","maxLength":500}},"required":["branchId","itemId","parentId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/artifact-delete":{"post":{"operationId":"kb_artifact-delete","summary":"Delete an item on an ACL-scoped branch.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"branchId":{"type":"string"},"itemId":{"type":"string"},"reason":{"type":"string","maxLength":500}},"required":["branchId","itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/share":{"post":{"operationId":"kb_share","summary":"Grant a permission on an item.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"principalType":{"type":"string","enum":["WORKSPACE","GROUP","USER","API_KEY"]},"role":{"type":"string","enum":["VIEWER","EDITOR","MAINTAINER","ADMIN"]},"userId":{"type":"string"},"groupId":{"type":"string"},"integrationKeyId":{"type":"string"}},"required":["itemId","principalType","role"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/revoke-share":{"post":{"operationId":"kb_revoke-share","summary":"Revoke a permission grant.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"grantId":{"type":"string"}},"required":["itemId","grantId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/upload-image":{"post":{"operationId":"kb_upload-image","summary":"Upload an image (base64) and get an embeddable public URL.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"imageContentType":{"type":"string"},"imageBase64":{"type":"string"},"imageFilename":{"type":"string","maxLength":200}},"required":["itemId","imageContentType","imageBase64"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/sign-image-upload":{"post":{"operationId":"kb_sign-image-upload","summary":"Get a presigned PUT URL for a client-side image upload.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"imageContentType":{"type":"string"},"imageFilename":{"type":"string","maxLength":200},"imageSizeBytes":{"type":"integer","minimum":0}},"required":["itemId","imageContentType"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/confirm-image-upload":{"post":{"operationId":"kb_confirm-image-upload","summary":"Finalize a presigned image PUT (downloads bytes + indexes).","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"},"imageId":{"type":"string"},"imageContentType":{"type":"string"}},"required":["itemId","imageId","imageContentType"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/public-link-enable":{"post":{"operationId":"kb_public-link-enable","summary":"Publish a document's public /p/{slug} link.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/kb/public-link-disable":{"post":{"operationId":"kb_public-link-disable","summary":"Disable a document's public link.","tags":["kb"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/workspace-assistant/run":{"post":{"operationId":"workspace-assistant_run","summary":"Run a bash script in the Workspace Assistant sandbox.","description":"Same just-bash environment, fetch-*/do-* commands, and /skills/*.md as the in-app assistant. Pass sessionId to persist /data across calls.","tags":["workspace-assistant"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"script":{"type":"string","minLength":1},"sessionId":{"type":"string"}},"required":["script"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/course-editor/run":{"post":{"operationId":"course-editor_run","summary":"Run a bash script against a course revision filesystem.","tags":["course-editor"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409."},"required":false,"description":"Unique retry key. Reusing it with the same body replays the original successful response; different input returns 409.","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"script":{"type":"string","minLength":1},"sessionId":{"type":"string"}},"required":["courseId","script"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"409":{"description":"Idempotency key is reused, in progress, or belongs to a failed request.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}},"/api/v1/courses/view-image":{"post":{"operationId":"courses_view-image","summary":"Fetch a course image asset as base64 + metadata.","tags":["courses"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"courseId":{"type":"string"},"target":{"type":"string","minLength":1}},"required":["courseId","target"]}}}},"responses":{"200":{"description":"Command result.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"nullable":true}},"required":["success"]}}}},"400":{"description":"Malformed JSON request body.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"401":{"description":"Missing or invalid Connector credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"403":{"description":"Connector policy does not permit this command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"404":{"description":"Unknown command.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}},"422":{"description":"Input validation error.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"details":{"nullable":true}},"required":["code","message","resolution"]}},"required":["success","error"]}}}}}}}}}