Pulse Grow Devices API
A collection of API operations related to devices.
A collection of API operations related to devices.
openapi: 3.0.4
info:
title: Pulse Api AllDevices Devices 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: Devices
description: A collection of API operations related to devices.
paths:
/devices/{deviceId}/recent-data:
get:
tags:
- Devices
summary: Device Recent Data
description: Gets the last data point for a device
parameters:
- name: deviceId
in: path
description: The device identifier for which to retrieve the latest data.
required: true
schema:
type: integer
format: int32
example: 123
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/PublicApiDataPoint'
'400':
description: Bad Request
content:
application/json:
schema:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
type: string
/devices/{deviceId}/data-range:
get:
tags:
- Devices
summary: Data Range for Device. Each Datapoint in range will be counted towards your api usage limit.
description: Retrieves all datapoints within a specified timespan the device.
parameters:
- name: deviceId
in: path
description: The device identifier for which to retrieve data.
required: true
schema:
type: integer
format: int32
example: 123
- name: start
in: query
description: The beginning time of your data range in ISO 8601 format.
required: true
schema:
type: string
format: date-time
example: '2020-01-31T01:11:22Z'
- name: end
in: query
description: The end time of your data range in ISO 8601 format. If not provided, API will use the current time.
schema:
type: string
format: date-time
example: '2020-01-31T20:11:22Z'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PublicApiDataPoint'
'400':
description: Bad Request
content:
application/json:
schema:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
type: string
/devices/ids:
get:
tags:
- Devices
summary: All Device Ids
description: Retrieves all of the device ids assigned to the grow.
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: integer
format: int32
'400':
description: Bad Request
content:
application/json:
schema:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
type: string
/devices/details:
get:
tags:
- Devices
summary: All Device Details
description: Retrieves detailed information for all devices on the grow.
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeviceDetailsDto'
'400':
description: Bad Request
content:
application/json:
schema:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
type: string
/devices/range:
get:
tags:
- Devices
summary: Data Range for All Devices. Each Datapoint will be counted towards your api usage limit.
description: Retrieves all datapoints within a specified timespan for all devices on grow. Max data range of 7 days.
parameters:
- name: start
in: query
description: The beginning time of your data range in ISO 8601 format.
required: true
schema:
type: string
format: date-time
example: '2020-01-31T01:11:22Z'
- name: end
in: query
description: The end time of your data range in ISO 8601 format. If not provided, API will use the current time.
schema:
type: string
format: date-time
example: '2020-01-31T20:11:22Z'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PublicApiDataPoint'
'400':
description: Bad Request
content:
application/json:
schema:
type: string
'401':
description: Unauthorized
content:
application/json:
schema:
type: string
components:
schemas:
ThresholdType:
type: integer
format: int32
ViewThresholdDto:
type: object
properties:
id:
type: integer
format: int32
nullable: true
notificationActive:
type: boolean
nullable: true
lowThresholdValue:
type: number
format: double
nullable: true
highThresholdValue:
type: number
format: double
nullable: true
delay:
type: string
format: date-span
nullable: true
day:
type: boolean
nullable: true
deviceId:
type: integer
format: int32
nullable: true
thresholdType:
$ref: '#/components/schemas/ThresholdType'
additionalProperties: false
PublicApiLightCalculationDto:
type: object
properties:
channels:
type: array
items:
type: number
format: double
nullable: true
tint:
type: number
format: double
gain:
type: integer
format: int32
ppfd:
type: number
format: double
nullable: true
pfdRed:
type: number
format: double
nullable: true
pfdGreen:
type: number
format: double
nullable: true
pfdBlue:
type: number
format: double
nullable: true
pfdIr:
type: number
format: double
nullable: true
additionalProperties: false
DeviceOffsetsDto:
type: object
properties:
tempOffset:
type: number
format: double
humidityOffset:
type: number
format: double
lightOffset:
type: number
format: double
airPressureOffset:
type: number
format: double
vpdLeafTempOffsetInF:
type: number
format: double
additionalProperties: false
PublicApiDataPoint:
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: double
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
dpC:
type: number
format: double
dpF:
type: number
format: double
temperatureC:
type: number
format: double
lightCalculationReading:
$ref: '#/components/schemas/PublicApiLightCalculationDto'
additionalProperties: false
DeviceType:
type: integer
format: int32
BatteryType:
type: integer
format: int32
DeviceDetailsDto:
type: object
properties:
id:
type: integer
format: int32
deviceType:
$ref: '#/components/schemas/DeviceType'
powerThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
connectivityThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
outletToBatteryTransitionThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
lowBatteryThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
dayThresholds:
$ref: '#/components/schemas/DeviceThresholdDto'
nightThresholds:
$ref: '#/components/schemas/DeviceThresholdDto'
offsets:
$ref: '#/components/schemas/DeviceOffsetsDto'
vpdLeafTempOffsetInF:
type: number
format: double
dayStart:
type: string
nullable: true
nightStart:
type: string
nullable: true
name:
type: string
nullable: true
vpdTarget:
type: number
format: double
nullable: true
templateId:
type: integer
format: int32
nullable: true
templateName:
type: string
nullable: true
templateTypeId:
type: integer
format: int32
nullable: true
batteryType:
$ref: '#/components/schemas/BatteryType'
lowBatteryVoltage:
type: number
format: float
macAddress:
type: string
nullable: true
lastCo2CalibrationDate:
type: string
format: date-time
nullable: true
additionalProperties: false
DeviceThresholdDto:
type: object
properties:
lightThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
temperatureThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
humidityThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
vpdThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
dewPointThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
co2Threshold:
$ref: '#/components/schemas/ViewThresholdDto'
vocThreshold:
$ref: '#/components/schemas/ViewThresholdDto'
dewPointThresholdDual:
$ref: '#/components/schemas/ViewThresholdDto'
additionalProperties: false