US Department of Defense Time Series API

Time series data retrieval and management

OpenAPI Specification

us-department-of-defense-time-series-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: USACE Corps Water Management System Data Catalog Time Series API
  description: The Corps Water Management System Data API (CDA) is a REST service providing programmatic access to USACE water management data. It supports retrieval of time series measurements, monitoring locations, rating curves, reservoir pool levels, lock data, and operational information across Army Corps of Engineers projects. Public data is accessible without authentication; write operations require an API key.
  version: latest
  contact:
    url: https://cwms-data.usace.army.mil/cwms-data/
  license:
    name: US Government Work
    url: https://www.usa.gov/government-works
servers:
- url: https://cwms-data.usace.army.mil/cwms-data/api/latest
  description: National CWMS Data API Production Server
- url: https://water.usace.army.mil/cwms-data/api/latest
  description: USACE Water Data Production Server
tags:
- name: Time Series
  description: Time series data retrieval and management
paths:
  /timeseries:
    get:
      operationId: getTimeSeries
      summary: Get Time Series Data
      description: Returns time series data for a specified location and parameter. Supports retrieval of streamflow, gage height, reservoir levels, temperature, and other continuous measurements. Results are paginated for large datasets.
      tags:
      - Time Series
      parameters:
      - name: office
        in: query
        description: USACE district office ID (e.g., CWMS, SWT, LRH)
        required: false
        schema:
          type: string
      - name: name
        in: query
        description: Time series ID in format Location.Parameter.Type.Interval.Duration.Version
        required: false
        schema:
          type: string
      - name: begin
        in: query
        description: Start of the time window (ISO 8601 or milliseconds since epoch)
        required: false
        schema:
          type: string
      - name: end
        in: query
        description: End of the time window (ISO 8601 or milliseconds since epoch)
        required: false
        schema:
          type: string
      - name: datum
        in: query
        description: Elevation datum for stage data (e.g., NAVD88, NGVD29)
        required: false
        schema:
          type: string
      - name: unit
        in: query
        description: Unit of measure for the output (e.g., EN for English, SI for metric)
        required: false
        schema:
          type: string
      - name: timezone
        in: query
        description: Timezone for date/time values in response
        required: false
        schema:
          type: string
          default: UTC
      - name: format
        in: query
        description: Response format
        required: false
        schema:
          type: string
          enum:
          - json
          - tab
          - csv
          - xml
          default: json
      - name: page-size
        in: query
        description: Number of values per page
        required: false
        schema:
          type: integer
          default: 500
      - name: page
        in: query
        description: Page cursor for pagination (from previous response)
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Time series data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeSeriesResponse'
        '400':
          description: Bad request - invalid parameters
        '404':
          description: Time series not found
  /timeseries/catalog:
    get:
      operationId: getTimeSeriesCatalog
      summary: Get Time Series Catalog
      description: Returns a catalog of available time series identifiers.
      tags:
      - Time Series
      parameters:
      - name: office
        in: query
        description: Filter by USACE district office ID
        required: false
        schema:
          type: string
      - name: timeseries-id-regex
        in: query
        description: Regular expression pattern to filter time series IDs
        required: false
        schema:
          type: string
      - name: cursor
        in: query
        description: Pagination cursor from previous response
        required: false
        schema:
          type: string
      - name: page-size
        in: query
        description: Number of entries per page
        required: false
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: Time series catalog entries
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeSeriesCatalogResponse'
components:
  schemas:
    TimeSeriesCatalogResponse:
      type: object
      properties:
        page:
          type: string
        next-page:
          type: string
        total:
          type: integer
        entries:
          type: array
          items:
            type: object
            properties:
              office:
                type: string
              name:
                type: string
              units:
                type: string
              interval:
                type: string
              interval-offset:
                type: integer
    TimeSeriesResponse:
      type: object
      properties:
        name:
          type: string
          description: Time series ID
        office-id:
          type: string
          description: USACE district office ID
        units:
          type: string
          description: Unit of measure for values
        interval:
          type: integer
          description: Interval between values in minutes
        interval-offset:
          type: integer
          description: Offset in minutes from midnight
        time-zone:
          type: string
          description: Time zone for date/time values
        values:
          type: array
          items:
            type: array
            description: '[timestamp_ms, value, quality_code]'
            items:
              type: number
        page:
          type: string
          description: Cursor for retrieving the next page
        next-page:
          type: string
          description: Next page cursor
        total:
          type: integer
          description: Total number of values matching the query