---
$schema: "http://json-schema.org/schema#"
$id: "https://opendev.org/openstack/releases/src/branch/master/README.rst"

# Do not allow any properties not defined here. This lets us catch
# typos.
additionalProperties: false

required:
  - team
  - type

properties:
  team:
    type: "string"
  launchpad:
    type: "string"
  storyboard:
    # TODO(fungi): Previously this was an integer but now we
    # want to support strings. This can be changed to "string"
    # later if all the data gets updated from numbers to names.
    type: ["integer", "string"]
  release-notes:
    oneOf:
      - type: "string"
      # We don't include any details about the object form of the
      # release notes because the keys are the repository names.
      - type: "object"
  include-pypi-link:
    type: "boolean"
  release-model:
    type: "string"
    enum: ["cycle-with-intermediary", "cycle-with-milestones", "cycle-trailing", "untagged", "cycle-with-rc", "cycle-automatic", "abandoned"]
  type:
    type: "string"
    enum: ["horizon-plugin", "library", "client-library", "service", "tempest-plugin", "other", "trailing"]
  artifact-link-mode:
    type: "string"
    enum: ["tarball", "none"]
  repository-settings:
    type: "object"
    properties:
      additionalProperties: False
      pypi-name:
        type: "string"
      flags:
        type: "array"
        items:
          type: "string"
          enum: [ "no-artifact-build-job", "retired" ]
      tarball-base:
        type: "string"
  release-type:
    type: "string"
    enum: [ "python-service", "python-pypi", "xstatic", "fuel",
            "nodejs", "puppet", "neutron", "horizon", "openstack-manuals",
            "manila-image-elements", "generic" ]
  stable-branch-type:
    type: "string"
    enum: [ "std", "tagless", "upstream", "none", "std-with-versions" ]
  cycle-highlights:
    type: "array"
    items:
      type: "string"
  releases:
    type: "array"
    items:
      type: "object"
      properties:
        version:
          type: "string"
        projects:
          type: "array"
          items:
            type: "object"
            required:
              - repo
              - hash
            properties:
              repo:
                type: "string"
              hash:
                type: "string"
              comment:
                type: "string"
              tarball-base:
                type: "string"
            additionalProperties: False
        diff-start:
          type: "string"
        flags:
          type: "array"
          items:
            type: "string"
            enum: [ "forced", "skipped-sig" ]
      required: ["version", "projects"]
      additionalProperties: False
  branches:
    type: "array"
    items:
      type: "object"
      properties:
        name:
          type: "string"
        location:
          oneOf:
            - type: "string"
            - type: "object"
      required: ["name", "location"]
      additionalProperties: False
  stable-status:
    type: "string"
    enum:
      - future
      - development
      - maintained
      - extended maintenance
      - unmaintained
      - end of life