{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/blacksky/json-schema/blacksky-collection-full-aggregate-schema.json",
  "title": "CollectionFullAggregate",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/blacksky-glossary-api-openapi.yml#/components/schemas/CollectionFullAggregate",
  "type": "object",
  "allOf": [
    {
      "$ref": "#/$defs/CollectionExtended"
    },
    {
      "type": "object",
      "properties": {
        "providers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ProviderWithRoles"
          }
        }
      }
    },
    {
      "type": "object",
      "properties": {
        "dataProducts": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/DataProduct"
          }
        }
      }
    }
  ],
  "$defs": {
    "AcquisitionMode": {
      "type": "string",
      "enum": [
        "MONO",
        "STEREO",
        "TRISTEREO",
        "SPOT",
        "SPOT_DWELL",
        "SPOT_DWELL_FINE",
        "SPOT_DWELL_PRECISE",
        "SPOT_FINE",
        "SPOT_EXTENDED",
        "SPOT_ENHANCED",
        "SPOT_ULTRA",
        "SPOT_HIGH_RES",
        "SPOT_HIGH_RES_300",
        "SITE",
        "STRIP",
        "STRIP_ENHANCED",
        "SCAN",
        "SCAN_WIDE",
        "SCAN_ENHANCED",
        "STEREO_BURST",
        "STEREO_AREA_COVERAGE",
        "STEREO_SINGLE_PASS",
        "STEREO_MULTI_PASS"
      ]
    },
    "AcquisitionModeArray": {
      "type": "array",
      "description": "[Acquisition modes](https://docs.up42.com/data/reference/acquisition-modes) available for a collection.\n",
      "items": {
        "$ref": "#/$defs/AcquisitionMode"
      }
    },
    "Collection": {
      "required": [
        "description",
        "name",
        "title",
        "type"
      ],
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the collection.\n"
        },
        "title": {
          "type": "string",
          "description": "The title of the collection.\n"
        },
        "description": {
          "type": "string",
          "description": "The description of the collection.\n"
        },
        "type": {
          "$ref": "#/$defs/CollectionType"
        }
      },
      "description": "Information about the collection.\n"
    },
    "CollectionExtended": {
      "allOf": [
        {
          "$ref": "#/$defs/Collection"
        },
        {
          "$ref": "#/$defs/CollectionInfoExtension"
        }
      ]
    },
    "CollectionInfoExtension": {
      "required": [
        "integrations"
      ],
      "type": "object",
      "properties": {
        "metadata": {
          "$ref": "#/$defs/CollectionMetadata"
        },
        "integrations": {
          "$ref": "#/$defs/CollectionIntegrationArray"
        }
      }
    },
    "CollectionIntegration": {
      "type": "string",
      "enum": [
        "ACCESS_APPROVAL_REQUIRED",
        "SAMPLE_DATA_AVAILABLE",
        "MANUAL_REQUEST_REQUIRED",
        "FEASIBILITY_STUDY_REQUIRED",
        "FEASIBILITY_STUDY_MAY_BE_REQUIRED",
        "QUOTATION_REQUIRED",
        "PRICE_ESTIMATION_AVAILABLE",
        "SEARCH_AVAILABLE",
        "THUMBNAIL_AVAILABLE",
        "QUICKLOOK_AVAILABLE",
        "TASKING_OPPORTUNITIES_AVAILABLE"
      ]
    },
    "CollectionIntegrationArray": {
      "type": "array",
      "description": "[Integration values](https://docs.up42.com/developers/api-glossary#integrations) that indicate mandatory ordering steps, available actions, and mandatory or optional operations for a given collection.\n",
      "items": {
        "$ref": "#/$defs/CollectionIntegration"
      }
    },
    "CollectionMetadata": {
      "type": "object",
      "properties": {
        "productType": {
          "$ref": "#/$defs/ProductType"
        },
        "resolutionClass": {
          "$ref": "#/$defs/ResolutionClass"
        },
        "resolutionValue": {
          "$ref": "#/$defs/ResolutionValue"
        },
        "priority": {
          "$ref": "#/$defs/PriorityArray"
        },
        "acquisitionMode": {
          "$ref": "#/$defs/AcquisitionModeArray"
        }
      },
      "description": "The collection metadata."
    },
    "CollectionType": {
      "type": "string",
      "description": "The type of the collection.\n",
      "enum": [
        "ARCHIVE",
        "TASKING"
      ]
    },
    "DataProduct": {
      "required": [
        "description",
        "name",
        "title"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The data product ID.\n",
          "format": "uuid"
        },
        "name": {
          "type": "string",
          "description": "The data product name.\n"
        },
        "title": {
          "type": "string",
          "description": "The title of the data product.\n"
        },
        "description": {
          "type": "string",
          "description": "The description of the data product.\n"
        },
        "eulaId": {
          "type": "string",
          "description": "The EULA ID.\n",
          "format": "uuid"
        }
      }
    },
    "Priority": {
      "type": "string",
      "enum": [
        "STANDARD",
        "HIGH",
        "RUSH"
      ]
    },
    "PriorityArray": {
      "type": "array",
      "description": "[Priority tiers](https://docs.up42.com/data/reference/priority) available for a tasking collection.\n",
      "items": {
        "$ref": "#/$defs/Priority"
      }
    },
    "ProductType": {
      "type": "string",
      "description": "The type of product the collection delivers.\n",
      "enum": [
        "OPTICAL",
        "SAR",
        "ELEVATION"
      ]
    },
    "Provider": {
      "required": [
        "description",
        "name",
        "title"
      ],
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the provider.\n"
        },
        "title": {
          "type": "string",
          "description": "The title of the provider.\n"
        },
        "description": {
          "type": "string",
          "description": "The description of the provider.\n"
        }
      }
    },
    "ProviderRole": {
      "type": "string",
      "enum": [
        "PRODUCER",
        "HOST"
      ]
    },
    "ProviderRolesArray": {
      "required": [
        "roles"
      ],
      "type": "object",
      "properties": {
        "roles": {
          "type": "array",
          "description": "Provider roles:\n  - `PRODUCER`: a producer is a provider that initially acquired and processed the source data. Data acquired by a producer can be distributed to various hosts.\n  - `HOST`: a host is a provider that offers access to data acquired by a producer.\n",
          "items": {
            "$ref": "#/$defs/ProviderRole"
          }
        }
      }
    },
    "ProviderWithRoles": {
      "allOf": [
        {
          "$ref": "#/$defs/ProviderRolesArray"
        },
        {
          "$ref": "#/$defs/Provider"
        }
      ]
    },
    "ResolutionClass": {
      "type": "string",
      "description": "The spatial resolution class.\n",
      "enum": [
        "VERY_HIGH",
        "HIGH",
        "MEDIUM",
        "LOW"
      ]
    },
    "ResolutionValue": {
      "required": [
        "minimum"
      ],
      "type": "object",
      "properties": {
        "minimum": {
          "type": "number",
          "description": "The best possible resolution available for the collection, in meters.\n"
        },
        "maximum": {
          "type": [
            "number",
            "null"
          ],
          "description": "The least detailed resolution available for the collection, in meters. The parameter is omitted if the collection has only one resolution value, specified in `minimum`.\n"
        }
      },
      "description": "The level of detail achievable for the collection.\n"
    }
  }
}