-
Notifications
You must be signed in to change notification settings - Fork 8
Protocol HTTPS
The SkyBell HD app uses HTTPS requests to communicate with the cloud services, including retrieval of recorded videos. The video and audio streams for Watch Live calls are carried over SRTP.
Refer to the protocol overview and details of SRTP streams for more information.
Note:
- Responses shown below have been reformatted to be more readable. The actual responses from the SkyBell cloud services do not have whitespace (unless part of values).
- All identifiers and keys have been consistently replaced by random values of the same format.
Each HTTPS request should include the following headers:
Header | Value | Comments |
---|---|---|
Content-Type: |
application/json |
The body of the request (if any) and response is always JSON encoded. |
Authorization: |
Bearer <Access_Token> |
The <Access_Token> is obtained from the Login request, and is specific to a single <App_UUID> and <Client_UUID> . This header may be omitted from the Login request itself. |
user-agent |
<Project>/<Version> |
A description of the software being used to access the API. This is used by SkyBell Technologies to analyse usage of their servers by third-party projects. |
x-skybell-app-id: |
<App_UUID> |
This identifies a particular mobile device that can receive mobile push notifications. It can be an arbitrary string. The SkyBell HD app uses a version 5 UUID (RFC 4122). If notifications are being used then this needs to be constant for a particular device, otherwise any random identifier can be used that is constant during a sessions. |
x-skybell-client-id: |
<Client_UUID> |
This is used to distinguish between concurrent calls to the same doorbell. Any random identifier can be used that is constant during a session. |
Successful requests return a 2xx
status code:
200 OK
202 Accepted
Errors are indicated by a 4xx
status code:
400 Bad Request
401 Unauthorized
403 Forbidden
410 Gone
An additional message description is sometimes available in the response body. However, the format of the response can vary.
The error message is usually available as message
:
{
"message": "No room is setup for this device"
}
A name
for the error may also be included:
{
"name": "NotFound",
"message": "Invalid device ID."
}
Sometimes the message
includes escaped JSON encoding:
{
"name": "StatusCodeError",
"message": "401 - {\"error\":\"invalid_client\",\"error_description\":\"User not found\"}"
}
However, occasionally the error message appears as error.message
:
{
"error": {
"message": "Can not query users besides /me "
}
}
Malformed requests frequently trigger an error message that looks like:
{
"message": "'ae5ecc79f15c193ee322de514982af67995692121d2cdabd7f8157fc9edb2bc7e6c135bcbbf85fb532a531310e94d3b65399b49ecc6d7a7bd712d144feda7417531c94b0fab7d0267d3fbf0a9445a7417914a72f25e74829015b5eb44e1e2f2c708b2ef42554f9b7cb7d56df31ed90a708169c74be3337779f44fdb4b8d32754' not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer ae5ecc79f15c193ee322de514982af67995692121d2cdabd7f8157fc9edb2bc7e6c135bcbbf85fb532a531310e94d3b65399b49ecc6d7a7bd712d144feda7417531c94b0fab7d0267d3fbf0a9445a7417914a72f25e74829015b5eb44e1e2f2c708b2ef42554f9b7cb7d56df31ed90a708169c74be3337779f44fdb4b8d32754'."
}
This error is misleading. There should not be an equal-sign in the Authorization
header. A space is used to separate Bearer
and <Token>
.
The following requests are supported:
The Login request must be used to obtain an <Access_Token>
before any of the other requests can be used.
POST https://cloud.myskybell.com/api/v3/login/
This request is primarily used to obtain the <Access_Token>
for all other requests. It also returns the user's real name and details of third-party integrations (including their OAuth 2.0 access tokens).
The values of username
and password
should be set to the email address and password used to log into the SkyBell HD app.
Example request body:
{
"username": "skybell@gmail.com",
"password": "Passw0rd!"
}
Example response body:
{
"firstName": "Jane",
"lastName": "Doe",
"resourceId": "fc154a179d696d988068409a",
"createdAt": "2017-01-05T13:29:48.847Z",
"updatedAt": "2017-01-05T13:29:48.847Z",
"id": "734645249844ae47b3e020db",
"userLinks": [{
"user": "734645249844ae47b3e020db",
"type": "oauth2",
"partnerName": "nest",
"accessToken": "c.RmFyIG91dCBpbiB0aGUgdW5jaGFydGVkIGJhY2t3YXRlcnMgb2YgdGhlIHVuZmFzaGlvbmFibGUgZW5kIG9mIHRoZSB3ZXN0ZXJuDQpzcGlyYWwgYXJtIG9mIHRoZSBHYWxheHkgbGllcyBh",
"ttl": null,
"createdAt": "2017-02-23T08:43:24.723Z",
"updatedAt": "2017-05-12T13:23:01.920Z",
"meta": [{
"deviceId": "ebe04fdd543efab2674f5349",
"structureId": "VGhlIG9ubHkgcGVyc29uIGZvciB3aG9tIHRoZSBob3VzZSB3YXMgaW",
"deviceType": "co_smoke_alarm"
}],
"id": "e2448c262326ad63cc6bac07"
}],
"access_token": "ae5ecc79f15c193ee322de514982af67995692121d2cdabd7f8157fc9edb2bc7e6c135bcbbf85fb532a531310e94d3b65399b49ecc6d7a7bd712d144feda7417531c94b0fab7d0267d3fbf0a9445a7417914a72f25e74829015b5eb44e1e2f2c708b2ef42554f9b7cb7d56df31ed90a708169c74be3337779f44fdb4b8d32754"
}
The returned access_token
should be included in the Authorization:
header of all other requests, prefixed by "Bearer
" (see Request Headers).
The top-level id
value (734645249844ae47b3e020db
in this example) can be used for the <User_ID>
in other requests that need to identify a specific user.
POST https://cloud.myskybell.com/api/v3/logout
Logout from the SkyBell cloud. The <App_UUID>
(see Request Headers) needs to be provided.
Example request body:
{
"appId": "B3A12056-1830-5AAD-BC8D-57790E5A476A"
}
Example response body:
{}
POST https://cloud.myskybell.com/api/v3/devices/<Device_ID>/calls/
Start a Watch Live call to the doorbell identified by <Device_ID>
. This returns the SRTP settings and initiates the camera (incomingVideo
) and microphone (incomingAudio
) streams from the doorbell.
Only a single call to each doorbell is supported per <Client_UUID>
(see Request Headers).
This request is not used to retrieve recorded videos; use the Get Activity Video request instead.
Example response body:
{
"deviceId": "ebe04fdd543efab2674f5349",
"incomingAudio": {
"server": "52.11.170.183",
"encoding": "S16LE",
"protocol": "SRTP",
"sampleRate": 8000,
"channels": 1,
"payloadType": 97,
"key": "MTIzNDU2Nzg5MDEyMzQ1NjEyMzQ1Njc4OTAxMjM0",
"ssrc": 3619938510,
"port": 23742
},
"audio": {
"server": "52.11.170.183",
"port": 23742,
"encoding": "S16LE",
"protocol": "SRTP",
"sampleRate": 8000,
"channels": "1",
"payloadType": 97,
"key": "MTIzNDU2Nzg5MDEyMzQ1NjEyMzQ1Njc4OTAxMjM0",
"ssrc": 692684419
},
"incomingVideo": {
"server": "52.11.170.183",
"encoding": "H264",
"protocol": "SRTP",
"sampleRate": 90000,
"payloadType": 96,
"key": "MTIzNDU2Nzg5MDEyMzQ1NjEyMzQ1Njc4OTAxMjM0",
"ssrc": 606897290,
"port": 23740
}
}
The streams use the SRTP default AES Counter Mode cipher (AES_CM_128_HMAC_SHA1_80
). The key
fields are the Base64-encoded representation of the 16-byte key concatenated with the 14-byte salt.
The ssrc
values are the Synchronisation Source identifier for the SRTP streams.
Use the Call Stop request to terminate the SRTP streams.
DELETE https://cloud.myskybell.com/api/v3/devices/<Device_ID>/calls/
Terminate the SRTP streams initiated using the Call Start request for the combination of <Device_ID>
and <Client_UUID>
.
Neither the request nor the response has a body.
PATCH https://cloud.myskybell.com/api/v3/subscriptions/<Subscription_ID>/settings/
PATCH https://cloud.myskybell.com/api/v3/devices/<Device_ID>/settings/
Modify any combination of a doorbell's settings, identified either by <Subscription_ID>
or <Device_ID>
.
The following settings correspond to configuration items within the SkyBell HD app:
Name | Configures | Value |
---|---|---|
green_r |
LED |
0 - 255
|
green_g |
LED |
0 - 255
|
green_b |
LED |
0 - 255
|
led_intensity |
LED |
0 (off), 25 (low), 62 (medium), or 100 (high) |
do_not_disturb |
Indoor Chime |
true (indoor chime disabled) or false
|
digital_doorbell |
Indoor Chime |
true or false
|
chime_level |
Outdoor Chime |
0 (outdoor chime off), 1 (low), 2 (medium), or 3 (high) |
motion_policy |
Motion Detection |
disabled or call
|
motion_threshold |
Motion Detection |
100 (low), 50 (medium), or 32 (high) |
video_profile |
Image Quality |
0 (1080p), 1 (720p better), 2 (720p good), or 3 (480p) |
These additional settings are not normally user-accessible (and hence should probably not be modified):
Name | Value |
---|---|
low_front_led_dac |
integer |
med_front_led_dac |
integer |
high_front_led_dac |
integer |
low_lux_threshold |
integer |
med_lux_threshold |
integer |
high_lux_threshold |
integer |
do_not_ring |
true or false
|
ring_tone |
integer |
mic_volume |
integer |
speaker_volume |
integer |
Example request body (to set the LED to maximum brightness cold white):
{
"green_r": "255",
"green_g": "247",
"green_b": "235",
"led_intensity": "100"
}
Example response body:
{}
GET https://cloud.myskybell.com/api/v3/subscriptions/<Subscription_ID>/activities/
GET https://cloud.myskybell.com/api/v3/devices/<Device_ID>/activities/
Poll the list of videos that have been recorded by a doorbell, identified either by <Subscription_ID>
or <Device_ID>
. This is updated after the doorbell has finished its recording and pushed the video to the cloud services.
Example response body:
[{
"_id": "936017acd9d0af411ce7a93b",
"updatedAt": "2017-05-12T13:23:01.920Z",
"createdAt": "2017-05-12T13:23:01.920Z",
"device": "ebe04fdd543efab2674f5349",
"callId": "a075fece-0afd-5cb7-ba18-37f575007729",
"event": "device:sensor:button",
"state": "ready",
"ttlStartDate": "2017-05-12T13:23:01.920Z",
"videoState": "download:ready",
"id": "936017acd9d0af411ce7a93b",
"media": "https://skybell-thumbnails-stage.s3.amazonaws.com/ebe04fdd543efab2674f5349/a075fece-0afd-5cb7-ba18-37f575007729_ebe04fdd543efab2674f5349.jpeg?AWSAccessKeyId=ASIAJE3OFQLDLDZANIVA&Expires=1514057338&Signature=VGhlIGJ1bGxkb3plciBvdXRzaWRl&response-content-type=image/jpeg&x-amz-security-token=QXQgZWlnaHQgb%2BKAmWNsb2NrIG9uIFRodXJzZGF5IG1vcm5pbmcgQXJ0aHVyIGRpZG7igJl0IGZlZWwgdmVyeSBnb29kLiBIZQp3b2tlIHVwIGJsZWFyaWx5LCBnb3QgdXAsIHdhbmRlcmVkIGJsZWFyaWx5IHJvdW5kIGhpcyByb29tLCBvcGVuZWQgYSB3aW5kb3csCnNhdyBhIGJ1bGxkb3plciwgZm91bmQgaGlzIHNsaXBwZXJzLCBhbmQgc3RvbXBlZCBvZmYgdG8gdGhlIGJhdGhyb29tIHRvIHdhc2guClRvb3RocGFzdGUgb24gdGhlIGJydXNoIOKAkyBzby4gU2NydWIuClNoYXZpbmcgbWlycm9yIOKAkyBwb2ludGluZyBhdCB0aGUgY2VpbGluZy4gSGUgYWRqdXN0ZWQgaXQuIEZvciBhIG1vbWVudAppdCByZWZsZWN0ZWQgYSBzZWNvbmQgYnVsbGRvemVyIHRocm91Z2ggdGhlIGJhdGhyb29tIHdpbmRvdy4gUHJvcGVybHkgYWRqdXN0ZWQsCml0IHJlZmxlY3RlZCBBcnRodXIgRGVudOKAmXMgYnJpc3RsZXMuIEhlIHNoYXZ",
"mediaSmall": "https://skybell-thumbnails-stage.s3.amazonaws.com/ebe04fdd543efab2674f5349/a075fece-0afd-5cb7-ba18-37f575007729_ebe04fdd543efab2674f5349_small.jpeg?AWSAccessKeyId=ASIAJE3OFQLDLDZANIVA&Expires=1514057338&Signature=VGhlIGJ1bGxkb3plciBvdXRzaWRl&response-content-type=image/jpeg&x-amz-security-token=QXQgZWlnaHQgb%2BKAmWNsb2NrIG9uIFRodXJzZGF5IG1vcm5pbmcgQXJ0aHVyIGRpZG7igJl0IGZlZWwgdmVyeSBnb29kLiBIZQp3b2tlIHVwIGJsZWFyaWx5LCBnb3QgdXAsIHdhbmRlcmVkIGJsZWFyaWx5IHJvdW5kIGhpcyByb29tLCBvcGVuZWQgYSB3aW5kb3csCnNhdyBhIGJ1bGxkb3plciwgZm91bmQgaGlzIHNsaXBwZXJzLCBhbmQgc3RvbXBlZCBvZmYgdG8gdGhlIGJhdGhyb29tIHRvIHdhc2guClRvb3RocGFzdGUgb24gdGhlIGJydXNoIOKAkyBzby4gU2NydWIuClNoYXZpbmcgbWlycm9yIOKAkyBwb2ludGluZyBhdCB0aGUgY2VpbGluZy4gSGUgYWRqdXN0ZWQgaXQuIEZvciBhIG1vbWVudAppdCByZWZsZWN0ZWQgYSBzZWNvbmQgYnVsbGRvemVyIHRocm91Z2ggdGhlIGJhdGhyb29tIHdpbmRvdy4gUHJvcGVybHkgYWRqdXN0ZWQsCml0IHJlZmxlY3RlZCBBcnRodXIgRGVudOKAmXMgYnJpc3RsZXMuIEhlIHNoYXZ"
}]
The event
can be any of:
device:sensor:motion
device:sensor:button
application:on-demand
The id
can be used as the <Activity_ID>
in a Get Activity Video request to obtain the URL for downloading the associated video recording.
media
and mediaSmall
provide URLs for 1280×720 and 248×140 thumbnail images for the activity.
GET https://cloud.myskybell.com/api/v3/subscriptions/<Subscription_ID>/activities/<Activity_ID>/video/
GET https://cloud.myskybell.com/api/v3/devices/<Device_ID>/activities/<Activity_ID>/video/
Obtain the URL for downloading video <Activity_ID>
recorded by the doorbell identified either by <Subscription_ID>
or <Device_ID>
.
This request is not used to start a Watch Live call; use the Call Start request instead.
Example response body:
{
"url": "https://production-video-download.s3.amazonaws.com/ebe04fdd543efab2674f5349/a075fece-0afd-5cb7-ba18-37f575007729_ebe04fdd543efab2674f5349.mp4?AWSAccessKeyId=ASIAJE3OFQLDLDZANIVA&Expires=1514057338&Signature=VGhlIGJ1bGxkb3plciBvdXRzaWRl&x-amz-security-token=QXQgZWlnaHQgb%2BKAmWNsb2NrIG9uIFRodXJzZGF5IG1vcm5pbmcgQXJ0aHVyIGRpZG7igJl0IGZlZWwgdmVyeSBnb29kLiBIZQp3b2tlIHVwIGJsZWFyaWx5LCBnb3QgdXAsIHdhbmRlcmVkIGJsZWFyaWx5IHJvdW5kIGhpcyByb29tLCBvcGVuZWQgYSB3aW5kb3csCnNhdyBhIGJ1bGxkb3plciwgZm91bmQgaGlzIHNsaXBwZXJzLCBhbmQgc3RvbXBlZCBvZmYgdG8gdGhlIGJhdGhyb29tIHRvIHdhc2guClRvb3RocGFzdGUgb24gdGhlIGJydXNoIOKAkyBzby4gU2NydWIuClNoYXZpbmcgbWlycm9yIOKAkyBwb2ludGluZyBhdCB0aGUgY2VpbGluZy4gSGUgYWRqdXN0ZWQgaXQuIEZvciBhIG1vbWVudAppdCByZWZsZWN0ZWQgYSBzZWNvbmQgYnVsbGRvemVyIHRocm91Z2ggdGhlIGJhdGhyb29tIHdpbmRvdy4gUHJvcGVybHkgYWRqdXN0ZWQsCml0IHJlZmxlY3RlZCBBcnRodXIgRGVudOKAmXMgYnJpc3RsZXMuIEhlIHNoYXZ"
}
The video is H.264 encoded 1280×720 resolution (regardless of the configured video_profile
), accompanied by 8ksps MPEG AAC audio.
GET https://cloud.myskybell.com/api/v3/users/<User_ID>/app_installs/<App_ID>/subscriptions/<Subscription_ID>/settings
Retrieve a list of topics for which the app identified by <User_ID>
and <App_ID>
has subscribed to receive mobile push notifications from the device identified by <Subscription_ID>
.
Example response body:
{
"device:status:up": {
"eventType": "device:status:up",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "enabled",
"rule": "enabled"
},
"device:status:down": {
"eventType": "device:status:down",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "enabled",
"rule": "enabled"
},
"device:sensor:api": {
"eventType": "device:sensor:api",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"application:on-demand": {
"eventType": "application:on-demand",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"device:ota:https:download": {
"eventType": "device:ota:https:download",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"device:ota:verified": {
"eventType": "device:ota:verified",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"device:ota:process": {
"eventType": "device:ota:process",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"device:sensor:button": {
"eventType": "device:sensor:button",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "enabled",
"rule": "enabled"
},
"device:sensor:motion": {
"eventType": "device:sensor:motion",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "enabled",
"rule": "disabled"
},
"device:sensor:motion:initial": {
"eventType": "device:sensor:motion:initial",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"device:sensor:sound": {
"eventType": "device:sensor:sound",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"device:update": {
"eventType": "device:update",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"device:destroy": {
"eventType": "device:destroy",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"activity:video:ready": {
"eventType": "activity:video:ready",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"application:button:lock:lock": {
"eventType": "application:button:lock:lock",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"application:button:lock:unlock": {
"eventType": "application:button:lock:unlock",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"application:button:light:on": {
"eventType": "application:button:light:on",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"application:button:light:off": {
"eventType": "application:button:light:off",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
},
"avatar:ready": {
"eventType": "avatar:ready",
"subscription": "7686c1d0e6d4757bc52bcf20",
"device": "
8000
ebe04fdd543efab2674f5349",
"default_rule": "disabled",
"rule": "disabled"
}
}
GET https://cloud.myskybell.com/api/v3/users/<User_ID>/app_installs/
Retrieve a list of all apps that have registered with the SkyBell cloud services via the Register Application request by the user identified by their User_ID
.
Example response body:
[{
"appId": "A31E7DF3-E0A1-5422-B7C9-68526B43EDF9",
"currentUser": "734645249844ae47b3e020db",
"token": "FC69F14EDDADD554614AADE4AD06B6AB7E0DEE8163C7E14BBDB6D3E74B2B2B62",
"protocol": "apns",
"state": "enabled",
"createdAt": "2017-01-05T13:29:48.847Z",
"updatedAt": "2017-01-05T13:29:48.847Z",
"endpointArn": "arn:aws:sns:us-west-2:394986918768:endpoint/APNS/skybell-v3/c2b82795-849e-3dfe-be21-281290257d06",
"id": "6792a8b9a80d64ff86237008"
},
{
"appId": "B3A12056-1830-5AAD-BC8D-57790E5A476A",
"currentUser": "734645249844ae47b3e020db",
"token": "APA91bHPRgkF3JUikC4ENAHEeMrd41Zxv3hVZjC9KtT8OvPVGJ-hQMRKRrZuJAEcl7B338qju59zJMjw2DELjzEvxwYv7hH5Ynpc1ODQ0aT4U4OFEeco8ohsN5PjL1iC2dNtk2BAokeMCg2ZXKqpc8FXKmhX94kIxQ",
"protocol": "gcm",
"state": "enabled",
"createdAt": "2017-02-23T08:43:24.723Z",
"updatedAt": "2017-05-12T13:23:01.920Z",
"endpointArn": "arn:aws:sns:us-west-2:394986918768:endpoint/GCM/skybell-v3-google/1a7864ac-d0a4-3a7a-9ebf-f875a748ccb2",
"id": "895dc5e56c5f3be0780e3e8d"
}]
The id
values can be used for the <App_ID>
(combined with the same User_ID
) in other requests that identify a specific app. This is different from the <App_UUID>
which is provided as the appId
value.
GET https://cloud.myskybell.com/api/v3/subscriptions/<Subscription_ID>/avatar/
GET https://cloud.myskybell.com/api/v3/devices/<Device_ID>/avatar/
Obtain the URL for the most recent avatar that a doorbell has provided, identified either by <Subscription_ID>
or <Device_ID>
. The avatar is typically updated once an hour. If there is a more recent activity then the media
(and mediaSmall
) values from the Get Activity List request may provide a more up to date image.
Example response body:
{
"createdAt": "2017-05-12T13:23:01.920Z",
"url": "https://v3-production-devices-avatar.s3-us-west-2.amazonaws.com/ebe04fdd543efab2674f5349/1514057831865-1345.jpg?AWSAccessKeyId=ASIAJE3OFQLDLDZANIVA&Expires=1514057338&Signature=VGhlIGJ1bGxkb3plciBvdXRzaWRl&response-content-type=image/jpeg&x-amz-security-token=QXQgZWlnaHQgb%2BKAmWNsb2NrIG9uIFRodXJzZGF5IG1vcm5pbmcgQXJ0aHVyIGRpZG7igJl0IGZlZWwgdmVyeSBnb29kLiBIZQp3b2tlIHVwIGJsZWFyaWx5LCBnb3QgdXAsIHdhbmRlcmVkIGJsZWFyaWx5IHJvdW5kIGhpcyByb29tLCBvcGVuZWQgYSB3aW5kb3csCnNhdyBhIGJ1bGxkb3plciwgZm91bmQgaGlzIHNsaXBwZXJzLCBhbmQgc3RvbXBlZCBvZmYgdG8gdGhlIGJhdGhyb29tIHRvIHdhc2guClRvb3RocGFzdGUgb24gdGhlIGJydXNoIOKAkyBzby4gU2NydWIuClNoYXZpbmcgbWlycm9yIOKAkyBwb2ludGluZyBhdCB0aGUgY2VpbGluZy4gSGUgYWRqdXN0ZWQgaXQuIEZvciBhIG1vbWVudAppdCByZWZsZWN0ZWQgYSBzZWNvbmQgYnVsbGRvemVyIHRocm91Z2ggdGhlIGJhdGhyb29tIHdpbmRvdy4gUHJvcGVybHkgYWRqdXN0ZWQsCml0IHJlZmxlY3RlZCBBcnRodXIgRGVudOKAmXMgYnJpc3RsZXMuIEhlIHNoYXZ"
}
GET https://cloud.myskybell.com/api/v3/subscriptions/<Subscription_ID>/info/
GET https://cloud.myskybell.com/api/v3/devices/<Device_ID>/info/
Read details of a doorbell's hardware, software and network connection. The doorbell is identified either by <Subscription_ID>
or <Device_ID>
.
Example response body:
{
"serialNo": "448046263",
"proxy_port": "5683",
"deviceId": "ebe04fdd543efab2674f5349",
"localHostname": "ip-10-0-20-237.us-west-2.compute.internal",
"firmwareVersion": "1128",
"port": "5683",
"timestamp": "63681243536",
"address": "17.178.96.59",
"proxy_address": "52.35.62.157",
"wifiNoise": "-80",
"wifiBitrate": "72",
"wifiLinkQuality": "100",
"wifiSnr": "35",
"mac": "d0:c1:93:57:57:1a",
"wifiTxPwrEeprom": "12",
"hardwareRevision": "SKYBELL_HD_3_1_1008848-009",
"wifiSignalLevel": "-45",
"essid": "Skynet Global Defense Network",
"checkedInAt": "2017-05-12T13:23:01.920Z",
"status": {
"wifiLink": "good"
}
}
GET https://cloud.myskybell.com/api/v3/subscriptions/<Subscription_ID>/settings/
GET https://cloud.myskybell.com/api/v3/devices/<Device_ID>/settings/
Read the current configuration of a doorbell, identified either by <Subscription_ID>
or <Device_ID>
.
Example response body:
{
"ring_tone": "0",
"do_not_ring": "false",
"do_not_disturb": "false",
"digital_doorbell": "false",
"video_profile": "1",
"mic_volume": "63",
"speaker_volume": "96",
"chime_level": "1",
"motion_threshold": "100",
"low_lux_threshold": "50",
"med_lux_threshold": "150",
"high_lux_threshold": "400",
"low_front_led_dac": "220",
"med_front_led_dac": "195",
"high_front_led_dac": "170",
"green_r": "255",
"green_g": "247",
"green_b": "235",
"led_intensity": "62",
"motion_policy": "disabled"
}
Refer to the description of Change Device Settings for an explanation of the returned values.
GET https://cloud.myskybell.com/api/v3/devices/
Obtain a list of all devices associated with the account.
Example response body:
[{
"user": "734645249844ae47b3e020db",
"uuid": "448046263",
"resourceId": "785cc085bbe8627a59dfd304",
"deviceInviteToken": "5d1218f62374f93c7969491c3f99dda4c5492f8b6e75a57d52fe4549585a310b",
"location": {
"lat": "37.331686",
"lng": "-122.030656"
},
"name": "Doorbell",
"type": "skybell hd",
"status": "up",
"createdAt": "2017-02-23T08:43:24.723Z",
"updatedAt": "2017-05-12T13:23:01.920Z",
"timeZone": {
"dstOffset": 3600,
"rawOffset": 36000,
"status": "OK",
"timeZoneId": "Australia/Sydney",
"timeZoneName": "Australian Eastern Daylight Time"
},
"avatar": {
"bucket": "v3-production-devices-avatar",
"key": "ebe04fdd543efab2674f5349/1514057831865-1345.jpg",
"createdAt": "2017-05-12T13:23:01.920Z",
"url": "https://v3-production-devices-avatar.s3-us-west-2.amazonaws.com/ebe04fdd543efab2674f5349/1514057831865-1345.jpg?AWSAccessKeyId=ASIAJE3OFQLDLDZANIVA&Expires=1514057338&Signature=VGhlIGJ1bGxkb3plciBvdXRzaWRl&response-content-type=image/jpeg&x-amz-security-token=QXQgZWlnaHQgb%2BKAmWNsb2NrIG9uIFRodXJzZGF5IG1vcm5pbmcgQXJ0aHVyIGRpZG7igJl0IGZlZWwgdmVyeSBnb29kLiBIZQp3b2tlIHVwIGJsZWFyaWx5LCBnb3QgdXAsIHdhbmRlcmVkIGJsZWFyaWx5IHJvdW5kIGhpcyByb29tLCBvcGVuZWQgYSB3aW5kb3csCnNhdyBhIGJ1bGxkb3plciwgZm91bmQgaGlzIHNsaXBwZXJzLCBhbmQgc3RvbXBlZCBvZmYgdG8gdGhlIGJhdGhyb29tIHRvIHdhc2guClRvb3RocGFzdGUgb24gdGhlIGJydXNoIOKAkyBzby4gU2NydWIuClNoYXZpbmcgbWlycm9yIOKAkyBwb2ludGluZyBhdCB0aGUgY2VpbGluZy4gSGUgYWRqdXN0ZWQgaXQuIEZvciBhIG1vbWVudAppdCByZWZsZWN0ZWQgYSBzZWNvbmQgYnVsbGRvemVyIHRocm91Z2ggdGhlIGJhdGhyb29tIHdpbmRvdy4gUHJvcGVybHkgYWRqdXN0ZWQsCml0IHJlZmxlY3RlZCBBcnRodXIgRGVudOKAmXMgYnJpc3RsZXMuIEhlIHNoYXZ"
},
"id": "ebe04fdd543efab2674f5349",
"acl": "owner"
}]
The id
value can be used for the <Device_ID>
in other requests that identify a specific doorbell.
avatar
returned via this request appears to have been on the 17th October 2018. Use the Get Device Avatar request instead.
GET https://cloud.myskybell.com/api/v3/subscriptions?include=owner
Obtain a list of subscriptions (combination of <User_ID>
and <Device_ID>
) from which an app may register to receive mobile push notifications.
Example response body:
[{
"user": "734645249844ae47b3e020db",
"owner": {
"_id": "734645249844ae47b3e020db",
"firstName": "Jane",
"lastName": "Doe",
"resourceId": "fc154a179d696d988068409a",
"createdAt": "2017-01-05T13:29:48.847Z",
"updatedAt": "2017-01-05T13:29:48.847Z"
},
"device": {
"uuid": "448046263",
"resourceId": "785cc085bbe8627a59dfd304",
"name": "Doorbell",
"type": "skybell hd",
"status": "up",
"createdAt": "2017-02-23T08:43:24.723Z",
"updatedAt": "2017-05-12T13:23:01.920Z",
"id": "ebe04fdd543efab2674f5349"
},
"acl": "owner",
"id": "7686c1d0e6d4757bc52bcf20"
}]
The top-level id
value (7686c1d0e6d4757bc52bcf20
in this example) can be used for the <Subscription_ID>
in other requests.
GET https://cloud.myskybell.com/api/v3/users/me/
GET https://cloud.myskybell.com/api/v3/users/<User_ID>
Request information about either the logged-in user or a specific user identified by their User_ID
. The response is the same as for the Login request except that it does not include an access_token
value.
Example response body:
{
"firstName": "Jane",
"lastName": "Doe",
"resourceId": "fc154a179d696d988068409a",
"createdAt": "2017-01-05T13:29:48.847Z",
"updatedAt": "2017-01-05T13:29:48.847Z",
"id": "734645249844ae47b3e020db",
"userLinks": [{
"user": "734645249844ae47b3e020db",
"type": "oauth2",
"partnerName": "nest",
"accessToken": "c.RmFyIG91dCBpbiB0aGUgdW5jaGFydGVkIGJhY2t3YXRlcnMgb2YgdGhlIHVuZmFzaGlvbmFibGUgZW5kIG9mIHRoZSB3ZXN0ZXJuDQpzcGlyYWwgYXJtIG9mIHRoZSBHYWxheHkgbGllcyBh",
"ttl": null,
"createdAt": "2017-02-23T08:43:24.723Z",
"updatedAt": "2017-05-12T13:23:01.920Z",
"meta": [{
"deviceId": "ebe04fdd543efab2674f5349",
"structureId": "VGhlIG9ubHkgcGVyc29uIGZvciB3aG9tIHRoZSBob3VzZSB3YXMgaW",
"deviceType": "co_smoke_alarm"
}],
"id": "e2448c262326ad63cc6bac07"
}]
}
POST https://cloud.myskybell.com/api/v3/register/
Register an application to receive mobile push notifications from Amazon SNS Mobile Push Notifications. Use the <App_UUID>
(see Request Headers) for appId
.
Example request body for APNs (Apple Push Notification service), with token
set to the device token:
{
"appId": "A31E7DF3-E0A1-5422-B7C9-68526B43EDF9",
"protocol": "apns",
"token": "FC69F14EDDADD554614AADE4AD06B6AB7E0DEE8163C7E14BBDB6D3E74B2B2B62"
}
Example request body for GCM (Google Cloud Messaging for Android), with token
set to the registration ID:
{
"appId": "B3A12056-1830-5AAD-BC8D-57790E5A476A",
"protocol": "gcm",
"token": "APA91bHPRgkF3JUikC4ENAHEeMrd41Zxv3hVZjC9KtT8OvPVGJ-hQMRKRrZuJAEcl7B338qju59zJMjw2DELjzEvxwYv7hH5Ynpc1ODQ0aT4U4OFEeco8ohsN5PjL1iC2dNtk2BAokeMCg2ZXKqpc8FXKmhX94kIxQ"
}
Example response body:
{
"appId": "A31E7DF3-E0A1-5422-B7C9-68526B43EDF9",
"currentUser": "734645249844ae47b3e020db",
"token": "FC69F14EDDADD554614AADE4AD06B6AB7E0DEE8163C7E14BBDB6D3E74B2B2B62",
"protocol": "apns",
"state": "enabled",
"createdAt": "2017-01-05T13:29:48.847Z",
"updatedAt": "2017-01-05T13:29:48.847Z",
"id": "6792a8b9a80d64ff86237008",
"endpointArn": "arn:aws:sns:us-west-2:394986918768:endpoint/APNS/skybell-v3/c2b82795-849e-3dfe-be21-281290257d06"
}
POST https://cloud.myskybell.com/api/v3/unregister/
Unregister an application that was previously registered using the Register Application request. Use the <App_UUID>
(see Request Headers) for appId
.
Example request body:
{
"appId": "A31E7DF3-E0A1-5422-B7C9-68526B43EDF9"
}
Example response body:
{
"appId": "A31E7DF3-E0A1-5422-B7C9-68526B43EDF9",
"currentUser": null,
"token": "FC69F14EDDADD554614AADE4AD06B6AB7E0DEE8163C7E14BBDB6D3E74B2B2B62",
"protocol": "apns",
"state": "enabled",
"createdAt": "2017-01-05T13:29:48.847Z",
"updatedAt": "2017-01-05T13:29:48.847Z",
"endpointArn": "arn:aws:sns:us-west-2:394986918768:endpoint/APNS/skybell-v3/c2b82795-849e-3dfe-be21-281290257d06",
"id": "6792a8b9a80d64ff86237008"
}
Copyright © 2017-2020 Alexander Thoukydides