Versions — API Reference
Package: dodil.ignite.v1 · Service: ComputeService
A version is an immutable, numbered snapshot produced by PublishDraft. The app’s active_version is the one that serves traffic; rolling back just repoints it at an older version — nothing is rewritten. The per-version type is AppVersionInfo, which snapshots the resource tier, scaling, and runtime as they were at publish time. Mutable code lives in the draft (version 0).
gRPC reaches every method at dodil.ignite.v1.ComputeService/<Method> on $IGNITE_GRPC; the HTTP gateway mirrors each one. See Conventions → Using gRPC for grpcurl setup. gRPC requests use the proto field names (snake_case); HTTP uses pbjson (camelCase). Responses render camelCase.
| RPC | HTTP |
|---|---|
ListAppVersions | GET /v1/ignite/app/{organization_name}/{app_name}/versions |
GetAppVersion | GET /v1/ignite/app/{organization_name}/{app_name}/versions/{version} |
RollbackApp | POST /v1/ignite/app/{organization_name}/{app_name}/rollback |
TestAppVersion | POST /v1/ignite/app/{organization_name}/{app_name}/versions/{version}/test |
GetAppCode | GET /v1/ignite/app/{organization_name}/{app_name}/code/versions/{version} |
ListAppVersions
Lists every published version of an app, newest-relevant first, each as an AppVersionInfo.
Request
HTTP
curl -sS "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/versions" \
-H "Authorization: Bearer $DODIL_TOKEN"Response
HTTP
{
"versions": [
{
"version": 4,
"codeHash": "9f1c2a7e",
"createdAtMs": "1716900300000",
"status": "VERSION_STATUS_ACTIVE",
"resourceTier": "RESOURCE_TIER_MEDIUM",
"runtime": { "rust": { "target": "RUST_COMPILATION_TARGET_NATIVE", "toolchainVersion": "1.82" } }
},
{
"version": 3,
"codeHash": "1b8e4d02",
"createdAtMs": "1716800000000",
"status": "VERSION_STATUS_SUPERSEDED"
}
]
}GetAppVersion
Returns the metadata for one specific version as an AppMeta snapshot.
Request
HTTP
curl -sS "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/versions/3" \
-H "Authorization: Bearer $DODIL_TOKEN"Response
GetAppVersionResponse { AppMeta app = 1; } — the AppMeta for that version.
RollbackApp
Repoints active_version at an older version. The target becomes the version serving traffic; use ListAppVersions first to find a valid target.
Request
HTTP
curl -sS -X POST "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/rollback" \
-H "Authorization: Bearer $DODIL_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"targetVersion": 3
}'Response
HTTP
{
"app": { "id": "acme-corp/my-data-processor", "name": "my-data-processor", "activeVersion": 3 }
}TestAppVersion
Runs a specific version against a payload without promoting it. The target version must have DRAFT status. Returns an execution_id — use GetExecution to retrieve status and output.
Request
HTTP
# `payload` is the JSON input, base64-encoded (here: {"name":"world"}).
curl -sS -X POST "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/versions/5/test" \
-H "Authorization: Bearer $DODIL_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payload": "eyJuYW1lIjoid29ybGQifQ=="
}'Response
HTTP
{
"executionId": "exec-8b21cd",
"appId": "acme-corp/my-data-processor",
"version": 5
}GetAppCode
Returns the source files for a version, for display. Pass version = 0 for the current/latest version. The HTTP gateway also accepts .../code (no version) as the latest.
Request
HTTP
curl -sS "https://api.dev.dodil.io/v1/ignite/app/acme-corp/my-data-processor/code/versions/4" \
-H "Authorization: Bearer $DODIL_TOKEN"Response
HTTP
{
"codeFormat": "CODE_FORMAT_INTERNAL_SOURCE",
"version": 4,
"codeHash": "9f1c2a7e",
"files": [
{
"path": "src/main.rs",
"content": "dXNlIGlnbml0ZTo6cHJlbHVkZTo6Kjsg...",
"isBinary": false,
"sizeBytes": "412"
}
]
}See also
- Apps — create, configure, inspect apps
- Drafts — attach code, compile, publish
- Invocation — invoke an app, track executions
- Core Concepts —
AppVersionInfo, versions, and the active version grpcurlreference — flags + reflection fallbacks