{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.com/schemas/golioth/golioth-release-schema.json",
  "title": "Golioth Release",
  "description": "Schema for a Golioth Release — a bundle of one or more firmware Artifacts that may be rolled out to a tagged subset of devices.",
  "type": "object",
  "required": ["id", "artifactIds", "createdAt"],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique release identifier."
    },
    "projectId": {
      "type": "string",
      "description": "Identifier of the parent project."
    },
    "releaseTags": {
      "type": "array",
      "description": "Semantic version tags assigned to this release (e.g. '1.2.0').",
      "items": { "type": "string" }
    },
    "artifactIds": {
      "type": "array",
      "description": "Identifiers of firmware artifacts included in this release.",
      "items": { "type": "string" },
      "minItems": 1
    },
    "tagIds": {
      "type": "array",
      "description": "Device tags this release targets. Devices with at least one matching tag are eligible.",
      "items": { "type": "string" }
    },
    "rollout": {
      "type": "boolean",
      "description": "Whether the release is currently being rolled out to devices."
    },
    "rolledOutAt": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "Timestamp at which the release was rolled out (null when not yet rolled out)."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    }
  },
  "additionalProperties": true
}
