openapi: 3.0.4 info: title: Pulse Api AllDevices API description: "# Introduction\n\nThe Pulse API is an HTTP API that is designed to interact with your pulse account and devices. \n\nNote that not all app functionality has yet been exposed through this api, so if you need additional functionality, contact our support team at support@pulsegrow.com and we will add it for you. \n\nThis API reference includes all technical documentation developers need to integrate third-party applications and platforms. If you have any additional questions send an email to our support team at support@pulsegrow.com\n\n# Authentication\n\nAll HTTP requests made against the Pulse API must be validated with an API Key.\n\n### Acquiring an API Key\n\nTo generate a new api key go to https://app.pulsegrow.com/account, scroll down to the api key section, and press the \"Add Api Key\" button.\n\n### Using Your API Key \n\nNote: API keys are generated per grow and only have access to that grow's resources (users, devices, etc). \n\nAll requests should target domain `https://api.pulsegrow.com`.\n\nYou need to provide the API key via the `x-api-key` header.\n\nSecurity Warning: It's important to secure your API Key against public access. Guard and secure it like a password. If you suspect that your API key has been compromised, revoke it via the web application at https://app.pulsegrow.com/account. \n\nSample request:\n\n```\n\ncurl --request GET \"https://api.pulsegrow.com/devices/{deviceId}/recent-data\" --header \"x-api-key: {apiKey}\"\n\n``` \n\n### Api consumption\n\n Api consumption is measured by number of datapoints retrieved.\n\n An api call that does not retrieve datapoints counts as one datapoint.\n\n Hobbyist users can use up to 4800 datapoints daily, Enthusiasts and Professionals 24000 and 120000, respectively \n\n" termsOfService: https://pulsegrow.com/terms contact: name: Need help? Contact support email: support@pulsegrow.com version: v1 x-logo: url: https://cdn.shopify.com/s/files/1/2451/2393/files/logo_1_400x.png altText: The Logo tags: - name: AllDevices description: A collection of API operations related to devices. paths: /all-devices: get: tags: - AllDevices summary: 'Gets all of the grows devices, including latest data. Sparklines (data for the last hour) are not included' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NonTypeSpecificDeviceListDto' '400': description: Bad Request content: application/json: schema: type: string '401': description: Unauthorized content: application/json: schema: type: string components: schemas: UniversalDataPointDtoSingleValue: type: object properties: paramName: type: string nullable: true measuringUnit: type: string nullable: true paramValue: type: number format: float nullable: true highChartAuxiliaryData: $ref: '#/components/schemas/HighChartAuxiliaryData' sensorReadingType: $ref: '#/components/schemas/SensorReadingType' additionalProperties: false SensorType: type: integer format: int32 MostRecentSensorDataPointDto: type: object properties: sensorType: $ref: '#/components/schemas/SensorType' deviceType: $ref: '#/components/schemas/DeviceType' name: type: string nullable: true dataPointDto: $ref: '#/components/schemas/UniversalDataPointDto' additionalProperties: false OpenSprinklerSpecificData: type: object properties: lastOnline: type: string format: date-time nullable: true nextOpenSprinklerProgramRunInfo: $ref: '#/components/schemas/NextOpenSprinklerProgramRunInfo' lastRanProgramName: type: string nullable: true lastRunProgramId: type: integer format: int32 nullable: true mac: type: string nullable: true lastRunDuration: type: integer format: int32 nullable: true lastRunTimeEnd: type: string format: date-time nullable: true pausedUntil: type: string format: date-time nullable: true lastSynced: type: string format: date-time nullable: true durations: type: array items: type: integer format: int32 nullable: true lastAutomationInfo: $ref: '#/components/schemas/LastAutomationInfo' additionalProperties: false DataPointDto: type: object properties: deviceId: type: integer format: int32 pluggedIn: type: boolean batteryV: type: number format: float electricImpId: type: string nullable: true signalStrength: type: integer format: int32 createdAt: type: string format: date-time deviceType: $ref: '#/components/schemas/DeviceType' temperatureF: type: number format: float humidityRh: type: number format: float lightLux: type: number format: float airPressure: type: number format: float vpd: type: number format: double co2: type: integer format: int32 co2Temperature: type: number format: double co2Rh: type: number format: double voc: type: integer format: int32 channel1: type: number format: double channel2: type: number format: double channel3: type: number format: double channel4: type: number format: double channel5: type: number format: double channel6: type: number format: double channel7: type: number format: double channel8: type: number format: double near: type: number format: double clear: type: number format: double flicker: type: number format: double par: type: number format: double gain: type: integer format: int32 tint: type: number format: double additionalProperties: false SensorReadingType: type: integer format: int32 NonTypeSpecificDeviceListDto: type: object properties: deviceViewDtos: type: array items: $ref: '#/components/schemas/DeviceViewDto' nullable: true universalSensorViews: type: array items: $ref: '#/components/schemas/SensorDeviceViewUniversalDto' nullable: true hubViewDtos: type: array items: $ref: '#/components/schemas/HubViewDto' nullable: true controlsViewDtos: type: array items: $ref: '#/components/schemas/ControlsViewDto' nullable: true additionalProperties: false HighChartAuxiliaryData: type: object properties: color: type: string nullable: true readOnly: true yAxis: type: integer format: int32 valueDecimal: type: integer format: int32 redCoefficient: type: integer format: int32 greenCoefficient: type: integer format: int32 blueCoefficient: type: integer format: int32 additionalProperties: false ControlType: type: integer format: int32 UniversalDataPointArrayDto: type: object properties: dataPointValues: type: array items: $ref: '#/components/schemas/UniversalDataPointDtoMultipleValue' nullable: true dataPointValuesCreatedAt: type: array items: type: string format: date-time nullable: true additionalProperties: false DeviceViewDto: type: object properties: id: type: integer format: int32 displayOrder: type: integer format: int32 nullable: true name: type: string nullable: true growId: type: integer format: int32 hidden: type: boolean deviceType: $ref: '#/components/schemas/DeviceType' guid: type: string format: uuid templateId: type: integer format: int32 nullable: true pulseGuid: type: string format: uuid dayStart: type: string format: date-span nightStart: type: string format: date-span isDay: type: boolean vpdLeafTempOffsetInF: type: number format: double vpdTarget: type: number format: double nullable: true batteryCount: type: integer format: int32 lowBatteryVoltage: type: number format: float mostRecentDataPoint: $ref: '#/components/schemas/DataPointDto' lastHourData: type: array items: $ref: '#/components/schemas/DataPointDto' nullable: true proLightReadingPreviewDto: $ref: '#/components/schemas/ProLightReadingPreviewDto' growTimezoneOffset: type: integer format: int32 additionalProperties: false HubViewDto: type: object properties: id: type: integer format: int32 displayOrder: type: integer format: int32 nullable: true name: type: string nullable: true growId: type: integer format: int32 hidden: type: boolean deviceType: $ref: '#/components/schemas/DeviceType' mostRecentDataPoint: $ref: '#/components/schemas/HubDataPointDto' additionalProperties: false ControlsViewDto: type: object properties: id: type: integer format: int32 name: type: string nullable: true controlType: $ref: '#/components/schemas/ControlType' displayOrder: type: integer format: int32 nullable: true deviceType: $ref: '#/components/schemas/DeviceType' openSprinklerSpecificData: $ref: '#/components/schemas/OpenSprinklerSpecificData' additionalProperties: false DeviceType: type: integer format: int32 ParSensorSubtype: type: integer format: int32 NextOpenSprinklerProgramRunInfo: type: object properties: programId: type: integer format: int32 inDays: type: integer format: int32 startTime: type: string format: date-span nullable: true programName: type: string nullable: true dayOfRun: type: string format: date-time additionalProperties: false UniversalDataPointDtoMultipleValue: type: object properties: paramName: type: string nullable: true measuringUnit: type: string nullable: true paramValues: type: array items: type: number format: float nullable: true highChartAuxiliaryData: $ref: '#/components/schemas/HighChartAuxiliaryData' sensorReadingType: $ref: '#/components/schemas/SensorReadingType' additionalProperties: false ProLightReadingPreviewDto: type: object properties: id: type: integer format: int32 ppfd: type: number format: double dli: type: number format: double nullable: true createdAt: type: string format: date-time additionalProperties: false HubDataPointDto: type: object properties: deviceId: type: integer format: int32 pluggedIn: type: boolean batteryV: type: number format: float electricImpId: type: string nullable: true signalStrength: type: integer format: int32 createdAt: type: string format: date-time additionalProperties: false UniversalDataPointDto: type: object properties: dataPointValues: type: array items: $ref: '#/components/schemas/UniversalDataPointDtoSingleValue' nullable: true sensorId: type: integer format: int32 createdAt: type: string format: date-time additionalProperties: false SensorDeviceViewUniversalDto: type: object properties: id: type: integer format: int32 displayOrder: type: integer format: int32 nullable: true name: type: string nullable: true growId: type: integer format: int32 hidden: type: boolean hubId: type: integer format: int32 nullable: true deviceType: $ref: '#/components/schemas/DeviceType' mostRecentDataPoint: $ref: '#/components/schemas/UniversalDataPointDto' sensorType: $ref: '#/components/schemas/SensorType' lastHourDataPointDtos: $ref: '#/components/schemas/UniversalDataPointArrayDto' templateId: type: integer format: int32 nullable: true dayStart: type: string format: date-span nightStart: type: string format: date-span parSensorSubtype: $ref: '#/components/schemas/ParSensorSubtype' additionalProperties: false LastAutomationInfo: type: object properties: durations: type: array items: type: integer format: int32 nullable: true sensorId: type: integer format: int32 triggeringValue: type: string nullable: true time: type: string format: date-time mostRecentSensorDataPointDto: $ref: '#/components/schemas/MostRecentSensorDataPointDto' additionalProperties: false