{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/dream-sports/json-schema/dream-sports-deployment-schema.json",
  "title": "Deployment",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/dream-sports-deployments-api-openapi.yml#/components/schemas/Deployment",
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "key": {
      "type": "string",
      "description": "Deployment key used by clients"
    },
    "package": {
      "$ref": "#/$defs/Package"
    }
  },
  "$defs": {
    "Package": {
      "allOf": [
        {
          "$ref": "#/$defs/PackageInfo"
        },
        {
          "type": "object",
          "properties": {
            "blobUrl": {
              "type": "string",
              "format": "uri",
              "description": "URL to download package"
            },
            "packageHash": {
              "type": "string",
              "description": "SHA256 hash of package"
            },
            "size": {
              "type": "integer",
              "format": "int64",
              "description": "Package size in bytes"
            },
            "uploadTime": {
              "type": "integer",
              "format": "int64",
              "description": "Upload timestamp"
            },
            "releasedBy": {
              "type": "string",
              "description": "Email of user who released"
            },
            "releaseMethod": {
              "type": "string",
              "enum": [
                "Upload",
                "Promote",
                "Rollback"
              ]
            },
            "originalLabel": {
              "type": "string",
              "description": "Label of promoted/rolled back release"
            },
            "originalDeployment": {
              "type": "string",
              "description": "Name of source deployment for promotions"
            },
            "diffPackageMap": {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "size": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      ]
    },
    "PackageInfo": {
      "type": "object",
      "properties": {
        "appVersion": {
          "type": "string",
          "description": "Semver or semver range"
        },
        "description": {
          "type": "string"
        },
        "isDisabled": {
          "type": "boolean",
          "default": false
        },
        "isMandatory": {
          "type": "boolean",
          "default": false,
          "description": "Whether update is mandatory"
        },
        "rollout": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100,
          "description": "Percentage of users to receive update"
        },
        "label": {
          "type": "string",
          "description": "Generated release label"
        }
      }
    }
  }
}