Particle API JS (Javascript SDK)
ParticleJS is JavaScript library for the Particle Device Cloud API for Node.js and the browser. It's open source so you can edit, change or even send in pull requests if you want to share!
This page contains examples to get started using the library.
For more details, see the detailed reference below and check the examples folder on GitHub.
Installation
Node.js
First, make sure you have node.js installed!
Next, open a command prompt or terminal, and install by typing:
$ npm install particle-api-js
Browser
Particle API JS can be included using bower:
$ bower install particle-api-js
Alternately, you can pull in Particle API JS from the JSDelivr and simply include the script in your HTML.
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/particle-api-js@8/dist/particle.min.js">
</script>
Now you will have a Particle
object available that you can use in your application.
Responses
All functions in this library return promises.
particle.login({username: 'email@example.com', password: 'pass'}).then(
function(data){
console.log('API call completed on promise resolve: ', data.body.access_token);
},
function(err) {
console.log('API call completed on promise fail: ', err);
}
);
Examples
Here are some common use cases of using the functions in the Javascript library.
Logging in
login
You can create an account here. Use the token from login
as the auth
parameter in other calls.
var Particle = require('particle-api-js');
var particle = new Particle();
var token;
particle.login({username: 'user@email.com', password: 'pass'}).then(
function(data) {
token = data.body.access_token;
},
function (err) {
console.log('Could not log in.', err);
}
);
Device management
listDevices
List devices for a user with listDevices
.
var token; // from result of particle.login
var devicesPr = particle.listDevices({ auth: token });
devicesPr.then(
function(devices){
console.log('Devices: ', devices);
},
function(err) {
console.log('List devices call failed: ', err);
}
);
callFunction
Call a function in device with callFunction
.
var fnPr = particle.callFunction({ deviceId: 'DEVICE_ID', name: 'brew', argument: 'D0:HIGH', auth: token });
fnPr.then(
function(data) {
console.log('Function called succesfully:', data);
}, function(err) {
console.log('An error occurred:', err);
});
The function needs to be defined in the firmware uploaded to the device and registered to the Particle cloud.
You pass along the name of the function and the params.
If the function call succeeds, data.return_value
is the value returned by the function call on the Particle device.
claimDevice
Claims device and adds it to the user account with claimDevice
particle.claimDevice({ deviceId: 'DEVICE_ID', auth: token }).then(function(data) {
console.log('device claim data:', data);
}, function(err) {
console.log('device claim err:', err);
});
flashDevice
Flash firmware to device with flashDevice
particle.flashDevice({ deviceId: 'DEVICE_ID', files: { file1: './path/file1' }, auth: token }).then(function(data) {
console.log('Device flashing started successfully:', data);
}, function(err) {
console.log('An error occurred while flashing the device:', err);
});
getDevice
Gets all attributes for the device with getDevice
var devicesPr = particle.getDevice({ deviceId: 'DEVICE_ID', auth: token });
devicesPr.then(
function(data){
console.log('Device attrs retrieved successfully:', data);
},
function(err) {
console.log('API call failed: ', err);
}
);
getVariable
Gets a variable value for the device with getVariable
particle.getVariable({ deviceId: 'DEVICE_ID', name: 'temp', auth: token }).then(function(data) {
console.log('Device variable retrieved successfully:', data);
}, function(err) {
console.log('An error occurred while getting attrs:', err);
});
The variable needs to be defined in your device's code.
If getting the variable succeeds, data.body.result
is the value of the variable on the Particle device.
removeDevice
Removes device from the user account with removeDevice
particle.removeDevice({ deviceId: 'DEVICE_ID', auth: token }).then(function(data) {
console.log('remove call response:', data);
}, function(err) {
console.log('An error occurred while removing:', err);
});
renameDevice
Renames device for the user account with renameDevice
particle.renameDevice({ deviceId: 'DEVICE_ID', name: 'new-name', auth: token }).then(function(data) {
console.log('Device renamed successfully:', data);
}, function(err) {
console.log('An error occurred while renaming device:', err);
});
signalDevice
Send a signal to the device to shout rainbows with signalDevice
particle.signalDevice({ deviceId: 'DEVICE_ID', signal: true, auth: token }).then(function(data) {
console.log('Device is shouting rainbows:', data);
}, function(err) {
console.log('Error sending a signal to the device:', err);
});
Send a signal to the device to stop shouting rainbows
particle.signalDevice({ deviceId: 'DEVICE_ID', signal: false, auth: token }).then(function(data) {
console.log('The LED is back to normal:', data);
}, function(err) {
console.log('Error sending a signal to the device:', err);
});
sendPublicKey
Send public key for a device to the cloud with sendPublicKey
particle.sendPublicKey({ deviceId: 'DEVICE_ID', key: 'key', auth: token }).then(function(data) {
console.log('Public key sent successfully:', data);
}, function(err) {
console.log('Error sending public key to the device:', err);
});
getEventStream
Get event listener to an stream in the Particle cloud with getEventStream
//Get events filtered by name
particle.getEventStream({ name: 'x', auth: token}).then(function(stream) {
stream.on('event', function(data) {
console.log("Event: ", data);
});
});
//Get your devices events
particle.getEventStream({ deviceId: 'mine', auth: token }).then(function(stream) {
stream.on('event', function(data) {
console.log("Event: ", data);
});
});
//Get test event for specific device
particle.getEventStream({ deviceId: 'DEVICE_ID', name: 'test', auth: token }).then(function(stream) {
stream.on('event', function(data) {
console.log("Event: ", data);
});
});
data
is an object with the following properties
{
"name":"Uptime",
"data":"5:28:54",
"ttl":"60",
"published_at":"2014-MM-DDTHH:mm:ss.000Z",
"coreid":"012345678901234567890123"
}
When a network error occurs or the event stream has not received a heartbeat from the Particle API in 13 seconds, the event stream will disconnect and attempt to reconnect after 2 seconds. To customize the reconnection behavior, close the stream in the disconnect handler.
// This is not a functional reconnection implementation, only an illustration of the various events
let attempts = 10;
particle.getEventStream(options).then(function(stream) {
stream.on('disconnect', function() {
console.log('Disconnected from Particle event stream');
attempts--;
if (attempts <= 0) {
console.log('Giving up reconnecting');
stream.abort();
}
});
stream.on('reconnect', function() {
console.log('Attempting to reconnect to Particle event stream');
});
stream.on('reconnect-success', function() {
console.log('Reconnected to Particle event stream');
attempts = 10;
});
stream.on('reconnect-error', function(error) {
console.log('Failed to reconnect to Particle event stream', error);
});
});
In case your event handler throws an exception, the error
event will be emitted.
particle.getEventStream(options).then(function(stream) {
stream.on('event', function(data) {
throw new Error('oops');
});
stream.on('error', function(error) {
console.log('Error in handler', error);
});
});
publishEvent
Register an event stream in the Particle cloud with publishEvent
var publishEventPr = particle.publishEvent({ name: 'test', data: JSON.stringify({ ok: true }), auth: token });
publishEventPr.then(
function(data) {
if (data.body.ok) { console.log("Event published succesfully") }
},
function(err) {
console.log("Failed to publish event: " + err)
}
);
Working with code
compileCode
Compiles files in the Particle cloud with compileCode
var ccPr = particle.compileCode({ files: { 'main.cpp': './project/main.cpp', 'my_lib/lib.cpp': './project/my_lib/lib.cpp' }, auth: token });
ccPr.then(
function(data) {
console.log('Code compilation started successfully:', data);
}, function(err) {
console.log('An error occurred while compiling the code:', err);
});
Flashing
Flash firmware to a device with flashDevice
User management
createUser
Creates a user in the Particle cloud with createUser
particle.createUser({ username: 'example@email.com', password: 'pass' }).then(function(data) {
We try to login and get back an accessToken to verify user creation
var loginPromise = particle.login('example@email.com', 'pass');
We'll use promises to check the result of the login process
loginPromise.then(
function(data) {
console.log('Login successful! access_token:', data.access_token);
},
function(err) {
console.log('Login failed:', err);
}
);
}
});
listAccessTokens
Lists access tokens from the Particle cloud for the specified user with listAccessTokens
particle.listAccessTokens({ username: 'u@m.com', password: 'pass' }).then(function(data) {
console.log('data on listing access tokens: ', data);
}, function(err) {
console.log('error on listing access tokens: ', err);
});
deleteAccessToken
Removes an access token from the Particle cloud for the specified user with deleteAccessToken
particle.deleteAccessToken({ username: 'u@m.com', password: 'pass', token: 'token' }).then(function(data) {
console.log('data on deleting accessToken: ', data);
}, function(err) {
console.log('error on deleting accessToken: ', err);
});
Product support
If you are a product creator you can use the Javascript library to manage devices, firmware, integrations, and more.
Many of the functions in the Javascript library accept a product
parameter. Pass your product ID number (such as 4567) or the slug (such as myproduct-v100
) to make that function act on that product.
Detailed reference
Here a full reference of every function available in the Javascript client library.
constructor
Contructor for the Cloud API wrapper.
Create a new Particle object and call methods below on it.
Parameters
options
Object Options for this API call Options to be used for all requests (see Defaults) (optional, default{}
)
login
Login to Particle Cloud using an existing Particle acccount.
Parameters
options
Object Options for this API calloptions.username
String Username for the Particle accountoptions.password
String Password for the Particle accountoptions.tokenDuration
Number How long the access token should last in seconds (optional, defaultthis.tokenDuration
)options.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Number? Request context
Returns Promise A promise
sendOtp
If login failed with an 'mfa_required' error, this must be called with a valid OTP code to login
Parameters
options
Object Options for this API calloptions.mfaToken
String Given as 'mfa_token' in the error body of.login()
.options.otp
String Current one-time-password generated from the authentication applicationoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Number? Request context
Returns Promise A promise
enableMfa
Enable MFA on the currently logged in user
Parameters
options
Object Options for this API call
Returns Promise A promise
confirmMfa
Confirm MFA for the user. This must be called with current TOTP code, determined from the results of enableMfa(). You will be prompted to enter an OTP code every time you login after enrollment is confirmed.
Parameters
options
Object Options for this API calloptions.mfaToken
Object Token given from previous step tooptions.otp
Object Current one-time-password generated from the authentication appoptions.invalidateTokens
Boolean Should all tokens be invalidated (optional, defaultfalse
)options.auth
Object Access tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
disableMfa
Disable MFA for the user.
Parameters
options
Object Options for this API call
Returns Promise A promise
createCustomer
Create Customer for Product.
Parameters
options
Object Options for this API calloptions.email
String Username for the Particle accountoptions.password
String Password for the Particle accountoptions.product
String Create the customer in this product ID or slugoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
loginAsClientOwner
Login to Particle Cloud using an OAuth client.
Parameters
options
Object Options for this API call
Returns Promise A promise
createUser
Create a user account for the Particle Cloud
Parameters
options
Object Options for this API calloptions.username
String Email of the new useroptions.password
String Passwordoptions.accountInfo
String Object that contains account information fields such as user real name, company name, business account flag etcoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
verifyUser
Verify new user account via verification email
Parameters
options
Object Options for this API call
Returns Promise A promise
resetPassword
Send reset password email for a Particle Cloud user account
Parameters
options
Object Options for this API call
Returns Promise A promise
deleteAccessToken
Revoke an access token
Parameters
options
Object Options for this API calloptions.username
String Username of the Particle cloud account that the token belongs to.options.password
String Password for the accountoptions.token
String Access token you wish to revokeoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
deleteCurrentAccessToken
Revoke the current session access token
Parameters
options
Object Options for this API call
Returns Promise A promise
deleteActiveAccessTokens
Revoke all active access tokens
Parameters
options
Object Options for this API call
Returns Promise A promise
deleteUser
Delete the current user
Parameters
options
Object Options for this API call
Returns Promise A promise
listAccessTokens
List all valid access tokens for a Particle Cloud account
Parameters
options
Object Options for this API call
Returns Promise A promise
trackingIdentity
Retrieves the information that is used to identify the current login for tracking.
Parameters
options
Object Options for this API call (optional, default{}
)options.full
Boolean When true, retrieve all information for registering a user with the tracking API. When false,retrieve only the unique tracking ID for the current login. (optional, default `false`)
options.auth
String The access tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise<Object> Resolve the tracking identify of the current login
listDevices
List devices claimed to the account or product
Parameters
options
Object Options for this API calloptions.deviceId
String? (Product only) Filter results to devices with this ID (partial matching)options.deviceName
String? (Product only) Filter results to devices with this name (partial matching)options.groups
Array<string>? (Product only) A list of full group names to filter results to devices belonging to these groups only.options.sortAttr
String? (Product only) The attribute by which to sort results. See API docs for options.options.sortDir
String? (Product only) The direction of sorting. See API docs for options.options.page
Number? (Product only) Current page of resultsoptions.perPage
Number? (Product only) Records per pageoptions.product
String? List devices in this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
getDevice
Get detailed informationa about a device
Parameters
options
Object Options for this API call
Returns Promise A promise
claimDevice
Claim a device to the account. The device must be online and unclaimed.
Parameters
options
Object Options for this API call
Returns Promise A promise
addDeviceToProduct
Add a device to a product or move device out of quarantine.
Parameters
options
Object Options for this API calloptions.deviceId
String Device IDoptions.product
String Add to this product ID or slugoptions.file
Object A file that contains a single-column list of device IDs, device serial numbers, device IMEIs, or devie ICCIDs.Node: Either a path or Buffer. Browser: a File or Blob.
options.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
removeDevice
Unclaim / Remove a device from your account or product, or deny quarantine
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.deny
Boolean? (Product only) Deny this quarantined device, instead of removing an already approved deviceoptions.product
String Remove from this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
removeDeviceOwner
Unclaim a product device its the owner, but keep it in the product
Parameters
options
Object Options for this API call
Returns Promise A promise
renameDevice
Rename a device
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.name
String Desired Nameoptions.product
String? Rename device in this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
signalDevice
Instruct the device to turn on/off the LED in a rainbow pattern
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.signal
Boolean Signal on or offoptions.product
String? Device in this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
setDeviceNotes
Store some notes about device
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.notes
String Your notes about this deviceoptions.product
String? Device in this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
markAsDevelopmentDevice
Mark device as being used in development of a product so it opts out of automatic firmware updates
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.development
Boolean Set to true to mark as development, false to return to product fleet (optional, defaulttrue
)options.product
String Device in this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
lockDeviceProductFirmware
Mark device as being used in development of a product so it opts out of automatic firmware updates
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.desiredFirmwareVersion
Number Lock the product device to run this firmware version.options.flash
Boolean? Immediately flash firmware indicated by desiredFirmwareVersionoptions.product
String Device in this product ID or slugoptions.auth
String Access Tokenoptions.context
Object? Request contextoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.
Returns Promise A promise
unlockDeviceProductFirmware
Mark device as receiving automatic firmware updates
Parameters
options
Object Options for this API call
Returns Promise A promise
updateDevice
Update multiple device attributes at the same time
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.name
String? Desired Nameoptions.signal
Boolean Signal device on or offoptions.notes
String? Your notes about this deviceoptions.development
Boolean? (Product only) Set to true to mark as development, false to return to product fleetoptions.desiredFirmwareVersion
Number? (Product only) Lock the product device to run this firmware version.Pass `null` to unlock firmware and go back to released firmware.
options.flash
Boolean? (Product only) Immediately flash firmware indicated by desiredFirmwareVersionoptions.product
String? Device in this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
provisionDevice
Provision a new device for products that allow self-provisioning
Parameters
options
Object Options for this API call
Returns Promise A promise
getClaimCode
Generate a claim code to use in the device claiming process. To generate a claim code for a product, the access token MUST belong to a customer of the product.
Parameters
options
Object Options for this API call
Returns Promise A promise
getVariable
Get the value of a device variable
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.name
String Variable nameoptions.product
String? Device in this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
flashDevice
Compile and flash application firmware to a device. Pass a pre-compiled binary to flash it directly to the device.
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.product
String Flash device in this product ID or slugoptions.files
Object Object containing files to be compiled and flashed. Keys should be the filenames, including relative path, and the values should be a path or Buffer of the file contents in Node, or a File or Blob in the browser.options.targetVersion
String System firmware version to compile against (optional, defaultlatest
)options.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
flashTinker
DEPRECATED: Flash the Tinker application to a device. Instead compile and flash the Tinker source code.
Parameters
options
Object Options for this API call
Returns Promise A promise
compileCode
Compile firmware using the Particle Cloud
Parameters
options
Object Options for this API calloptions.files
Object Object containing files to be compiled. Keys should be the filenames, including relative path, and the values should be a path or Buffer of the file contents in Node, or a File or Blob in the browser.options.platformId
Number? Platform id number of the device you are compiling for. Common values are 0=Core, 6=Photon, 10=Electron.options.targetVersion
String System firmware version to compile against (optional, defaultlatest
)options.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
downloadFirmwareBinary
Download a firmware binary
Parameters
options
Object Options for this API call
Returns Promise A promise
sendPublicKey
Send a new device public key to the Particle Cloud
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.key
(String | Buffer) Public key contentsoptions.algorithm
String Algorithm used to generate the public key. Valid values arersa
orecc
. (optional, defaultrsa
)options.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
callFunction
Call a device function
Parameters
options
Object Options for this API calloptions.deviceId
String Device ID or Nameoptions.name
String Function nameoptions.argument
String Function argumentoptions.product
String? Device in this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
getEventStream
Get a stream of events
Parameters
options
Object Options for this API call
Returns Promise If the promise resolves, the resolution value will be an EventStream object that will emit 'event' events.
publishEvent
Publish a event to the Particle Cloud
Parameters
options
Object Options for this API calloptions.name
String Event nameoptions.data
String Event dataoptions.isPrivate
Boolean Should the event be publicly available?options.product
String? Event for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
createWebhook
Create a webhook
Parameters
options
Object Options for this API calloptions.event
String The name of the Particle event that should trigger the Webhookoptions.url
String The web address that will be targeted when the Webhook is triggeredoptions.device
String? Trigger Webhook only for this device ID or Nameoptions.rejectUnauthorized
Boolean? Set tofalse
to skip SSL certificate validation of the target URLoptions.noDefaults
Boolean? Don't include default event data in the webhook requestoptions.hook
Object? Webhook configuration settingsoptions.hook.method
String Type of web request triggered by the Webhook (GET, POST, PUT, or DELETE) (optional, defaultPOST
)options.hook.auth
Object? Auth data like{ username: 'me', password: '1234' }
to send via basic auth header with the Webhook requestoptions.hook.headers
Object? Additional headers to add to the Webhook like{ 'X-ONE': '1', X-TWO: '2' }
options.hook.query
Object? Query params to add to the Webhook request like{ foo: 'foo', bar: 'bar' }
options.hook.json
Object? JSON data to send with the Webhook request - setsContent-Type
toapplication/json
options.hook.form
Object? Form data to send with the Webhook request - setsContent-Type
toapplication/x-www-form-urlencoded
options.hook.body
String? Custom body to send with the Webhook requestoptions.hook.responseTemplate
Object? Template to use to customize the Webhook response bodyoptions.hook.responseEvent
Object? The Webhook response event name that your devices can subscribe tooptions.hook.errorResponseEvent
Object? The Webhook error response event name that your devices can subscribe to
options.product
String? Webhook for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
deleteWebhook
Delete a webhook
Parameters
options
Object Options for this API call
Returns Promise A promise
listWebhooks
List all webhooks owned by the account or product
Parameters
options
Object Options for this API call
Returns Promise A promise
createIntegration
Create an integration to send events to an external service
See the API docs for details https://docs.particle.io/reference/api/#integrations-webhooks-
Parameters
options
Object Options for this API calloptions.event
String Event that triggers the integrationoptions.settings
Object Settings specific to that integration typeoptions.deviceId
String? Trigger integration only for this device ID or Nameoptions.product
String? Integration for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
editIntegration
Edit an integration to send events to an external service
See the API docs for details https://docs.particle.io/reference/api/#integrations-webhooks-
Parameters
options
Object Options for this API calloptions.integrationId
String The integration to editoptions.event
String? Change the event that triggers the integrationoptions.settings
Object? Change the settings specific to that integration typeoptions.deviceId
String? Trigger integration only for this device ID or Nameoptions.product
String? Integration for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
deleteIntegration
Delete an integration to send events to an external service
Parameters
options
Object Options for this API call
Returns Promise A promise
listIntegrations
List all integrations owned by the account or product
Parameters
options
Object Options for this API call
Returns Promise A promise
getUserInfo
Get details about the current user
Parameters
options
Object Options for this API call
Returns Promise A promise
setUserInfo
Set details on the current user
Parameters
options
Object Options for this API call
Returns Promise A promise
changeUsername
Change username (i.e, email)
Parameters
options
Object Options for this API calloptions.currentPassword
String Current passwordoptions.username
String New emailoptions.invalidateTokens
Boolean Should all tokens be invalidated (optional, defaultfalse
)options.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
changeUserPassword
Change user's password
Parameters
options
Object Options for this API calloptions.currentPassword
String Current passwordoptions.password
String New passwordoptions.invalidateTokens
Boolean Should all tokens be invalidated (optional, defaultfalse
)options.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
listSIMs
List SIM cards owned by a user or product
Parameters
options
Object Options for this API calloptions.iccid
String? (Product only) Filter to SIM cards matching this ICCIDoptions.deviceId
String? (Product only) Filter to SIM cards matching this device IDoptions.deviceName
String? (Product only) Filter to SIM cards matching this device nameoptions.page
Number? (Product only) Current page of resultsoptions.perPage
Number? (Product only) Records per pageoptions.product
String? SIM cards for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
getSIMDataUsage
Get data usage for one SIM card for the current billing period
Parameters
options
Object Options for this API call
Returns Promise A promise
getFleetDataUsage
Get data usage for all SIM cards in a product the current billing period
Parameters
options
Object Options for this API call
Returns Promise A promise
checkSIM
Check SIM status
Parameters
options
Object Options for this API call
Returns Promise A promise
activateSIM
Activate and add SIM cards to an account or product
Parameters
options
Object Options for this API calloptions.iccid
String ICCID of the SIM cardoptions.iccids
Array<String> (Product only) ICCID of multiple SIM cards to importoptions.country
String The ISO country code for the SIM cardsoptions.product
String? SIM cards for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request contextoptions.promoCode
Returns Promise A promise
deactivateSIM
Deactivate a SIM card so it doesn't incur data usage in future months.
Parameters
options
Object Options for this API call
Returns Promise A promise
reactivateSIM
Reactivate a SIM card the was deactivated or unpause a SIM card that was automatically paused
Parameters
options
Object Options for this API calloptions.iccid
String ICCID of the SIM cardoptions.mbLimit
Number? New monthly data limit. Necessary if unpausing a SIM cardoptions.product
String? SIM cards for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
updateSIM
Update SIM card data limit
Parameters
options
Object Options for this API calloptions.iccid
String ICCID of the SIM cardoptions.mbLimit
Array Data limit in megabyte for the SIM cardoptions.product
String? SIM cards for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
removeSIM
Remove a SIM card from an account so it can be activated by a different account
Parameters
options
Object Options for this API call
Returns Promise A promise
listBuildTargets
List valid build targets to be used for compiling
Parameters
options
Object Options for this API call
Returns Promise A promise
listLibraries
List firmware libraries
Parameters
options
Object Options for this API calloptions.page
Number Page index (default, first page)options.limit
Number Number of items per pageoptions.filter
String Search term for the librariesoptions.sort
String Ordering key for the library listoptions.architectures
Array<String> List of architectures to filteroptions.category
String Category to filteroptions.scope
String The library scope to list. Default is 'all'. Other values are- 'all' - list public libraries and my private libraries- 'public' - list only public libraries
- 'private' - list only my private libraries
- 'mine' - list my libraries (public and private)
- 'official' - list only official libraries
- 'verified' - list only verified libraries
- 'featured' - list only featured libraries
options.excludeScopes
String list of scopes to excludeoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
getLibrary
Get firmware library details
Parameters
options
Object Options for this API call
Returns Promise A promise
getLibraryVersions
Firmware library details for each version
Parameters
options
Object Options for this API calloptions.name
String Name of the library to fetchoptions.page
Number Page index (default, first page)options.limit
Number Number of items per pageoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
contributeLibrary
Contribute a new library version from a compressed archive
Parameters
options
Object Options for this API calloptions.archive
String Compressed archive file containing the library sourcesEither a path or Buffer of the file contents in Node, or a File or Blob in the browser.
options.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
publishLibrary
Publish the latest version of a library to the public
Parameters
options
Object Options for this API call
Returns Promise A promise
deleteLibrary
Delete one version of a library or an entire private library
Parameters
options
Object Options for this API call
Returns Promise A promise
downloadFile
Download an external file that may not be on the API
Parameters
options
Object Options for this API call
Returns Promise Resolves to a buffer with the file data
listOAuthClients
List OAuth client created by the account
Parameters
options
Object Options for this API call
Returns Promise A promise
createOAuthClient
Create an OAuth client
Parameters
options
Object Options for this API calloptions.name
String Name of the OAuth clientoptions.type
String web, installed or weboptions.redirect_uri
String? URL to redirect after OAuth flow. Only for type web.options.scope
Object? Limits what the access tokens created by this client can do.options.product
String? Create client for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
updateOAuthClient
Update an OAuth client
Parameters
options
Object Options for this API calloptions.clientId
String The OAuth client to updateoptions.name
String? New Name of the OAuth clientoptions.scope
Object? New scope of the OAuth clientoptions.product
String? Update client linked to this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
deleteOAuthClient
Delete an OAuth client
Parameters
options
Object Options for this API call
Returns Promise A promise
listProducts
List products the account has access to
Parameters
options
Object Options for this API call
Returns Promise A promise
getProduct
Get detailed information about a product
Parameters
options
Object Options for this API call
Returns Promise A promise
listProductFirmware
List product firmware versions
Parameters
options
Object Options for this API call
Returns Promise A promise
uploadProductFirmware
List product firmware versions
Parameters
options
Object Options for this API calloptions.file
Object Path or Buffer of the new firmware fileEither a path or Buffer of the file contents in Node, or a File or Blob in the browser.
options.version
Number Version number of new firmwareoptions.title
String Short identifier for the new firmwareoptions.description
String? Longer description for the new firmwareoptions.product
String Firmware for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
getProductFirmware
Get information about a product firmware version
Parameters
options
Object Options for this API call
Returns Promise A promise
updateProductFirmware
Update information for a product firmware version
Parameters
options
Object Options for this API calloptions.version
Number Version number of new firmwareoptions.title
String? New titleoptions.description
String? New descriptionoptions.product
String Firmware for this product ID or slugoptions.auth
String Access Tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
downloadProductFirmware
Download a product firmware binary
Parameters
options
Object Options for this API call
Returns Promise A promise
releaseProductFirmware
Release a product firmware version as the default version
Parameters
options
Object Options for this API call
Returns Promise A promise
listTeamMembers
List product team members
Parameters
options
Object Options for this API call
Returns Promise A promise
inviteTeamMember
Invite Particle user to a product team
Parameters
options
Object Options for this API call
Returns Promise A promise
removeTeamMember
Remove Particle user to a product team
Parameters
options
Object Options for this API call
Returns Promise A promise
lookupSerialNumber
Fetch details about a serial number
Parameters
options
Object Options for this API call
Returns Promise A promise
createMeshNetwork
Create a mesh network
Parameters
options
Object Options for this API calloptions.name
String Network nameoptions.deviceId
String Gateway device IDoptions.iccid
String? ICCID of the active SIM card (only for cellular gateway devices)options.auth
String Access tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise<Object> A promise
removeMeshNetwork
Remove a mesh network.
Parameters
options
Object Options for this API call
Returns Promise<Object> A promise
listMeshNetworks
List all mesh networks
Parameters
options
Object Options for this API call
Returns Promise<Object> A promise
getMeshNetwork
Get information about a mesh network.
Parameters
options
Object Options for this API call
Returns Promise<Object> A promise
updateMeshNetwork
Modify a mesh network.
Parameters
options
Object Options for this API calloptions.networkId
String Network ID or nameoptions.action
String 'add-device', 'remove-device', 'gateway-enable' or 'gateway-disable'options.deviceId
String Device IDoptions.auth
String Access tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise<Object> A promise
addMeshNetworkDevice
Add a device to a mesh network.
Parameters
options
Object Options for this API call
Returns Promise<Object> A promise
removeMeshNetworkDevice
Remove a device from a mesh network.
Parameters
options
Object Options for this API call
Returns Promise<Object> A promise
listMeshNetworkDevices
List all devices of a mesh network.
Parameters
options
Object Options for this API calloptions.networkId
String Network ID or nameoptions.role
Number? Device role: 'gateway' or 'node'options.page
Number? Current page of resultsoptions.perPage
Number? Records per pageoptions.auth
String Access tokenoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise<Object> A promise
getProductConfiguration
Get product configuration
Parameters
options
Object Options for this API call
Returns Promise A promise
getProductConfigurationSchema
Get product configuration schema
Parameters
options
Object Options for this API call
Returns Promise A promise
getProductDeviceConfiguration
Get product device's configuration
Parameters
options
Object Options for this API call
Returns Promise A promise
getProductDeviceConfigurationSchema
Get product device's configuration schema
Parameters
options
Object Options for this API call
Returns Promise A promise
setProductConfiguration
Set product configuration
Parameters
options
Object Options for this API call
Returns Promise A promise
setProductDeviceConfiguration
Set product configuration for a specific device within the product
Parameters
options
Object Options for this API call
Returns Promise A promise
getProductLocations
Query location for devices within a product
Parameters
options
Object Options for this API calloptions.auth
String Access Tokenoptions.product
String Locations for this product ID or slugoptions.dateRange
String Start and end date in ISO8601 format, separated by comma, to queryoptions.rectBl
String Bottom left of the rectangular bounding box to query. Latitude and longitude separated by commaoptions.rectTr
String Top right of the rectangular bounding box to query. Latitude and longitude separated by commaoptions.deviceId
String Device ID prefix to include in the queryoptions.deviceName
String Device name prefix to include in the queryoptions.groups
String Array of group names to include in the queryoptions.page
String Page of results to display. Defaults to 1options.perPage
String Number of results per page. Defaults to 20. Maximum of 100options.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise
getProductDeviceLocations
Query location for one device within a product
Parameters
options
Object Options for this API calloptions.auth
String Access Tokenoptions.product
String Locations for this product ID or slugoptions.dateRange
String Start and end date in ISO8601 format, separated by comma, to queryoptions.rectBl
String Bottom left of the rectangular bounding box to query. Latitude and longitude separated by commaoptions.rectTr
String Top right of the rectangular bounding box to query. Latitude and longitude separated by commaoptions.deviceId
String Device ID to queryoptions.headers
Object? Key/Value pairs like{ 'X-FOO': 'foo', X-BAR: 'bar' }
to send as headers.options.context
Object? Request context
Returns Promise A promise