API Reference¶
Base URL: http://conductor-e-api:8080 (internal ClusterIP)
Endpoints¶
Health¶
Submit Event¶
Submit any rig event. The stream ID is derived from repo#issueNumber for issue events, or agentId for heartbeats.
Request:
{
"type": "ISSUE_APPROVED",
"repo": "Stig-Johnny/star-rewards",
"issueNumber": 547,
"title": "feat: Add Firestore rules CI check",
"priority": "normal",
"dependsOn": []
}
Response (200):
{
"streamId": "Stig-Johnny/star-rewards#547",
"type": "ISSUE_APPROVED",
"timestamp": "2026-04-02T06:56:22Z"
}
Error (400):
See Event Store for all event types and their fields.
Get Issues¶
Returns all tracked issues, optionally filtered by state.
States: queued, assigned, in_progress, in_review, deploying, done, failed
Get Priority Queue¶
Returns unassigned issues sorted by priority (critical > high > normal > oldest).
Get Next Assignment¶
Returns the top-priority unassigned issue, or 204 No Content if nothing available.
Response (200):
{
"streamId": "Stig-Johnny/star-rewards#547",
"issue": {
"number": 547,
"repo": "Stig-Johnny/star-rewards",
"title": "feat: Add Firestore rules CI check",
"milestone": null
},
"priority": "normal",
"attempt": 1
}
Get Agent Status¶
Returns status of all known agents (populated by heartbeat events).
Get Event Stream¶
Returns all events for a specific stream. The id parameter must be URL-encoded (use %23 for #).
Response:
[
{
"id": "uuid",
"type": "IssueApproved",
"data": { "repo": "...", "issueNumber": 547, "title": "..." },
"timestamp": "2026-04-02T06:56:22Z"
}
]
Architecture¶
POST /api/events → SubmitEvent (Use Case) → IEventStore (Port) → MartenEventStore (Adapter) → PostgreSQL
GET /api/queue → IIssueQuery (Port) → MartenIssueQuery (Adapter) → PostgreSQL (Marten projection)
Clean Architecture: endpoints delegate to use cases/ports, never touch Marten directly.