Podman artifacts API

Actions related to artifacts

OpenAPI Specification

podman-artifacts-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  contact:
    email: podman@lists.podman.io
    name: Podman
    url: https://podman.io/community/
  description: 'This documentation describes the Podman v2.x+ RESTful API. It consists of a Docker-compatible

    API and a Libpod API providing support for Podman’s unique features such as pods.


    To start the service and keep it running for 5,000 seconds (-t 0 runs forever):


    podman system service -t 5000 &


    You can then use cURL on the socket using requests documented below.


    NOTE: if you install the package podman-docker, it will create a symbolic

    link for /run/docker.sock to /run/podman/podman.sock


    NOTE: Some fields in the API response JSON are encoded as omitempty, which means that

    if said field has a zero value, they will not be encoded in the API response. This

    is a feature to help reduce the size of the JSON responses returned via the API.


    NOTE: Due to the limitations of [go-swagger](https://github.com/go-swagger/go-swagger),

    some field values that have a complex type show up as null in the docs as well as in the

    API responses. This is because the zero value for the field type is null. The field

    description in the docs will state what type the field is expected to be for such cases.


    See podman-system-service(1) for more information.


    Quick Examples:


    ''podman info''


    curl --unix-socket /run/podman/podman.sock http://d/v6.0.0/libpod/info


    ''podman pull quay.io/containers/podman''


    curl -XPOST --unix-socket /run/podman/podman.sock -v ''http://d/v6.0.0/images/create?fromImage=quay.io%2Fcontainers%2Fpodman''


    ''podman list images''


    curl --unix-socket /run/podman/podman.sock -v ''http://d/v6.0.0/libpod/images/json'' | jq'
  license:
    name: Apache-2.0
    url: https://opensource.org/licenses/Apache-2.0
  termsOfService: https://github.com/containers/podman/blob/913caaa9b1de2b63692c9bae15120208194c9eb3/LICENSE
  title: supports a RESTful API for the Libpod library artifacts API
  version: 5.0.0
  x-logo:
  - url: https://raw.githubusercontent.com/containers/libpod/main/logo/podman-logo.png
  - altText: Podman logo
host: podman.io
basePath: /
schemes:
- http
- https
consumes:
- application/json
- application/x-tar
produces:
- application/json
- application/octet-stream
- text/plain
tags:
- description: Actions related to artifacts
  name: artifacts
paths:
  /libpod/artifacts/{name}:
    delete:
      description: Remove a single artifact from local storage by name or ID.
      operationId: ArtifactDeleteLibpod
      parameters:
      - description: Name or ID of the artifact to remove
        in: path
        name: name
        required: true
        type: string
      produces:
      - application/json
      responses:
        '200':
          $ref: '#/responses/artifactRemoveResponse'
        '404':
          $ref: '#/responses/artifactNotFound'
        '500':
          $ref: '#/responses/internalError'
      summary: Remove an artifact
      tags:
      - artifacts
  /libpod/artifacts/{name}/extract:
    get:
      description: Extract the files of an OCI artifact to the local filesystem as a tar archive.
      operationId: ArtifactExtractLibpod
      parameters:
      - description: Name or digest of the artifact
        in: path
        name: name
        required: true
        type: string
      - description: Only extract the file with the given title
        in: query
        name: title
        type: string
      - description: Only extract the file with the given digest
        in: query
        name: digest
        type: string
      - description: 'When extracting a single file from an artifact, don''t use the files title as the file name in the tar archive

          '
        in: query
        name: excludeTitle
        type: boolean
      produces:
      - application/x-tar
      responses:
        '200':
          description: Extract successful
          schema:
            type: file
        '400':
          $ref: '#/responses/badParamError'
        '404':
          $ref: '#/responses/artifactNotFound'
        '500':
          $ref: '#/responses/internalError'
      summary: Extract an artifacts contents
      tags:
      - artifacts
  /libpod/artifacts/{name}/json:
    get:
      description: 'Retrieve detailed information about a specific OCI artifact by name or ID.

        '
      operationId: ArtifactInspectLibpod
      parameters:
      - description: Name or ID of the artifact
        in: path
        name: name
        required: true
        type: string
      produces:
      - application/json
      responses:
        '200':
          $ref: '#/responses/inspectArtifactResponse'
        '404':
          $ref: '#/responses/artifactNotFound'
        '500':
          $ref: '#/responses/internalError'
      summary: Inspect an artifact
      tags:
      - artifacts
  /libpod/artifacts/{name}/push:
    post:
      description: Push an OCI artifact from local storage to a remote image registry.
      operationId: ArtifactPushLibpod
      parameters:
      - description: Mandatory reference to the artifact (e.g., quay.io/image/artifact:tag)
        in: path
        name: name
        required: true
        type: string
      - default: 3
        description: Number of times to retry in case of failure when performing pull
        in: query
        name: retry
        type: integer
      - default: 1s
        description: Delay between retries in case of pull failures (e.g., 10s)
        in: query
        name: retryDelay
        type: string
      - default: true
        description: Require TLS verification
        in: query
        name: tlsVerify
        type: boolean
      - description: 'base-64 encoded auth config.

          Must include the following four values: username, password, email and server address

          OR simply just an identity token.

          '
        in: header
        name: X-Registry-Auth
        type: string
      produces:
      - application/json
      responses:
        '200':
          $ref: '#/responses/artifactPushResponse'
        '400':
          $ref: '#/responses/badParamError'
        '401':
          $ref: '#/responses/artifactBadAuth'
        '404':
          $ref: '#/responses/artifactNotFound'
        '500':
          $ref: '#/responses/internalError'
      summary: Push an artifact
      tags:
      - artifacts
  /libpod/artifacts/add:
    post:
      consumes:
      - application/octet-stream
      description: 'Add a file as a new OCI artifact, or append to an existing artifact if ''append'' is true.

        '
      operationId: ArtifactAddLibpod
      parameters:
      - description: Mandatory reference to the artifact (e.g., quay.io/image/artifact:tag)
        in: query
        name: name
        required: true
        type: string
      - description: Path of the file to be added
        in: query
        name: fileName
        required: true
        type: string
      - description: Optionally set the type of file
        in: query
        name: fileMIMEType
        type: string
      - description: Array of annotation strings e.g "test=true"
        in: query
        items:
          type: string
        name: annotations
        type: array
      - description: Use type to describe an artifact
        in: query
        name: artifactMIMEType
        type: string
      - default: false
        description: Append files to an existing artifact
        in: query
        name: append
        type: boolean
      - default: false
        description: Replace an existing artifact with the same name
        in: query
        name: replace
        type: boolean
      - description: Binary stream of the file to add to an artifact
        in: body
        name: inputStream
        schema:
          format: binary
          type: string
      produces:
      - application/json
      responses:
        '201':
          $ref: '#/responses/artifactAddResponse'
        '400':
          $ref: '#/responses/badParamError'
        '404':
          $ref: '#/responses/artifactNotFound'
        '500':
          $ref: '#/responses/internalError'
      summary: Add a file as an artifact
      tags:
      - artifacts
  /libpod/artifacts/json:
    get:
      description: Return a list of all OCI artifacts in local storage.
      operationId: ArtifactListLibpod
      produces:
      - application/json
      responses:
        '200':
          $ref: '#/responses/artifactListResponse'
        '500':
          $ref: '#/responses/internalError'
      summary: List artifacts
      tags:
      - artifacts
  /libpod/artifacts/local/add:
    post:
      description: 'Add a file from the local filesystem as a new OCI artifact, or append to an existing artifact if ''append'' is true.

        '
      operationId: ArtifactLocalLibpod
      parameters:
      - description: Mandatory reference to the artifact (e.g., quay.io/image/artifact:tag)
        in: query
        name: name
        required: true
        type: string
      - description: Absolute path to the local file on the server filesystem to be added
        in: query
        name: path
        required: true
        type: string
      - description: Name/title of the file within the artifact
        in: query
        name: fileName
        required: true
        type: string
      - description: Optionally set the MIME type of the file
        in: query
        name: fileMIMEType
        type: string
      - description: Array of annotation strings e.g "test=true"
        in: query
        items:
          type: string
        name: annotations
        type: array
      - description: Use type to describe an artifact
        in: query
        name: artifactMIMEType
        type: string
      - default: false
        description: Append files to an existing artifact
        in: query
        name: append
        type: boolean
      - default: false
        description: Replace an existing artifact with the same name
        in: query
        name: replace
        type: boolean
      produces:
      - application/json
      responses:
        '201':
          $ref: '#/responses/artifactAddResponse'
        '400':
          $ref: '#/responses/badParamError'
        '404':
          $ref: '#/responses/artifactNotFound'
        '500':
          $ref: '#/responses/internalError'
      summary: Add a local file as an artifact
      tags:
      - artifacts
  /libpod/artifacts/pull:
    post:
      description: Pull an OCI artifact from a remote registry to local storage.
      operationId: ArtifactPullLibpod
      parameters:
      - description: Mandatory reference to the artifact (e.g., quay.io/image/artifact:tag)
        in: query
        name: name
        required: true
        type: string
      - default: 3
        description: Number of times to retry in case of failure when performing pull
        in: query
        name: retry
        type: integer
      - default: 1s
        description: Delay between retries in case of pull failures (e.g., 10s)
        in: query
        name: retryDelay
        type: string
      - default: true
        description: Require TLS verification
        in: query
        name: tlsVerify
        type: boolean
      - description: 'base-64 encoded auth config.

          Must include the following four values: username, password, email and server address

          OR simply just an identity token.

          '
        in: header
        name: X-Registry-Auth
        type: string
      produces:
      - application/json
      responses:
        '200':
          $ref: '#/responses/artifactPullResponse'
        '400':
          $ref: '#/responses/badParamError'
        '401':
          $ref: '#/responses/artifactBadAuth'
        '404':
          $ref: '#/responses/artifactNotFound'
        '500':
          $ref: '#/responses/internalError'
      summary: Pull an artifact
      tags:
      - artifacts
  /libpod/artifacts/remove:
    delete:
      description: 'Remove one or more OCI artifacts from local storage.

        Can be filtered by name/ID or all artifacts can be removed.

        '
      operationId: ArtifactDeleteAllLibpod
      parameters:
      - description: List of artifact names/IDs to remove
        in: query
        items:
          type: string
        name: artifacts
        type: array
      - description: Remove all artifacts
        in: query
        name: all
        type: boolean
      - description: Ignore errors if artifact does not exist
        in: query
        name: ignore
        type: boolean
      produces:
      - application/json
      responses:
        '200':
          $ref: '#/responses/artifactRemoveResponse'
        '404':
          $ref: '#/responses/artifactNotFound'
        '500':
          $ref: '#/responses/internalError'
      summary: Remove one or more artifacts
      tags:
      - artifacts
definitions:
  ArtifactPushReport:
    type: object
    x-go-package: go.podman.io/podman/v6/pkg/domain/entities
  ArtifactAddReport:
    type: object
    x-go-package: go.podman.io/podman/v6/pkg/domain/entities
  ErrorModel:
    description: ErrorModel is used in remote connections with podman
    properties:
      cause:
        description: API root cause formatted for automated parsing
        example: API root cause
        type: string
        x-go-name: Because
      message:
        description: human error message, formatted for a human to read
        example: human error message
        type: string
        x-go-name: Message
      response:
        description: HTTP response code
        format: int64
        minimum: 400
        type: integer
        x-go-name: ResponseCode
    type: object
    x-go-package: go.podman.io/podman/v6/pkg/errorhandling
  ArtifactPullReport:
    type: object
    x-go-package: go.podman.io/podman/v6/pkg/domain/entities
  ArtifactInspectReport:
    type: object
    x-go-package: go.podman.io/podman/v6/pkg/domain/entities
  ArtifactRemoveReport:
    type: object
    x-go-package: go.podman.io/podman/v6/pkg/domain/entities
  ArtifactListReport:
    type: object
    x-go-package: go.podman.io/podman/v6/pkg/domain/entities
responses:
  artifactBadAuth:
    description: error in authentication
    schema:
      $ref: '#/definitions/ErrorModel'
  artifactListResponse:
    description: Artifact list
    schema:
      items:
        $ref: '#/definitions/ArtifactListReport'
      type: array
  badParamError:
    description: Bad parameter in request
    schema:
      $ref: '#/definitions/ErrorModel'
  artifactAddResponse:
    description: Artifact Add
    schema:
      $ref: '#/definitions/ArtifactAddReport'
  artifactRemoveResponse:
    description: Artifact Remove
    schema:
      $ref: '#/definitions/ArtifactRemoveReport'
  artifactPushResponse:
    description: Artifact Push
    schema:
      $ref: '#/definitions/ArtifactPushReport'
  artifactPullResponse:
    description: Artifact Pull
    schema:
      $ref: '#/definitions/ArtifactPullReport'
  internalError:
    description: Internal server error
    schema:
      $ref: '#/definitions/ErrorModel'
  inspectArtifactResponse:
    description: Inspect Artifact
    schema:
      $ref: '#/definitions/ArtifactInspectReport'
  artifactNotFound:
    description: No such artifact
    schema:
      $ref: '#/definitions/ErrorModel'