This document defines the external API compatibility boundary for Aetheris 2.x.
- Stable APIs: backward-compatible across
2.xminors and patches - Experimental APIs: may change in minor releases
- Internal packages (
internal/) are out of compatibility scope
- Major (
x.0.0): may include breaking changes - Minor (
0.x.0): backward-compatible feature additions - Patch (
0.0.x): bug fixes and non-breaking behavior fixes
Compatibility window:
- Stable APIs are guaranteed across all
2.x - Deprecated stable APIs are supported for at least 2 minor versions before removal
POST /api/agents/:id/message(legacy facade)GET /api/jobs/:idPOST /api/jobs/:id/stopPOST /api/jobs/:id/signalPOST /api/jobs/:id/messageGET /api/jobs/:id/eventsGET /api/jobs/:id/traceGET /api/jobs/:id/replayGET /api/jobs/:id/verifyPOST /api/jobs/:id/export
POST /api/runs(canonical submission)GET /api/runs/:idGET /api/runs/:id/eventsPOST /api/runs/:id/tool-callsPOST /api/runs/:id/pausePOST /api/runs/:id/resumePOST /api/runs/:id/human-decisions
POST /api/agentsGET /api/agentsGET /api/agents/:id/statePOST /api/agents/:id/resumePOST /api/agents/:id/stopGET /api/agents/:id/jobsGET /api/agents/:id/jobs/:job_id
POST /api/documents/uploadPOST /api/documents/upload/asyncGET /api/documents/upload/status/:task_idGET /api/documents/GET /api/documents/:idDELETE /api/documents/:id
GET /api/knowledge/collectionsPOST /api/knowledge/collectionsDELETE /api/knowledge/collections/:id
GET /api/observability/summaryGET /api/observability/stuckGET /api/jobs/:id/trace/pageGET /api/jobs/:id/trace/cognitionGET /api/jobs/:id/nodes/:node_idGET /api/trace/overview/page
POST /api/forensics/queryPOST /api/forensics/batch-exportGET /api/forensics/export-status/:task_idGET /api/forensics/consistency/:job_id
GET /api/jobs/:id/evidence-graphGET /api/jobs/:id/audit-log
GET /api/rbac/rolePOST /api/rbac/rolePOST /api/rbac/check
GET /api/toolsGET /api/tools/:name
GET /api/system/statusGET /api/system/metricsGET /api/system/workers
Experimental APIs may change without major bump, but should be noted in release notes:
- New endpoints not listed in Section 3
- Optional response fields marked experimental in docs/release notes
- Adapter-specific runtime internals
For stable endpoints:
- Allowed:
- Add optional request fields
- Add optional response fields
- Add new non-default query parameters
- Not allowed in
2.x:- Remove required fields
- Rename existing fields
- Change field types incompatibly
- Change endpoint semantics incompatibly
When deprecating a stable API:
- Mark as deprecated in docs
- Add migration path in release notes
- Keep API available for >= 2 minor versions
- Remove only in next major, or after window with explicit notice
Example:
- Deprecated in
v2.2.0 - Earliest removal target:
v2.4.0(orv3.0.0)
POST /api/agents/:id/messageis retained as a compatibility facade.- Canonical submission path for new integrations is
POST /api/runs+GET /api/jobs/:id. - During migration,
/api/agents/:id/messagemay include optional response objectruntime_submissionwith fields such as:legacy_facade(bool)canonical_api(string)job_id(string)run_id(string, optional)run_status(created/best_effort/disabled)
A 2.x release should not be published unless:
- Contract docs are updated (
docs/api-contract.md) - Compatibility checks pass for stable endpoints (smoke + regression tests)
- Deprecations (if any) include migration guidance
- Release notes include API delta summary
docs/release-checklist-2.0.mddocs/upgrade-1.x-to-2.0.mddocs/runtime-guarantees.md