openapi: 3.0.1 info: title: AuroraX Application.wadl Data Distribution API description: "## Overview\n\nThis webpage is an interactive documentation interface for the AuroraX RESTful API. This API\nis used by several applications including the AuroraX Conjunction Search, Event Explorer,\nKeogramist, PyAuroraX, and IDL-AuroraX. You can view these applications and libraries at\nhttps://aurorax.space and\nhttps://github.com/aurorax-space.\n\nDetailed documentation about the AuroraX platform and examples of using this API can be found at\nhttps://docs.aurorax.space.\n\nBelow, we outline the major categories of endpoints available for use:\n\n| Interface | Description |\n| ---------------- | --------------------------------------------------------------------------- |\n| Accounts | Operations relating to user accounts, API keys, and saved user data |\n| Authentication | Authentication using an email address and password, or an API key |\n| Availability | Retrieve information describing what data is in the database |\n| Data Sources | Interact with data sources |\n| Conjunctions | Search for conjunctions between multiple sets of data sources |\n| Ephemeris | Search and manage ephemeris data associated with a data source |\n| Data Products | Search and manage data products data associated with a data source |\n| Utils | Utilities, such as describing a search query in an SQL-like format |\n\n## Authentication\n\nAuroraX allows for two methods of authentication:\n\n1. Authenticate via username and password using the /authenticate endpoint to obtain an access\n token. Access tokens need to be sent on every request for secure resources. Inactive access tokens\n timeout after 30 minutes.\n\n2. Authenticate using an API key sent in the request header (key called 'x-aurorax-api-key')\n\nMore information can be found\nhere.\n\n## Errors\n\nThis API uses standard HTTP status codes to indicate the success or failure of the\nAPI call. When an error occurs, the body of the response will be JSON and contain an error code\nand message. All errors will respond with this format:\n```\n{\n \"error_code\": \"DUPLICATE\",\n \"error_message\": \"There was a duplicate record found. No changes were made.\"\n}\n```\n" version: stable servers: - url: https://api.aurorax.space description: AuroraX production server variables: {} - url: https://api.staging.aurorax.space description: AuroraX staging server variables: {} - url: http://localhost:8080/ description: Local Development and Debugging variables: {} tags: - name: Data Distribution description: Endpoints supporting data distribution paths: /api/v1/data_distribution/datasets: get: tags: - Data Distribution summary: Retrieve available datasets description: "Retrieve information about available datasets. Filter based on parameters supplied.\n\nNotes:\n - filtering is case insensitive\n - data level description: https://www.earthdata.nasa.gov/engage/open-data-services-and-software/data-information-policy/data-levels" operationId: retrieve_datasets_api_v1_data_distribution_datasets_get parameters: - name: name in: query required: false schema: nullable: true type: string title: Name - name: level in: query required: false schema: type: string enum: - L0 - L1 - L1A - L2 - L3 title: Level responses: '200': description: Dataset information content: application/json: schema: type: array items: anyOf: - $ref: '#/components/schemas/Dataset' - $ref: '#/components/schemas/DatasetLegacy1' - $ref: '#/components/schemas/DatasetLegacy2' title: Response Retrieve Datasets Api V1 Data Distribution Datasets Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/data_distribution/urls: get: tags: - Data Distribution summary: Retrieve list of URLs for a given dataset description: "Retrieve list of URLs for a given dataset and timeframe.\n\nNotes:\n - start and end times are inclusive\n - start and end time format is YYYY-mm-ddTHH:MM:SS. Excluding values from the right to \n the left result in default values being used (eg. YYYY-mm-ddTHH results in YYYY-mm-ddTHH:00:00)\n - dataset matching is case insensitive\n - site_uid is expected to be the 4-letter site code, and is case insensitive\n - device_uid is expected to be the instrument identifier such as \"themis02\", \"rego-657\", or \"rgb-07\",\n and is case insensitive" operationId: retrieve_urls_api_v1_data_distribution_urls_get parameters: - name: name in: query required: true schema: type: string title: Name - name: start in: query required: true schema: type: string format: date-time title: Start - name: end in: query required: true schema: type: string format: date-time title: End - name: site_uid in: query required: false schema: nullable: true type: string title: Site Uid - name: device_uid in: query required: false schema: nullable: true type: string title: Device Uid - name: include_total_bytes in: query required: false schema: type: boolean default: false title: Include Total Bytes responses: '200': description: URLs content: application/json: schema: $ref: '#/components/schemas/FileListingResponse' '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '404': description: Dataset not found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '500': description: Data retrieval error content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/data_distribution/observatories: get: tags: - Data Distribution summary: Retrieve information about observatories description: "Retrieve information about observatories. Filter based on parameters supplied.\n\nNotes:\n - filtering for \"uid\" is case insensitive" operationId: retrieve_observatories_api_v1_data_distribution_observatories_get parameters: - name: instrument_array in: query required: true schema: type: string enum: - norstar_riometer - rego - smile_asi - swan_hsr - themis_asi - trex_blue - trex_nir - trex_rgb - trex_spectrograph title: Instrument Array - name: uid in: query required: false schema: nullable: true type: string title: Uid responses: '200': description: Observatory information content: application/json: schema: type: array items: $ref: '#/components/schemas/Observatory' title: Response Retrieve Observatories Api V1 Data Distribution Observatories Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/data_distribution/imaging_timeframes: post: tags: - Data Distribution summary: Retrieve imaging start and end times for a set of locations description: "Retrieve imaging start and end times for a set of locations. This is specific to the optical \ninstrumentation we provide data for.\n\nThe timestamp is expected to be UTC time.\n\nEach location in the 'locations' array can be specified either by a 4-letter site UID, or by\nproviding geodetic latitude and longitude. If the site_uid is provided, it is resolved to\ncoordinates using the known observatory list.\n\nNotes:\n - The threshold parameter is the solar zenith angle (in degrees) above which imaging occurs. \n The default value of 102.0 corresponds to nautical twilight, and what all UCalgary optical\n instruments use.\n - The `site_uid` parameter matching is case insensitive" operationId: retrieve_imaging_timeframes_api_v1_data_distribution_imaging_timeframes_post requestBody: content: application/json: schema: $ref: '#/components/schemas/ImagingTimeframesRequest' required: true responses: '200': description: Imaging times content: application/json: schema: items: $ref: '#/components/schemas/ImagingTimeframeResponse' type: array title: Response Retrieve Imaging Timeframes Api V1 Data Distribution Imaging Timeframes Post '400': description: Invalid request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '404': description: Site not found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ImagingTimeframeResponse: properties: timestamp: type: string title: Timestamp site_uid: nullable: true type: string title: Site Uid geodetic_latitude: type: number title: Geodetic Latitude geodetic_longitude: type: number title: Geodetic Longitude imaging_start: nullable: true type: string format: date-time title: Imaging Start imaging_end: nullable: true type: string format: date-time title: Imaging End type: object required: - timestamp - geodetic_latitude - geodetic_longitude title: ImagingTimeframeResponse ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError DatasetLegacy2: properties: name: type: string title: Name short_description: type: string title: Short Description long_description: type: string title: Long Description data_tree_url: type: string title: Data Tree Url file_listing_supported: type: boolean title: File Listing Supported level: type: string title: Level doi: nullable: true type: string title: Doi doi_details: nullable: true type: string title: Doi Details citation: nullable: true type: string title: Citation supported_libraries: items: type: string enum: - pyaurorax - pyucrio - idl-aurorax - idl-ucrio - pyucalgarysrs type: array title: Supported Libraries default: [] type: object required: - name - short_description - long_description - data_tree_url - file_listing_supported - level title: DatasetLegacy2 description: Dataset object for queries from PyAuroraX v1.3.3 or earlier FileListingResponse: properties: urls: items: type: string type: array title: Urls path_prefix: type: string title: Path Prefix count: type: integer title: Count total_bytes: nullable: true type: integer title: Total Bytes dataset: anyOf: - $ref: '#/components/schemas/Dataset' - $ref: '#/components/schemas/DatasetLegacy1' - $ref: '#/components/schemas/DatasetLegacy2' title: Dataset type: object required: - urls - path_prefix - count - total_bytes - dataset title: FileListingResponse HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError DatasetLegacy1: properties: name: type: string title: Name short_description: type: string title: Short Description long_description: type: string title: Long Description data_tree_url: type: string title: Data Tree Url file_listing_supported: type: boolean title: File Listing Supported level: type: string title: Level doi: nullable: true type: string title: Doi doi_details: nullable: true type: string title: Doi Details citation: nullable: true type: string title: Citation type: object required: - name - short_description - long_description - data_tree_url - file_listing_supported - level title: DatasetLegacy1 description: Dataset object for queries from PyAuroraX v1.3.3 or earlier ErrorMessage: properties: detail: type: string title: Detail type: object required: - detail title: ErrorMessage ImagingTimeframesRequest: properties: timestamp: type: string format: date-time title: Timestamp locations: items: $ref: '#/components/schemas/ImagingTimeframeLocation' type: array title: Locations threshold: type: number title: Threshold default: 102.0 type: object required: - timestamp - locations title: ImagingTimeframesRequest Observatory: properties: uid: type: string title: Uid full_name: type: string title: Full Name geodetic_latitude: type: number title: Geodetic Latitude geodetic_longitude: type: number title: Geodetic Longitude type: object required: - uid - full_name - geodetic_latitude - geodetic_longitude title: Observatory Dataset: properties: name: type: string title: Name short_description: type: string title: Short Description long_description: type: string title: Long Description data_tree_url: type: string title: Data Tree Url file_listing_supported: type: boolean title: File Listing Supported level: type: string title: Level doi: nullable: true type: string title: Doi doi_details: nullable: true type: string title: Doi Details citation: nullable: true type: string title: Citation supported_libraries: items: type: string enum: - pyaurorax - pyucrio - idl-aurorax - idl-ucrio - pyucalgarysrs type: array title: Supported Libraries default: [] file_time_resolution: type: string enum: - 1min - 1hr - 1day - not_applicable title: File Time Resolution type: object required: - name - short_description - long_description - data_tree_url - file_listing_supported - level - file_time_resolution title: Dataset ImagingTimeframeLocation: properties: site_uid: nullable: true type: string title: Site Uid geodetic_latitude: nullable: true type: number title: Geodetic Latitude geodetic_longitude: nullable: true type: number title: Geodetic Longitude type: object title: ImagingTimeframeLocation securitySchemes: AccessToken: type: http description: Send the Authorization header found in the response of a successful /authentication request on all secure endpoints. Copy it verbatim to the request header. It is fine to send this header on all requests to the API. The value in Swagger UI should only include the access token part (leave out 'Bearer'). name: Authorization in: header scheme: bearer bearerFormat: Generated by server ApiKeyAuth: type: apiKey description: API keys are intended to be used by non-interactive software interfacing with the REST API. These can be used instead of an Access Token approach. name: x-aurorax-api-key in: header