University of Calgary Data Distribution API

Endpoints supporting data distribution

Operations 4

GET /api/v1/data_distribution/datasets Retrieve available datasets #
GET /api/v1/data_distribution/urls Retrieve list of URLs for a given dataset #
GET /api/v1/data_distribution/observatories Retrieve information about observatories #
POST /api/v1/data_distribution/imaging_timeframes Retrieve imaging start and end times for a set of locations #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/university-of-calgary-data-distribution-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

university-of-calgary-data-distribution-api-openapi.yml Raw ↑
x-method: derived
x-source-url: https://api.phys.ucalgary.ca/openapi.json
x-derived-from: openapi/_original/university-of-calgary-srs-api.yaml
x-operator: institution
openapi: 3.2.0
info:
  title: UCalgary Space Remote Sensing Data Distribution API
  description: API providing data and tools for UCalgary Space Remote Sensing
  version: 1.66.0
servers:
- url: https://api.phys.ucalgary.ca
  description: UCalgary Space Remote Sensing API
tags:
- name: Data Distribution
  description: Endpoints supporting data distribution
paths:
  /api/v1/data_distribution/datasets:
    get:
      tags:
      - Data Distribution
      summary: Retrieve available datasets
      description: "Retrieve information about available datasets. Filter based on parameters supplied.\n\nNotes:\n  - filtering is case insensitive\n  - data level description: https://www.earthdata.nasa.gov/engage/open-data-services-and-software/data-information-policy/data-levels"
      operationId: retrieve_datasets_api_v1_data_distribution_datasets_get
      parameters:
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
      - name: level
        in: query
        required: false
        schema:
          type: string
          enum:
          - L0
          - L1
          - L1A
          - L2
          - L3
          title: Level
      responses:
        '200':
          description: Dataset information
          content:
            application/json:
              schema:
                type: array
                items:
                  anyOf:
                  - $ref: '#/components/schemas/Dataset'
                  - $ref: '#/components/schemas/DatasetLegacy1'
                  - $ref: '#/components/schemas/DatasetLegacy2'
                title: Response Retrieve Datasets Api V1 Data Distribution Datasets Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/data_distribution/urls:
    get:
      tags:
      - Data Distribution
      summary: Retrieve list of URLs for a given dataset
      description: "Retrieve list of URLs for a given dataset and timeframe.\n\nNotes:\n  - start and end times are inclusive\n  - start and end time format is YYYY-mm-ddTHH:MM:SS. Excluding values from the right to \n    the left result in default values being used (eg. YYYY-mm-ddTHH results in YYYY-mm-ddTHH:00:00)\n  - dataset matching is case insensitive\n  - site_uid is expected to be the 4-letter site code, and is case insensitive\n  - device_uid is expected to be the instrument identifier such as \"themis02\", \"rego-657\", or \"rgb-07\",\n    and is case insensitive"
      operationId: retrieve_urls_api_v1_data_distribution_urls_get
      parameters:
      - name: name
        in: query
        required: true
        schema:
          type: string
          title: Name
      - name: start
        in: query
        required: true
        schema:
          type: string
          format: date-time
          title: Start
      - name: end
        in: query
        required: true
        schema:
          type: string
          format: date-time
          title: End
      - name: site_uid
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Site Uid
      - name: device_uid
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Device Uid
      - name: include_total_bytes
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Include Total Bytes
      responses:
        '200':
          description: URLs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileListingResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Dataset not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '500':
          description: Data retrieval error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/data_distribution/observatories:
    get:
      tags:
      - Data Distribution
      summary: Retrieve information about observatories
      description: "Retrieve information about observatories. Filter based on parameters supplied.\n\nNotes:\n  - filtering for \"uid\" is case insensitive"
      operationId: retrieve_observatories_api_v1_data_distribution_observatories_get
      parameters:
      - name: instrument_array
        in: query
        required: true
        schema:
          type: string
          enum:
          - norstar_riometer
          - rego
          - smile_asi
          - swan_hsr
          - themis_asi
          - trex_blue
          - trex_nir
          - trex_rgb
          - trex_spectrograph
          title: Instrument Array
      - name: uid
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Uid
      responses:
        '200':
          description: Observatory information
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Observatory'
                title: Response Retrieve Observatories Api V1 Data Distribution Observatories Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/data_distribution/imaging_timeframes:
    post:
      tags:
      - Data Distribution
      summary: Retrieve imaging start and end times for a set of locations
      description: "Retrieve imaging start and end times for a set of locations. This is specific to the optical \ninstrumentation we provide data for.\n\nThe timestamp is expected to be UTC time.\n\nEach location in the 'locations' array can be specified either by a 4-letter site UID, or by\nproviding geodetic latitude and longitude. If the site_uid is provided, it is resolved to\ncoordinates using the known observatory list.\n\nNotes:\n  - The threshold parameter is the solar zenith angle (in degrees) above which imaging occurs. \n    The default value of 102.0 corresponds to nautical twilight, and what all UCalgary optical\n    instruments use.\n  - The `site_uid` parameter matching is case insensitive"
      operationId: retrieve_imaging_timeframes_api_v1_data_distribution_imaging_timeframes_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImagingTimeframesRequest'
        required: true
      responses:
        '200':
          description: Imaging times
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ImagingTimeframeResponse'
                type: array
                title: Response Retrieve Imaging Timeframes Api V1 Data Distribution Imaging Timeframes Post
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Site not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    Dataset:
      properties:
        name:
          type: string
          title: Name
        short_description:
          type: string
          title: Short Description
        long_description:
          type: string
          title: Long Description
        data_tree_url:
          type: string
          title: Data Tree Url
        file_listing_supported:
          type: boolean
          title: File Listing Supported
        level:
          type: string
          title: Level
        doi:
          anyOf:
          - type: string
          - type: 'null'
          title: Doi
        doi_details:
          anyOf:
          - type: string
          - type: 'null'
          title: Doi Details
        citation:
          anyOf:
          - type: string
          - type: 'null'
          title: Citation
        supported_libraries:
          items:
            type: string
            enum:
            - pyaurorax
            - pyucrio
            - idl-aurorax
            - idl-ucrio
            - pyucalgarysrs
          type: array
          title: Supported Libraries
          default: []
        file_time_resolution:
          type: string
          enum:
          - 1min
          - 1hr
          - 1day
          - not_applicable
          title: File Time Resolution
      type: object
      required:
      - name
      - short_description
      - long_description
      - data_tree_url
      - file_listing_supported
      - level
      - file_time_resolution
      title: Dataset
    DatasetLegacy1:
      properties:
        name:
          type: string
          title: Name
        short_description:
          type: string
          title: Short Description
        long_description:
          type: string
          title: Long Description
        data_tree_url:
          type: string
          title: Data Tree Url
        file_listing_supported:
          type: boolean
          title: File Listing Supported
        level:
          type: string
          title: Level
        doi:
          anyOf:
          - type: string
          - type: 'null'
          title: Doi
        doi_details:
          anyOf:
          - type: string
          - type: 'null'
          title: Doi Details
        citation:
          anyOf:
          - type: string
          - type: 'null'
          title: Citation
      type: object
      required:
      - name
      - short_description
      - long_description
      - data_tree_url
      - file_listing_supported
      - level
      title: DatasetLegacy1
      description: Dataset object for queries from PyAuroraX v1.3.3 or earlier
    DatasetLegacy2:
      properties:
        name:
          type: string
          title: Name
        short_description:
          type: string
          title: Short Description
        long_description:
          type: string
          title: Long Description
        data_tree_url:
          type: string
          title: Data Tree Url
        file_listing_supported:
          type: boolean
          title: File Listing Supported
        level:
          type: string
          title: Level
        doi:
          anyOf:
          - type: string
          - type: 'null'
          title: Doi
        doi_details:
          anyOf:
          - type: string
          - type: 'null'
          title: Doi Details
        citation:
          anyOf:
          - type: string
          - type: 'null'
          title: Citation
        supported_libraries:
          items:
            type: string
            enum:
            - pyaurorax
            - pyucrio
            - idl-aurorax
            - idl-ucrio
            - pyucalgarysrs
          type: array
          title: Supported Libraries
          default: []
      type: object
      required:
      - name
      - short_description
      - long_description
      - data_tree_url
      - file_listing_supported
      - level
      title: DatasetLegacy2
      description: Dataset object for queries from PyAuroraX v1.3.3 or earlier
    ErrorMessage:
      properties:
        detail:
          type: string
          title: Detail
      type: object
      required:
      - detail
      title: ErrorMessage
    FileListingResponse:
      properties:
        urls:
          items:
            type: string
          type: array
          title: Urls
        path_prefix:
          type: string
          title: Path Prefix
        count:
          type: integer
          title: Count
        total_bytes:
          anyOf:
          - type: integer
          - type: 'null'
          title: Total Bytes
        dataset:
          anyOf:
          - $ref: '#/components/schemas/Dataset'
          - $ref: '#/components/schemas/DatasetLegacy1'
          - $ref: '#/components/schemas/DatasetLegacy2'
          title: Dataset
      type: object
      required:
      - urls
      - path_prefix
      - count
      - total_bytes
      - dataset
      title: FileListingResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ImagingTimeframeLocation:
      properties:
        site_uid:
          anyOf:
          - type: string
          - type: 'null'
          title: Site Uid
        geodetic_latitude:
          anyOf:
          - type: number
          - type: 'null'
          title: Geodetic Latitude
        geodetic_longitude:
          anyOf:
          - type: number
          - type: 'null'
          title: Geodetic Longitude
      type: object
      title: ImagingTimeframeLocation
    ImagingTimeframeResponse:
      properties:
        timestamp:
          type: string
          title: Timestamp
        site_uid:
          anyOf:
          - type: string
          - type: 'null'
          title: Site Uid
        geodetic_latitude:
          type: number
          title: Geodetic Latitude
        geodetic_longitude:
          type: number
          title: Geodetic Longitude
        imaging_start:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Imaging Start
        imaging_end:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Imaging End
      type: object
      required:
      - timestamp
      - geodetic_latitude
      - geodetic_longitude
      title: ImagingTimeframeResponse
    ImagingTimeframesRequest:
      properties:
        timestamp:
          type: string
          format: date-time
          title: Timestamp
        locations:
          items:
            $ref: '#/components/schemas/ImagingTimeframeLocation'
          type: array
          title: Locations
        threshold:
          type: number
          title: Threshold
          default: 102.0
      type: object
      required:
      - timestamp
      - locations
      title: ImagingTimeframesRequest
    Observatory:
      properties:
        uid:
          type: string
          title: Uid
        full_name:
          type: string
          title: Full Name
        geodetic_latitude:
          type: number
          title: Geodetic Latitude
        geodetic_longitude:
          type: number
          title: Geodetic Longitude
      type: object
      required:
      - uid
      - full_name
      - geodetic_latitude
      - geodetic_longitude
      title: Observatory
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
    APIKeyHeader:
      type: apiKey
      in: header
      name: x-srs-api-key