Spaces:
Sleeping
Sleeping
| openapi: 3.1.0 | |
| info: | |
| title: AIDidact API | |
| version: 1.0.0 | |
| description: API contract for the AIDidact AI-powered microlearning ecosystem. | |
| servers: | |
| - url: https://api.aididact.example.com | |
| paths: | |
| /v1/auth/register: | |
| post: | |
| summary: Register a learner | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/RegisterLearnerRequest' | |
| responses: | |
| '201': | |
| description: Registered | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LearnerRegistrationResponse' | |
| /v1/learners/{learnerId}/profile: | |
| get: | |
| summary: Get learner profile | |
| parameters: | |
| - $ref: '#/components/parameters/LearnerId' | |
| responses: | |
| '200': | |
| description: Learner profile | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LearnerProfile' | |
| patch: | |
| summary: Update learner goals or preferences | |
| parameters: | |
| - $ref: '#/components/parameters/LearnerId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/UpdateLearnerProfileRequest' | |
| responses: | |
| '200': | |
| description: Updated | |
| /v1/learners/{learnerId}/diagnostic-assessment: | |
| post: | |
| summary: Submit readiness assessment | |
| parameters: | |
| - $ref: '#/components/parameters/LearnerId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/DiagnosticSubmission' | |
| responses: | |
| '202': | |
| description: Accepted | |
| /v1/modules: | |
| get: | |
| summary: List modules | |
| responses: | |
| '200': | |
| description: Module list | |
| /v1/modules/{moduleId}: | |
| get: | |
| summary: Get module detail | |
| parameters: | |
| - $ref: '#/components/parameters/ModuleId' | |
| responses: | |
| '200': | |
| description: Module detail | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/ModuleDetail' | |
| /v1/learners/{learnerId}/recommendations: | |
| get: | |
| summary: Get ranked module recommendations | |
| parameters: | |
| - $ref: '#/components/parameters/LearnerId' | |
| responses: | |
| '200': | |
| description: Recommendations | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| properties: | |
| items: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/RecommendationItem' | |
| /v1/enrollments: | |
| post: | |
| summary: Enroll learner in module | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: [learnerId, moduleId] | |
| properties: | |
| learnerId: | |
| type: string | |
| format: uuid | |
| moduleId: | |
| type: string | |
| format: uuid | |
| responses: | |
| '201': | |
| description: Enrolled | |
| /v1/interactions: | |
| post: | |
| summary: Ingest interaction event | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/InteractionEvent' | |
| responses: | |
| '202': | |
| description: Accepted | |
| /v1/assessments/{assessmentId}/attempts: | |
| post: | |
| summary: Create unique assessment attempt | |
| parameters: | |
| - $ref: '#/components/parameters/AssessmentId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| type: object | |
| required: [learnerId] | |
| properties: | |
| learnerId: | |
| type: string | |
| format: uuid | |
| responses: | |
| '201': | |
| description: Attempt created | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/AssessmentAttempt' | |
| /v1/assessments/attempts/{attemptId}/responses: | |
| post: | |
| summary: Submit responses | |
| parameters: | |
| - $ref: '#/components/parameters/AttemptId' | |
| requestBody: | |
| required: true | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/AssessmentResponseSubmission' | |
| responses: | |
| '202': | |
| description: Accepted for grading | |
| /v1/assessments/attempts/{attemptId}: | |
| get: | |
| summary: Get assessment result | |
| parameters: | |
| - $ref: '#/components/parameters/AttemptId' | |
| responses: | |
| '200': | |
| description: Result | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/AssessmentAttemptResult' | |
| /v1/learners/{learnerId}/dashboard: | |
| get: | |
| summary: Get learner dashboard | |
| parameters: | |
| - $ref: '#/components/parameters/LearnerId' | |
| responses: | |
| '200': | |
| description: Dashboard | |
| content: | |
| application/json: | |
| schema: | |
| $ref: '#/components/schemas/LearnerDashboard' | |
| components: | |
| parameters: | |
| LearnerId: | |
| in: path | |
| name: learnerId | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| ModuleId: | |
| in: path | |
| name: moduleId | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| AssessmentId: | |
| in: path | |
| name: assessmentId | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| AttemptId: | |
| in: path | |
| name: attemptId | |
| required: true | |
| schema: | |
| type: string | |
| format: uuid | |
| schemas: | |
| RegisterLearnerRequest: | |
| type: object | |
| required: [email, firstName, lastName, timezone, educationalLevel, goals, priorLearning] | |
| properties: | |
| email: | |
| type: string | |
| format: email | |
| firstName: | |
| type: string | |
| lastName: | |
| type: string | |
| timezone: | |
| type: string | |
| educationalLevel: | |
| type: string | |
| priorLearning: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/PriorLearningItem' | |
| goals: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/LearnerGoal' | |
| preferences: | |
| $ref: '#/components/schemas/LearnerPreferences' | |
| LearnerRegistrationResponse: | |
| type: object | |
| properties: | |
| learnerId: | |
| type: string | |
| format: uuid | |
| nextStep: | |
| type: string | |
| PriorLearningItem: | |
| type: object | |
| properties: | |
| learningType: | |
| type: string | |
| enum: [formal, non_formal, informal] | |
| title: | |
| type: string | |
| provider: | |
| type: string | |
| description: | |
| type: string | |
| LearnerGoal: | |
| type: object | |
| properties: | |
| goalHorizon: | |
| type: string | |
| enum: [short_term, long_term] | |
| goalText: | |
| type: string | |
| targetDate: | |
| type: string | |
| format: date | |
| LearnerPreferences: | |
| type: object | |
| properties: | |
| preferredModalities: | |
| type: array | |
| items: | |
| type: string | |
| preferredSessionLengthMinutes: | |
| type: integer | |
| DiagnosticSubmission: | |
| type: object | |
| properties: | |
| responses: | |
| type: array | |
| items: | |
| type: object | |
| additionalProperties: true | |
| LearnerProfile: | |
| type: object | |
| properties: | |
| learnerId: | |
| type: string | |
| format: uuid | |
| readinessLevel: | |
| type: string | |
| readinessScore: | |
| type: number | |
| masteryMap: | |
| type: object | |
| additionalProperties: true | |
| UpdateLearnerProfileRequest: | |
| type: object | |
| properties: | |
| goals: | |
| type: array | |
| items: | |
| $ref: '#/components/schemas/LearnerGoal' | |
| preferences: | |
| $ref: '#/components/schemas/LearnerPreferences' | |
| ModuleDetail: | |
| type: object | |
| properties: | |
| id: | |
| type: string | |
| format: uuid | |
| title: | |
| type: string | |
| description: | |
| type: string | |
| objectives: | |
| type: array | |
| items: | |
| type: object | |
| additionalProperties: true | |
| units: | |
| type: array | |
| items: | |
| type: object | |
| additionalProperties: true | |
| completionCriteria: | |
| type: object | |
| additionalProperties: true | |
| RecommendationItem: | |
| type: object | |
| properties: | |
| moduleId: | |
| type: string | |
| format: uuid | |
| rank: | |
| type: integer | |
| score: | |
| type: number | |
| reasons: | |
| type: array | |
| items: | |
| type: string | |
| InteractionEvent: | |
| type: object | |
| properties: | |
| learnerId: | |
| type: string | |
| format: uuid | |
| moduleId: | |
| type: string | |
| format: uuid | |
| unitId: | |
| type: string | |
| format: uuid | |
| activityId: | |
| type: string | |
| format: uuid | |
| eventType: | |
| type: string | |
| eventTimestamp: | |
| type: string | |
| format: date-time | |
| durationMs: | |
| type: integer | |
| payload: | |
| type: object | |
| additionalProperties: true | |
| AssessmentAttempt: | |
| type: object | |
| properties: | |
| attemptId: | |
| type: string | |
| format: uuid | |
| assessmentId: | |
| type: string | |
| format: uuid | |
| timeLimitMinutes: | |
| type: integer | |
| items: | |
| type: array | |
| items: | |
| type: object | |
| additionalProperties: true | |
| AssessmentResponseSubmission: | |
| type: object | |
| properties: | |
| responses: | |
| type: array | |
| items: | |
| type: object | |
| additionalProperties: true | |
| AssessmentAttemptResult: | |
| type: object | |
| properties: | |
| attemptId: | |
| type: string | |
| format: uuid | |
| score: | |
| type: number | |
| passStatus: | |
| type: string | |
| integrityStatus: | |
| type: string | |
| humanReviewRequired: | |
| type: boolean | |
| LearnerDashboard: | |
| type: object | |
| properties: | |
| learnerId: | |
| type: string | |
| format: uuid | |
| timeOnTaskMinutes7d: | |
| type: number | |
| dropoutRisk: | |
| type: number | |
| successProbability: | |
| type: number | |
| adaptiveFeedback: | |
| type: array | |
| items: | |
| type: string | |