Elemental Machines API

Public REST API for the Elemental Machines LabOps platform. Read machines (sensor-connected assets), their time-series samples and computed sample statistics, aggregated/hourly/status utilization rollups for a customer group, alert logs and alert rules, users, user activities and customer groups, plus dated platform release notes and an unauthenticated server status check. Authentication is OAuth 2.0 Resource Owner Password Credentials against /oauth/token; the resulting token is passed as an access_token query parameter on every call. The provider publishes a Swagger 1.2 contract and a Swagger UI console at api.elementalmachines.io.

Documentation

Specifications

Other Resources

OpenAPI Specification

elemental-machines-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Elemental Machines API
  description: Documentation for using Elemental Machines API. To start, get an access token using /oauth/token.
  version: '1.0'
  contact:
    email: help@elementalmachines.io
servers:
- url: https://api.elementalmachines.io
  description: Elemental Machines production API
tags:
- name: Alert Logs
- name: Alert Rules
- name: Groups
- name: Machines Sample Stats
- name: Machines Samples
- name: Machines
- name: Machines Usage
- name: Authentication
- name: Release Notes
- name: Status
- name: User Activities
- name: Users
paths:
  /api/machines/{machine_uuid}/alert_logs.json:
    get:
      tags:
      - Alert Logs
      summary: Get all alert logs for machine
      operationId: alertLogsIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: machine_uuid
        in: path
        description: Machine uuid, mac_address, or serial_number
        required: true
        schema:
          type: string
      - name: from
        in: query
        description: Starting epoch timestamp in seconds [empty starts at 0, default is empty/0]
        required: false
        schema:
          type: integer
      - name: to
        in: query
        description: Ending epoch timestamp in seconds. Default value is current time.
        required: false
        schema:
          type: integer
          default: 1785278041
      - name: order
        in: query
        description: Order of Alert Logs returned [asc is default, desc is required to return most recent Alert
          Logs]
        required: false
        schema:
          type: string
          default: asc
      - name: limit
        in: query
        description: Number of Alert Logs to return [1 is minimum, 100 is default, 1200 is maximum]
        required: false
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/alert_rules.json:
    get:
      tags:
      - Alert Rules
      summary: Get all alert rules
      operationId: alertRulesIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: managed_machine_uuid
        in: query
        description: Managed Machine UUID filter
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/customer_groups/my.json:
    get:
      tags:
      - Groups
      summary: Get current group
      operationId: customerGroupsMy
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/customer_groups.json:
    get:
      tags:
      - Groups
      summary: Get all groups
      operationId: customerGroupsIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/machines/{machine_uuid}/sample_stats.json:
    get:
      tags:
      - Machines Sample Stats
      summary: Get sensor minimum, maximum, mean and median values
      operationId: machineSampleStatsIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: machine_uuid
        in: path
        description: Machine UUID
        required: true
        schema:
          type: string
      - name: from
        in: query
        description: Starting epoch timestamp in seconds. Blank will default to 24 hours ago.
        required: false
        schema:
          type: integer
      - name: to
        in: query
        description: Ending epoch timestamp in seconds. Blank will default to current time.
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/machines/{machine_uuid}/samples.json:
    get:
      tags:
      - Machines Samples
      summary: Get all machine samples for timestamp range
      operationId: machineSamplesIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: machine_uuid
        in: path
        description: Machine uuid, mac_address, or serial_number
        required: true
        schema:
          type: string
      - name: from
        in: query
        description: Starting epoch timestamp in seconds [empty starts at 0, default is empty/0]
        required: false
        schema:
          type: integer
      - name: to
        in: query
        description: Ending epoch timestamp in seconds. Default value is current time.
        required: false
        schema:
          type: integer
          default: 1785278041
      - name: order
        in: query
        description: Order of samples returned [asc is default, desc is required to return most recent samples]
        required: false
        schema:
          type: string
          default: asc
      - name: limit
        in: query
        description: Number of samples to return [1 is minimum, 100 is default, 1200 is maximum]
        required: false
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/machines.json:
    get:
      tags:
      - Machines
      summary: Get all machines
      operationId: machinesIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/machines/{uuid}.json:
    get:
      tags:
      - Machines
      summary: Get machine
      operationId: machinesShow
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: uuid
        in: path
        description: Machine UUID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/machines/usage/aggregated.json:
    get:
      tags:
      - Machines Usage
      summary: Get aggregated utilization information for all machines under a customer group
      operationId: machinesUsageAggregated
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: customer_group_uuid
        in: query
        description: Customer group UUID
        required: true
        schema:
          type: string
      - name: page
        in: query
        description: Page number
        required: true
        schema:
          type: integer
          default: 1
      - name: per_page
        in: query
        description: Number of results per page
        required: true
        schema:
          type: integer
          default: 10
      - name: time_zone
        in: query
        description: Time zone string. Default to user time zone if not specified.
        required: false
        schema:
          type: string
      - name: start_work_hour
        in: query
        description: Start work hour, integer 0~23. Default work hours to all 24 hours if not specified.
        required: false
        schema:
          type: integer
      - name: end_work_hour
        in: query
        description: End work hour, integer 0~23. Default work hours to all 24 hours if not specified.
        required: false
        schema:
          type: integer
      - name: work_days[]
        in: query
        description: Work day (1~7 representing mon~sun). Enter single parameter text value in this form (e.g. 3).
          Default to all 7 days if not specified. For help on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: start_date
        in: query
        description: Start date of the requested date range, default date range is last 30 days (e.g. 2022-05-31).
          If start_date is specified, end_date will become required.
        required: false
        schema:
          type: string
          default: '2026-06-28'
      - name: end_date
        in: query
        description: End date of the requested date range, default date range is last 30 days (e.g. 2022-06-07).
          If end_date is specified, start_date will become required.
        required: false
        schema:
          type: string
          default: '2026-07-28'
      - name: location_tags[]
        in: query
        description: Location tag filter. Enter single parameter text value in this form (e.g. Lab 24).  For help
          on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: equipment_category_tags[]
        in: query
        description: Equipment category tag filter. Enter single parameter text value in this form (e.g. Centrifuge).  For
          help on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: machine_uuids[]
        in: query
        description: Machine UUID filter.  Enter single parameter text value in this form (e.g. 454d60e3-05c3-4356-872e-fbd480fe91fa).  For
          help on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: sort_by
        in: query
        description: One of equipment_name, most_used [most_used is default]
        required: false
        schema:
          type: string
      - name: sort_direction
        in: query
        description: asc or desc [asc is default]
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid parameters.
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/machines/usage/hourly.json:
    get:
      tags:
      - Machines Usage
      summary: Get hourly utilization information for all machines under a customer group
      operationId: machinesUsageHourly
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: customer_group_uuid
        in: query
        description: Customer group UUID
        required: true
        schema:
          type: string
      - name: page
        in: query
        description: Page number
        required: true
        schema:
          type: integer
          default: 1
      - name: per_page
        in: query
        description: Number of results per page
        required: true
        schema:
          type: integer
          default: 10
      - name: time_zone
        in: query
        description: Time zone string. Default to user time zone if not specified.
        required: false
        schema:
          type: string
      - name: start_work_hour
        in: query
        description: Start work hour, integer 0~23. Default work hours to all 24 hours if not specified.
        required: false
        schema:
          type: integer
      - name: end_work_hour
        in: query
        description: End work hour, integer 0~23. Default work hours to all 24 hours if not specified.
        required: false
        schema:
          type: integer
      - name: work_days[]
        in: query
        description: Work day (1~7 representing mon~sun). Enter single parameter text value in this form (e.g. 3).
          Default to all 7 days if not specified. For help on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: start_date
        in: query
        description: Start date of the requested date range, default date range is last 30 days (e.g. 2022-05-31).
          If start_date is specified, end_date will become required.
        required: false
        schema:
          type: string
          default: '2026-07-27'
      - name: end_date
        in: query
        description: End date of the requested date range, default date range is last 30 days (e.g. 2022-06-07).
          If end_date is specified, start_date will become required.
        required: false
        schema:
          type: string
          default: '2026-07-28'
      - name: location_tags[]
        in: query
        description: Location tag filter. Enter single parameter text value in this form (e.g. Lab 24).  For help
          on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: equipment_category_tags[]
        in: query
        description: Equipment category tag filter. Enter single parameter text value in this form (e.g. Centrifuge).  For
          help on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: machine_uuids[]
        in: query
        description: Machine UUID filter.  Enter single parameter text value in this form (e.g. 454d60e3-05c3-4356-872e-fbd480fe91fa).  For
          help on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: sort_by
        in: query
        description: One of equipment_name, most_used [most_used is default]
        required: false
        schema:
          type: string
      - name: sort_direction
        in: query
        description: asc or desc [asc is default]
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid parameters.
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/machines/usage/status.json:
    get:
      tags:
      - Machines Usage
      summary: Get the usage statuses for all machines under a customer group
      operationId: machinesUsageStatus
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: customer_group_uuid
        in: query
        description: Customer group UUID
        required: true
        schema:
          type: string
      - name: page
        in: query
        description: Page number
        required: true
        schema:
          type: integer
          default: 1
      - name: per_page
        in: query
        description: Number of results per page
        required: true
        schema:
          type: integer
          default: 10
      - name: location_tags[]
        in: query
        description: Location tag filter. Enter single parameter text value in this form (e.g. Lab 24).  For help
          on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: equipment_category_tags[]
        in: query
        description: Equipment category tag filter. Enter single parameter text value in this form (e.g. Centrifuge).  For
          help on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: machine_uuids[]
        in: query
        description: Machine UUID filter.  Enter single parameter text value in this form (e.g. 454d60e3-05c3-4356-872e-fbd480fe91fa).  For
          help on multiple values, contact Customer Support.
        required: false
        schema:
          type: array
          items:
            type: string
      - name: sort_by
        in: query
        description: One of equipment_name, eq_category, location, availability [availability is default]
        required: false
        schema:
          type: string
      - name: sort_direction
        in: query
        description: asc or desc [asc is default]
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid parameters.
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /oauth/token:
    post:
      tags:
      - Authentication
      summary: Get access token
      description: An access token is needed for all subsequent authenticated requests. Contact us for Client ID/Secret.
      operationId: oauthToken
      parameters:
      - name: grant_type
        in: query
        description: Grant type
        required: false
        schema:
          type: string
          default: password
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                username:
                  description: Email address
                  type: string
                password:
                  description: Password
                  type: string
                client_id:
                  description: Client ID
                  type: string
                client_secret:
                  description: Client secret
                  type: string
              required:
              - username
              - password
              - client_id
              - client_secret
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
      security: []
  /api/release_notes.json:
    get:
      tags:
      - Release Notes
      summary: Change logs for releases
      operationId: releaseNotesIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: page
        in: query
        description: Page number
        required: true
        schema:
          type: integer
          default: 1
      - name: per_page
        in: query
        description: Number of results per page
        required: true
        schema:
          type: integer
          default: 10
      - name: software
        in: query
        description: Software. Default is all software if not specified.
        required: false
        schema:
          type: string
      - name: from_date
        in: query
        description: From date, e.g. 2022-09-30. Default is All Time if not specified.
        required: false
        schema:
          type: string
      - name: to_date
        in: query
        description: To date, e.g. 2022-10-31. Default is All Time if not specified.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid parameters.
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/status/check.json:
    get:
      tags:
      - Status
      summary: Check server status
      operationId: statusCheck
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
      security: []
  /api/user_activities.json:
    get:
      tags:
      - User Activities
      summary: Get all user activities for your customer(s)
      operationId: userActivitiesIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      - name: customer_group_uuid
        in: query
        description: UUID of Customer Group [empty = all]
        required: false
        schema:
          type: string
      - name: usage_type
        in: query
        description: Usage Type [dashboard, mobile, calendar; empty = all]
        required: false
        schema:
          type: string
      - name: action_type
        in: query
        description: Action Type [view, change, login, all; empty/default = change]
        required: false
        schema:
          type: string
      - name: from
        in: query
        description: Starting epoch timestamp in seconds [empty starts at 0, default is empty/0]
        required: false
        schema:
          type: integer
      - name: to
        in: query
        description: Ending epoch timestamp in seconds. Default value is current time.
        required: false
        schema:
          type: integer
          default: 1785278041
      - name: order
        in: query
        description: Order of activities returned [asc is default, desc is required to return most recent activities]
        required: false
        schema:
          type: string
          default: asc
      - name: limit
        in: query
        description: Number of activities to return [1 is minimum, 100 is default, 1200 is maximum]
        required: false
        schema:
          type: integer
          default: 100
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/users/my.json:
    get:
      tags:
      - Users
      summary: Get current user
      operationId: usersMy
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
  /api/users.json:
    get:
      tags:
      - Users
      summary: Get all users
      operationId: usersIndex
      parameters:
      - name: access_token
        in: query
        description: Access token
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Not Authorized
          content:
            application/json:
              schema:
                type: object
      security:
      - access_token: []
components:
  securitySchemes:
    access_token:
      type: apiKey
      in: query
      name: access_token
      description: OAuth 2.0 access token passed as the access_token query parameter. Obtain one from POST /oauth/token
        (Resource Owner Password Credentials grant).
    oauth2_password:
      type: oauth2
      description: Resource Owner Password Credentials grant. Documented in the provider's Swagger 1.2 declaration
        at /docs/api/oauth.json.
      flows:
        password:
          tokenUrl: https://api.elementalmachines.io/oauth/token
          scopes: {}
security:
- access_token: []