openapi: 3.1.0 info: title: Itron Starfish Data Platform Device Templates Devices API version: '1.0' summary: Device and observation REST API for the Itron Networked Solutions (Starfish) Data Platform. description: 'Reconstructed OpenAPI specification for the Itron / Itron Networked Solutions (formerly Silver Spring Networks) Starfish Data Platform, based on the public `starfish-js` SDK (https://github.com/silverspringnetworks/starfish-js) and the Silver Spring Networks API Overview (https://developer.ssni.com/api-overview). The Starfish Data Platform exposes three primary resources: - **Devices** — IoT/sensor devices registered against a solution. - **Observations** — Time-series sensor data emitted by those devices. - **Device Templates** — Reusable shapes that describe a device''s sensors. Authentication uses OAuth 2.0 client-credentials (a long-lived `clientId` and `clientSecret`) for backend integrations, or a short-lived bearer token issued by the Tokens API for browser-side use. NOTE: This spec is a best-effort reconstruction for catalog purposes; the authoritative reference remains the gated Itron developer portal. ' contact: name: Itron Developer Program url: https://na.itron.com/developers/ license: name: Proprietary — Itron Partner Program url: https://na.itron.com/developers/itron-developer-program servers: - url: https://api.data.sentience.ssni.com description: Itron Starfish Data Platform (production) security: - bearerAuth: [] tags: - name: Devices description: Device registration, lookup, and querying. paths: /api/devices: get: tags: - Devices summary: List Devices operationId: getDevices description: Retrieve all devices visible to the authenticated solution. parameters: - $ref: '#/components/parameters/SolutionHeader' responses: '200': description: Device list. content: application/json: schema: $ref: '#/components/schemas/DeviceList' '401': $ref: '#/components/responses/Unauthorized' post: tags: - Devices summary: Register Device operationId: postDevice description: Register a new device against the authenticated solution. parameters: - $ref: '#/components/parameters/SolutionHeader' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Device' responses: '201': description: Device created. content: application/json: schema: $ref: '#/components/schemas/Device' '401': $ref: '#/components/responses/Unauthorized' /api/devices/query: post: tags: - Devices summary: Query Devices operationId: queryDevices description: Query devices by filter criteria (e.g., `deviceType`). parameters: - $ref: '#/components/parameters/SolutionHeader' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeviceQuery' responses: '200': description: Matching devices. content: application/json: schema: $ref: '#/components/schemas/DeviceList' components: responses: Unauthorized: description: Missing or invalid bearer credentials. content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Device: type: object required: - id properties: id: type: string name: type: string deviceType: type: string description: Template/type the device conforms to. templateId: type: string tags: type: array items: type: string metadata: type: object additionalProperties: true Error: type: object properties: code: type: string message: type: string details: type: string DeviceQuery: type: object properties: deviceType: type: string tags: type: array items: type: string DeviceList: type: object properties: devices: type: array items: $ref: '#/components/schemas/Device' parameters: SolutionHeader: name: X-Starfish-Solution in: header required: false schema: type: string enum: - sandbox - production default: production description: Selects sandbox or production solution scope, matching the SDK `solution` option. securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: Bearer token issued by the Tokens API (short-lived) or obtained via OAuth client credentials.