openapi: 3.0.1 info: title: AuroraX 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\n\ 1. 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: Availability description: Retrieve information about data in the database - name: Conjunction Search description: Search for conjunctions between multiple sets of data sources - name: Data Products Search description: Search for data products - name: Data Sources description: Interact with data sources - name: Manage Data description: Operations relating to managing ephemeris and data products data - name: Ephemeris Search description: Search ephemeris records - name: Authenticate description: Authenticate via email and password to get an Access Token. Use your API Key if you are building software without user interaction to run against the API. - name: Utils description: Various utilities paths: /api/v1/availability/data_products: get: tags: - Availability summary: Get the data_product availability for all Data Sources description: Returns a count of data by day for each data source. Provide query parameters to filter the results to just the sources you wish, in the time frames you wish operationId: getDataProductAvailability parameters: - name: start in: query description: Start date (default to Jan 1 of this year schema: type: string format: date - name: end in: query description: End date (default to start + 12 months or today + 1 month if start not provided) schema: type: string format: date - name: program in: query description: Filter by Program schema: type: string - name: platform in: query description: Filter by Platform schema: type: string - name: instrument_type in: query description: Filter by Instrument Type schema: type: string - name: source_type in: query description: Filter by Source Type schema: type: string enum: - ground - heo - leo - lunar - event_list - not_applicable - name: data_product_type in: query description: Filter by Data Product Type schema: type: string enum: - keogram - montage - movie - summary_plot - data_availability - name: owner in: query description: Filter by Owner schema: type: string - name: format in: query description: The format of the Data Source returned. Default is basic_info. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record - name: slow in: query description: Query the data directly (slower) for more accurate results. Default is false. schema: type: boolean responses: '200': description: List of data_product availability. content: application/json: schema: type: array items: $ref: '#/components/schemas/DataProduct Availability' '400': description: Not foundThis can occur if start or end is not in the ISO format YYYY-MM-DD. content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. Slow mode is currently not available.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/availability/ephemeris: get: tags: - Availability summary: Get the ephemeris availability for all Data Sources description: Returns a count of data by day for each data source. Provide query parameters to filter the results to just the sources you wish, in the time frames you wish operationId: getEphemerisAvailability parameters: - name: start in: query description: Start date (default to Jan 1 of this year schema: type: string format: date - name: end in: query description: End date (default to start + 12 months or today + 1 month if start not provided) schema: type: string format: date - name: program in: query description: Filter by Program schema: type: string - name: platform in: query description: Filter by Platform schema: type: string - name: instrument_type in: query description: Filter by Instrument Type schema: type: string - name: source_type in: query description: Filter by Source Type schema: type: string enum: - ground - heo - leo - lunar - event_list - not_applicable - name: owner in: query description: Filter by Owner schema: type: string - name: format in: query description: The format of the Data Source returned. Default is basic_info. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record - name: slow in: query description: Query the data directly (slower) for more accurate results. Default is false. schema: type: boolean responses: '200': description: List of ephemeris availability. content: application/json: schema: type: array items: $ref: '#/components/schemas/Ephemeris Availability' '400': description: Not foundThis can occur if start or end is not in the ISO format YYYY-MM-DD. content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. Slow mode is currently not available.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/conjunctions/requests/{request_id}: get: tags: - Conjunction Search summary: Get the conjunction search request details description: This endpoint is anonymous. The request ID can be shared with anyone. operationId: getSearchRequestDetails parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' delete: tags: - Conjunction Search summary: Cancel the conjunction search request description: Attempts to cancel the search request. If the request is already finished, attempts to delete the associated data file. If the request could be cancledd, the log will contain an error against the request noting the cancellation. operationId: cancelRequest parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '204': description: The search request finished and is no longer cancellable. The data file was deleted if it exists. '400': description: Request did not contain a request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/conjunctions/requests/{request_id}/data: get: tags: - Conjunction Search summary: Get the conjunction search result data description: Anonymous endpoint. The request ID can be shared with anyone. operationId: getSearchResultData parameters: - name: request_id in: path description: The request ID required: true schema: type: string - name: generate_ephemeris_queries in: query description: Return generated ephemeris queries. Default is false. schema: type: boolean - name: data_source_record_format in: query description: Control which epehermis source data is returned. Default is basic. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record responses: '200': description: Get the search result data content: application/json: schema: type: array items: $ref: '#/components/schemas/ConjunctionEvent' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' post: tags: - Conjunction Search summary: Get the conjunction search result data with a data format specification description: Anonymous endpoint. The request ID can be shared with anyone. operationId: getSearchResultWithDatAdvancedFormatting parameters: - name: request_id in: path description: The request ID required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SuperConjunctionEventFormat' required: true responses: '200': description: Get the search result data content: application/json: schema: type: array items: $ref: '#/components/schemas/ConjunctionEvent' '400': description: The request is invalid. Please correct it and retry. content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' delete: tags: - Conjunction Search summary: Delete a search result data file. description: Deletes the data file containing the search results. If this search is run in the future, the query will re-create the data file. operationId: deleteDataFile parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '400': description: Request did not contain a request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/conjunctions/search: post: tags: - Conjunction Search summary: Search for conjunctions description: "Anonymous unless logged in. Conjunctions may occur between satellites, or between\ \ satellites and ground instruments. AuroraX maintains an index of all conjunctions for north\ \ and south B-trace footprints (or magnetic location for ground-instruments). Conjunction queries\ \ describe the conjunction relationship between sources you are interested in.\n\n Some examples\ \ of conjunction queries are: \n Find all the nbtrace conjunction events that occured in Sep-2019\ \ between any satellite in the swarm program and themisd platform that were within 200 km of\ \ each other.\n\n Find all the nbtrace conjunction events that occured in 2019 between any themis\ \ satellite and any themis-asi platform that were within 450 km of the themis-asi platform but\ \ only when the themis satellite was also in a Dayside Magnetosphere (D_Msphere) region of space.\n\ \n Data returned when a ground-instrument is involved returns the time ranges for when that instrument\ \ was operational." operationId: searchMulti requestBody: content: application/json: schema: $ref: '#/components/schemas/SuperConjunctionQuery' required: true responses: '400': description: 'Missing or invalid parameters. Please refer to the documentation for correctness of this operation.' /api/v1/data_products/requests/{request_id}: get: tags: - Data Products Search summary: Get the data_product search request details description: This endpoint is anonymous. The request ID can be shared with anyone. operationId: getSearchRequestDetails_1 parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' delete: tags: - Data Products Search summary: Cancel the data_product search request description: Attempts to cancel the search request. The system will log an error against the request noting the cancellation. operationId: cancelRequest_1 parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '400': description: Request did not contain a request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/data_products/requests/{request_id}/data: get: tags: - Data Products Search summary: Get the data_product search result data description: Get the data returned by the given search request. If the data has expired, then 404 will be returned. operationId: getSearchResultData_1 parameters: - name: request_id in: path description: The request ID required: true schema: type: string - name: data_source_record_format in: query description: Control which epehermis source data is returned. Default is basic. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record responses: '200': description: Get the search result data content: application/json: schema: type: array items: $ref: '#/components/schemas/DataProduct' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' post: tags: - Data Products Search summary: Get the data_product search result data with a data format specification description: Get the data returned by the given search request. If the data has expired, then 404 will be returned. operationId: getSearchResultDataWithAdvancedFormatting parameters: - name: request_id in: path description: The request ID required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/DataProductFormat' required: true responses: '200': description: Get the search result data content: application/json: schema: type: array items: $ref: '#/components/schemas/DataProduct' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' delete: tags: - Data Products Search summary: Delete a search result data file. description: Deletes the data file containing the search results. If this search is run in the future, the query will re-create the data file. operationId: deleteDataFile_1 parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '400': description: Request did not contain a request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/data_products/search: post: tags: - Data Products Search summary: Search for data products description: Data products have their own metadata and can be filtered on those. Additionally, because data products are also linked to one or more data sources, they can also be found by adding metadata filters to data source criteria operationId: search requestBody: content: application/json: schema: $ref: '#/components/schemas/DataProductQuery' required: true responses: '400': description: 'Missing or invalid parameters. Please refer to the documentation for correctness of this operation.' /api/v1/data_products/search_synchronous: post: tags: - Data Products Search summary: Synchronously search for data products description: Anonymous unless logged in. The same search functionality as asynchronous search, except it is synchronous. Search results are limited to 10 years of data products. These requests are not saved, even if you are logged in. operationId: searchSynchronous parameters: - name: data_source_record_format in: query description: Control how the data product data source data is returned. Default is basic. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record requestBody: content: application/json: schema: $ref: '#/components/schemas/DataProductQueryWithResponseFormat' required: true responses: '200': description: List of data products content: application/json: schema: type: array items: $ref: '#/components/schemas/DataProduct' '400': description: 'Missing or invalid parameters. Please refer to the documentation for correctness of this operation.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/data_sources: get: tags: - Data Sources summary: List all data sources description: Data Sources are entities like satellites and ground stations (platforms) that produce data. operationId: getList parameters: - name: program in: query description: Filter by Program schema: type: string - name: platform in: query description: Filter by Platform schema: type: string - name: instrument_type in: query description: Filter by Instrument Type schema: type: string - name: source_type in: query description: Filter by Source Type schema: type: string enum: - ground - heo - leo - lunar - event_list - not_applicable - name: owner in: query description: Filter by Owner schema: type: string - name: format in: query description: The format of the Data Source returned. Default is basic_info. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record - name: include_stats in: query description: Include the data_source stats with the response. Default is false. schema: type: boolean responses: '200': description: List of data sources. content: application/json: schema: type: array items: $ref: '#/components/schemas/Data Source' post: tags: - Data Sources summary: Add an Data Source record description: "*Must have the Administrator or Owner role to perform this operation* \n\n*Must be\ \ authenticated*" operationId: add_1 requestBody: description: The Data Source record to add content: application/json: schema: $ref: '#/components/schemas/Data Source' required: true responses: '200': description: Data Source record created content: application/json: schema: $ref: '#/components/schemas/Data Source' '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: "Not Authorized. \nCould be attributable to any of the following:\n\n\n * Invalid\ \ API key\n * Invalid access token\n * Access token expired" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only the Data Source Owner or an Administrator may create new data sources.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '409': description: "Duplicate. \nThere is already a Data Source record with this identifier" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. This endpoint is currently offline.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] /api/v1/data_sources/{identifier}: get: tags: - Data Sources summary: Get details about a Data Source operationId: getDetail parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 - name: format in: query description: The format of the Data Source returned. Default is basic_info. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record - name: include_stats in: query description: Include the data_source stats with the response. Default is false. schema: type: boolean responses: '200': content: application/json: schema: $ref: '#/components/schemas/Data Source' '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' put: tags: - Data Sources summary: Update an Data Source record description: "*Must be an Administrator or be the Owner of this record* \n\n*Must be authenticated*" operationId: update_1 parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 requestBody: description: The Data Source record to update content: application/json: schema: $ref: '#/components/schemas/Data Source' required: true responses: '200': description: Data Source record updated content: application/json: schema: $ref: '#/components/schemas/Data Source' '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: "Not Authorized. \nCould be attributable to any of the following:\n\n\n * Invalid\ \ API key\n * Invalid access token\n * Access token expired" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only the Data Source Owner or an Administrator may update data sources.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '409': description: "Duplicate. \nThere is already an Data Source record for this identifier" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. This endpoint is currently offline.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] delete: tags: - Data Sources summary: Delete an Data Source record description: "*Must be an Owner of the Data Source or an Administrator in order to perform this\ \ operation* \n\n*Must be authenticated*" operationId: delete_1 parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 responses: '200': description: Data Source record deleted '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: "Not Authorized. \nCould be attributable to any of the following:\n\n\n * Invalid\ \ API key\n * Invalid access token\n * Access token expired" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only the Data Source Owner or an Administrator may delete data sources.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '409': description: "Conflict. \nThere is existing data associated with this source. Remove the data\ \ first, and then try this operation again." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. This endpoint is currently offline.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] patch: tags: - Data Sources summary: Partially update an Data Source record. Omitted fields are ignored. description: "*Must be an Administrator or be the Owner of this record* \n\n*Must be authenticated*" operationId: partialUpdate_1 parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 requestBody: description: The Data Source record to update content: application/json: schema: $ref: '#/components/schemas/Data Source' required: true responses: '200': description: Data Source record updated content: application/json: schema: $ref: '#/components/schemas/Data Source' '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: "Not Authorized. \nCould be attributable to any of the following:\n\n\n * Invalid\ \ API key\n * Invalid access token\n * Access token expired" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only the Data Source Owner or an Administrator may update data sources.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '409': description: "Duplicate. \nThere is already an Data Source record for this identifier" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. This endpoint is currently offline.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] /api/v1/data_sources/{identifier}/stats: get: tags: - Data Sources summary: Get some statistics about a Data Source, like the earliest/latest ephemeris loaded into AuroraX and number of ephemeris records loaded. This will be removed and combined with list data_source and get data_source detail. operationId: getStats parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 - name: format in: query description: The format of the Data Source returned. Default is basic_info. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record - name: slow in: query description: Query the data directly (slower) for more accurate results. Default is false. schema: type: boolean responses: '200': content: application/json: schema: $ref: '#/components/schemas/DataSourceStats' '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' deprecated: true /api/v1/data_sources/search: post: tags: - Data Sources summary: Search for data sources description: Find the data sources matching a set of search parameters. This endpoint is synchronous. operationId: search_1 parameters: - name: format in: query description: The format of the Data Source returned. Default is basic_info. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record - name: include_stats in: query description: Include the data_source stats with the response schema: type: boolean requestBody: content: application/json: schema: $ref: '#/components/schemas/DataSourceQuery' required: true responses: '200': description: List of data sources. content: application/json: schema: type: array items: $ref: '#/components/schemas/Data Source' '400': description: 'Missing or invalid parameters. Please refer to the documentation for correctness of this operation.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/data_sources/{identifier}/data_products: post: tags: - Manage Data summary: Add a data product description: 'Adds one or more Data Product records to the set of Data Products for this Data Source record. Must be an Administrator, Owner of this Data Source or have been assigned Maintainer of this Data Source. This end-point will accept very large files or continuous streams containing data product records. Data is processed asynchronously.' operationId: addDataProducts parameters: - name: identifier in: path description: The identifier specified in the Data Source record required: true schema: type: integer format: int32 requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/LoadDataProductSpecification' required: true responses: '202': description: The data product stream was accepted for processing. '400': description: 'Errors generated during load. Please refer to the documentation for correctness of this operation. Because this operation is asynchronous, some errors occurring later in the load may not be present in this response' content: application/json: schema: type: array items: $ref: '#/components/schemas/ErrorDocument' '401': description: "Not Authorized. \nCould be attributable to any of the following:\n\n\n * Invalid\ \ API key\n * Invalid access token\n * Access token expired" '403': description: 'Not Permitted Only the Data Source Owner, a Maintainer, or an Administrator may post new data products.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. This endpoint is currently offline.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] delete: tags: - Manage Data summary: Deletes a Data Product record description: "*Must be the Data Source Maintainer, Owner, or have Administrator access in order\ \ to perform this operation* \n\n*Must be authenticated*" operationId: deleteDataProduct parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 requestBody: description: The delete operation specification content: application/json: schema: $ref: '#/components/schemas/DeleteDataProductSpecification' required: true responses: '200': description: Data Product record deleted '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: "Not Authorized. \nCould be attributable to any of the following:\n\n\n * Invalid\ \ API key\n * Invalid access token\n * Access token expired" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only the Data Source Owner, a Maintainer, or an Administrator may delete data products.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. This endpoint is currently offline.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] /api/v1/data_sources/{identifier}/ephemeris: post: tags: - Manage Data summary: Add ephemeris data description: 'Adds data to the set of Ephemeris for this Data Source record. Must be an Administrator, Owner of this Data Source or have been assigned Maintainer of this Data Source. This end-point will accept very large files or continuous streams containing Ephemeris data. Data is processed asynchronously.' operationId: addEphemerisData parameters: - name: identifier in: path description: The identifier specified in the Data Source record required: true schema: type: integer format: int32 requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/LoadEphemerisSpecification' required: true responses: '202': description: The ephemeris stream was accepted for processing. '400': description: 'Errors generated during load. Please refer to the documentation for correctness of this operation. Because this operation is asynchronous, some errors occurring later in the load may not be present in this response' content: application/json: schema: type: array items: $ref: '#/components/schemas/ErrorDocument' '401': description: "Not Authorized. \nCould be attributable to any of the following:\n\n\n * Invalid\ \ API key\n * Invalid access token\n * Access token expired" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only the Data Source Owner, a Maintainer, or an Administrator may post new ephemeris data.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. This endpoint is currently offline.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] delete: tags: - Manage Data summary: Delete a range of Ephemeris records. This interface is asynchronous. description: "*Must be the Data Source Maintainer, Owner, or have Administrator access in order\ \ to perform this operation* \n\n*Must be authenticated*" operationId: deleteEphemeris parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 requestBody: description: The specification that matches the identifier (for data integrity) content: application/json: schema: $ref: '#/components/schemas/DeleteEphemerisSpecification' required: true responses: '202': description: Delete request accepted '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: "Not Authorized. \nCould be attributable to any of the following:\n\n\n * Invalid\ \ API key\n * Invalid access token\n * Access token expired" content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only the Data Source Owner, a Maintainer, or an Administrator may delete ephemeris data.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '503': description: 'Maintenance Mode The API is in maintenance mode. This endpoint is currently offline.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] /api/v1/data_sources/{identifier}/ephemeris/delete_jobs/{delete_job_id}: get: tags: - Manage Data summary: Get a recent (within 1 hour) delete job details operationId: getEphemerisDeleteJobDetail parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 - name: delete_job_id in: path description: The delete job identifier required: true schema: type: string responses: '200': description: Delete job details content: application/json: schema: type: array items: type: string '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/data_sources/{identifier}/ephemeris/delete_jobs: get: tags: - Manage Data summary: List recent (within 1 hour) delete jobs operationId: listEphemerisDeleteJobs parameters: - name: identifier in: path description: The identifier of the Data Source required: true schema: type: integer format: int32 responses: '200': description: List of recent delete jobs content: application/json: schema: type: array items: type: string '404': description: identifier not found content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/ephemeris/requests/{request_id}: get: tags: - Ephemeris Search summary: Get the ephemeris search request details description: This endpoint is anonymous. The request ID can be shared with anyone. operationId: getSearchRequestDetails_2 parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' delete: tags: - Ephemeris Search summary: Cancel the ephemeris search request description: Attempts to cancel the search request. The system will log an error against the request noting the cancellation. operationId: cancelRequest_2 parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '400': description: Request did not contain a request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/ephemeris/requests/{request_id}/data: get: tags: - Ephemeris Search summary: Get the ephemeris search result data description: Get the data returned by the given search request. If the data has expired, then 404 will be returned. operationId: getSearchResultData_2 parameters: - name: request_id in: path description: The request ID required: true schema: type: string - name: data_source_record_format in: query description: Control which epehermis source data is returned. Default is basic. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record responses: '200': description: Get the search result data content: application/json: schema: type: array items: $ref: '#/components/schemas/Ephemeris' '400': description: Bad request. Please fix the request and try again. content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' post: tags: - Ephemeris Search summary: Get the ephemeris search result data description: Get the data returned by the given search request. If the data has expired, then 404 will be returned. operationId: getSearchResultDataWithAdvancedFormatting_1 parameters: - name: request_id in: path description: The request ID required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/EphemerisFormat' required: true responses: '200': description: Get the search result data content: application/json: schema: type: array items: $ref: '#/components/schemas/Ephemeris' '400': description: There is an error in the request content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' delete: tags: - Ephemeris Search summary: Delete a search result data file. description: Deletes the data file containing the search results. If this search is run in the future, the query will re-create the data file. operationId: deleteDataFile_2 parameters: - name: request_id in: path description: The request ID required: true schema: type: string responses: '200': description: The request details content: application/json: schema: $ref: '#/components/schemas/SearchQueryResponse' '400': description: Request did not contain a request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '404': description: No request found with given request id content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/ephemeris/search: post: tags: - Ephemeris Search summary: Search for ephemeris description: "Anonymous unless logged in. Just like a conjunction search, but contains one side\ \ of the query. Used to search for particular ephemeris data of one or more Data Sources. Maximum\ \ time span returned is 1 month. Must provide at least one filter parameter. \n ** If you are\ \ logged in, your search will be private to only you, otherwise it is public **\n" operationId: search_2 requestBody: content: application/json: schema: $ref: '#/components/schemas/EphemerisQuery' required: true responses: '202': description: The search request was accepted. See the location header for the status of the search request. '400': description: 'Missing or invalid parameters. Please refer to the documentation for correctness of this operation.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/ephemeris/search_synchronous: post: tags: - Ephemeris Search summary: Synchronously search for ephemeris description: Anonymous unless logged in. The same search functionality as asynchronous search, except it is synchronous. Because of the synchronous nature, the maximum time frame is significantly reduced to a maximum of two days. These requests are not saved, even if you are logged in. operationId: searchSynchronous_1 parameters: - name: data_source_record_format in: query description: Control how the epehermis data source is returned. Default is basic. This option will be used if the advanced format is not present in the request body. schema: type: string enum: - identifier_only - basic_info - with_metadata - full_record requestBody: content: application/json: schema: $ref: '#/components/schemas/EphemerisQueryWithResponseFormat' required: true responses: '200': description: List of ephemeris content: application/json: schema: type: array items: $ref: '#/components/schemas/Ephemeris' '400': description: 'Missing or invalid parameters. Please refer to the documentation for correctness of this operation.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '500': description: There was an application error. Please contact support. content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/authenticate: post: tags: - Authenticate summary: Authenticate using email address and password description: 'Successfull authentication will return the HTTP header ''Authorization: Bearer . This header must be sent on all secure requests until /end_session is called or the access token times out (typically about 1/2 hr of inactivity).' operationId: authenticate requestBody: description: The authentication request content: application/json: schema: $ref: '#/components/schemas/AuthenticationRequest' required: true responses: '200': description: User authenticated. Send the 'Authorization' header found in the repsonse on all secure requests. headers: Authorization: description: Contains the access token required on all secure requrests. style: simple content: application/json: schema: $ref: '#/components/schemas/UserAccount' '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: 'Not Authorized The email address and password combination is incorrect.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' /api/v1/authenticate/end_session: post: tags: - Authenticate summary: End user session description: End an authenticated user session (invalidate an Access Token). This is the equivelant of a logout action. operationId: endSession responses: '200': description: User session is ended and the Access Token is no longer valid. '400': description: "Missing parameters. \n\nPlease refer to the documentation for correctness of this\ \ operation." content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - AccessToken: [] /api/v1/utils/timezones/convert: get: tags: - Utils summary: Given a timestamp in ISO format and a timezone, return the UTC equivelant description: This is the same operation for Citizen Science timestamps that are provided, but allows for preview of the calculated value operationId: calcUtc parameters: - name: ts in: query description: The timestamp schema: type: string format: date-time - name: tz in: query description: The timezone ts is in schema: type: string responses: '200': description: Timestamp in UTC content: application/json: schema: type: array items: type: string /api/v1/utils/describe/cartesian_products: post: tags: - Utils summary: Returns a count of cartesian products (tuples of data sources) of the given conjunction search object. This number is the combinations simple conjunction tuples between each data source found through the criteria block operationId: cartesianProduct requestBody: content: application/json: schema: $ref: '#/components/schemas/SuperConjunctionQuery' required: true responses: '200': description: The count of cartesian products found content: application/json: {} /api/v1/utils/admin/search_requests/{request_id}: delete: tags: - Utils summary: Delete a search request description: "Removes this search request and all associated data. \n\n*Must be authenticated*" operationId: deleteSearchRequest parameters: - name: request_id in: path description: The search request ID required: true schema: type: string responses: '200': description: The search request was delete '400': description: Invalid request. Please consult the documentation and retry. content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: 'Not Authorized Must be authenticated as an Administrator to remove a search request.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only an Administrator may list active searches.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] /api/v1/utils/admin/search_requests: get: tags: - Utils summary: List search summaries description: "List searches, optionally filtering by: active, type (ephemeris, data_product, conjunction),\ \ between start/end, file_size >=, result_count >=, query_duration >=, has error_condition \n\n\ *Must be authenticated*" operationId: findSearchRequests parameters: - name: active in: query description: 'Filter by active. True: active only, false: completed only, omit: both' schema: type: boolean - name: search_type in: query description: 'Filter by Search Type. Omit: all' schema: type: string enum: - conjunction - ephemeris - data_product - name: start in: query description: Filter by start. Later than or equal if provided or omit for all before end schema: type: string format: date-time - name: end in: query description: Filter by end. Earlier than or equal if provided or omit for all before start schema: type: string format: date-time - name: file_size in: query description: Filter by file size. Greater than or equal if provided or omit for all file sizes (kilobytes). Overrides active to be false. schema: type: integer format: int64 - name: result_count in: query description: Filter by result count. Greater than or equal if provided or omit for all result counts. Overrides active to be false. schema: type: integer format: int32 - name: query_duration in: query description: Filter by query duration (millis). Greater than or equal if provided or omit for any duration schema: type: integer format: int64 - name: error_condition in: query description: 'Filter by queries with an error condition. Ignored if filtering for active queries. True: must have error, false: must not have error, omit: both' schema: type: boolean responses: '200': description: List of search summaries. content: application/json: schema: type: array items: $ref: '#/components/schemas/SearchRequestListing' '400': description: Invalid request. Please consult the documentation and retry. content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '401': description: 'Not Authorized Must be authenticated as an Administrator to list search requests.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' '403': description: 'Not Permitted Only an Administrator may list search requests.' content: application/json: schema: $ref: '#/components/schemas/ErrorDocument' security: - ApiKeyAuth: [] - AccessToken: [] /api/v1/utils/timezones: get: tags: - Utils summary: List available time zones description: List available time zones. These should be standard from the TZ Database. In javascript, it is possible to use Intl.supportedValuesOf('timeZone') for valid values. operationId: listTimeZones responses: '200': description: List of time zones. content: application/json: schema: type: array items: type: string /api/v1/utils/describe/query/conjunction: post: tags: - Utils summary: Parses the query into an 'SQL like' query expression operationId: parse requestBody: content: application/json: schema: $ref: '#/components/schemas/SuperConjunctionQuery' required: true responses: '200': description: The parsed query content: application/json: schema: type: array items: type: string /api/v1/utils/describe/query/data_products: post: tags: - Utils summary: Parses the query into an 'SQL like' query expression operationId: parse_1 requestBody: content: application/json: schema: $ref: '#/components/schemas/DataProductQuery' required: true responses: '200': description: The parsed query content: application/json: schema: type: array items: type: string /api/v1/utils/describe/query/ephemeris: post: tags: - Utils summary: Parses the query into an 'SQL like' query expression operationId: parse_2 requestBody: content: application/json: schema: $ref: '#/components/schemas/EphemerisQuery' required: true responses: '200': description: The parsed query content: application/json: schema: type: array items: type: string /api/application.wadl/{path}: get: operationId: getExternalGrammar parameters: - name: path in: path required: true schema: type: string responses: default: description: default response content: application/xml: {} /api/application.wadl: get: operationId: getWadl responses: default: description: default response content: application/vnd.sun.wadl+xml: {} application/xml: {} components: schemas: UserAccount: type: object properties: account_id: type: string upload_username: type: string email_address: type: string email_confirmed: type: string format: date-time first_name: type: string last_name: type: string role: type: string enum: - Administrator - Owner - Maintainer - User agree_terms: type: string format: date-time this_login: type: string format: date-time last_login: type: string format: date-time disabled: type: boolean ErrorDocument: type: object properties: error_message: type: string description: If an error code exists, this will have contextual information for debugging error_code: type: string description: The error code enum: - Nil - Ok - NotPermitted - NotAuthorized - Duplicate - AssertionError - NotFound - ApplicationError - NotImplemented - ToManyRequests - Other - Conflict - NotAuthenticated - Unavailable description: This model provides additional details about error conditions that can be used for debugging. NewAccountRequest: required: - agree_terms - email_address - first_name - last_name - password type: object properties: email_address: type: string description: The email address of the user. An email will be sent to this address requesting confirmation of ownership. first_name: type: string description: The user's first name last_name: type: string description: The user's last name agree_terms: type: string description: A timestamp of when the user agreed to any terms and conditions for use of this account format: date-time password: type: string description: The users chosen password required to obtain an access token for use on subsequent API requests description: Represents the basic information required to create an account on AuroraX. Accounts are used to perform secure operations, save queries, and other metadata the user wishes to save on AuroraX. UpdateAccountRequest: required: - email_address type: object properties: email_address: type: string description: The email address of the user. An email will be sent to this address requesting confirmation of ownership. first_name: type: string description: The user's first name last_name: type: string description: The user's last name role: type: string description: Administrators can update a user's Role enum: - Administrator - Owner - Maintainer - User upload_username: type: string description: Set an upload_username to participate in citizen science description: Represents the basic information required to create an account on AuroraX. Accounts are used to perform secure operations, save queries, and other metadata the user wishes to save on AuroraX. NewApiKeyResponse: type: object properties: api_key: type: string description: Your secret API key description: Your new private API key. Treat this like a password and keep it safe. We do not store this value. If your API key is lost, please request a new one. Requesting a new API will invalidate the old one. Your API key is tied to your account, so your user role is applied to requests made with your API key. PasswordResetRequest: required: - email_address - password - reset_token type: object properties: email_address: type: string reset_token: type: string password: type: string Data Source: required: - display_name - instrument_type - platform - program - source_type type: object properties: identifier: type: integer description: Uniquely identifies this record. Optional when adding a new source record; system generated, unless this is a replacement (e.g., delete old, create new with same identifier as old). format: int32 program: type: string description: 'Examples: themis, themis-asi, rbsp' platform: type: string description: 'Examples: themisa, gill, rbspb' instrument_type: type: string description: 'Examples: pancromatic-asi' source_type: type: string description: g = Ground, h = Highly Eliptical Orbit, l = Low Earth Orbit enum: - ground - heo - leo - lunar - event_list - not_applicable display_name: type: string description: A friendly display name for web applications ephemeris_metadata_schema: type: array description: The ephemeris metadata schema and descriptions items: $ref: '#/components/schemas/MetadataSchema' data_product_metadata_schema: type: array description: The data_product metadata schema and descriptions items: $ref: '#/components/schemas/MetadataSchema' owner: type: string description: The Owner of this Data Source record. Defaults to the currently logged in user. maintainers: type: array description: The list of Maintainers items: type: string description: The list of Maintainers stats: $ref: '#/components/schemas/DataSourceStats' metadata: $ref: '#/components/schemas/JsonNode' description: Things that produce data, like satellites, ground stations/instruments, platforms DataProduct Availability: type: object properties: data_source: $ref: '#/components/schemas/Data Source' available_data_products: type: object additionalProperties: type: integer format: int32 description: DataProduct data availability by Data Source by Data_Product_Type by day. DataSourceStats: type: object properties: data_source: $ref: '#/components/schemas/Data Source' earliest_ephemeris_loaded: type: string format: date-time latest_ephemeris_loaded: type: string format: date-time ephemeris_count: type: integer format: int32 earliest_data_product_loaded: type: string format: date-time latest_data_product_loaded: type: string format: date-time data_product_count: type: integer format: int32 description: Some basic stats about this data_source, like number of ephemeris records. Read only. JsonNode: type: object MetadataSchema: type: object properties: field_name: type: string description: The name of the field found in the ephemeris metadata description: type: string description: A brief description of what the metadata field represents data_type: type: string description: An indicator to let you know what filter operations are available. Strings allow for =, !=, and in. Decimals allow for =, !=, <, >, <=, >=, and in. allowed_values: type: array description: An optional list of possible values available in the metadata. items: type: string description: An optional list of possible values available in the metadata. additional_description: type: string description: More details about what this metadata field is about searchable: type: boolean description: Used by UI's to include it in metadata fields exposed as searchable through the conjunction interface. The API allows for all fields to be searchable but some applications may chose to hide any fields marked searchable=false description: Describes the metadata fields found on Ephemeris data. Ephemeris Availability: type: object properties: data_source: $ref: '#/components/schemas/Data Source' available_ephemeris: type: object additionalProperties: type: integer format: int32 description: Ephemeris data availability by Data Source by day. File Summary: required: - metadata - size_bytes - uuid type: object properties: id: type: integer description: The internal ID of the image (for sorting) format: int32 uuid: type: string description: The generated UUID of the image sha1: type: string description: The generated SHA1 hash of the image original_filename: type: string description: The original filename of the image thumbnail: type: string description: Name of the thumbnail image thumbnail_size_bytes: type: integer description: Size of the thumbnail image in bytes format: int32 size_bytes: type: integer description: The size of the image in bytes format: int64 approved: type: boolean description: Indicates if this image has been approved by the System Administrator for public viewing. metadata: $ref: '#/components/schemas/Image Metadata' thumbnail_base64: type: string description: A thumbnail of the uplaoded image encoded in Base64 upload_username: type: string description: The upload username upload_date: type: string description: The date the file was uploaded format: date-time approved_date: type: string description: The date the file was approved format: date-time file_path_on_disk: type: string Image Metadata: required: - file_created_timestamp - file_format - file_type - image_height - image_width - timezone type: object properties: image_width: type: integer description: The image width in pixels format: int32 image_height: type: integer description: The image height in pixels format: int32 file_created_timestamp: type: string description: The timestamp this image/video was taken at. format: date-time timezone: type: string description: The timezone in which the file was taken timestamp_utc: type: string description: The UTC equivelant of fileCreatedTimestamp. Becomes the epoch value in the ephemeris record created. Optional. Will be calculated. format: date-time file_original_filename: type: string description: The file's original filename. video_length_seconds: type: integer description: The length of the video in seconds. Each minute becomes an ephemeris record. Required if this is an video, else not required. format: int32 file_format: type: string description: The file format (png, jpeg, MP4, MOV) mime_type: type: string description: The file mime type as set by the camera manufacturer file_type: type: string description: 'The file type: image or video' enum: - image - video geo_location: $ref: '#/components/schemas/Location' description: The metdata extracted from the image Location: type: object properties: lat: maximum: 90 minimum: -90 type: number lon: maximum: 180 minimum: -180 type: number description: A list of latitude and longitude locations of your choice SearchQueryResponse: type: object properties: search_request: $ref: '#/components/schemas/SearchRequest' logs: type: array items: $ref: '#/components/schemas/SearchRequestLog' search_result: $ref: '#/components/schemas/SearchResult' description: Search query response details SearchRequest: type: object properties: request_id: type: string query: type: string requested: type: string format: date-time request_type: type: string enum: - conjunction - ephemeris - data_product description: The original search request SearchRequestLog: type: object properties: timestamp: type: string format: date-time level: type: string enum: - debug - info - warn - error summary: type: string SearchResult: type: object properties: data_uri: type: string result_count: type: integer format: int32 result_file_deleted_timestamp: type: string format: date-time file_size: type: integer format: int64 completed_timestamp: type: string format: date-time query_duration: type: integer format: int64 error_condition: type: boolean description: Search result ConjunctionEvent: type: object properties: conjunction_type: type: string description: 'The conjunction type: north, south, or radial' enum: - nbtrace - sbtrace - geographic e1_source: $ref: '#/components/schemas/Data Source' e2_source: $ref: '#/components/schemas/Data Source' start: type: string description: When the conjunction started format: date-time end: type: string description: When the conjunction ended format: date-time min_distance: type: number description: The closest distance between the e1 source and e2 source in the time period max_distance: type: number description: The farthest distance between the e1 source and e2 source in the time period generated_e1_ephemeris_query: $ref: '#/components/schemas/EphemerisQuery' generated_e2_ephemeris_query: $ref: '#/components/schemas/EphemerisQuery' description: Conjunction events occur between data sources e1 and e2. The labels e1 and e2 simply define the program, platform, and instrument_type. This document contains the sources involved along with the start and end time frame as well as the minimum and maximum distance between e1 and e2 during the conjunction. DataSourceCriteriaForEphemeris: type: object properties: programs: type: array description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' items: type: string description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' platforms: type: array description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. items: type: string description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. instrument_types: type: array description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. items: type: string description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. ephemeris_metadata_filters: $ref: '#/components/schemas/MetadataExpressionGroup' description: Find Ephemeris data for these Data Sources. This could be a single platform (e.g., gillam; or swarma), or an entire program containing a group of platforms (e.g., all locations in the themis-asi program; or all satellites in the themis program). EphemerisQuery: required: - data_sources type: object properties: request_id: type: string description: An optional request_id to be used for this query. Ommit to have the API generate one for you. If you are using websockets, this id can be used establish a websocket before sending the search request to avoid a race condition of the query finishing before websocket is established. This technique is used by the AuroraX website data_sources: $ref: '#/components/schemas/DataSourceCriteriaForEphemeris' start: type: string description: Return ephemeris data that occured after this timestamp. Optional. Large time windows may take a long time for results to return. format: date-time end: type: string description: Return ephemeris data that occured before this timestamp. Optional. Large time windows may take a long time for results to return. format: date-time MetadataExpression: type: object properties: key: type: string description: The metadata key found as described in the data_source metadata schema record operator: type: string description: The filter expression operator enum: - '=' - < - <= - '>' - '>=' - '!=' - in - not in - between values: type: array description: The value(s) to test for. Note that 'in' and 'not-in' accept a list of values; 'between' accepts two values; all others accept just one value items: type: string description: The value(s) to test for. Note that 'in' and 'not-in' accept a list of values; 'between' accepts two values; all others accept just one value description: An expression like a where clause in SQL MetadataExpressionGroup: type: object properties: logical_operator: type: string description: Specifies if these filters should be OR'd or AND'd. If omitted, the default is to AND the expressions together enum: - AND - OR expressions: type: array description: The list of filter expressions items: $ref: '#/components/schemas/MetadataExpression' description: An expression group to allow for OR'd or AND'd expression filters ConjunctionEventFormat: type: object properties: conjunction_type: type: boolean e1_source: $ref: '#/components/schemas/DataSourceFormat' e2_source: $ref: '#/components/schemas/DataSourceFormat' start: type: boolean end: type: boolean min_distance: type: boolean max_distance: type: boolean generated_e1_ephemeris_query: $ref: '#/components/schemas/EphemerisQueryFormat' generated_e2_ephemeris_query: $ref: '#/components/schemas/EphemerisQueryFormat' DataSourceCriteriaForEphemerisFormat: type: object properties: programs: type: boolean platforms: type: boolean instrument_types: type: boolean ephemeris_metadata_filters: $ref: '#/components/schemas/MetadataExpressionGroupFormat' DataSourceFormat: type: object properties: identifier: type: boolean program: type: boolean platform: type: boolean instrument_type: type: boolean source_type: type: boolean display_name: type: boolean ephemeris_metadata_schema: $ref: '#/components/schemas/MetadataSchemaFormat' data_product_metadata_schema: $ref: '#/components/schemas/MetadataSchemaFormat' owner: type: boolean maintainers: type: boolean metadata: type: boolean EphemerisQueryFormat: type: object properties: request_id: type: boolean data_sources: $ref: '#/components/schemas/DataSourceCriteriaForEphemerisFormat' start: type: boolean end: type: boolean MetadataExpressionFormat: type: object properties: key: type: boolean operator: type: boolean values: type: boolean MetadataExpressionGroupFormat: type: object properties: logicalOperator: type: boolean expressions: $ref: '#/components/schemas/MetadataExpressionFormat' MetadataSchemaFormat: type: object properties: field_name: type: boolean description: type: boolean data_type: type: boolean allowed_values: type: boolean additional_description: type: boolean SuperConjunctionEventFormat: type: object properties: conjunction_type: type: boolean start: type: boolean end: type: boolean min_distance: type: boolean max_distance: type: boolean closest_epoch: type: boolean farthest_epoch: type: boolean data_sources: $ref: '#/components/schemas/DataSourceFormat' events: $ref: '#/components/schemas/ConjunctionEventFormat' description: Specify false for any data field you do not wish to be returned. All fields are optional. If omitted, the data won't be returned. EphemerisCriteriaAdhocLatLon: required: - locations type: object properties: locations: type: array description: A list of latitude and longitude locations of your choice items: $ref: '#/components/schemas/Location' description: Defines a geographical location (latitude, longitude) on Earth's surface to use as a criterion for calculating distance measurements between other criteria objects EphemerisCriteriaEvent: type: object properties: programs: type: array description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' items: type: string description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' platforms: type: array description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. items: type: string description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. instrument_types: type: array description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. items: type: string description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. ephemeris_metadata_filters: $ref: '#/components/schemas/MetadataExpressionGroup' description: Defines the particpants in the conjunction that are events. Participants in each of these criteria are OR'd while participants in different criteria are AND'd. EphemerisCriteriaGround: type: object properties: programs: type: array description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' items: type: string description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' platforms: type: array description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. items: type: string description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. instrument_types: type: array description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. items: type: string description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. ephemeris_metadata_filters: $ref: '#/components/schemas/MetadataExpressionGroup' description: Defines the ephemeris particpants in the conjunction that are ground stations. Participants in each these criteria are OR'd while participants in different criteria are AND'd. EphemerisCriteriaSpace: type: object properties: programs: type: array description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' items: type: string description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' platforms: type: array description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. items: type: string description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. instrument_types: type: array description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. items: type: string description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. hemisphere: type: array description: Filter these satellites to the hemisphere they are currently in geographicly items: type: string description: Filter these satellites to the hemisphere they are currently in geographicly enum: - northern - southern ephemeris_metadata_filters: $ref: '#/components/schemas/MetadataExpressionGroup' description: Defines the ephemeris particpants in the conjunction that are satellites. Participants in each of these criteria are OR'd while participants in different criteria are AND'd. SuperConjunctionQuery: type: object properties: request_id: type: string description: An optional request_id to be used for this query. Ommit to have the API generate one for you. If you are using websockets, this id can be used establish a websocket before sending the search request to avoid a race condition of the query finishing before websocket is established. This technique is used by the AuroraX website ground: type: array description: Defines the ephemeris particpants in the conjunction that are ground stations. Participants in each these criteria are OR'd while participants in different criteria are AND'd. items: $ref: '#/components/schemas/EphemerisCriteriaGround' space: type: array description: Defines the ephemeris particpants in the conjunction that are satellites. Participants in each of these criteria are OR'd while participants in different criteria are AND'd. items: $ref: '#/components/schemas/EphemerisCriteriaSpace' events: type: array description: Defines the particpants in the conjunction that are events. Participants in each of these criteria are OR'd while participants in different criteria are AND'd. items: $ref: '#/components/schemas/EphemerisCriteriaEvent' adhoc: type: array description: Defines the particpants in the conjunction that are locations of your choice. Participants in each of these criteria are OR'd while participants in different criteria are AND'd. items: $ref: '#/components/schemas/EphemerisCriteriaAdhocLatLon' start: type: string description: Return conjunction events that occured after this timestamp. Optional. Large time windows may take a long time for results to return. format: date-time end: type: string description: Return conjunction events that occured before this timestamp. Optional. Large time windows may take a long time for results to return. format: date-time conjunction_types: type: array description: Return conjunctions of any North B-Trace, Sourth B-Trace, and Geo Location. items: type: string description: Return conjunctions of any North B-Trace, Sourth B-Trace, and Geo Location. enum: - nbtrace - sbtrace - geographic max_distances: type: object additionalProperties: type: integer description: Return conjunctions there were within this distance (km) between criteria blocks. ground-ground defaults to 0. Null defaults to 2^31. format: int32 description: Return conjunctions there were within this distance (km) between criteria blocks. ground-ground defaults to 0. Null defaults to 2^31. example: ground1-space1: 300 ground2-space1: 400 ground1-events1: 900 space1-space2: null adhoc1-space1: 700 epoch_search_precision: type: integer description: Runs the query with higher fidelity and interpolates each 30 second epoch. Queries can be much slower using this method, but a greater number of results may be found. format: int32 default: 60 enum: - 30 - 60 description: There must be at least 2 Ephemeris Criteria in order to calculate the distance between them in a conjunction. DataProduct: type: object properties: start: type: string format: date-time end: type: string format: date-time data_source: $ref: '#/components/schemas/Data Source' url: type: string data_product_type: type: string enum: - keogram - montage - movie - summary_plot - data_availability metadata: type: string DataProductFormat: type: object properties: start: type: boolean end: type: boolean data_source: $ref: '#/components/schemas/DataSourceFormat' url: type: boolean data_product_type: type: boolean metadata: type: boolean description: The advanced format to use in the response object data DataProductQuery: type: object properties: request_id: type: string description: An optional request_id to be used for this query. Ommit to have the API generate one for you. If you are using websockets, this id can be used establish a websocket before sending the search request to avoid a race condition of the query finishing before websocket is established. This technique is used by the AuroraX website data_sources: $ref: '#/components/schemas/DataSourcesCriteriaForDataProducts' start: type: string description: Return data products that have a start date equal or after this this timestamp. Optional. Large time windows may take a long time for results to return. format: date-time end: type: string description: Return data products that have an end date equal of before this timestamp. Optional. Large time windows may take a long time for results to return. format: date-time data_product_type_filters: type: array description: Filter the data products to return only these data product types. items: type: string description: Filter the data products to return only these data product types. enum: - keogram - montage - movie - summary_plot - data_availability DataSourcesCriteriaForDataProducts: type: object properties: programs: type: array description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' items: type: string description: The list of programs in e1 or e2. Programs group platforms. Programs are like 'themis', 'swarm', 'themis-asi', 'TRex' platforms: type: array description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. items: type: string description: The list of platforms in e1 or e2. Platforms are like 'themis-asi gill' or 'swarma'. Use this to narrow the set of sources within the programs listed. instrument_types: type: array description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. items: type: string description: The list of instrument-types in e1 or e2. Instrument types are like 'panchromatic-asi'. A platform may have zero or more instrument types. data_product_metadata_filters: $ref: '#/components/schemas/MetadataExpressionGroup' description: Find data products generated from data of these Data Sources. This could be a single platform (e.g., gillam; or swarma), or an entire program containing a group of platforms (e.g., all locations in the themis-asi program; or all satellites in the themis program). DataProductQueryWithResponseFormat: required: - query type: object properties: query: $ref: '#/components/schemas/DataProductQuery' response_format: $ref: '#/components/schemas/DataProductFormat' description: DataProduct Query with Response Format DataSourceQuery: type: object properties: programs: type: array items: type: string platforms: type: array items: type: string instrument_types: type: array items: type: string LoadDataProductSpecification: required: - data_product_type - end - instrument_type - platform - program - start - url type: object properties: program: type: string platform: type: string instrument_type: type: string start: type: string format: date-time end: type: string format: date-time url: type: string metadata: $ref: '#/components/schemas/JsonNode' data_product_type: type: string enum: - keogram - montage - movie - summary_plot - data_availability LoadEphemerisSpecification: required: - epoch - instrument_type - platform - program type: object properties: program: type: string platform: type: string instrument_type: type: string epoch: type: string format: date-time location_geo: $ref: '#/components/schemas/Location' location_gsm: $ref: '#/components/schemas/Location' nbtrace: $ref: '#/components/schemas/Location' sbtrace: $ref: '#/components/schemas/Location' metadata: $ref: '#/components/schemas/JsonNode' DeleteDataProductSpecification: required: - instrument_type - platform - program type: object properties: program: type: string platform: type: string instrument_type: type: string urls: type: array items: type: string DeleteEphemerisSpecification: required: - end - instrument_type - platform - program - start type: object properties: program: type: string platform: type: string instrument_type: type: string start: type: string format: date-time end: type: string format: date-time Ephemeris: type: object properties: data_source: $ref: '#/components/schemas/Data Source' epoch: type: string format: date-time location_geo: $ref: '#/components/schemas/Location' location_gsm: $ref: '#/components/schemas/Location' nbtrace: $ref: '#/components/schemas/Location' sbtrace: $ref: '#/components/schemas/Location' metadata: type: string EphemerisFormat: type: object properties: data_source: $ref: '#/components/schemas/DataSourceFormat' epoch: type: boolean location_geo: $ref: '#/components/schemas/LocationFormat' location_gsm: $ref: '#/components/schemas/LocationFormat' nbtrace: $ref: '#/components/schemas/LocationFormat' sbtrace: $ref: '#/components/schemas/LocationFormat' metadata: type: boolean description: Optional advanced formatting of the response data LocationFormat: type: object properties: lat: type: boolean lon: type: boolean EphemerisQueryWithResponseFormat: required: - query type: object properties: query: $ref: '#/components/schemas/EphemerisQuery' response_format: $ref: '#/components/schemas/EphemerisFormat' description: Ephemeris Query with Response Format AuthenticationRequest: required: - email_address - password type: object properties: email_address: type: string description: The email address of the user. An email will be sent to this address requesting confirmation of ownership. password: type: string description: This users password description: A container for authenticating a user by email address and password AddImageSpecification: type: object properties: url: type: string type_of_image: type: string image_timestamp: type: string format: date-time features: type: array items: type: number format: float SimilarImage: type: object properties: url: type: string features: type: array items: type: number format: float similarity: type: number format: float image_id: type: integer format: int32 SimilarImagesSpecification: type: object properties: image_id: type: integer format: int32 type_of_image: type: string similar_images: type: array items: $ref: '#/components/schemas/SimilarImage' Image: type: object properties: id: type: integer format: int32 url: type: string type_of_image: type: string indexed: type: boolean image_timestamp: type: string format: date-time features: type: array items: type: number format: float DeleteImagesSpecification: type: object properties: image_ids: type: array items: type: integer format: int32 types_of_images: type: array items: type: string SearchRequestListing: type: object properties: search_type: type: string description: The type of search request (e.g., ephemeris, conjunction, etc.) enum: - conjunction - ephemeris - data_product ip_address: type: string description: The IP address that requested the search request_id: type: string description: The unique request id requested: type: string description: The date and time when the search was requested format: date-time active: type: boolean description: The request is currently active (not completed). query_duration: type: integer description: How long the query is/was running for in milliseconds format: int64 result_file_exists: type: boolean description: True if the result file still exists file_size: type: integer description: The size of the file in bytes (even if deleted, the size of the file that was). Null if there is no result file found. format: int64 result_count: type: integer description: The number of results this search yielded. Null if there is no result yet. format: int32 error_condition: type: boolean description: If the search ended with an error condition description: Search request listing 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