Overrides API
The Overrides API supports two operations: list overrides, and set overrides.
All operations require an "Authorization" header, as described in API authentication.
List overrides
To list overrides for a snap name, perform a GET
request to /v2/metadata/overrides/{snap_name}
:
Example: to list overrides for snap_a
:
Request:
GET /v2/metadata/overrides/snap_a HTTP/1.1 Host: <store domain> Accept: application/json X-Ubuntu-Series: 16
Note the X-Ubuntu-Series
header.
Response:
HTTP/1.1 200 OK Content-Type: application/json ... { "overrides": [ { "snap_id": ..., "snap_name": "snap_a", "revision": 20, "upstream_revision": 23, "channel": "stable", "architecture": "x86", "series": "16" } ] }
The JSON Schema for the response document is:
{ "type": "object", "properties": { "overrides": { "type": "array", "items": { "type": "object", "properties": { "snap_id": {"type": "string"}, "snap_name": {"type": "string"}, "revision": { "type": "integer", "minimum": 1, }, "upstream_revision": { "type": ["integer", "null"], "minimum": 1, }, "channel": {"type": "string"}, "architecture": {"type": "string"}, "series": {"type": "string"}, }, "required": [ "snap_id", "snap_name", "revision", "upstream_revision", "channel", "architecture", "series", ], "additionalProperties": False, }, }, }, "required": ["overrides"], "additionalProperties": False, }
Set overrides
To set overrides, perform a POST
request to /v2/metadata/overrides
.
Example: override snap_a
to revision 20 on the stable channel, and remove any
overrides for snap_b
on the candidate channel.
Request:
POST /v2/metadata/overrides HTTP/1.1 Host: <store domain> Accept: application/json Content-Type: application/json [ { "snap_name": "snap_a", "revision": 20, "channel": "stable", "series": "16" }, { "snap_name": "snap_b", "revision": null, "channel": "candidate", "series": "16" } ]
Response:
HTTP/1.1 200 OK Content-Type: application/json ... { "overrides": [ { "snap_id": ..., "snap_name": "snap_a", "revision": 20, "upstream_revision": 23, "channel": "stable", "architecture": "x86", "series": "16" }, { "snap_id": ..., "snap_name": "snap_b", "revision": null, "upstream_revision": 13, "channel": "candidate", "architecture": "x86", "series": "16" } ] }
The request body format should match the following JSON schema.
{ "type": "array", "items": { "type": "object", "properties": { "snap_name": {"type": "string"}, "revision": { "type": ["integer", "null"], "minimum": 1, }, "channel": {"type": "string"}, "series": {"type": "string"}, }, "required": ["snap_name", "revision", "channel", "series"], "additionalProperties": False, }, "minItems": 1, }
To delete an override, simply set its revision field to null
. The "series" field
must be set to "16" currently.
The response includes the results of the operation. The response format is the
same as for listing overrides, except that "revision" can be null
if an
override was deleted.