Saildrone Authentication API

Key/secret exchange for bearer tokens and drone access discovery

OpenAPI Specification

saildrone-authentication-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Saildrone Mission Authentication API
  description: 'Saildrone Public Mission API (BETA). Provides authenticated access to Saildrone mission telemetry and time-series data collected by Saildrone''s fleet of wind/solar autonomous surface vehicles (USVs). Surfaces include health, key/secret authentication, drone access discovery, and per-mission time-series retrieval across vehicle, atmospheric, oceanographic, and biogeochemical datasets. Endpoints, parameters, and authentication flow are reconstructed from the public Swagger interface at developer-mission.saildrone.com/api-docs and confirmed open source clients (e.g. nwfsc-fram/SaildroneTS).

    '
  version: v1
  contact:
    name: Saildrone Data Solutions
    url: https://www.saildrone.com/contact
  license:
    name: Saildrone API Terms
    url: https://www.saildrone.com/terms
servers:
- url: https://developer-mission.saildrone.com
  description: Saildrone Public Mission API (BETA)
security:
- BearerAuth: []
tags:
- name: Authentication
  description: Key/secret exchange for bearer tokens and drone access discovery
paths:
  /v1/auth:
    post:
      summary: Authenticate With Key And Secret
      description: Exchange a Saildrone-issued API key and secret for a bearer token used on subsequent calls. Tokens are short-lived; clients should re-authenticate before expiry.
      operationId: authenticate
      tags:
      - Authentication
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthRequest'
      responses:
        '200':
          description: Bearer token issued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthResponse'
        '401':
          description: Invalid key or secret
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/auth/access:
    get:
      summary: List Drone Access
      description: List drones (missions) the authenticated key has access to, including each drone's allowed start/end date range and which datasets are exposed (vehicle, atmospheric, oceanographic, biogeochemical).
      operationId: listAccess
      tags:
      - Authentication
      responses:
        '200':
          description: List of authorized drones and time ranges
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessResponse'
        '401':
          description: Missing or expired bearer token
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
        code:
          type: integer
    AccessResponse:
      type: object
      properties:
        success:
          type: boolean
        data:
          type: object
          properties:
            access:
              type: array
              items:
                $ref: '#/components/schemas/AccessEntry'
    AuthResponse:
      type: object
      properties:
        success:
          type: boolean
        token:
          type: string
          description: Bearer token to use in the `authorization` header on subsequent calls.
        expires_at:
          type: string
          format: date-time
    AuthRequest:
      type: object
      required:
      - key
      - secret
      properties:
        key:
          type: string
          description: Saildrone-issued API key.
        secret:
          type: string
          description: Saildrone-issued API secret.
    AccessEntry:
      type: object
      properties:
        drone_id:
          type: integer
          example: 1039
        start_date:
          type: string
          format: date-time
        end_date:
          type: string
          format: date-time
        data_set:
          type: array
          items:
            type: string
            enum:
            - vehicle
            - atmospheric
            - oceanographic
            - biogeochemical
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Bearer token obtained from POST /v1/auth (sent as `authorization: <token>`).'