Download OpenAPI specification:
OpenAPI source of truth for SkillBridge backend routes deployed via API Gateway.
Adds an email to the waitlist or confirms existing enrollment.
| email required | string <email> |
{- "email": "learner@example.com"
}{- "message": "Added to waitlist",
- "status": "accepted"
}| title required | string |
| description | string |
| tokenCost required | integer >= 0 |
| difficulty | string Enum: "beginner" "intermediate" "advanced" |
| estimatedDuration | integer >= 1 |
| amiId | string |
| instanceType | string |
| autoStopDurationHours | integer >= 1 |
{- "title": "string",
- "description": "string",
- "tokenCost": 0,
- "difficulty": "beginner",
- "estimatedDuration": 1,
- "amiId": "string",
- "instanceType": "string",
- "autoStopDurationHours": 1
}{- "labId": "string",
- "title": "string",
- "description": "string",
- "tokenCost": 0,
- "difficulty": "beginner",
- "estimatedDuration": 1,
- "amiId": "string",
- "instanceType": "string",
- "autoStopDurationHours": 1,
- "status": "string"
}| labId required | string SkillBridge lab identifier |
{- "labId": "string",
- "title": "string",
- "description": "string",
- "tokenCost": 0,
- "difficulty": "beginner",
- "estimatedDuration": 1,
- "amiId": "string",
- "instanceType": "string",
- "autoStopDurationHours": 1,
- "status": "string"
}| labId required | string SkillBridge lab identifier |
| title required | string |
| description | string |
| tokenCost required | integer >= 0 |
| difficulty | string Enum: "beginner" "intermediate" "advanced" |
| estimatedDuration | integer >= 1 |
| amiId | string |
| instanceType | string |
| autoStopDurationHours | integer >= 1 |
{- "title": "string",
- "description": "string",
- "tokenCost": 0,
- "difficulty": "beginner",
- "estimatedDuration": 1,
- "amiId": "string",
- "instanceType": "string",
- "autoStopDurationHours": 1
}{- "labId": "string",
- "title": "string",
- "description": "string",
- "tokenCost": 0,
- "difficulty": "beginner",
- "estimatedDuration": 1,
- "amiId": "string",
- "instanceType": "string",
- "autoStopDurationHours": 1,
- "status": "string"
}| labId required | string |
| userId | string |
{- "labId": "lab-linux-basics",
- "userId": "user-123"
}{- "executionId": "exec-8f1a21",
- "instanceId": "i-0aa11bb22cc33dd44",
- "status": "starting",
- "holdTransactionId": "tx-hold-1122"
}| executionId required | string |
| instanceId | string |
{- "executionId": "string",
- "instanceId": "string"
}{- "executionId": "string",
- "status": "string"
}| executionId required | string |
| instanceId | string |
{- "executionId": "string",
- "instanceId": "string"
}{- "sessionId": "string",
- "tokenValue": "string"
}| sessionId required | string |
{- "sessionId": "string"
}{- "message": "string",
- "status": "string"
}| executionId required | string Lab execution identifier |
{- "executionId": "string",
- "labId": "string",
- "userId": "string",
- "status": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "instanceId": "string",
- "publicIpAddress": "string"
}| userId required | string SkillBridge user identifier |
| status | string |
| limit | integer [ 1 .. 100 ] |
{- "items": [
- {
- "executionId": "string",
- "labId": "string",
- "userId": "string",
- "status": "string",
- "createdAt": 0,
- "updatedAt": 0
}
], - "count": 0
}| code required | string |
{- "code": "SB-2026-STARTER"
}{- "tokensAdded": 50,
- "newBalance": 130,
- "code": "SB-2026-STARTER",
- "status": "redeemed"
}| packId required | string |
{- "packId": "string"
}{- "packId": "string",
- "tokensAdded": 0,
- "newBalance": 0,
- "transactionId": "string"
}| userId required | string |
| amount required | integer >= 1 |
| reason | string |
{- "userId": "user-123",
- "amount": 75,
- "reason": "Promo support"
}{- "userId": "user-123",
- "credited": 75,
- "newBalance": 205,
- "txId": "tx-credit-9911"
}| amount required | integer >= 1 |
| count required | integer >= 1 |
| description | string |
| expiresAt | integer <int64> |
{- "amount": 1,
- "count": 1,
- "description": "string",
- "expiresAt": 0
}{- "batchId": "string",
- "count": 0,
- "codes": [
- "string"
]
}| packId required | string |
| totalTokens required | integer >= 1 |
| priceMock | string |
| description | string |
| category | string |
| isActive | boolean |
| sortOrder | integer |
{- "packId": "string",
- "totalTokens": 1,
- "priceMock": "string",
- "description": "string",
- "category": "string",
- "isActive": true,
- "sortOrder": 0
}{- "packId": "string",
- "totalTokens": 1,
- "priceMock": "string",
- "description": "string",
- "category": "string",
- "isActive": true,
- "sortOrder": 0
}| code required | string Voucher code identifier |
{- "code": "string",
- "tokenValue": 0,
- "status": "string",
- "createdAt": 0,
- "expiresAt": 0,
- "redeemedBy": "string",
- "redeemedAt": 0,
- "batchId": "string"
}{- "success": true,
- "packs": [
- {
- "packId": "string",
- "totalTokens": 1,
- "priceMock": "string",
- "description": "string",
- "category": "string",
- "isActive": true,
- "sortOrder": 0
}
], - "count": 0,
- "total": 0
}| packId required | string Token pack identifier |
| totalTokens | integer >= 1 |
| priceMock | string |
| description | string |
| category | string |
| isActive | boolean |
| sortOrder | integer |
{- "totalTokens": 1,
- "priceMock": "string",
- "description": "string",
- "category": "string",
- "isActive": true,
- "sortOrder": 0
}{- "packId": "string",
- "totalTokens": 1,
- "priceMock": "string",
- "description": "string",
- "category": "string",
- "isActive": true,
- "sortOrder": 0
}| userId required | string SkillBridge user identifier |
| groupName required | string |
{- "groupName": "admins"
}{- "message": "string",
- "status": "string"
}