{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://enterlocus.com/schemas/view-near-orbit-v1.schema.json",
  "title": "Package v2 Destination nearOrbit v1",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "version",
    "latitudeDegrees",
    "longitudeDegrees",
    "altitudeKilometers",
    "bearingDegrees",
    "pitchFromNadirDegrees",
    "sunLatitudeDegrees",
    "sunLongitudeDegrees",
    "rotationPeriodSeconds",
    "cloudHeightKilometers",
    "atmosphereHeightKilometers",
    "dayTexture",
    "nightTexture",
    "cloudTexture",
    "regionTexture",
    "regionMask",
    "fallbackPanorama",
    "skyMask",
    "galaxyTexture",
    "regionBounds",
    "starCatalog"
  ],
  "properties": {
    "version": {
      "type": "integer",
      "const": 1
    },
    "latitudeDegrees": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitudeDegrees": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "altitudeKilometers": {
      "type": "number",
      "minimum": 200,
      "maximum": 1000
    },
    "bearingDegrees": {
      "type": "number",
      "minimum": -360,
      "maximum": 360
    },
    "pitchFromNadirDegrees": {
      "type": "number",
      "minimum": 0,
      "maximum": 180
    },
    "sunLatitudeDegrees": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "sunLongitudeDegrees": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "rotationPeriodSeconds": {
      "type": "number",
      "minimum": 3600,
      "maximum": 86400
    },
    "cloudHeightKilometers": {
      "type": "number",
      "minimum": 1,
      "maximum": 20
    },
    "atmosphereHeightKilometers": {
      "type": "number",
      "minimum": 20,
      "maximum": 100
    },
    "dayTexture": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.(?:[jJ][pP][gG]|[pP][nN][gG])$"
    },
    "nightTexture": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.(?:[jJ][pP][gG]|[pP][nN][gG])$"
    },
    "cloudTexture": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.(?:[jJ][pP][gG]|[pP][nN][gG])$"
    },
    "regionTexture": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.(?:[jJ][pP][gG]|[pP][nN][gG])$",
      "description": "Exactly 1024x1024; fixed native LOD pool."
    },
    "regionMask": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.(?:[jJ][pP][gG]|[pP][nN][gG])$"
    },
    "fallbackPanorama": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.(?:[jJ][pP][gG]|[pP][nN][gG])$"
    },
    "skyMask": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.(?:[jJ][pP][gG]|[pP][nN][gG])$"
    },
    "galaxyTexture": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.(?:[jJ][pP][gG]|[pP][nN][gG])$"
    },
    "regionBounds": {
      "type": "array",
      "minItems": 4,
      "maxItems": 4,
      "items": {
        "type": "number"
      },
      "description": "[west,south,east,north], ordered longitude/latitude bounds; width and height <=10 degrees."
    },
    "starCatalog": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^(?!/)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(/|$)).+\\.[jJ][sS][oO][nN]$",
      "description": "Required horizontal locus-star-catalog v1, 1..20000 stars, <=1MiB."
    }
  }
}
