Jump to main content
Expand
Default

Default

root

Introduced in version 1

Summary: GET /

Return service description.

get_macaroon

Introduced in version 1

Summary: GET /v1/tokens

Return existing macaroons for the authenticated account.

If request is not authenticated, return a bakery v2 macaroon to be discharged by Candid.

get_macaroon changelog

  • Version 10: Return existing macaroons when authenticated

URL Parameters

{
  "properties": {
    "include-inactive": {
      "type": "string"
    }
  },
  "type": "object"
}
  • include-inactive

Response JSON Schema

{
  "additionalProperties": false,
  "oneOf": [
    {
      "required": [
        "macaroons"
      ]
    },
    {
      "required": [
        "macaroon"
      ]
    }
  ],
  "properties": {
    "macaroon": {
      "type": "string"
    },
    "macaroons": {
      "introduced_at": 10,
      "items": {
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "revoked-at": {
            "type": [
              "string",
              "null"
            ]
          },
          "revoked-by": {
            "type": [
              "string",
              "null"
            ]
          },
          "session-id": {
            "type": "string"
          },
          "valid-since": {
            "format": "date-time",
            "type": "string"
          },
          "valid-until": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "type": "object"
}

issue_macaroon

Introduced in version 1

Summary: POST /v1/tokens

Return a bakery v2 macaroon to be discharged by Candid.

issue_macaroon changelog

  • Version 9: Add optional attenuation input fields: “permissions”, “channels” and “packages”

  • Version 8: Add optional “description” input field

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "channels": {
      "introduced_at": 9,
      "items": {
        "description": "Valid channel name.",
        "type": "string"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "description": {
      "description": "Description to help identify the macaroon",
      "introduced_at": 8,
      "type": "string"
    },
    "packages": {
      "introduced_at": 9,
      "items": {
        "anyOf": [
          {
            "required": [
              "id",
              "type"
            ]
          },
          {
            "required": [
              "name",
              "type"
            ]
          }
        ],
        "description": "A dict with package type and one of name or id values.",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "enum": [
              "bin",
              "bundle",
              "charm",
              "rock",
              "snap",
              "sdk",
              "image",
              "kernos"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "permissions": {
      "introduced_at": 9,
      "items": {
        "enum": [
          "account-manage-keys",
          "account-manage-metadata",
          "account-register-package",
          "account-view-packages",
          "package-manage",
          "package-manage-acl",
          "package-manage-metadata",
          "package-manage-releases",
          "package-manage-revisions",
          "package-view",
          "package-view-acl",
          "package-view-metadata",
          "package-view-metrics",
          "package-view-releases",
          "package-view-revisions",
          "store-manage",
          "store-view",
          "account-post-messages"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "ttl": {
      "description": "Time to live, in seconds",
      "minimum": 10,
      "type": "integer"
    }
  },
  "type": "object"
}

Response JSON Schema

{
  "type": "object"
}

issue_usso_macaroon

Introduced in version 68

Summary: POST /v1/tokens/usso

Return a root macaroon to be discharged by Ubuntu SSO.

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "channels": {
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "packages": {
      "items": {
        "anyOf": [
          {
            "required": [
              "id",
              "type"
            ]
          },
          {
            "required": [
              "name",
              "type"
            ]
          }
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "enum": [
              "bin",
              "bundle",
              "charm",
              "rock",
              "rockcraft",
              "snap",
              "snapcraft",
              "bincraft",
              "charmcraft",
              "sdk",
              "image",
              "kernos"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "permissions": {
      "items": {
        "enum": [
          "account-manage-keys",
          "account-manage-metadata",
          "account-register-package",
          "account-view-packages",
          "package-manage",
          "package-manage-acl",
          "package-manage-metadata",
          "package-manage-releases",
          "package-manage-revisions",
          "package-view",
          "package-view-acl",
          "package-view-metadata",
          "package-view-metrics",
          "package-view-releases",
          "package-view-revisions",
          "store-manage",
          "store-view",
          "account-post-messages"
        ],
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "ttl": {
      "maximum": 31536000,
      "minimum": 10,
      "type": "integer"
    }
  },
  "required": [
    "ttl",
    "permissions"
  ],
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "macaroon": {
      "type": "string"
    }
  },
  "required": [
    "macaroon"
  ],
  "type": "object"
}

exchange_macaroons

Introduced in version 1

Summary: POST /v1/tokens/exchange

Return an exchanged snapstore-only authentication macaroon.

Request JSON Schema

{
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "macaroon": {
      "type": "string"
    }
  },
  "required": [
    "macaroon"
  ],
  "type": "object"
}

exchange_usso_macaroons

Introduced in version 69

Summary: POST /v1/tokens/usso/exchange

Return an exchanged snapstore-only token.

The root and discharge macaroons are expected in the Authorization header as such: Authorization: Macaroon root=<root-macaroon>, discharge=<discharge-macaroon>.

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "client-description": {
      "maxLength": 1024,
      "type": [
        "string",
        "null"
      ]
    }
  },
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "macaroon": {
      "type": "string"
    }
  },
  "required": [
    "macaroon"
  ],
  "type": "object"
}

offline_exchange_macaroon

Introduced in version 12

Summary: POST /v1/tokens/offline/exchange

Return an exchanged offline store specific admin authentication macaroon.

publishergw has to be configured for offline use with local publishing to enable this endpoint via offline_mode setting in the store section and store_admin_* settings in the auth section.

offline_exchange_macaroon changelog

  • Version 12: Added offline macaroon exchange API

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "macaroon": {
      "type": "string"
    }
  },
  "required": [
    "macaroon"
  ],
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "macaroon": {
      "type": "string"
    }
  },
  "required": [
    "macaroon"
  ],
  "type": "object"
}

revoke_macaroon

Introduced in version 1

Summary: POST /v1/tokens/revoke

Revoke an existing macaroon for the authenticated account.

revoke_macaroon changelog

  • Version 10: Added revoke macaroon API

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "session-id": {
      "type": "string"
    }
  },
  "required": [
    "session-id"
  ],
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "macaroons": {
      "introduced_at": 10,
      "items": {
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "revoked-at": {
            "type": [
              "string",
              "null"
            ]
          },
          "revoked-by": {
            "type": [
              "string",
              "null"
            ]
          },
          "session-id": {
            "type": "string"
          },
          "valid-since": {
            "format": "date-time",
            "type": "string"
          },
          "valid-until": {
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "macaroons"
  ],
  "type": "object"
}

macaroon_info

Introduced in version 11

Summary: GET /v1/tokens/whoami

Return information about the authenticated macaroon token.

macaroon_info changelog

  • Version 73: Added “brand-permissions” field to output

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "account": {
      "additionalProperties": false,
      "properties": {
        "display-name": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "username": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "validation": {
          "type": "string"
        }
      },
      "required": [
        "display-name",
        "id",
        "username"
      ],
      "type": "object"
    },
    "brand-permissions": {
      "additionalProperties": {
        "items": {
          "anyOf": [
            {
              "enum": [
                "create-model",
                "create-signing-key",
                "create-serial-policy",
                "create-hardware-identity",
                "create-remodel-allowlist",
                "read-brand",
                "read-model",
                "read-signing-key",
                "read-serial-policy",
                "read-hardware-identity",
                "read-serial-log",
                "read-remodel-allowlist",
                "update-brand",
                "update-model",
                "update-signing-key",
                "update-remodel-allowlist",
                "delete-brand",
                "delete-model",
                "delete-signing-key",
                "delete-serial-policy",
                "delete-hardware-identity",
                "delete-remodel-allowlist"
              ],
              "type": "string"
            },
            {
              "type": "string"
            }
          ]
        },
        "type": "array"
      },
      "introduced_at": 73,
      "type": "object"
    },
    "channels": {
      "oneOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ]
    },
    "packages": {
      "oneOf": [
        {
          "items": {
            "anyOf": [
              {
                "required": [
                  "id",
                  "type"
                ]
              },
              {
                "required": [
                  "name",
                  "type"
                ]
              }
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "bin",
                  "bundle",
                  "charm",
                  "rock",
                  "snap",
                  "sdk",
                  "image",
                  "kernos"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ]
    },
    "permissions": {
      "oneOf": [
        {
          "items": {
            "enum": [
              "account-manage-keys",
              "account-manage-metadata",
              "account-register-package",
              "account-view-packages",
              "package-manage",
              "package-manage-acl",
              "package-manage-metadata",
              "package-manage-releases",
              "package-manage-revisions",
              "package-view",
              "package-view-acl",
              "package-view-metadata",
              "package-view-metrics",
              "package-view-releases",
              "package-view-revisions",
              "store-manage",
              "store-view",
              "account-post-messages"
            ],
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "account",
    "channels",
    "packages",
    "permissions"
  ],
  "type": "object"
}

list_registered_names

Introduced in version 1

Summary: GET /v1/<namespace>

Return names registered by the authenticated user.

Passing ?include-collaborations=true will also include package names for which the user is a collaborator.

list_registered_names changelog

  • Version 76: Add support for kernos packages

  • Version 20: Added “tracks”, “guardrails” fields to VALIDATION_SCHEMA_PACKAGE output

  • Version 19: Added “default-track” field to output

  • Version 16: Added “links” field to output

  • Version 5: Added “media” field to output

URL Parameters

{
  "properties": {
    "fields": {
      "description": "A comma-separated list of fields to retrieve. Available fields: authority, contact, default-track, description, id, links, media, name, private, publisher, status, store, summary, title, track-guardrails, tracks, type, website.",
      "type": "string"
    },
    "include-collaborations": {
      "type": "string"
    }
  },
  "type": "object"
}
  • fields

    • description: A comma-separated list of fields to retrieve. Available fields: authority, contact, default-track, description, id, links, media, name, private, publisher, status, store, summary, title, track-guardrails, tracks, type, website.

  • include-collaborations

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "results": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "authority": {
            "type": [
              "string",
              "null"
            ]
          },
          "contact": {
            "type": [
              "string",
              "null"
            ]
          },
          "default-track": {
            "introduced_at": 19,
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "type": "string"
          },
          "links": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "introduced_at": 16,
            "type": [
              "object",
              "null"
            ]
          },
          "media": {
            "introduced_at": 5,
            "items": {
              "properties": {
                "type": {
                  "enum": [
                    "icon"
                  ],
                  "introduced_at": 5,
                  "type": "string"
                },
                "url": {
                  "introduced_at": 5,
                  "type": "string"
                }
              },
              "required": [
                "type",
                "url"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "private": {
            "type": "boolean"
          },
          "publisher": {
            "additionalProperties": false,
            "properties": {
              "display-name": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "email": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "username": {
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "validation": {
                "type": "string"
              }
            },
            "required": [
              "display-name",
              "id",
              "username"
            ],
            "type": "object"
          },
          "status": {
            "type": "string"
          },
          "store": {
            "type": "string"
          },
          "summary": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "track-guardrails": {
            "introduced_at": 20,
            "items": {
              "additionalProperties": false,
              "properties": {
                "created-at": {
                  "type": "string"
                },
                "pattern": {
                  "type": "string"
                }
              },
              "required": [
                "pattern",
                "created-at"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "tracks": {
            "introduced_at": 20,
            "items": {
              "additionalProperties": false,
              "properties": {
                "automatic-phasing-percentage": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "created-at": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "version-pattern": {
                  "oneOf": [
                    {
                      "type": "null"
                    },
                    {
                      "type": "string"
                    }
                  ]
                }
              },
              "required": [
                "name",
                "version-pattern",
                "created-at",
                "automatic-phasing-percentage"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "type": {
            "type": "string"
          },
          "website": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "results"
  ],
  "type": "object"
}

create_package_request

Introduced in version 77

Summary: POST /v1/<namespace>/package-requests

Request registration of a new bin or rock package.

Request JSON Schema

{
  "additionalProperties": false,
  "oneOf": [
    {
      "properties": {
        "origin-type": {
          "enum": [
            "private",
            "public"
          ]
        },
        "origin-url": {
          "type": "null"
        }
      }
    },
    {
      "properties": {
        "origin-type": {
          "enum": [
            "existing"
          ]
        },
        "origin-url": {
          "minLength": 1,
          "pattern": "\\S",
          "type": "string"
        }
      },
      "required": [
        "origin-url"
      ]
    }
  ],
  "properties": {
    "metadata": {
      "type": "object"
    },
    "origin-type": {
      "enum": [
        "private",
        "public",
        "existing"
      ],
      "type": "string"
    },
    "origin-url": {
      "type": [
        "string",
        "null"
      ]
    },
    "package-name": {
      "minLength": 1,
      "pattern": "\\S",
      "type": "string"
    },
    "upstream-name": {
      "minLength": 1,
      "pattern": "\\S",
      "type": "string"
    },
    "upstream-repo-url": {
      "minLength": 1,
      "pattern": "\\S",
      "type": "string"
    }
  },
  "required": [
    "package-name",
    "upstream-repo-url",
    "upstream-name",
    "origin-type"
  ],
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "oneOf": [
    {
      "properties": {
        "origin-type": {
          "enum": [
            "private",
            "public"
          ]
        },
        "origin-url": {
          "type": "null"
        }
      }
    },
    {
      "properties": {
        "origin-type": {
          "enum": [
            "existing"
          ]
        },
        "origin-url": {
          "minLength": 1,
          "pattern": "\\S",
          "type": "string"
        }
      },
      "required": [
        "origin-url"
      ]
    }
  ],
  "properties": {
    "created-at": {
      "format": "date-time",
      "type": "string"
    },
    "created-by": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "onboarded-at": {
      "format": "date-time",
      "type": [
        "string",
        "null"
      ]
    },
    "onboarding-status": {
      "enum": [
        "failed",
        "succeeded",
        null
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "origin-type": {
      "enum": [
        "private",
        "public",
        "existing"
      ],
      "type": "string"
    },
    "origin-url": {
      "type": [
        "string",
        "null"
      ]
    },
    "package-name": {
      "minLength": 1,
      "pattern": "\\S",
      "type": "string"
    },
    "package-type": {
      "enum": [
        "bin",
        "rock"
      ],
      "type": "string"
    },
    "review-status": {
      "enum": [
        "pending",
        "approved",
        "rejected"
      ],
      "type": "string"
    },
    "status-comment": {
      "description": "Review feedback requiring user action when the request is rejected.",
      "type": [
        "string",
        "null"
      ]
    },
    "updated-at": {
      "format": "date-time",
      "type": "string"
    },
    "upstream-name": {
      "minLength": 1,
      "pattern": "\\S",
      "type": "string"
    },
    "upstream-repo-url": {
      "minLength": 1,
      "pattern": "\\S",
      "type": "string"
    }
  },
  "required": [
    "id",
    "package-type",
    "package-name",
    "upstream-repo-url",
    "upstream-name",
    "origin-type",
    "origin-url",
    "metadata",
    "created-by",
    "review-status",
    "onboarding-status",
    "status-comment",
    "created-at",
    "updated-at",
    "onboarded-at"
  ],
  "type": "object"
}

register_name

Introduced in version 1

Summary: POST /v1/<namespace>

Register the specified name for the authenticated user.

The private attribute is deprecated and not allowed to be enabled for image, rock and bin packages.

register_name changelog

  • Version 76: Add support for kernos packages

  • Version 70: Remove optional “team” field

  • Version 4: Add optional “team” field

  • Version 3: Add optional “private” field

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "name": {
      "type": "string"
    },
    "private": {
      "default": false,
      "introduced_at": 3,
      "type": "boolean"
    },
    "type": {
      "enum": [
        "bin",
        "bundle",
        "charm",
        "rock",
        "snap",
        "sdk",
        "image",
        "kernos"
      ],
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}

package_metadata

Introduced in version 1

Summary: GET /v1/<namespace>/<name>

Get general metadata for a package.

package_metadata changelog

  • Version 76: Add support for kernos packages

  • Version 20: Added “tracks”, “guardrails” fields to output

  • Version 19: Added “default-track” field to output

  • Version 16: Added “links” field to output

  • Version 5: Added “media” field to output

URL Parameters

{
  "properties": {
    "fields": {
      "description": "A comma-separated list of fields to retrieve. Available fields: authority, contact, default-track, description, id, links, media, name, private, publisher, status, store, summary, title, track-guardrails, tracks, type, website.",
      "type": "string"
    }
  },
  "type": "object"
}
  • fields

    • description: A comma-separated list of fields to retrieve. Available fields: authority, contact, default-track, description, id, links, media, name, private, publisher, status, store, summary, title, track-guardrails, tracks, type, website.

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "metadata": {
      "additionalProperties": false,
      "properties": {
        "authority": {
          "type": [
            "string",
            "null"
          ]
        },
        "contact": {
          "type": [
            "string",
            "null"
          ]
        },
        "default-track": {
          "introduced_at": 19,
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "type": "string"
        },
        "links": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "introduced_at": 16,
          "type": [
            "object",
            "null"
          ]
        },
        "media": {
          "introduced_at": 5,
          "items": {
            "properties": {
              "type": {
                "enum": [
                  "icon"
                ],
                "introduced_at": 5,
                "type": "string"
              },
              "url": {
                "introduced_at": 5,
                "type": "string"
              }
            },
            "required": [
              "type",
              "url"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "private": {
          "type": "boolean"
        },
        "publisher": {
          "additionalProperties": false,
          "properties": {
            "display-name": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "email": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "username": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "validation": {
              "type": "string"
            }
          },
          "required": [
            "display-name",
            "id",
            "username"
          ],
          "type": "object"
        },
        "status": {
          "type": "string"
        },
        "store": {
          "type": "string"
        },
        "summary": {
          "type": [
            "string",
            "null"
          ]
        },
        "title": {
          "type": [
            "string",
            "null"
          ]
        },
        "track-guardrails": {
          "introduced_at": 20,
          "items": {
            "additionalProperties": false,
            "properties": {
              "created-at": {
                "type": "string"
              },
              "pattern": {
                "type": "string"
              }
            },
            "required": [
              "pattern",
              "created-at"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "tracks": {
          "introduced_at": 20,
          "items": {
            "additionalProperties": false,
            "properties": {
              "automatic-phasing-percentage": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "created-at": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version-pattern": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "name",
              "version-pattern",
              "created-at",
              "automatic-phasing-percentage"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "type": {
          "type": "string"
        },
        "website": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    }
  },
  "required": [
    "metadata"
  ],
  "type": "object"
}

update_package_metadata

Introduced in version 1

Summary: PATCH /v1/<namespace>/<name>

Update general metadata for a package.

The “private” attribute is deprecated and not allowed to be enabled for image, rock and bin packages.

update_package_metadata changelog

  • Version 50: Added support for “links” field in request body

  • Version 20: Added “tracks”, “guardrails” fields to VALIDATION_SCHEMA_PACKAGE output

  • Version 19: Added support for the “default-track” field

  • Version 16: Added “links” field to output

  • Version 5: Added “media” field to output

Request JSON Schema

{
  "additionalProperties": false,
  "allOf": [
    {
      "not": {
        "required": [
          "links",
          "contact"
        ]
      }
    },
    {
      "not": {
        "required": [
          "links",
          "website"
        ]
      }
    }
  ],
  "properties": {
    "contact": {
      "type": "string"
    },
    "default-track": {
      "type": [
        "string",
        "null"
      ]
    },
    "description": {
      "type": "string"
    },
    "links": {
      "additionalProperties": false,
      "properties": {
        "contact": {
          "items": {
            "maxLength": 2000,
            "type": "string"
          },
          "maxItems": 5,
          "minItems": 0,
          "type": [
            "array"
          ]
        },
        "docs": {
          "items": {
            "maxLength": 2000,
            "type": "string"
          },
          "maxItems": 5,
          "minItems": 0,
          "type": [
            "array"
          ]
        },
        "donations": {
          "items": {
            "maxLength": 2000,
            "type": "string"
          },
          "maxItems": 5,
          "minItems": 0,
          "type": [
            "array"
          ]
        },
        "issues": {
          "items": {
            "maxLength": 2000,
            "type": "string"
          },
          "maxItems": 5,
          "minItems": 0,
          "type": [
            "array"
          ]
        },
        "source": {
          "items": {
            "maxLength": 2000,
            "type": "string"
          },
          "maxItems": 5,
          "minItems": 0,
          "type": [
            "array"
          ]
        },
        "website": {
          "items": {
            "maxLength": 2000,
            "type": "string"
          },
          "maxItems": 5,
          "minItems": 0,
          "type": [
            "array"
          ]
        }
      },
      "type": "object"
    },
    "private": {
      "type": "boolean"
    },
    "summary": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "website": {
      "type": "string"
    }
  },
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "metadata": {
      "additionalProperties": false,
      "properties": {
        "authority": {
          "type": [
            "string",
            "null"
          ]
        },
        "contact": {
          "type": [
            "string",
            "null"
          ]
        },
        "default-track": {
          "introduced_at": 19,
          "type": [
            "string",
            "null"
          ]
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "id": {
          "type": "string"
        },
        "links": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "introduced_at": 16,
          "type": [
            "object",
            "null"
          ]
        },
        "media": {
          "introduced_at": 5,
          "items": {
            "properties": {
              "type": {
                "enum": [
                  "icon"
                ],
                "introduced_at": 5,
                "type": "string"
              },
              "url": {
                "introduced_at": 5,
                "type": "string"
              }
            },
            "required": [
              "type",
              "url"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        },
        "private": {
          "type": "boolean"
        },
        "publisher": {
          "additionalProperties": false,
          "properties": {
            "display-name": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "email": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "username": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "validation": {
              "type": "string"
            }
          },
          "required": [
            "display-name",
            "id",
            "username"
          ],
          "type": "object"
        },
        "status": {
          "type": "string"
        },
        "store": {
          "type": "string"
        },
        "summary": {
          "type": [
            "string",
            "null"
          ]
        },
        "title": {
          "type": [
            "string",
            "null"
          ]
        },
        "track-guardrails": {
          "introduced_at": 20,
          "items": {
            "additionalProperties": false,
            "properties": {
              "created-at": {
                "type": "string"
              },
              "pattern": {
                "type": "string"
              }
            },
            "required": [
              "pattern",
              "created-at"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "tracks": {
          "introduced_at": 20,
          "items": {
            "additionalProperties": false,
            "properties": {
              "automatic-phasing-percentage": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "number"
                  }
                ]
              },
              "created-at": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version-pattern": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            },
            "required": [
              "name",
              "version-pattern",
              "created-at",
              "automatic-phasing-percentage"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "type": {
          "type": "string"
        },
        "website": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": "object"
    }
  },
  "required": [
    "metadata"
  ],
  "type": "object"
}

unregister_package

Introduced in version 1

Summary: DELETE /v1/<namespace>/<name>

Unregister the package matching the provided (namespace, name) pair.

Expects:

Nothing.

Returns:

On success: HTTP 200 with a JSON object containing a required package-id property which indicates the ID of the name that was unregistered.

On failing to find the package with the given namespace and name: HTTP 404 with message “Name not found in the namespace”.

On attempting to unregister a charm with invalid credentials: HTTP 401 with message “discharge required” or HTTP 401 with message “Unauthorized”, depending on if the payload contains a macaroon or not.

On attempting to unregister a snap with Charmhub credentials: HTTP 401 with message “Unregistering snaps requires Snapcraft credentials”.

On attempting to unregister a package with existing revisions: HTTP 403 with message “Cannot unregister a package with existing revisions”.

On attempting to unregister a charm as a collaborator instead of as the publisher: HTTP 401 with message “Charms can only be unregistered by their publisher”

Note: Charm Bundles do live in the charm namespace.

Note: Snap authentication and authorization is handled by passing the usual Dashboard ‘Authorization:’ header to this endpoint.

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "package-id": {
      "type": "string"
    }
  },
  "required": [
    "package-id"
  ],
  "type": "object"
}

list_revisions

Introduced in version 1

Summary: GET /v1/<namespace>/<name>/revisions

List existing revisions for a package.

If limit is not set, the latest 100 revisions are returned in descending order.

list_revisions changelog

  • Version 76: Add support for kernos packages

  • Version 13: Add support for snaps

  • Version 7: Add “bases” field to response

URL Parameters

{
  "properties": {
    "fields": {
      "description": "A comma-separated list of fields to retrieve. Available fields depend on namespace - **bin**: created-at, created-by, revision, sha3-384, size, status, version; **charm**: bases, created-at, errors, revision, sha3-384, size, status, version; **snap**: apps, architectures, base, build-url, confinement, created-at, created-by, grade, revision, sha3-384, size, status, type, version; **rock**: created-at, created-by, revision, sha256, status; **sdk**: bases, created-at, created-by, revision, sha3-384, size, status, version; **image**: created-at, created-by, revision, sha3-384, size, status, version; **kernos**: created-at, created-by, platforms, revision, sha3-384, size, status, type, version.",
      "type": "string"
    },
    "limit": {
      "description": "The maximum number of revisions to return.",
      "pattern": "^[0-9]+$",
      "type": "string"
    },
    "revision": {
      "description": "The number of a specific revision to retrieve.",
      "pattern": "^[0-9]+$",
      "type": "string"
    }
  },
  "type": "object"
}
  • fields

    • description: A comma-separated list of fields to retrieve. Available fields depend on namespace - bin: created-at, created-by, revision, sha3-384, size, status, version; charm: bases, created-at, errors, revision, sha3-384, size, status, version; snap: apps, architectures, base, build-url, confinement, created-at, created-by, grade, revision, sha3-384, size, status, type, version; rock: created-at, created-by, revision, sha256, status; sdk: bases, created-at, created-by, revision, sha3-384, size, status, version; image: created-at, created-by, revision, sha3-384, size, status, version; kernos: created-at, created-by, platforms, revision, sha3-384, size, status, type, version.

  • limit

    • description: The maximum number of revisions to return.

    • Must match regex “^[0-9]+$”

  • revision

    • description: The number of a specific revision to retrieve.

    • Must match regex “^[0-9]+$”

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "revisions": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": false,
            "properties": {
              "craft": {
                "additionalProperties": false,
                "properties": {
                  "commit": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "items": {
            "additionalProperties": false,
            "properties": {
              "bases": {
                "description": "The revision's supported bases.",
                "introduced_at": 7,
                "items": {
                  "additionalProperties": false,
                  "introduced_at": 7,
                  "properties": {
                    "architecture": {
                      "introduced_at": 7,
                      "type": "string"
                    },
                    "channel": {
                      "introduced_at": 7,
                      "type": "string"
                    },
                    "name": {
                      "introduced_at": 7,
                      "type": "string"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "type": "array"
              },
              "craft": {
                "additionalProperties": false,
                "properties": {
                  "commit": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "errors": {
                "oneOf": [
                  {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "items": {
            "additionalProperties": false,
            "properties": {
              "craft": {
                "additionalProperties": false,
                "properties": {
                  "commit": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha256": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "items": {
            "additionalProperties": false,
            "properties": {
              "apps": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "architectures": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "base": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "build-url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "confinement": {
                "enum": [
                  "strict",
                  "classic",
                  "devmode"
                ],
                "type": "string"
              },
              "craft": {
                "additionalProperties": false,
                "properties": {
                  "commit": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "grade": {
                "enum": [
                  "stable",
                  "devel"
                ],
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "app",
                  "os",
                  "gadget",
                  "kernel",
                  "base",
                  "snapd"
                ],
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "items": {
            "additionalProperties": false,
            "properties": {
              "bases": {
                "description": "The revision's supported bases.",
                "items": {
                  "additionalProperties": false,
                  "introduced_at": 7,
                  "properties": {
                    "architecture": {
                      "introduced_at": 7,
                      "type": "string"
                    },
                    "channel": {
                      "introduced_at": 7,
                      "type": "string"
                    },
                    "name": {
                      "introduced_at": 7,
                      "type": "string"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "type": "array"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "items": {
            "additionalProperties": false,
            "properties": {
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "items": {
            "additionalProperties": false,
            "properties": {
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "platforms": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "squashfs-v1",
                  "erofs-v1"
                ],
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          }
        }
      ],
      "type": "array"
    }
  },
  "required": [
    "revisions"
  ],
  "type": "object"
}

push_resource

Introduced in version 1

Summary: POST /v1/<namespace>/<name>/resources/<resource_name>/revisions

Push a new revision for a package resource.

push_resource changelog

  • Version 27: Added optional “package-revision” input field

  • Version 25: Added optional “bases” input field

  • Version 6: Added optional “resource_type” input field

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "bases": {
      "description": "List of architectures supported by this resource revision",
      "introduced_at": 25,
      "items": {
        "additionalProperties": false,
        "introduced_at": 25,
        "properties": {
          "architectures": {
            "introduced_at": 25,
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "channel": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "channel",
          "architectures"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    },
    "package-revision": {
      "description": "Optional revision of the package this resource is valid for. This value is only relevant for snap resources currently.",
      "introduced_at": 27,
      "minimum": 1,
      "type": "integer"
    },
    "type": {
      "enum": [
        "file",
        "oci-image",
        "component/test",
        "component/kernel-modules",
        "component/standard"
      ],
      "introduced_at": 6,
      "type": "string"
    },
    "upload-id": {
      "type": "string"
    }
  },
  "required": [
    "upload-id"
  ],
  "type": "object"
}

Response JSON Schema

{
  "properties": {
    "status-url": {
      "type": "string"
    }
  },
  "required": [
    "status-url"
  ],
  "type": "object"
}

push_revision

Introduced in version 1

Summary: POST /v1/<namespace>/<name>/revisions

Push a new revision for a package.

push_revision changelog

  • Version 76: Add support for kernos packages

  • Version 13: Add support for snaps

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "upload-id": {
      "type": "string"
    }
  },
  "required": [
    "upload-id"
  ],
  "type": "object"
}

Response JSON Schema

{
  "properties": {
    "status-url": {
      "type": "string"
    }
  },
  "required": [
    "status-url"
  ],
  "type": "object"
}

list_upload_reviews

Introduced in version 1

Summary: GET /v1/<namespace>/<name>/revisions/review

List existing uploads review status for a package.

list_upload_reviews changelog

  • Version 76: Add support for kernos packages

  • Version 14: Require upload-id as a query parameter

  • Version 13: Add support for snaps

URL Parameters

{
  "properties": {
    "upload-id": {
      "description": "The ID of a specific upload to view the status of.",
      "type": "string"
    }
  },
  "required": [
    "upload-id"
  ],
  "type": "object"
}
  • upload-id

    • description: The ID of a specific upload to view the status of.

    • Is required

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "revisions": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "errors": {
            "oneOf": [
              {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "message"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ]
          },
          "revision": {
            "oneOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "upload-id": {
            "type": "string"
          }
        },
        "required": [
          "errors",
          "revision",
          "status",
          "upload-id"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "revisions"
  ],
  "type": "object"
}

list_resources

Introduced in version 1

Summary: GET /v1/<namespace>/<name>/resources

List existing declared resources for a package.

URL Parameters

{
  "properties": {
    "revision": {
      "description": "A specific revision to list resources for.",
      "pattern": "^[0-9]+$",
      "type": "string"
    }
  },
  "type": "object"
}
  • revision

    • description: A specific revision to list resources for.

    • Must match regex “^[0-9]+$”

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "resources": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string"
          },
          "optional": {
            "type": "boolean"
          },
          "revision": {
            "type": "integer"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "resources"
  ],
  "type": "object"
}

list_resource_revisions

Introduced in version 1

Summary: GET /v1/<namespace>/<name>/resources/<resource_name>/revisions

List existing revisions for a package resource.

list_resource_revisions changelog

  • Version 28: Added “architectures” field to output for snap resources. Mutually exclusive with bases

  • Version 25: Added “bases”, “updated-at” and “updated-by” fields to output

  • Version 6: Added “type” field to output

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "revisions": {
      "items": {
        "additionalProperties": false,
        "oneOf": [
          {
            "not": {
              "required": [
                "architectures"
              ]
            },
            "required": [
              "name",
              "bases"
            ]
          },
          {
            "not": {
              "required": [
                "bases"
              ]
            },
            "required": [
              "name",
              "architectures"
            ]
          }
        ],
        "properties": {
          "architectures": {
            "introduced_at": 28,
            "items": {
              "introduced_at": 28,
              "type": "string"
            },
            "type": "array"
          },
          "bases": {
            "description": "List of architectures supported by this resource revision",
            "introduced_at": 25,
            "items": {
              "additionalProperties": false,
              "introduced_at": 25,
              "properties": {
                "architectures": {
                  "introduced_at": 25,
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "channel": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "channel",
                "architectures"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "created-at": {
            "format": "date-time",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "revision": {
            "type": "integer"
          },
          "sha256": {
            "type": "string"
          },
          "sha3-384": {
            "type": "string"
          },
          "sha384": {
            "type": "string"
          },
          "sha512": {
            "type": "string"
          },
          "size": {
            "type": "integer"
          },
          "type": {
            "introduced_at": 6,
            "type": "string"
          },
          "updated-at": {
            "introduced_at": 25,
            "type": [
              "string",
              "null"
            ]
          },
          "updated-by": {
            "introduced_at": 25,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "revisions"
  ],
  "type": "object"
}

update_resource_revisions

Introduced in version 25

Summary: PATCH /v1/<namespace>/<name>/resources/<resource_name>/revisions

Update the metadata for a package resource revision.

Currently, the only editable metadata for a resource revision is the set of bases it supports. A base refers to the OS, OS version, and machine architectures for that OS/version pair. Specify ‘all’ ([‘all’] for machine architectures) for any of the fields to indicate that the resource revision is agnostic to that field.

update_resource_revisions changelog

  • Version 25: New endpoint to update resource revision architectures

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "resource-revision-updates": {
      "introduced_at": 25,
      "items": {
        "additionalProperties": false,
        "properties": {
          "bases": {
            "description": "List of architectures supported by this resource revision",
            "introduced_at": 25,
            "items": {
              "additionalProperties": false,
              "introduced_at": 25,
              "properties": {
                "architectures": {
                  "introduced_at": 25,
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1,
                  "type": "array",
                  "uniqueItems": true
                },
                "channel": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "channel",
                "architectures"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "revision": {
            "type": "integer"
          }
        },
        "required": [
          "revision",
          "bases"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array",
      "uniqueItems": true
    }
  },
  "required": [
    "resource-revision-updates"
  ],
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "num-resource-revisions-updated": {
      "type": "integer"
    }
  },
  "required": [
    "num-resource-revisions-updated"
  ],
  "type": "object"
}

oci_image_resource_upload_credentials

Introduced in version 1

Summary: GET /v1/<namespace>/<name>/resources/<resource_name>/oci-image/upload-credentials

Get Charmstore docker registry auth server credential for oci-image upload.

Returns image name and Charmstore docker registry auth server credentials for for a specific image upload to this registry.

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "image-name": {
      "type": "string"
    },
    "password": {
      "type": "string"
    },
    "username": {
      "type": "string"
    }
  },
  "required": [
    "image-name",
    "username",
    "password"
  ],
  "type": "object"
}

oci_image_resource_blob

Introduced in version 1

Summary: POST /v1/<namespace>/<name>/resources/<resource_name>/oci-image/blob

Return OCI-image resource blob as expected by Juju.

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "image-digest": {
      "type": "string"
    }
  },
  "required": [
    "image-digest"
  ],
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "ImageName": {
      "type": "string"
    },
    "Password": {
      "type": "string"
    },
    "Username": {
      "type": "string"
    }
  },
  "required": [
    "ImageName",
    "Username",
    "Password"
  ],
  "type": "object"
}

list_releases

Introduced in version 1

Summary: GET /v1/<namespace>/<name>/releases

List current releases for a package.

list_releases changelog

  • Version 76: Add support for kernos packages

  • Version 51: Add craft-channel-map field (optional) to output

  • Version 48: Add craft field to released revisions

  • Version 41: Add support for architecture & progressive releases in rocks channelmap

  • Version 13: Add support for snaps

  • Version 7: Add “bases” to revisions and “base” to channel-map response fields

  • Version 2: Add resources output in channelmap

Response JSON Schema

{
  "anyOf": [
    {
      "additionalProperties": false,
      "properties": {
        "channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "channel",
              "expiration-date",
              "revision",
              "when"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "craft-channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "commit": {
                "description": "The commit hash of this craft revision.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "channel",
              "expiration-date",
              "revision",
              "when",
              "commit"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "package": {
          "properties": {
            "channels": {
              "items": {
                "additionalProperties": false,
                "description": "A list of channels and their metadata for the requested package.",
                "properties": {
                  "branch": {
                    "description": "The branch name for this channel, can be null.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fallback": {
                    "description": "The name of the channel that this channel would fall back to if there were no releases in it. If null, this channel has no fallback channel.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "The channel name.",
                    "type": "string"
                  },
                  "risk": {
                    "description": "The risk name for this channel.",
                    "type": "string"
                  },
                  "track": {
                    "description": "The track name for this channel.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "track",
                  "risk",
                  "branch",
                  "fallback"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "channels"
          ],
          "type": "object"
        },
        "revisions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "craft": {
                "additionalProperties": false,
                "properties": {
                  "commit": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "channel-map",
        "package",
        "revisions"
      ]
    },
    {
      "additionalProperties": false,
      "properties": {
        "channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "base": {
                "additionalProperties": false,
                "introduced_at": 7,
                "properties": {
                  "architecture": {
                    "introduced_at": 7,
                    "type": "string"
                  },
                  "channel": {
                    "introduced_at": 7,
                    "type": "string"
                  },
                  "name": {
                    "introduced_at": 7,
                    "type": "string"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "progressive": {
                "additionalProperties": false,
                "properties": {
                  "paused": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "paused",
                  "percentage"
                ],
                "type": "object"
              },
              "resources": {
                "introduced_at": 2,
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "revision": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "type": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "base",
              "channel",
              "expiration-date",
              "progressive",
              "resources",
              "revision",
              "when"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "craft-channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "commit": {
                "description": "The commit hash of this craft revision.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "channel",
              "expiration-date",
              "revision",
              "when",
              "commit"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "package": {
          "properties": {
            "channels": {
              "items": {
                "additionalProperties": false,
                "description": "A list of channels and their metadata for the requested package.",
                "properties": {
                  "branch": {
                    "description": "The branch name for this channel, can be null.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fallback": {
                    "description": "The name of the channel that this channel would fall back to if there were no releases in it. If null, this channel has no fallback channel.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "The channel name.",
                    "type": "string"
                  },
                  "risk": {
                    "description": "The risk name for this channel.",
                    "type": "string"
                  },
                  "track": {
                    "description": "The track name for this channel.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "track",
                  "risk",
                  "branch",
                  "fallback"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "channels"
          ],
          "type": "object"
        },
        "revisions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "bases": {
                "description": "The revision's supported bases.",
                "introduced_at": 7,
                "items": {
                  "additionalProperties": false,
                  "introduced_at": 7,
                  "properties": {
                    "architecture": {
                      "introduced_at": 7,
                      "type": "string"
                    },
                    "channel": {
                      "introduced_at": 7,
                      "type": "string"
                    },
                    "name": {
                      "introduced_at": 7,
                      "type": "string"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "type": "array"
              },
              "craft": {
                "additionalProperties": false,
                "properties": {
                  "commit": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "errors": {
                "oneOf": [
                  {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "code": {
                          "type": "string"
                        },
                        "message": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "code",
                        "message"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "channel-map",
        "package",
        "revisions"
      ]
    },
    {
      "additionalProperties": false,
      "properties": {
        "channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "architecture": {
                "introduced_at": 13,
                "type": "string"
              },
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "progressive": {
                "additionalProperties": false,
                "properties": {
                  "paused": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "paused",
                  "percentage"
                ],
                "type": "object"
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "architecture",
              "channel",
              "expiration-date",
              "progressive",
              "revision",
              "when"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "craft-channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "commit": {
                "description": "The commit hash of this craft revision.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "channel",
              "expiration-date",
              "revision",
              "when",
              "commit"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "package": {
          "properties": {
            "channels": {
              "items": {
                "additionalProperties": false,
                "description": "A list of channels and their metadata for the requested package.",
                "properties": {
                  "branch": {
                    "description": "The branch name for this channel, can be null.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fallback": {
                    "description": "The name of the channel that this channel would fall back to if there were no releases in it. If null, this channel has no fallback channel.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "The channel name.",
                    "type": "string"
                  },
                  "risk": {
                    "description": "The risk name for this channel.",
                    "type": "string"
                  },
                  "track": {
                    "description": "The track name for this channel.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "track",
                  "risk",
                  "branch",
                  "fallback"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "channels"
          ],
          "type": "object"
        },
        "revisions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "apps": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "architectures": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "base": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "build-url": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "confinement": {
                "enum": [
                  "strict",
                  "classic",
                  "devmode"
                ],
                "type": "string"
              },
              "craft": {
                "additionalProperties": false,
                "properties": {
                  "commit": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "grade": {
                "enum": [
                  "stable",
                  "devel"
                ],
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "app",
                  "os",
                  "gadget",
                  "kernel",
                  "base",
                  "snapd"
                ],
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "channel-map",
        "package",
        "revisions"
      ]
    },
    {
      "additionalProperties": false,
      "properties": {
        "channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "architecture": {
                "introduced_at": 41,
                "type": "string"
              },
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "progressive": {
                "additionalProperties": false,
                "introduced_at": 41,
                "properties": {
                  "paused": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "paused",
                  "percentage"
                ],
                "type": "object"
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "architecture",
              "channel",
              "expiration-date",
              "progressive",
              "revision",
              "when"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "craft-channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "commit": {
                "description": "The commit hash of this craft revision.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "channel",
              "expiration-date",
              "revision",
              "when",
              "commit"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "package": {
          "properties": {
            "channels": {
              "items": {
                "additionalProperties": false,
                "description": "A list of channels and their metadata for the requested package.",
                "properties": {
                  "branch": {
                    "description": "The branch name for this channel, can be null.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fallback": {
                    "description": "The name of the channel that this channel would fall back to if there were no releases in it. If null, this channel has no fallback channel.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "The channel name.",
                    "type": "string"
                  },
                  "risk": {
                    "description": "The risk name for this channel.",
                    "type": "string"
                  },
                  "track": {
                    "description": "The track name for this channel.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "track",
                  "risk",
                  "branch",
                  "fallback"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "channels"
          ],
          "type": "object"
        },
        "revisions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "craft": {
                "additionalProperties": false,
                "properties": {
                  "commit": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha256": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "channel-map",
        "package",
        "revisions"
      ]
    },
    {
      "additionalProperties": false,
      "properties": {
        "channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "base": {
                "additionalProperties": false,
                "introduced_at": 7,
                "properties": {
                  "architecture": {
                    "introduced_at": 7,
                    "type": "string"
                  },
                  "channel": {
                    "introduced_at": 7,
                    "type": "string"
                  },
                  "name": {
                    "introduced_at": 7,
                    "type": "string"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "base",
              "channel",
              "expiration-date",
              "revision",
              "when"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "craft-channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "commit": {
                "description": "The commit hash of this craft revision.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "channel",
              "expiration-date",
              "revision",
              "when",
              "commit"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "package": {
          "properties": {
            "channels": {
              "items": {
                "additionalProperties": false,
                "description": "A list of channels and their metadata for the requested package.",
                "properties": {
                  "branch": {
                    "description": "The branch name for this channel, can be null.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fallback": {
                    "description": "The name of the channel that this channel would fall back to if there were no releases in it. If null, this channel has no fallback channel.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "The channel name.",
                    "type": "string"
                  },
                  "risk": {
                    "description": "The risk name for this channel.",
                    "type": "string"
                  },
                  "track": {
                    "description": "The track name for this channel.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "track",
                  "risk",
                  "branch",
                  "fallback"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "channels"
          ],
          "type": "object"
        },
        "revisions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "bases": {
                "description": "The revision's supported bases.",
                "items": {
                  "additionalProperties": false,
                  "introduced_at": 7,
                  "properties": {
                    "architecture": {
                      "introduced_at": 7,
                      "type": "string"
                    },
                    "channel": {
                      "introduced_at": 7,
                      "type": "string"
                    },
                    "name": {
                      "introduced_at": 7,
                      "type": "string"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "type": "array"
              },
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "channel-map",
        "package",
        "revisions"
      ]
    },
    {
      "additionalProperties": false,
      "properties": {
        "channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "architecture": {
                "type": "string"
              },
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "progressive": {
                "additionalProperties": false,
                "properties": {
                  "paused": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "percentage": {
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "paused",
                  "percentage"
                ],
                "type": "object"
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "architecture",
              "channel",
              "expiration-date",
              "progressive",
              "revision",
              "when"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "craft-channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "commit": {
                "description": "The commit hash of this craft revision.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "channel",
              "expiration-date",
              "revision",
              "when",
              "commit"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "package": {
          "properties": {
            "channels": {
              "items": {
                "additionalProperties": false,
                "description": "A list of channels and their metadata for the requested package.",
                "properties": {
                  "branch": {
                    "description": "The branch name for this channel, can be null.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fallback": {
                    "description": "The name of the channel that this channel would fall back to if there were no releases in it. If null, this channel has no fallback channel.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "The channel name.",
                    "type": "string"
                  },
                  "risk": {
                    "description": "The risk name for this channel.",
                    "type": "string"
                  },
                  "track": {
                    "description": "The track name for this channel.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "track",
                  "risk",
                  "branch",
                  "fallback"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "channels"
          ],
          "type": "object"
        },
        "revisions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "channel-map",
        "package",
        "revisions"
      ]
    },
    {
      "additionalProperties": false,
      "properties": {
        "channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "platform": {
                "type": "string"
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "platform",
              "channel",
              "expiration-date",
              "revision",
              "when"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "craft-channel-map": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "channel": {
                "description": "The channel name, including \"latest\" for the latest track.",
                "type": "string"
              },
              "commit": {
                "description": "The commit hash of this craft revision.",
                "type": "string"
              },
              "expiration-date": {
                "description": "The date when this release expires, in RFC 3339 format. If null, the release does not expire.",
                "format": "date-time",
                "type": [
                  "string",
                  "null"
                ]
              },
              "revision": {
                "type": "integer"
              },
              "when": {
                "description": "The date when this release was made, in RFC 3339 format.",
                "format": "date-time",
                "type": "string"
              }
            },
            "required": [
              "channel",
              "expiration-date",
              "revision",
              "when",
              "commit"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "package": {
          "properties": {
            "channels": {
              "items": {
                "additionalProperties": false,
                "description": "A list of channels and their metadata for the requested package.",
                "properties": {
                  "branch": {
                    "description": "The branch name for this channel, can be null.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "fallback": {
                    "description": "The name of the channel that this channel would fall back to if there were no releases in it. If null, this channel has no fallback channel.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "The channel name.",
                    "type": "string"
                  },
                  "risk": {
                    "description": "The risk name for this channel.",
                    "type": "string"
                  },
                  "track": {
                    "description": "The track name for this channel.",
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "track",
                  "risk",
                  "branch",
                  "fallback"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "channels"
          ],
          "type": "object"
        },
        "revisions": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "created-at": {
                "format": "date-time",
                "type": "string"
              },
              "created-by": {
                "type": "string"
              },
              "platforms": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "revision": {
                "type": "integer"
              },
              "sha3-384": {
                "type": "string"
              },
              "size": {
                "type": "integer"
              },
              "status": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "squashfs-v1",
                  "erofs-v1"
                ],
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "channel-map",
        "package",
        "revisions"
      ]
    }
  ],
  "type": "object"
}

release

Introduced in version 1

Summary: POST /v1/<namespace>/<name>/releases

Release one or more revisions for a package.

release changelog

  • Version 76: Add support for kernos packages

  • Version 17: Add list of released revisions to response

  • Version 13: Add support for snaps

Request JSON Schema

{
  "items": {
    "additionalProperties": false,
    "properties": {
      "channel": {
        "type": "string"
      },
      "resources": {
        "items": {
          "properties": {
            "name": {
              "type": "string"
            },
            "revision": {
              "type": [
                "integer",
                "null"
              ]
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "revision": {
        "type": [
          "integer",
          "null"
        ]
      }
    },
    "required": [
      "channel",
      "revision"
    ],
    "type": "object"
  },
  "type": "array"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "released": {
      "introduced_at": 17,
      "items": {
        "properties": {
          "channel": {
            "type": "string"
          },
          "resources": {
            "items": {
              "properties": {
                "name": {
                  "type": "string"
                },
                "revision": {
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "revision": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "type": "object"
}

exchange_dashboard_macaroons

Introduced in version 15

Summary: POST /v1/tokens/dashboard/exchange

Exchange dashboard.snapcraft.io SSO discharged macaroons for a developer token. The macaroons are expected to be passed in as the Authorization header.

Request JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "client-description": {
      "maxLength": 1024,
      "type": [
        "string",
        "null"
      ]
    }
  },
  "type": "object"
}

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "macaroon": {
      "type": "string"
    }
  },
  "required": [
    "macaroon"
  ],
  "type": "object"
}

create_tracks

Introduced in version 20

Summary: POST /v1/<namespace>/<name>/tracks

Create new tracks for a package.

Track creation requests must match an existing track creation pattern. In order to register such a pattern in the store, please contact the snap store admins in the https://forum.snapcraft.io/ (for snaps) or https://discourse.charmhub.io/ (for charms).

create_tracks changelog

  • Version 76: Add support for kernos packages

Request JSON Schema

{
  "items": {
    "additionalProperties": false,
    "properties": {
      "automatic-phasing-percentage": {
        "oneOf": [
          {
            "type": "null"
          },
          {
            "type": "number"
          }
        ]
      },
      "name": {
        "maxLength": 28,
        "pattern": "^[a-zA-Z0-9](?:[_.-]?[a-zA-Z0-9])*$",
        "type": "string"
      },
      "version-pattern": {
        "oneOf": [
          {
            "type": "null"
          },
          {
            "type": "string"
          }
        ]
      }
    },
    "required": [
      "name"
    ],
    "type": "object"
  },
  "type": "array"
}

Response JSON Schema

{
  "properties": {
    "num-tracks-created": {
      "type": "integer"
    }
  },
  "required": [
    "num-tracks-created"
  ],
  "type": "object"
}

whoami (DEPRECATED)

!!! Warning “Deprecated” Deprecated from version 11

Introduced in version 1

Summary: GET /v1/whoami

Return authenticated user details.

Deprecation notice: /v1/tokens/whoami should be used instead.

Response JSON Schema

{
  "additionalProperties": false,
  "properties": {
    "display-name": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "email": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "username": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "validation": {
      "type": "string"
    }
  },
  "required": [
    "display-name",
    "id",
    "username"
  ],
  "type": "object"
}