Blues project API

Project operations

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

blues-wireless-project-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  contact:
    email: engineering@blues.io
    name: Blues Engineering
    url: https://dev.blues.io/support/
  description: 'The OpenAPI definition for the Notehub.io API.

    '
  title: Notehub alert project API
  version: 1.2.0
servers:
- description: Production server
  url: https://api.notefile.net
tags:
- description: Project operations
  name: project
paths:
  /v1/products/{productUID}/project:
    get:
      operationId: GetProjectByProduct
      description: Get a Project by ProductUID
      parameters:
      - name: productUID
        in: path
        required: true
        schema:
          type: string
        example: com.blues.airnote
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects:
    get:
      operationId: GetProjects
      description: Get Projects accessible by the api_key
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                properties:
                  projects:
                    type: array
                    items:
                      $ref: '#/components/schemas/Project'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
    post:
      operationId: CreateProject
      description: Create a Project
      requestBody:
        description: Project to be created
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                billing_account_uid:
                  description: 'The billing account UID for the project. The caller of the API must be able to create projects within the billing account, otherwise an error will be returned.

                    '
                  type: string
                label:
                  description: The label for the project.
                  type: string
              required:
              - label
              - billing_account_uid
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: create
  /v1/projects/{projectOrProductUID}:
    delete:
      operationId: DeleteProject
      description: Delete a Project by ProjectUID
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      responses:
        '200':
          description: Successful operation
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: delete
        resource: blues:resources:app:APPSERIAL:settings
    get:
      operationId: GetProject
      description: Get a Project by ProjectUID
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/aws-role-config:
    get:
      operationId: GetAWSRoleConfig
      summary: Get AWS role configuration for role-based authentication
      description: 'Returns the AWS Account ID and External ID needed to configure an IAM role

        trust policy for role-based authentication on AWS routes.

        '
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      responses:
        '200':
          description: AWS role configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AWSRoleConfig'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/clone:
    post:
      operationId: CloneProject
      description: Clone a Project
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      requestBody:
        description: Project to be cloned
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                billing_account_uid:
                  description: The billing account UID for the project. The caller of the API must be able to create projects within the billing account, otherwise an error will be returned.
                  type: string
                disable_clone_fleets:
                  description: Whether to disallow the cloning of the fleets from the parent project.  Default is false if not specified.
                  type: boolean
                disable_clone_routes:
                  description: Whether to disallow the cloning of the routes from the parent project.  Default is false if not specified.
                  type: boolean
                label:
                  description: The label for the project.
                  type: string
              required:
              - label
              - billing_account_uid
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: create
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/devices/{deviceUID}/dfu/{firmwareType}/history:
    get:
      operationId: GetDeviceDfuHistory
      description: Get device DFU history for host or Notecard firmware
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/deviceUIDParam'
      - $ref: '#/components/parameters/firmwareTypeParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceDfuHistory'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/devices/{deviceUID}/dfu/{firmwareType}/status:
    get:
      operationId: GetDeviceDfuStatus
      description: Get device DFU history for host or Notecard firmware
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/deviceUIDParam'
      - $ref: '#/components/parameters/firmwareTypeParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceDfuStatus'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/devices/{deviceUID}/fleets:
    parameters:
    - $ref: '#/components/parameters/projectOrProductUIDParam'
    - $ref: '#/components/parameters/deviceUIDParam'
    delete:
      operationId: DeleteDeviceFromFleets
      description: Remove Device from Fleets
      requestBody:
        description: 'The fleets to remove from the device. Note that the endpoint takes an array of fleetUIDs, to facilitate multi-fleet devices. Multi-fleet is not yet enabled on all SaaS plans - unless it is supported by the SaaS plan of the project, passing more than a single fleetUID in the array is an error.

          '
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                fleet_uids:
                  description: The fleetUIDs to remove from the device.
                  type: array
                  items:
                    type: string
              required:
              - fleet_uids
      responses:
        '200':
          $ref: '#/components/responses/FleetsResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: delete
        resource: blues:resources:app:APPSERIAL:devices
    get:
      operationId: GetDeviceFleets
      description: Get Device Fleets
      responses:
        '200':
          $ref: '#/components/responses/FleetsResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:devices
    put:
      operationId: AddDeviceToFleets
      description: Add Device to Fleets
      requestBody:
        description: 'The fleets to add to the device. Note that the endpoint takes an array of fleetUIDs, to facilitate multi-fleet devices. Multi-fleet is not yet enabled on all SaaS plans - unless it is supported by the SaaS plan of the project, passing more than a single fleetUID in the array is an error.

          '
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                fleet_uids:
                  description: The fleetUIDs to add to the device.
                  type: array
                  items:
                    type: string
              required:
              - fleet_uids
      responses:
        '200':
          $ref: '#/components/responses/FleetsResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: update
        resource: blues:resources:app:APPSERIAL:devices
  /v1/projects/{projectOrProductUID}/dfu/{firmwareType}/{action}:
    post:
      operationId: PerformDfuAction
      description: Update/cancel host or notecard firmware updates
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/firmwareTypeParam'
      - $ref: '#/components/parameters/dfuActionParam'
      - $ref: '#/components/parameters/deviceUIDParamQuery'
      - $ref: '#/components/parameters/tagParam'
      - $ref: '#/components/parameters/serialNumberParam'
      - $ref: '#/components/parameters/fleetUIDQueryParam'
      - $ref: '#/components/parameters/notecardFirmwareParam'
      - $ref: '#/components/parameters/locationParam'
      - $ref: '#/components/parameters/hostFirmwareParam'
      - $ref: '#/components/parameters/productUIDQueryParam'
      - $ref: '#/components/parameters/skuParam'
      requestBody:
        description: Which firmware in the case of an update action
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DfuActionRequest'
      responses:
        '200':
          description: Success
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: create
        resource: blues:resources:app:APPSERIAL:devices
  /v1/projects/{projectOrProductUID}/dfu/{firmwareType}/history:
    get:
      operationId: GetDevicesDfuHistory
      description: Get host or Notecard DFU history for all devices that match the filter criteria
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/firmwareTypeParam'
      - $ref: '#/components/parameters/pageSizeParam'
      - $ref: '#/components/parameters/pageNumParam'
      - $ref: '#/components/parameters/sortByParam'
      - $ref: '#/components/parameters/sortOrderParam'
      - $ref: '#/components/parameters/deviceUIDParamQuery'
      - $ref: '#/components/parameters/tagParam'
      - $ref: '#/components/parameters/serialNumberParam'
      - $ref: '#/components/parameters/fleetUIDQueryParam'
      - $ref: '#/components/parameters/notecardFirmwareParam'
      - $ref: '#/components/parameters/locationParam'
      - $ref: '#/components/parameters/hostFirmwareParam'
      - $ref: '#/components/parameters/productUIDQueryParam'
      - $ref: '#/components/parameters/skuParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceDfuHistoryPage'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/dfu/{firmwareType}/status:
    get:
      operationId: GetDevicesDfuStatus
      description: Get host or Notecard DFU history for all devices that match the filter criteria
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/firmwareTypeParam'
      - $ref: '#/components/parameters/pageSizeParam'
      - $ref: '#/components/parameters/pageNumParam'
      - $ref: '#/components/parameters/sortByParam'
      - $ref: '#/components/parameters/sortOrderParam'
      - $ref: '#/components/parameters/deviceUIDParamQuery'
      - $ref: '#/components/parameters/tagParam'
      - $ref: '#/components/parameters/serialNumberParam'
      - $ref: '#/components/parameters/fleetUIDQueryParam'
      - $ref: '#/components/parameters/notecardFirmwareParam'
      - $ref: '#/components/parameters/locationParam'
      - $ref: '#/components/parameters/hostFirmwareParam'
      - $ref: '#/components/parameters/productUIDQueryParam'
      - $ref: '#/components/parameters/skuParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceDfuStatusPage'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/environment_hierarchy:
    get:
      operationId: GetProjectEnvironmentHierarchy
      summary: Get environment variable hierarchy for a device
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      responses:
        '200':
          description: Successfully retrieved project environment hierarchy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvTreeJsonNode'
        '404':
          description: Project or device not found
        '500':
          description: Server error
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/environment_variables:
    parameters:
    - $ref: '#/components/parameters/projectOrProductUIDParam'
    get:
      operationId: GetProjectEnvironmentVariables
      description: Get environment variables of a project
      responses:
        '200':
          $ref: '#/components/responses/EnvironmentVariablesResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
    put:
      operationId: SetProjectEnvironmentVariables
      description: Set environment variables of a project
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariables'
      responses:
        '200':
          $ref: '#/components/responses/EnvironmentVariablesResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: update
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/environment_variables/{key}:
    delete:
      operationId: DeleteProjectEnvironmentVariable
      description: Delete an environment variable of a project by key
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - name: key
        in: path
        description: The environment variable key to delete.
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/EnvironmentVariablesResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: delete
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/firmware:
    get:
      operationId: GetFirmwareInfo
      description: Get Available Firmware Information
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/productQueryParam'
      - $ref: '#/components/parameters/firmwareTypeQueryParam'
      - $ref: '#/components/parameters/versionQueryParam'
      - $ref: '#/components/parameters/targetQueryParam'
      - $ref: '#/components/parameters/filenameQueryParam'
      - $ref: '#/components/parameters/md5QueryParam'
      - $ref: '#/components/parameters/unpublishedQueryParam'
      - $ref: '#/components/parameters/firmwareSortByParam'
      - $ref: '#/components/parameters/firmwareSortOrderParam'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FirmwareInfo'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:devices
  /v1/projects/{projectOrProductUID}/firmware/{firmwareType}/{filename}:
    delete:
      operationId: DeleteFirmware
      description: 'Delete a host firmware binary. The filename must be the full stored filename including the timestamp suffix (e.g. test$20260324190911.bin) as returned by the firmware upload or list endpoints.

        '
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - name: firmwareType
        in: path
        required: true
        schema:
          type: string
          enum:
          - host
      - name: filename
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Firmware deleted successfully
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: delete
        resource: blues:resources:app:APPSERIAL:settings
    get:
      operationId: DownloadFirmware
      description: Download firmware binary
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/firmwareTypeParam'
      - name: filename
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Firmware binary
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
    post:
      operationId: UpdateFirmware
      description: 'Update the metadata of an existing host firmware entry. The filename must be the full stored filename including the timestamp suffix (e.g. test$20260324190911.bin) as returned by the firmware upload or list endpoints.

        '
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - name: firmwareType
        in: path
        required: true
        schema:
          type: string
          enum:
          - host
      - name: filename
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: Firmware metadata fields to update. All fields are optional; only provided fields will be updated.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateHostFirmwareRequest'
      responses:
        '200':
          description: Update successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FirmwareInfo'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: update
        resource: blues:resources:app:APPSERIAL:settings
    put:
      operationId: UploadFirmware
      description: Upload firmware binary
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/firmwareTypeParam'
      - name: filename
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: query
        description: Firmware version (optional). If not provided, the version will be extracted from firmware binary if available, otherwise left empty
        required: false
        schema:
          type: string
      - name: notes
        in: query
        description: Optional notes describing what's different about this firmware version
        required: false
        schema:
          type: string
      requestBody:
        description: contents of the firmware binary
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: Upload successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FirmwareInfo'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:settings
  /v1/projects/{projectOrProductUID}/fleets:
    parameters:
    - $ref: '#/components/parameters/projectOrProductUIDParam'
    get:
      operationId: GetFleets
      description: Get Project Fleets
      responses:
        '200':
          $ref: '#/components/responses/FleetsResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:fleets
    post:
      operationId: CreateFleet
      description: Create Fleet
      requestBody:
        description: Fleet to be added
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                connectivity_assurance:
                  $ref: '#/components/schemas/FleetConnectivityAssurance'
                label:
                  description: The label, or name,  for the Fleet.
                  type: string
                smart_rule:
                  $ref: '#/components/schemas/FleetRule'
                smart_rule_enabled:
                  type: boolean
      responses:
        '201':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Fleet'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: create
        resource: blues:resources:app:APPSERIAL:fleets
  /v1/projects/{projectOrProductUID}/fleets/{fleetUID}:
    parameters:
    - $ref: '#/components/parameters/projectOrProductUIDParam'
    - $ref: '#/components/parameters/fleetUIDParam'
    delete:
      operationId: DeleteFleet
      description: Delete Fleet
      responses:
        '204':
          description: Successful operation
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: delete
        resource: blues:resources:app:APPSERIAL:fleets
    get:
      operationId: GetFleet
      description: Get Fleet
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Fleet'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:fleets
    put:
      operationId: UpdateFleet
      description: Update Fleet
      requestBody:
        description: Fleet details to update
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                addDevices:
                  description: List of DeviceUIDs to add to fleet
                  type: array
                  items:
                    type: string
                connectivity_assurance:
                  $ref: '#/components/schemas/FleetConnectivityAssurance'
                label:
                  description: The label for the Fleet.
                  type: string
                removeDevices:
                  description: List of DeviceUIDs to remove from fleet
                  type: array
                  items:
                    type: string
                smart_rule:
                  $ref: '#/components/schemas/FleetRule'
                smart_rule_enabled:
                  type: boolean
                watchdog_mins:
                  description: A watchdog timer is used to generate an event every N minutes of inactivity. 0 means no watchdog
                  type: integer
                  format: int64
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Fleet'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: update
        resource: blues:resources:app:APPSERIAL:fleets
  /v1/projects/{projectOrProductUID}/fleets/{fleetUID}/environment_hierarchy:
    get:
      operationId: GetFleetEnvironmentHierarchy
      summary: Get environment variable hierarchy for a device
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/fleetUIDParam'
      responses:
        '200':
          description: Successfully retrieved fleet environment hierarchy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvTreeJsonNode'
        '404':
          description: Project or device not found
        '500':
          description: Server error
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:fleets
  /v1/projects/{projectOrProductUID}/fleets/{fleetUID}/environment_variables:
    parameters:
    - $ref: '#/components/parameters/projectOrProductUIDParam'
    - $ref: '#/components/parameters/fleetUIDParam'
    get:
      operationId: GetFleetEnvironmentVariables
      description: Get environment variables of a fleet
      responses:
        '200':
          $ref: '#/components/responses/EnvironmentVariablesResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: read
        resource: blues:resources:app:APPSERIAL:fleets
    put:
      operationId: SetFleetEnvironmentVariables
      description: Set environment variables of a fleet
      requestBody:
        description: Environment variables to be added to the fleet
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnvironmentVariables'
      responses:
        '200':
          $ref: '#/components/responses/EnvironmentVariablesResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: update
        resource: blues:resources:app:APPSERIAL:fleets
  /v1/projects/{projectOrProductUID}/fleets/{fleetUID}/environment_variables/{key}:
    delete:
      operationId: DeleteFleetEnvironmentVariable
      description: Delete environment variables of a fleet
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      - $ref: '#/components/parameters/fleetUIDParam'
      - name: key
        in: path
        description: The environment variable key to delete.
        required: true
        schema:
          type: string
      responses:
        '200':
          $ref: '#/components/responses/EnvironmentVariablesResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
      security:
      - personalAccessToken: []
      tags:
      - project
      x-custom-attributes:
        permission: delete
        resource: blues:resources:app:APPSERIAL:fleets
  /v1/projects/{projectOrProductUID}/global-transformation:
    post:
      operationId: SetGlobalEventTransformation
      description: Set the project-level event JSONata transformation
      parameters:
      - $ref: '#/components/parameters/projectOrProductUIDParam'
      requestBody:
        description: JSONata expression which will be applied to each event before it is persisted and routed
        required: true
        content:
          text/plain:
            schema:
              type: string
      responses:
        '200':
          description

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/blues-wireless/refs/heads/main/openapi/blues-wireless-project-api-openapi.yml