openapi: 3.1.0 info: title: Opentrons HTTP Attached Instruments Attached Modules API description: The Opentrons HTTP API is a RESTful JSON-based interface exposed by Opentrons robots (Flex and OT-2) on the local network at port 31950. It enables developers to upload and manage protocols, create and control runs, issue atomic liquid handling commands, and query robot health and hardware state. The API is defined by an OpenAPI specification available directly from the robot at /openapi.json. version: '4' contact: name: Opentrons Support url: https://support.opentrons.com/ email: support@opentrons.com license: name: Apache 2.0 url: https://github.com/Opentrons/opentrons/blob/edge/LICENSE x-api-version-header: Opentrons-Version x-min-api-version: 2 servers: - url: http://{robotIP}:31950 description: Opentrons robot local network server variables: robotIP: default: 192.168.1.100 description: The IP address of the Opentrons robot on the local network tags: - name: Attached Modules description: Query attached hardware modules paths: /modules: get: tags: - Attached Modules summary: Get attached modules description: Get a list of all hardware modules currently attached to the robot, including thermocyclers, heater-shakers, temperature modules, magnetic modules, and absorbance plate readers. operationId: getModules parameters: - $ref: '#/components/parameters/OTVersionHeader' responses: '200': description: List of attached modules content: application/json: schema: $ref: '#/components/schemas/ModuleListResponse' components: parameters: OTVersionHeader: name: Opentrons-Version in: header required: true description: The HTTP API version to use for this request. Must be 2 or higher. Use '*' to get the latest version. schema: oneOf: - type: string enum: - '*' - type: integer minimum: 2 maximum: 4 example: '*' schemas: Module: type: object description: A hardware module attached to the robot properties: id: type: string serialNumber: type: string firmwareVersion: type: string hardwareRevision: type: string hasAvailableUpdate: type: boolean moduleType: type: string enum: - thermocyclerModuleType - temperatureModuleType - magneticModuleType - heaterShakerModuleType - magneticBlockType - absorbanceReaderType - flexStackerModuleType moduleModel: type: string slotName: type: string data: type: object description: Module-specific status data additionalProperties: true usbPort: type: object properties: port: type: integer portGroup: type: string hubPort: type: integer nullable: true path: type: string ModuleListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Module'