Download OpenAPI specification:Download
API documentation for DeepSkill Strapi backend including custom routes
Analytics data for programs including enrollment, completion, and survey filters
| timeframe | string Default: "30d" Enum: "7d" "30d" "90d" "1y" Time period for analytics data |
| status | string Enum: "active" "completed" "paused" Filter by program status |
Find and match the most suitable coach for a specific user based on their preferences, goals, and availability
| userId required | string Unique identifier of the user requesting coach matching |
| preferences | string User preferences for coach matching (JSON string) |
| goals | string User goals and focus areas (JSON string) |
| availability | string User availability preferences (JSON string) |
{- "data": {
- "matches": [
- {
- "coach": {
- "id": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "specialties": [
- "string"
], - "rating": 0,
- "experience": 0
}, - "matchScore": 0,
- "reasons": [
- "string"
]
}
], - "totalMatches": 0,
- "searchCriteria": { }
}, - "meta": {
- "userId": "string",
- "searchTime": "2019-08-24T14:15:22Z",
- "algorithmVersion": "string"
}
}Retrieve all learners assigned to a specific coach with their progress and session information
| id required | string Unique identifier of the coach |
| include | string Additional data to include (progress, sessions, etc.) |
| status | string Enum: "active" "completed" "paused" Filter learners by status |
{- "data": {
- "coach": {
- "id": "string",
- "firstName": "string",
- "lastName": "string"
}, - "learners": [
- {
- "id": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "status": "string",
- "progress": { },
- "lastSession": "2019-08-24T14:15:22Z"
}
], - "totalLearners": 0
}, - "meta": {
- "coachId": "string",
- "generated_at": "2019-08-24T14:15:22Z"
}
}Retrieve all learners assigned to the current authenticated user's coach profile
| include | string Additional data to include (progress, sessions, etc.) |
| status | string Enum: "active" "completed" "paused" Filter learners by status |
{- "data": {
- "learners": [
- {
- "id": "string",
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "status": "string",
- "progress": { },
- "lastSession": "2019-08-24T14:15:22Z"
}
], - "totalLearners": 0
}, - "meta": {
- "generated_at": "2019-08-24T14:15:22Z"
}
}Retrieve Calendly events information for a specific learner including scheduled sessions and availability
| learnerId | string Unique identifier of the learner |
| coachId | string Unique identifier of the coach |
object Date range for events |
{- "learnerId": "string",
- "coachId": "string",
- "dateRange": {
- "start": "2019-08-24",
- "end": "2019-08-24"
}
}{- "data": {
- "events": [
- {
- "id": "string",
- "title": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "status": "string",
- "attendees": [
- { }
]
}
], - "totalEvents": 0
}, - "meta": {
- "learnerId": "string",
- "coachId": "string",
- "dateRange": { },
- "generated_at": "2019-08-24T14:15:22Z"
}
}Returns paginated coach analytics for the Coach Pool. Supports industry filtering with OR/AND logic.
| page | integer Default: 1 Page number |
| pageSize | integer Default: 100 Number of coaches per page (max 100) |
| sort | string Default: "firstName:asc" Sort field and order (e.g. firstName:asc, lastName:desc) |
| industries | string One or more industry titles to filter by. Pass comma-separated titles for multiple selections (e.g. Healthcare,Retail). Titles that contain commas themselves (e.g. "Education, Research") are supported. Valid values are listed in meta.filterOptions.industries. |
| industriesLogic | string Default: "or" Enum: "or" "and" How multiple selected industries are combined. "or" returns coaches with experience in at least one selected industry (default). "and" returns coaches with experience in all selected industries. |
| hideDeepskillCoaches | boolean Exclude coaches with @deepskill.com email addresses |
{- "data": [
- { }
], - "meta": {
- "pagination": {
- "page": 0,
- "pageSize": 0,
- "pageCount": 0,
- "total": 0
}, - "appliedFilters": {
- "industries": [
- "string"
], - "industriesLogic": "or"
}, - "filterOptions": { }
}
}Returns analytics for one coach by ID. Accepts the same filter query parameters as /coach-analytics.
| id required | integer Coach ID |
| industries | string One or more industry titles to filter by. See /coach-analytics for parsing rules and valid values in meta.filterOptions.industries. |
| industriesLogic | string Default: "or" Enum: "or" "and" How multiple selected industries are combined. "or" (default) matches at least one; "and" matches all selected industries. |
{- "data": [
- { }
], - "meta": {
- "appliedFilters": {
- "industries": [
- "string"
], - "industriesLogic": "or"
}
}
}Accepts the request and generates content in the background for each skill chapter and target group using LLM v2. Uses the program's saved customPrompt for the given locale. Requires Learning or Learning-Tester role.
| programId required | integer |
| locale | string Default: "de" |
{- "programId": 0,
- "locale": "de"
}Persists the custom prompt on the program for the given locale. Requires Learning or Learning-Tester role.
| programId required | integer |
| customPrompt required | string |
| locale | string Default: "de" |
{- "programId": 0,
- "customPrompt": "string",
- "locale": "de"
}Save a one-time 5-star rating for an e-learning chapter or podcast episode. The authenticated user is taken from the JWT; do not send user in the body. Submitted ratings are final and cannot be edited. Duplicate submissions are rejected.
| type required | string Enum: "ELEARNING_CHAPTER" "PODCAST" Content rating type |
| skill required | integer Skill id the content belongs to |
| foreignId | string Chapter id; required when type is ELEARNING_CHAPTER |
| rating required | integer [ 1 .. 5 ] Star rating from 1 to 5 |
{- "type": "ELEARNING_CHAPTER",
- "skill": 7,
- "foreignId": "chapter-123",
- "rating": 5
}{- "message": "Successfully saved rating.",
- "data": { }
}Returns existing e-learning chapter and podcast ratings for the given user and skill. Used to hydrate read-only rating state on page load. Only the authenticated user may request their own ratings; userId must match the JWT subject.
| userId required | integer Authenticated learner user id |
| skillId required | integer Skill id to load ratings for |
{- "chapters": [
- {
- "foreignId": "chapter-123",
- "rating": 5
}
], - "podcast": {
- "rating": 4
}
}Reads all tailored descriptions on every chapter of the given skill and updates display_name from targetGroup.title and industry.title. Requires Learning or Learning-Tester role.
| skillId required | integer Skill ID |
| locale | string Default: "de" Skill locale to process |
{- "skillId": 0,
- "locale": "string",
- "updated": 0,
- "descriptions": [
- {
- "id": 0,
- "chapterId": 0,
- "display_name": "string"
}
]
}Adds one empty description for each of the four available target groups to every chapter of the requested skills. Existing descriptions are preserved. Requires Learning or Learning-Tester role.
required | integer or Array of integers |
| locale | string Default: "de" |
{- "skillIds": 0,
- "locale": "de"
}