Canonical Snaps API

The Snaps API from Canonical — 10 operation(s) for snaps.

OpenAPI Specification

canonical-snaps-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Canonical Snap Store Device Assertions Snaps API
  description: 'Public Snap Store Device API (api.snapcraft.io) used by snap clients to

    discover snaps, fetch metadata, refresh installed snaps, search the

    store, and download assertions. Endpoints come from the publicly

    documented snap store reference (https://api.snapcraft.io/docs/).


    Most endpoints are open / unauthenticated. Authenticated endpoints under

    /api/v1/snaps/auth/ use Ubuntu One macaroons and require the

    Snap-Device-Series header.


    This specification is a best-effort, hand-authored representation. The

    Charmhub API (api.charmhub.io), Snapcraft Dashboard API, snapd local

    REST API, LXD REST API, MAAS API, Juju, Launchpad, Ubuntu Pro Client,

    and Landscape APIs are not modeled here — see apis.yml for those

    surfaces and their respective Canonical documentation.

    '
  version: v2
  contact:
    name: Canonical / Snapcraft
    url: https://api.snapcraft.io/docs/
servers:
- url: https://api.snapcraft.io
tags:
- name: Snaps
paths:
  /v2/snaps/info/{name}:
    parameters:
    - $ref: '#/components/parameters/DeviceSeries'
    - in: path
      name: name
      required: true
      schema:
        type: string
      description: Snap name.
    get:
      summary: Get snap information
      description: Returns information about a snap including channels, tracks, revisions, and assertions.
      parameters:
      - in: query
        name: fields
        schema:
          type: string
        description: Comma-separated list of fields to return.
      - in: query
        name: architecture
        schema:
          type: string
      - in: header
        name: Snap-Device-Architecture
        schema:
          type: string
      responses:
        '200':
          description: Snap info document.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapInfo'
        '404':
          description: Snap not found.
      tags:
      - Snaps
  /v2/snaps/find:
    parameters:
    - $ref: '#/components/parameters/DeviceSeries'
    get:
      summary: Find snaps
      description: Search snaps by name, keyword, or filter.
      parameters:
      - in: query
        name: q
        schema:
          type: string
        description: Free-text search query.
      - in: query
        name: name
        schema:
          type: string
      - in: query
        name: category
        schema:
          type: string
      - in: query
        name: fields
        schema:
          type: string
      - in: query
        name: confinement
        schema:
          type: string
          enum:
          - strict
          - classic
          - devmode
      responses:
        '200':
          description: Find results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindResults'
      tags:
      - Snaps
  /v2/snaps/refresh:
    parameters:
    - $ref: '#/components/parameters/DeviceSeries'
    post:
      summary: Refresh snaps
      description: 'Determine which snaps need to be refreshed and return refresh actions.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshRequest'
      responses:
        '200':
          description: Refresh response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefreshResponse'
      tags:
      - Snaps
  /api/v1/snaps/search:
    get:
      summary: Snaps search (legacy v1)
      parameters:
      - in: query
        name: q
        schema:
          type: string
      - $ref: '#/components/parameters/DeviceSeries'
      responses:
        '200':
          $ref: '#/components/responses/Generic'
      tags:
      - Snaps
  /api/v1/snaps/names:
    get:
      summary: List snap names (autocomplete; legacy v1)
      parameters:
      - $ref: '#/components/parameters/DeviceSeries'
      responses:
        '200':
          $ref: '#/components/responses/Generic'
      tags:
      - Snaps
  /api/v1/snaps/sections:
    get:
      summary: List store sections (legacy v1)
      responses:
        '200':
          $ref: '#/components/responses/Generic'
      tags:
      - Snaps
  /api/v1/snaps/auth/nonces:
    post:
      summary: Request a device nonce
      responses:
        '200':
          $ref: '#/components/responses/Generic'
      tags:
      - Snaps
  /api/v1/snaps/auth/sessions:
    post:
      summary: Create a device session
      responses:
        '200':
          $ref: '#/components/responses/Generic'
      tags:
      - Snaps
  /api/v1/snaps/auth/devices:
    post:
      summary: Register a device
      responses:
        '200':
          $ref: '#/components/responses/Generic'
      tags:
      - Snaps
  /api/v1/snaps/auth/request-id:
    post:
      summary: Get an authentication request id
      responses:
        '200':
          $ref: '#/components/responses/Generic'
      tags:
      - Snaps
components:
  schemas:
    FindResults:
      type: object
      properties:
        results:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              snap-id:
                type: string
              snap:
                type: object
                additionalProperties: true
            additionalProperties: true
    RefreshResponse:
      type: object
      properties:
        results:
          type: array
          items:
            type: object
            additionalProperties: true
      additionalProperties: true
    SnapInfo:
      type: object
      properties:
        name:
          type: string
        snap-id:
          type: string
        channel-map:
          type: array
          items:
            type: object
            additionalProperties: true
        snap:
          type: object
          additionalProperties: true
      additionalProperties: true
    Generic:
      type: object
      additionalProperties: true
    RefreshRequest:
      type: object
      properties:
        context:
          type: array
          items:
            type: object
            additionalProperties: true
        actions:
          type: array
          items:
            type: object
            properties:
              action:
                type: string
                enum:
                - refresh
                - install
                - download
              instance-key:
                type: string
              snap-id:
                type: string
              name:
                type: string
              channel:
                type: string
              revision:
                type: integer
            additionalProperties: true
      additionalProperties: true
  parameters:
    DeviceSeries:
      in: header
      name: Snap-Device-Series
      required: true
      schema:
        type: string
        default: '16'
      description: Snap device series; required by the Device API.
  responses:
    Generic:
      description: Generic JSON response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Generic'