United States Army Corps of Engineers Time Series API

Time series data retrieval and management

OpenAPI Specification

united-states-army-corps-of-engineers-time-series-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: CWMS Data Basins Time Series API
  description: The Corps Water Management System (CWMS) Data API provides a RESTful interface for accessing water management data from the U.S. Army Corps of Engineers. This includes time series data, locations, levels, ratings, forecasts, projects, turbines, gates, and water supply information for USACE-managed water resources across the United States.
  version: 3.0.0
  contact:
    name: USACE CWMS Data API Support
    url: https://github.com/USACE/cwms-data-api
  license:
    name: MIT
    url: https://github.com/USACE/cwms-data-api/blob/develop/LICENSE.md
  x-tags:
  - Water Management
  - Federal Government
  - Hydrology
  - Engineering
servers:
- url: https://cwms-data.usace.army.mil/cwms-data
  description: Production CWMS Data API
- url: https://water.usace.army.mil/cwms-data
  description: Water Data Platform
tags:
- name: Time Series
  description: Time series data retrieval and management
paths:
  /timeseries:
    get:
      operationId: getTimeSeries
      summary: Get Time Series
      description: Returns time series data for a specified time window. Time series data includes measurements such as river stage, flow, precipitation, temperature, and reservoir pool elevation over time.
      tags:
      - Time Series
      parameters:
      - name: name
        in: query
        required: true
        description: The time series identifier in CWMS format (e.g., DALT2.Stage.Inst.15Minutes.0.raw)
        schema:
          type: string
      - name: office
        in: query
        required: false
        description: Three-character USACE district office code
        schema:
          type: string
      - name: unit
        in: query
        required: false
        description: Measurement unit for the returned data
        schema:
          type: string
      - name: datum
        in: query
        required: false
        description: Vertical datum for elevation values
        schema:
          type: string
      - name: begin
        in: query
        required: false
        description: Start of time window in ISO 8601 format or milliseconds since epoch
        schema:
          type: string
      - name: end
        in: query
        required: false
        description: End of time window in ISO 8601 format or milliseconds since epoch
        schema:
          type: string
      - name: timezone
        in: query
        required: false
        description: Timezone for interpreting date/time values
        schema:
          type: string
      - name: format
        in: query
        required: false
        description: Response format
        schema:
          type: string
          enum:
          - json
          - xml
          - tab
          - csv
      - name: page
        in: query
        required: false
        description: Pagination cursor from a previous response
        schema:
          type: string
      - name: page-size
        in: query
        required: false
        description: Number of time series values per page
        schema:
          type: integer
      responses:
        '200':
          description: Time series data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeSeries'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
  /timeseries/recent:
    get:
      operationId: getRecentTimeSeries
      summary: Get Recent Time Series
      description: Returns the most recent time series values. Useful for displaying current conditions at USACE locations.
      tags:
      - Time Series
      parameters:
      - name: office
        in: query
        required: false
        description: Three-character USACE district office code
        schema:
          type: string
      - name: name
        in: query
        required: false
        description: Time series identifier (supports CWMS wildcards)
        schema:
          type: string
      - name: recently-changed-within
        in: query
        required: false
        description: ISO 8601 duration for how recently the data was updated (e.g., PT2H for 2 hours)
        schema:
          type: string
      responses:
        '200':
          description: Recent time series data
          content:
            application/json:
              schema:
                type: object
  /timeseries/filtered:
    get:
      operationId: getFilteredTimeSeries
      summary: Get Filtered Time Series
      description: Returns filtered time series data based on specified criteria.
      tags:
      - Time Series
      parameters:
      - name: office
        in: query
        required: false
        description: Three-character USACE district office code
        schema:
          type: string
      - name: name
        in: query
        required: false
        description: Time series identifier (supports CWMS wildcards)
        schema:
          type: string
      responses:
        '200':
          description: Filtered time series data
          content:
            application/json:
              schema:
                type: object
components:
  schemas:
    Error:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error description
        status:
          type: integer
          description: HTTP status code
    TimeSeriesValue:
      type: array
      description: An array of [timestamp (ms since epoch), value, quality code] tuples
      items:
        type: number
    TimeSeries:
      type: object
      properties:
        name:
          type: string
          description: The time series identifier
        office-id:
          type: string
          description: Owning USACE district office code
        units:
          type: string
          description: Measurement units
        interval:
          type: integer
          description: Data interval in minutes (0 for irregular)
        interval-offset:
          type: integer
          description: Interval offset in minutes
        time-zone:
          type: string
          description: Timezone for the time series
        values:
          type: array
          description: Array of [timestamp, value, quality] tuples
          items:
            $ref: '#/components/schemas/TimeSeriesValue'
        total:
          type: integer
          description: Total number of values available
        page:
          type: string
          description: Current page cursor
        next-page:
          type: string
          description: Next page cursor
  responses:
    BadRequest:
      description: Bad request — invalid parameters or missing required fields
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: JWT Bearer token for authenticated operations (create, update, delete). Obtain a token from the CWMS authorization endpoint.