Skip to content

balena-io-modules/balena-register-device

Repository files navigation

balena-register-device

Balena device registration utilities.

npm version dependencies Build Status Build status

Installation

Install balena-register-device by running:

$ npm install --save balena-register-device

Documentation

Balena-Register-Device exports a factory function, which must be called with a dependencies object, containing a configured balena-request instance.

Example:

deviceRegister = require('balena-register-device')({
	request: request # An instantiated balena-request instance
})

deviceRegister.generateUniqueKey()

Generate a random key, useful for both uuid and api key.

Example:

randomKey = deviceRegister.generateUniqueKey()
# randomKey is a randomly generated key that can be used as either a uuid or an api key
console.log(randomKey)

deviceRegister.register(Object options, Function callback)

Register a device with Balena.

Notice: You can use this function as a promise if you omit the callback argument.

The options object requires the following properties:

  • Number userId: The user id - optional.
  • Number applicationId: The application id.
  • String uuid: The device's UUID.
  • String deviceType: The device type slug.
  • String deviceApiKey: The API key to create for the newly registered device.
  • String provisioningApiKey: The provisioning API Key.
  • String apiEndpoint: The API endpoint.

The callback gets called with two arguments: (error, deviceInfo), where deviceInfo is an object containing one property: the id for the device that was just registered.

Example:

deviceRegister.register
		userId: 199
		applicationId: 10350
		uuid: '...'
		deviceType: 'raspberry-pi'
		deviceApiKey: '...'
		provisioningApiKey: '...'
		apiEndpoint: 'https://api.balena-cloud.com'
	, (error, deviceInfo) ->
		throw error if error?
		console.log(deviceInfo) # { id }

Tests

Run the test suite by doing:

$ npm test

Contribute

Before submitting a PR, please make sure that you include tests, and that coffeelint runs without any warning:

$ npm run lint

Support

If you're having any problem, please raise an issue on GitHub.

License

The project is licensed under the Apache 2.0 license.