openapi: 3.0.1
info:
title: AuroraX Application.wadl Auroral Transport Model (ATM) 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\n<a href='https://aurorax.space' target='_blank'>https://aurorax.space</a> and\n<a href='https://github.com/aurorax-space' target='_blank'>https://github.com/aurorax-space</a>.\n\nDetailed documentation about the AuroraX platform and examples of using this API can be found at\n<a href='https://docs.aurorax.space' target='_blank'>https://docs.aurorax.space</a>.\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\n<a href='https://docs.aurorax.space/code/advanced_usage/authentication' target='_blank'>here</a>.\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: Auroral Transport Model (ATM)
description: Endpoints to utilize the Auroral Transport Model
paths:
/api/v1/atm/forward:
post:
tags:
- Auroral Transport Model (ATM)
summary: Perform forward ATM calculation
description: "Perform a forward calculation using **VERSION 1** of the TREx Auroral Transport Model and the supplied \ninput parameters.\n\nInput notes:\n - timestamp\n - timestamp is expected to be in UTC, and is valid for any value up to the end of the previous day\n - the 'Z' character at the end of the timestamp is optional, and will be ignored if it is supplied\n - latitude and longitude are to be in geodetic coordinates (-90 to 90 lat, -180 to 180 lon)\n - maxwellian_characteristic_energy must be specified if the maxwellian_energy_flux is not 0\n - gaussian_peak_energy must be specified if the gaussian_energy_flux is not 0\n - gaussian_spectral_width must be specified if the gaussian_energy_flux is not 0\n - valid values for nrlmsis_model_version are '00' and '2.0'\n - The ATM model is 1D and time-independent. However, the optional parameters timescale_auroral and \n timescale_transport provide limited support for time-dependent and transport process.\n - timescale_auroral (T0) is the duration of the precipitation; default value is 600 sec\n - timescale_transport is defined by L/v0, in which L is the dimension of the auroral structure, \n and v0 is the cross-structure drift speed. Default value is 600 sec.\n - the model quasi-analytically solves the continuity equation under a square input (with time \n duration T0 and spatial width L) input of precipitation. The initial/boundary conditions are \n given by IRI. The output yields the mean density/VER over [0-L] at time T0.\n - units\n - timescale parameters: seconds\n - maxwellian energy flux: erg/cm2/s\n - maxwellian characteristic energy: eV\n - gaussian energy flux: erg/cm2/s\n - gaussian peak energy: eV\n - gaussian spectral width: eV\n - custom spectrum\n - energy in eV, flux in 1/cm2/s/eV\n - energy and flux arrays must be the same length\n - by default requests are cached; use the 'no_cache' parameter to disable this functionality\n\nOutput notes:\n - output parameter of the request are toggles the enable/disable each field's inclusion in the response\n - all output parameters are false by default\n - altitude is in kilometers\n - emission data: 1-D array -- volume emission rate (1/cm^3/s)\n - plasma electron density: 1-D array -- density (cm^-3)\n - plasma O2+ density: 1-D array -- density (cm^-3)\n - plasma NO+ density: 1-D array -- density (cm^-3)\n - plasma O+ density: 1-D array -- density (cm^-3)\n - plasma ionisation rate: 1-D array -- ionisation rate (1/cm^3/s)\n - plasma electron temperature: 1-D array -- temperature (K)\n - plasma ion temperature: 1-D array -- temperature (K)\n - plasma peterson conductivity: 1-D array -- conductivity (S/m)\n - plasma hall conductivity: 1-D array -- conductivity (S/m)\n - neutral O2 density: 1-D array -- density (cm^-3)\n - neutral O density: 1-D array -- density (cm^-3)\n - neutral N2 density: 1-D array -- density (cm^-3)\n - neutral N density: 1-D array -- density (cm^-3)\n - neutral temperature: 1-D array -- temperature (K)"
operationId: atm_forward_api_v1_atm_forward_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/src__atm__v1__schemas_forward__ATMForwardRequest'
examples:
base:
summary: Default request object
description: Default field values, adjust accordingly
value:
atm_model_version: '1.0'
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 0
geodetic_longitude: 0
maxwellian_energy_flux: 10
gaussian_energy_flux: 0
maxwellian_characteristic_energy: 5000
gaussian_peak_energy: 1000
gaussian_spectral_width: 100
nrlmsis_model_version: '2.0'
oxygen_correction_factor: 1
timescale_auroral: 600
timescale_transport: 600
custom_spectrum:
energy: []
flux: []
output:
height_integrated_rayleighs_4278: false
height_integrated_rayleighs_5577: false
height_integrated_rayleighs_6300: false
height_integrated_rayleighs_8446: false
height_integrated_rayleighs_lbh: false
height_integrated_rayleighs_1304: false
height_integrated_rayleighs_1356: false
altitudes: false
emission_4278: false
emission_5577: false
emission_6300: false
emission_8446: false
emission_lbh: false
emission_1304: false
emission_1356: false
plasma_electron_density: false
plasma_o2plus_density: false
plasma_oplus_density: false
plasma_noplus_density: false
plasma_ionisation_rate: false
plasma_electron_temperature: false
plasma_ion_temperature: false
plasma_pederson_conductivity: false
plasma_hall_conductivity: false
neutral_o2_density: false
neutral_o_density: false
neutral_n2_density: false
neutral_n_density: false
neutral_temperature: false
no_cache: false
example0:
summary: A simple example
description: A simple example
value:
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 51.04
geodetic_longitude: -114.5
output:
height_integrated_rayleighs_4278: true
height_integrated_rayleighs_5577: true
height_integrated_rayleighs_6300: true
height_integrated_rayleighs_8446: true
height_integrated_rayleighs_lbh: true
height_integrated_rayleighs_1304: true
height_integrated_rayleighs_1356: true
altitudes: true
example1:
summary: A simple example with all output parameters
description: A simple example with all output parameters
value:
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 51.04
geodetic_longitude: -114.5
output:
height_integrated_rayleighs_4278: true
height_integrated_rayleighs_5577: true
height_integrated_rayleighs_6300: true
height_integrated_rayleighs_8446: true
height_integrated_rayleighs_lbh: true
height_integrated_rayleighs_1304: true
height_integrated_rayleighs_1356: true
altitudes: true
emission_4278: true
emission_5577: true
emission_6300: true
emission_8446: true
emission_lbh: true
emission_1304: true
emission_1356: true
plasma_electron_density: true
plasma_o2plus_density: true
plasma_oplus_density: true
plasma_noplus_density: true
plasma_ionisation_rate: true
plasma_electron_temperature: true
plasma_ion_temperature: true
plasma_pederson_conductivity: true
plasma_hall_conductivity: true
neutral_o2_density: true
neutral_o_density: true
neutral_n2_density: true
neutral_n_density: true
neutral_temperature: true
no_cache: false
example2:
summary: A simple example without using the cache
description: A simple example without using the cache
value:
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 51.04
geodetic_longitude: -114.5
output:
height_integrated_rayleighs_4278: true
height_integrated_rayleighs_5577: true
height_integrated_rayleighs_6300: true
height_integrated_rayleighs_8446: true
height_integrated_rayleighs_lbh: true
height_integrated_rayleighs_1304: true
height_integrated_rayleighs_1356: true
altitudes: true
no_cache: true
required: true
responses:
'200':
description: Calculated outputs
content:
application/json:
schema:
$ref: '#/components/schemas/src__atm__v1__schemas_forward__ATMForwardResponse'
'400':
description: Problematic request made
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Data generation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/atm/inverse:
post:
tags:
- Auroral Transport Model (ATM)
summary: Perform inverse ATM calculation
description: "Perform an inverse calculation using **VERSION 1** of the TREx Auroral Transport Model and the supplied \ninput parameters.\n\nInput notes:\n - timestamp\n - timestamp is expected to be in UTC\n - only specific dates are valid at this time. A 400 error will be returned if an unsupported date is\n requested. If you want to get a date that we have not enabled support for yet, please contact us.\n - the 'Z' character at the end of the timestamp is optional, and will be ignored if it is supplied\n - latitude and longitude\n - are to be in geodetic coordinates\n - latitude is currently limited to >=50.0 and <61.5 degrees\n - longitude is currently limited >=-110 and <-70 and degrees\n - valid values for nrlmsis_model_version are '00' and '2.0'\n - valid values for precipitation_flux_spectral_type are 'gaussian' and 'maxwellian'\n - intensity parameters are expected to be height-integrated values, and in Rayleighs\n - by default requests are cached; use the 'no_cache' parameter to disable this functionality\n\nOutput notes:\n - output parameter of the request are toggles the enable/disable each field's inclusion in the response\n - all output parameters are false by default\n - altitude is in kilometers\n - energy flux: erg/cm2/s\n - characteristic energy: eV\n - emission data: 1-D array -- volume emission rate (1/cm^3/s)\n - plasma electron density: 1-D array -- density (cm^-3)\n - plasma O2+ density: 1-D array -- density (cm^-3)\n - plasma NO+ density: 1-D array -- density (cm^-3)\n - plasma O+ density: 1-D array -- density (cm^-3)\n - plasma ionisation rate: 1-D array -- ionisation rate (1/cm^3/s)\n - plasma electron temperature: 1-D array -- temperature (K)\n - plasma ion temperature: 1-D array -- temperature (K)\n - plasma peterson conductivity: 1-D array -- conductivity (S/m)\n - plasma hall conductivity: 1-D array -- conductivity (S/m)\n - neutral O2 density: 1-D array -- density (cm^-3)\n - neutral O density: 1-D array -- density (cm^-3)\n - neutral N2 density: 1-D array -- density (cm^-3)\n - neutral N density: 1-D array -- density (cm^-3)\n - neutral temperature: 1-D array -- temperature (K)"
operationId: atm_inverse_api_v1_atm_inverse_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/src__atm__v1__schemas_inverse__ATMInverseRequest'
examples:
base:
summary: Default request object
description: Default field values, adjust accordingly
value:
atm_model_version: '1.0'
timestamp: '2024-10-01T06:00:00'
geodetic_latitude: 0
geodetic_longitude: 0
intensity_4278: 1000
intensity_5577: 6000
intensity_6300: 600
intensity_8446: 400
precipitation_flux_spectral_type: gaussian
nrlmsis_model_version: '2.0'
atmospheric_attenuation_correction: false
output:
altitudes: false
energy_flux: false
characteristic_energy: false
oxygen_correction_factor: false
height_integrated_rayleighs_4278: false
height_integrated_rayleighs_5577: false
height_integrated_rayleighs_6300: false
height_integrated_rayleighs_8446: false
emission_4278: false
emission_5577: false
emission_6300: false
emission_8446: false
plasma_electron_density: false
plasma_o2plus_density: false
plasma_oplus_density: false
plasma_noplus_density: false
plasma_ionisation_rate: false
plasma_electron_temperature: false
plasma_ion_temperature: false
plasma_pederson_conductivity: false
plasma_hall_conductivity: false
neutral_o2_density: false
neutral_o_density: false
neutral_n2_density: false
neutral_n_density: false
neutral_temperature: false
no_cache: false
example0:
summary: A simple example
description: A simple example
value:
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 58.28
geodetic_longitude: -103.68
intensity_4278: 2300
intensity_5577: 11400
intensity_6300: 530
intensity_8446: 427
output:
altitudes: true
energy_flux: true
characteristic_energy: true
oxygen_correction_factor: true
example1:
summary: A simple example with all output parameters
description: A simple example with all output parameters
value:
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 58.28
geodetic_longitude: -103.68
intensity_4278: 2300
intensity_5577: 11400
intensity_6300: 530
intensity_8446: 427
output:
altitudes: true
energy_flux: true
characteristic_energy: true
oxygen_correction_factor: true
height_integrated_rayleighs_4278: true
height_integrated_rayleighs_5577: true
height_integrated_rayleighs_6300: true
height_integrated_rayleighs_8446: true
emission_4278: true
emission_5577: true
emission_6300: true
emission_8446: true
plasma_electron_density: true
plasma_o2plus_density: true
plasma_oplus_density: true
plasma_noplus_density: true
plasma_ionisation_rate: true
plasma_electron_temperature: true
plasma_ion_temperature: true
plasma_pederson_conductivity: true
plasma_hall_conductivity: true
neutral_o2_density: true
neutral_o_density: true
neutral_n2_density: true
neutral_n_density: true
neutral_temperature: true
example2:
summary: A simple example without using the cache
description: A simple example without using the cache
value:
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 58.28
geodetic_longitude: -103.68
intensity_4278: 2300
intensity_5577: 11400
intensity_6300: 530
intensity_8446: 427
output:
altitudes: true
energy_flux: true
characteristic_energy: true
oxygen_correction_factor: true
no_cache: true
required: true
responses:
'200':
description: Calculated outputs
content:
application/json:
schema:
$ref: '#/components/schemas/src__atm__v1__schemas_inverse__ATMInverseResponse'
'400':
description: Problematic request made
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Data generation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v2/atm/forward:
post:
tags:
- Auroral Transport Model (ATM)
summary: Perform forward ATM calculation
description: "Perform a forward calculation using **VERSION 2** of the TREx Auroral Transport Model and the supplied \ninput parameters.\n\n**NOTE**: As of API version 1.41.0 (released 2026-01-30), the `height_integrated_rayleighs_lbh` and \n`emission_lbh` output flags have been renamed to `height_integrated_rayleighs_smile_uvi_lbh` and \n`emission_smile_uvi_lbh`. Further, the `plasma_pederson_conductivity` output flag has been renamed to \n`plasma_pedersen_conductivity`. The original names will be removed in a later release to be determined.\n\nInput notes:\n - By default requests are cached. Use the 'no_cache' parameter to disable this functionality\n - Latitude and longitude are to be in geodetic coordinates (-90 to 90 lat, -180 to 180 lon)\n - Timestamp\n - timestamp is expected to be in UTC, and is valid for any value up to the end of the previous day\n - the 'Z' character at the end of the timestamp is optional, and will be ignored if it is supplied\n - Spectral shapes\n - If the maxwellian_energy_flux is not 0, then maxwellian_characteristic_energy will be used. If\n maxwellian_characteristic_energy is not specified, then the default will be used.\n - If the gaussian_energy_flux is not 0, then gaussian_peak_energy and gaussian_spectral_width will be\n used. If these two values are not specified, then the defaults will be used. \n - If kappa_energy_flux is not 0, then kappa_mean_energy and kappa_k_index will be used. If these two \n values are not specified, then the defaults will be used.\n - If exponential_energy_flux is not 0, then exponential_characteristic_energy and exponential_starting_energy\n will be used. If these two values are not specified, then the defaults will be used.\n - **IMPORTANT**: All the above spectral shapes are super-imposable except exponential. The exponential spectrum \n should be only be used for high-energy tail and, starting from E0 (proton_starting_energy), will override any \n other spectral specification.\n - If proton_energy_flux is not 0, then proton_characteristic_energy will be used. If the \n proton_characteristic_energy is not specified, then the default will be used.\n - The ATM model is 1D and time-independent. However, the optional parameters timescale_auroral and \n timescale_transport provide limited support for time-dependent and transport process.\n - timescale_auroral (T0) is the duration of the precipitation; default value is 600 sec\n - timescale_transport is defined by L/v0, in which L is the dimension of the auroral structure, \n and v0 is the cross-structure drift speed. Default value is 600 sec.\n - the model quasi-analytically solves the continuity equation under a square input (with time \n duration T0 and spatial width L) input of precipitation. The initial/boundary conditions are \n given by IRI. The output yields the mean density/VER over [0-L] at time T0.\n - **NOTE**: proton precipitation is presently only for ionization rate and density calculations. Proton auroras are \n not nominal TREx characteristics and currently not computed in this version of the model.\n - Units and defaults\n - maxwellian total energy flux: erg/cm2/s, default is 10 \n - maxwellian characteristic energy: eV, default is 5000 \n - gaussian total energy flux: erg/cm2/s, default is 0 (indicating all gaussian parameters are disabled) \n - gaussian peak energy: eV, default is 1000\n - gaussian spectral width: eV, default is 100\n - kappa total energy flux: erg/cm2/s, default is 0 (indicating all kappa parameters are disabled) \n - kappa mean energy: eV, default is 30000\n - kappa k-index: no unit, default is 5\n - exponential total energy flux: erg/cm2/s, default is 0 (indicating all exponential parameters are disabled) \n - exponential characteristic energy: eV, default is 50000\n - exponential starting energy: eV, default is 50000\n - proton total energy flux: erg/cm2/s, default is 0 (indicating all proton parameters are disabled) \n - proton characteristic energy: eV, default is 10000\n - d-region flag: defaults to false\n - custom spectrum (precipitation) \n - energy in eV, flux in 1/cm2/s/eV \n - energy and flux arrays must be the same length \n - users are responsible for fully covering the energy range of interest in the provided spectrum. The model \n only performs interpolation, not extrapolation.\n - custom neutral profile \n - altitude in km, density in cm^-3, temperature in K. \n - users are responsible for fully covering the altitude range of interest in the provided profile (80-800 km \n if d_region_flag=0, or 50-500 km if d_region_flag=1). The model only performs interpolation, not extrapolation.\n - nrlmsis_model_version: valid values are \"00\" and \"2.0\", default is \"2.0\"\n - oxygen_correction_factor: default is 1.0\n - timescale_auroral: seconds, default is 600 \n - timescale_transport: seconds, default is 600\n\nOutput notes:\n - output parameter of the request are toggles the enable/disable each field's inclusion in the response\n - all output parameters are false by default\n - altitude: kilometers\n - emission data: 1-D arrays -- volume emission rate, 1/cm^3/s\n - plasma electron density: 1-D array, cm^-3\n - plasma O2+ density: 1-D array, cm^-3\n - plasma NO+ density: 1-D array, cm^-3\n - plasma O+ density: 1-D array, cm^-3\n - plasma ionisation rate: 1-D array, 1/cm^3/s\n - plasma electron temperature: 1-D array, K\n - plasma ion temperature: 1-D array, K\n - plasma pedersen conductivity: 1-D array, S/m\n - plasma hall conductivity: 1-D array, S/m\n - neutral O2 density: 1-D array, cm^-3\n - neutral O density: 1-D array, cm^-3\n - neutral N2 density: 1-D array, cm^-3\n - neutral N density: 1-D array, cm^-3\n - neutral temperature: 1-D array, K\n - production_rate_o2plus: 1-D array, 1/cm^3/s\n - production_rate_oplus: 1-D array, 1/cm^3/s\n - production_rate_oneg: 1-D array, 1/cm^3/s\n - production_rate_o: 1-D array, 1/cm^3/s\n - production_rate_nplus: 1-D array, 1/cm^3/s\n - production_rate_n2plus: 1-D array, 1/cm^3/s\n - production_rate_n: 1-D array, 1/cm^3/s\n - production_rate_n2d: 1-D array, 1/cm^3/s"
operationId: atm_forward_api_v2_atm_forward_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/src__atm__v2__schemas_forward__ATMForwardRequest'
examples:
base:
summary: Default request object
description: Default field values, adjust accordingly
value:
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 0
geodetic_longitude: 0
maxwellian_energy_flux: 10.0
maxwellian_characteristic_energy: 5000.0
gaussian_energy_flux: 0.0
gaussian_peak_energy: 1000.0
gaussian_spectral_width: 100.0
kappa_energy_flux: 0.0
kappa_mean_energy: 30000.0
kappa_k_index: 5.0
exponential_energy_flux: 0.0
exponential_characteristic_energy: 50000.0
exponential_starting_energy: 50000.0
proton_energy_flux: 0.0
proton_characteristic_energy: 10000.0
d_region: false
nrlmsis_model_version: '2.0'
oxygen_correction_factor: 1.0
timescale_auroral: 600
timescale_transport: 600
custom_spectrum:
energy: []
flux: []
custom_neutral_profile:
altitude: []
o_density: []
o2_density: []
n2_density: []
n_density: []
no_density: []
temperature: []
output:
height_integrated_rayleighs_4278: false
height_integrated_rayleighs_5577: false
height_integrated_rayleighs_6300: false
height_integrated_rayleighs_8446: false
height_integrated_rayleighs_1304: false
height_integrated_rayleighs_1356: false
height_integrated_rayleighs_smile_uvi_lbh: false
altitudes: false
emission_4278: false
emission_5577: false
emission_6300: false
emission_8446: false
emission_1304: false
emission_1356: false
emission_smile_uvi_lbh: false
plasma_electron_density: false
plasma_o2plus_density: false
plasma_oplus_density: false
plasma_noplus_density: false
plasma_ionisation_rate: false
plasma_electron_temperature: false
plasma_ion_temperature: false
plasma_pedersen_conductivity: false
plasma_hall_conductivity: false
neutral_o2_density: false
neutral_o_density: false
neutral_n2_density: false
neutral_n_density: false
neutral_temperature: false
production_rate_o2plus: false
production_rate_oplus: false
production_rate_oneg: false
production_rate_o: false
production_rate_nplus: false
production_rate_n2plus: false
production_rate_n: false
production_rate_n2d: false
no_cache: false
example0:
summary: A simple example
description: A simple example
value:
timestamp: '2024-01-01T06:00:00'
geodetic_latitude: 51.04
geodetic_longitude: -114.5
output:
height_integrated_rayleighs_4278: true
height_integrated_rayleighs_5577: true
height_integrated_rayleighs_6300: true
height_integrated_rayleighs_8446: true
height_integrated_rayleighs_1304: true
height_integrated_rayleighs_1356: true
height_integrated_rayleighs_smile_uvi_lbh: true
altitudes: true
example1:
summary: A simple example with all output parameters
description: A simple example with all output parameters
value:
timestamp
# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-calgary/refs/heads/main/openapi/university-of-calgary-auroral-transport-model-atm-api-openapi.yml