Formlabs Groups API

The Groups API from Formlabs — 5 operation(s) for groups.

OpenAPI Specification

formlabs-groups-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Formlabs Web Consumables Groups API
  description: The Formlabs Web API (Dashboard Developer API) provides remote monitoring and management of Internet-connected Formlabs products registered to a Dashboard account. It exposes read access to printers, prints, resin tanks, and cartridges, an event history feed, and full CRUD management of printer groups and their print queues. Typical use cases include automated reports on printer and material usage, job history exports, and integration of printer status into ERP / MES / custom systems.
  termsOfService: https://formlabs.com/terms-of-service/
  contact:
    name: Formlabs Developer Support
    url: https://support.formlabs.com/s/topic/Developer-Portal
  version: '1.0'
servers:
- url: https://api.formlabs.com/developer/v1
  description: Formlabs Web API (Dashboard Developer API)
security:
- OAuth2ClientCredentials: []
tags:
- name: Groups
paths:
  /groups/:
    get:
      operationId: listGroups
      tags:
      - Groups
      summary: List printer groups
      description: List all printer groups the authenticated account can access.
      responses:
        '200':
          description: A list of printer groups.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupList'
    post:
      operationId: createGroup
      tags:
      - Groups
      summary: Create a printer group
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupWrite'
      responses:
        '201':
          description: The created group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group'
  /groups/{group_id}/:
    patch:
      operationId: updateGroup
      tags:
      - Groups
      summary: Update a printer group
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupWrite'
      responses:
        '200':
          description: The updated group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Group'
    delete:
      operationId: deleteGroup
      tags:
      - Groups
      summary: Delete a printer group
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: The group was deleted.
  /groups/bulk-add-printers/:
    post:
      operationId: bulkAddPrintersToGroup
      tags:
      - Groups
      summary: Move printers into a group
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                group:
                  type: string
                printers:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Printers were moved to the group.
  /groups/{group_id}/members/:
    post:
      operationId: inviteGroupMember
      tags:
      - Groups
      summary: Invite a user to a group
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupMemberWrite'
      responses:
        '201':
          description: The user was invited.
    put:
      operationId: updateGroupMember
      tags:
      - Groups
      summary: Update a group membership
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupMemberWrite'
      responses:
        '200':
          description: The membership was updated.
    delete:
      operationId: removeGroupMember
      tags:
      - Groups
      summary: Remove a group member
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
      - name: user
        in: query
        schema:
          type: string
      responses:
        '204':
          description: The member was removed.
  /groups/{group_id}/queue/:
    get:
      operationId: listGroupQueue
      tags:
      - Groups
      summary: List group queue items
      description: List queued print jobs for a printer group.
      parameters:
      - name: group_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: A list of queue items for the group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueueItemList'
components:
  schemas:
    QueueItem:
      type: object
      properties:
        guid:
          type: string
        name:
          type: string
        material:
          type: string
        position:
          type: integer
        status:
          type: string
    Group:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        members:
          type: array
          items:
            $ref: '#/components/schemas/GroupMember'
    QueueItemList:
      type: object
      properties:
        count:
          type: integer
        results:
          type: array
          items:
            $ref: '#/components/schemas/QueueItem'
    GroupWrite:
      type: object
      required:
      - name
      properties:
        name:
          type: string
    GroupMember:
      type: object
      properties:
        user:
          type: string
        email:
          type: string
        role:
          type: string
    GroupMemberWrite:
      type: object
      required:
      - email
      properties:
        email:
          type: string
        role:
          type: string
    GroupList:
      type: object
      properties:
        count:
          type: integer
        results:
          type: array
          items:
            $ref: '#/components/schemas/Group'
  securitySchemes:
    OAuth2ClientCredentials:
      type: oauth2
      description: OAuth 2.0 Client Credentials flow. Exchange a client_id and client_secret at the token endpoint for a Bearer access token valid for 24 hours, scoped to developer-api. The Formlabs identity provider also supports OpenID Connect for interactive sign-in via PreForm / Local API.
      flows:
        clientCredentials:
          tokenUrl: https://api.formlabs.com/developer/v1/o/token/
          scopes:
            developer-api: Access the Formlabs Dashboard Developer API