Schema: errataΒΆ

This document shows the schema of erratum JSON or YAML files supported by this library, in JSON schema format. These files may be used within the ERRATA directory within a Staging structure.

The latest version of this schema is available in raw form at https://release-engineering.github.io/pushsource/errata-schema.yaml.

---
# Schema for erratum YAML or JSON files, as used in staging directories.
#

$schema: http://json-schema.org/draft-07/schema#
$id: http://release-engineering.github.io/pushsource/errata-schema.yaml



###############################################################################
#  Subschemas
definitions:

    # Sloppy integer-string.
    # Can be provided as a real integer,
    # a string representation of an integer, or an empty string.
    intstr:
        anyOf:
        - type: integer
          minimum: 0
        - type: string
          pattern: "^[0-9]*$"

    optional_string:
        # A field which may hold a string, or null.
        type:
        - string
        - "null"
    containerlistitem:
        type: object
        patternProperties:
            ".*":
                type: object
                properties:
                    digest:
                        type: string
                    images:
                        type: object
                        patternProperties:
                            ".*":
                                type: object
                                properties:
                                    digest:
                                        type: ["string", "null"]
                                required:
                                    - digest
                required:
                    - digest
                    - images

    container_list:
        type: array
        items:
            $ref: "#/definitions/containerlistitem"
        uniqueItems: true

    reference_list:
        type: array
        items:
            $ref: "#/definitions/reference"
        uniqueItems: true

    reference:
        type: object
        properties:
            href:
                type: string
            id:
                # It is preferred to use strings for this field, however
                # some very old data might use integers (e.g. bugzilla bug ID).
                # These will be converted to strings on load.
                type:
                - integer
                - string
                - "null"
            title:
                $ref: "#/definitions/optional_string"
            type:
                type: string
        required:
        - href
        - id
        - title
        - type

    pkg_collection_list:
        type: array
        items:
            $ref: "#/definitions/pkg_collection"
        uniqueItems: true

    pkg_collection:
        type: object
        properties:
            name:
                type: string
            short:
                type: string
            packages:
                type: array
                items:
                    $ref: "#/definitions/pkg"
                uniqueItems: true

    pkg:
        type: object
        properties:
            arch:
                type: string
            epoch:
                $ref: "#/definitions/intstr"
            filename:
                type: string
            name:
                type: string
            release:
                type: string
            src:
                type: string
            version:
                type: string
            # Note: this is also present at the top level of the erratum.
            reboot_suggested:
                type: boolean
            sum:
                type: array
                items:
                    type: string
                examples:
                - ["md5", "0d56f302617696d3511e71e1669e62c0",
                   "sha256", "31c4f73af90c6d267cc5281c59e4a93ae3557b2253d9a8e3fef55f3cafca6e54"]

        required:
        - name
        additionalProperties: false


###############################################################################
#  Main schema
type: object
properties:
    description:
        type: string
    from:
        type: string
    id:
        type: string
    issued:
        type: string
    pushcount:
        $ref: "#/definitions/intstr"
    # Note: this is also present under each package (if there are any).
    reboot_suggested:
        type: boolean
    release:
        $ref: "#/definitions/intstr"
    rights:
        type: string
    severity:
        type: string
    solution:
        type: string
    status:
        type: string
    summary:
        type: string
    title:
        type: string
    type:
        type: string
    updated:
        type: string
    version:
        $ref: "#/definitions/intstr"
    references:
        $ref: "#/definitions/reference_list"
    pkglist:
        $ref: "#/definitions/pkg_collection_list"

required:
- description
- from
- id
- issued
- rights
- solution
- summary
- title
- type
- updated