Production-ready AWS CodePipelines from TypeScript, CLI, or a single AI prompt. 124 reusable plugins, per-org compliance enforcement, multi-tenant isolation, and zero vendor lock-in.
REST API for managing pipelines, plugins, and reporting. All services run behind an Nginx gateway that handles TLS termination and JWT validation.
| Related docs: Environment Variables | Plugin Catalog | AWS Deployment |
All requests require two headers:
| Header | Description |
|---|---|
Authorization |
Bearer <JWT> – obtained from the platform login endpoint |
x-org-id |
Organization ID – scopes the request to a specific tenant |
Tokens expire after 24 hours by default (configurable via JWT_EXPIRES_IN). Use the refresh token endpoint to obtain a new access token without re-authenticating.
| Method | Endpoint | Description |
|---|---|---|
GET |
/pipelines |
List pipelines (filterable, paginated) |
GET |
/pipelines/find |
Find one pipeline by query |
GET |
/pipelines/:id |
Get by ID |
POST |
/pipelines |
Create pipeline |
PUT |
/pipelines/:id |
Update pipeline |
DELETE |
/pipelines/:id |
Delete pipeline |
GET |
/pipelines/providers |
List AI providers |
POST |
/pipelines/generate |
AI-generate pipeline from prompt |
| Method | Endpoint | Description |
|---|---|---|
GET |
/plugins |
List plugins (filterable, paginated) |
GET |
/plugins/find |
Find one plugin by query |
GET |
/plugins/:id |
Get by ID |
POST |
/plugins |
Upload plugin (ZIP multipart) |
PUT |
/plugins/:id |
Update plugin |
DELETE |
/plugins/:id |
Delete plugin |
GET |
/plugins/providers |
List AI providers |
POST |
/plugins/generate |
AI-generate plugin from prompt |
POST |
/plugins/deploy-generated |
Build and deploy AI-generated plugin |
GET |
/plugins/queue/status |
Build queue counts (admin only) |
GET |
/plugins/queue/failed |
Failed build jobs (admin only) |
GET |
/plugins/queue/dlq |
Dead letter queue jobs (admin only) |
DELETE |
/plugins/queue/dlq |
Purge all DLQ jobs (admin only) |
| Parameter | Type | Default | Description |
|---|---|---|---|
limit |
int | 10 |
Page size (1-100) |
offset |
int | 0 |
Records to skip |
sortBy |
string | createdAt |
Sort field |
sortOrder |
asc/desc |
desc |
Sort direction |
accessModifier |
public/private |
— | Filter by visibility |
isActive |
boolean | — | Filter by active status |
isDefault |
boolean | — | Filter by default status |
Upload:
curl -X POST https://localhost:8443/api/plugins \
-H "Authorization: Bearer $TOKEN" \
-H "x-org-id: $ORG_ID" \
-F "plugin=@./my-plugin.zip" \
-F "accessModifier=private"
List / Find:
curl "https://localhost:8443/api/plugins?name=node-build&limit=10" \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID"
curl "https://localhost:8443/api/plugins/find?name=node-build&version=1.0.0" \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID"
Update:
curl -X PUT "https://localhost:8443/api/plugins/<id>" \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{"description": "Updated plugin", "computeType": "LARGE", "isDefault": true}'
Delete:
curl -X DELETE "https://localhost:8443/api/plugins/<id>" \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID"
Create:
curl -X POST https://localhost:8443/api/pipelines \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"project": "my-app",
"organization": "my-org",
"pipelineName": "my-app-pipeline",
"accessModifier": "private",
"props": {
"project": "my-app",
"organization": "my-org",
"synth": {
"source": {
"type": "github",
"options": { "repo": "my-org/my-app", "branch": "main" }
},
"plugin": { "name": "cdk-synth", "version": "1.0.0" }
}
}
}'
List / Find:
curl "https://localhost:8443/api/pipelines?project=my-app&limit=10" \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID"
curl "https://localhost:8443/api/pipelines/find?project=my-app&organization=my-org" \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID"
Generate pipeline:
curl -X POST https://localhost:8443/api/pipelines/generate \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Build a Node.js app from GitHub, run tests, and deploy with CDK",
"provider": "anthropic",
"model": "claude-sonnet-4-20250514"
}'
Generate + deploy plugin:
# Step 1: Generate
curl -X POST https://localhost:8443/api/plugins/generate \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A Node.js 20 build plugin that runs npm ci, npm test, and npm run build",
"provider": "anthropic",
"model": "claude-sonnet-4-20250514"
}'
# Step 2: Deploy (review/edit the generated output, then submit)
curl -X POST https://localhost:8443/api/plugins/deploy-generated \
-H "Authorization: Bearer $TOKEN" -H "x-org-id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "nodejs-build",
"version": "1.0.0",
"commands": ["npm run build"],
"installCommands": ["npm ci"],
"dockerfile": "FROM node:20-slim\n..."
}'
All API responses follow a consistent format:
Success:
{
"success": true,
"data": { ... }
}
Paginated:
{
"success": true,
"data": [ ... ],
"pagination": {
"total": 42,
"limit": 10,
"offset": 0,
"hasMore": true
}
}
Error:
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Pipeline not found"
}
}
Pipeline execution and plugin build analytics. Time ranges default to the last 30 days. See AWS Deployment – Report API Endpoints for the full endpoint list with query parameters.
| Method | Endpoint | Description |
|---|---|---|
GET |
/reports/execution/count |
Execution count per pipeline with status breakdown |
GET |
/reports/execution/success-rate |
Pass/fail rate over time |
GET |
/reports/execution/duration |
Avg/min/max/p95 execution duration |
GET |
/reports/execution/stage-failures |
Stage failure heatmap |
GET |
/reports/execution/stage-bottlenecks |
Slowest stages per pipeline |
GET |
/reports/execution/errors |
Error categorization (top N) |
GET |
/reports/plugins/summary |
Plugin inventory stats |
GET |
/reports/plugins/build-success-rate |
Docker build success rate over time |
GET |
/reports/plugins/build-duration |
Build time per plugin |
GET |
/reports/plugins/build-failures |
Build failure reasons (top N) |