Skip to content

Developers: Known Endpoints

Alan Tse edited this page Jan 28, 2021 · 3 revisions

This is a list of known endpoints. This can be discovered by debugging https://alexa.amazon.com.

Notifications

Shared fields

id: f"{deviceType}-{deviceSerialNumber}-{notificationIndex}"
status: ON|OFF
version: appears to iterate as changes are made to the same id

There are three types of Notifications based on type

Alarm

originalDate and originalTime are the time it will trigger displayed in local time. Snooze not investigated yet.

recurringPattern

Alarms appear to be able to repeat. Once an alarm is triggered, Amazon's JSON is not updated to reflect the next date until midnight PST. This means the client will need to calculate the next valid date until the reset.

  {
    None: "Never Repeat",
    "P1D": "Every day",
    "XXXX-WE": "Weekends",
    "XXXX-WD": "Weekdays",
    "XXXX-WXX-1": "Every Monday",
    "XXXX-WXX-2": "Every Tuesday",
    "XXXX-WXX-3": "Every Wednesday",
    "XXXX-WXX-4": "Every Thursday",
    "XXXX-WXX-5": "Every Friday",
    "XXXX-WXX-6": "Every Saturday",
    "XXXX-WXX-7": "Every Sunday"
}

Reminder

Will speak or display and smspush reminderLabel on completion. alarmTime is timestamp when it will trigger.

Create (put) https://alexa.amazon.com/api/notifications/createReminder

{"type":"Reminder","status":"ON","alarmTime":1569488160000,"originalTime":"01:56:00.000","originalDate":null,"timeZoneId":null,"reminderIndex":null,"skillInfo":null,"sound":null,"deviceSerialNumber":"XXX","deviceType":"XXX","recurringPattern":"P1D","reminderLabel":"sleep","isSaveInFlight":true,"id":"createReminder","isRecurring":true,"createdDate":1569567414250}

Edit (put)

{"id":"XXX","alarmTime":1569574560000,"automationId":null,"createdDate":1569567695311,"deferredAtTime":null,"deviceSerialNumber":"XXX","deviceType":"XXX","extensibleAttribute":null,"geoLocationTriggerData":null,"lastOccurrenceTimeInMilli":0,"lastUpdatedDate":0,"musicAlarmId":null,"musicEntity":null,"notificationIndex":"fd15defe-a99e-4ae3-b149-f5db074998ef","originalDate":"2019-09-27","originalTime":"01:56:00.000","personProfile":null,"provider":null,"rRuleData":{"byMonthDays":null,"byWeekDays":null,"flexibleRecurringPatternType":"ONCE_A_DAY","frequency":null,"intervals":[1],"nextTriggerTimes":null,"notificationTimes":["01:56:00.000"],"recurEndDate":null,"recurEndTime":null,"recurStartDate":null,"recurStartTime":null,"recurrenceRules":["FREQ=DAILY;BYHOUR=1;BYMINUTE=56;BYSECOND=0;INTERVAL=1;"]},"recurrenceEligibility":false,"recurringPattern":"","remainingTime":0,"reminderAppLabel":null,"reminderLabel":"Sleep","reminderSubLabel":null,"skillInfo":null,"snoozedToTime":null,"sound":{"displayName":"Simple Alarm","folder":null,"id":"system_alerts_melodic_01","providerId":"ECHO","sampleUrl":"https://s3.amazonaws.com/deeappservice.prod.notificationtones/system_alerts_melodic_01.mp3"},"status":"ON","targetPersonProfiles":null,"timeZoneId":null,"timerLabel":null,"tmwNotificationProperties":null,"triggerTime":0,"type":"Reminder","version":"3","reminderIndex":null,"isSaveInFlight":true,"isRecurring":false}

Reminder's for all devices with recurrence uses a new json and a new flexible recurring structure. alarmTime does not appear accurate in this case.

{
    "alarmTime": 1601942400000,
    "automationId": None,
    "createdDate": 1601954621115,
    "deferredAtTime": None,
    "deliveryType": "ALL_DEVICES",
    "deviceName": "OTHER_MOBILE_DEVICE",
    "deviceSerialNumber": "XXX",
    "deviceType": "A2TF17PFR55MTB",
    "extensibleAttribute": None,
    "geoLocationTriggerData": None,
    "id": "A2TF17PFR55MTB-XXX_REMINDER",
    "lastOccurrenceTimeInMilli": 0,
    "lastUpdatedDate": 0,
    "loopCount": None,
    "mrmGroupContext": {
        "groupId": None,
        "groupType": None
    },
    "musicAlarmId": None,
    "musicEntity": None,
    "notificationIndex": "XXX",
    "originalDate": "2020-10-05",
    "originalTime": None,
    "personProfile": {
        "firstName": None,
        "lastName": None,
        "personId": "amzn1.account.XXX",
        "speakerId": None
    },
    "provider": None,
    "rRuleData": {
        "byMonthDays": [],
        "byMonths": [],
        "byWeekDays": ["MO"],
        "flexibleRecurringPatternType": "X_TIMES_A_WEEK",
        "frequency": None,
        "intervals": [1],
        "nextTriggerTimes": ["2020-10-05T21:00:00.000-07:00"],
        "notificationTimes": ["21:00:00.000"],
        "offset": [0],
        "recurEndDate": None,
        "recurEndTime": None,
        "recurStartDate": "2020-10-05",
        "recurStartTime": "00:00:00.000",
        "recurrenceRules": ["FREQ=WEEKLY;BYDAY=MO;BYHOUR=21;BYMINUTE=0;BYSECOND=0;INTERVAL=1;"]
    },
    "recurrenceEligibility": False,
    "recurringPattern": None,
    "remainingTime": 0,
    "reminderAppLabel": None,
    "reminderLabel": "Go to sleep",
    "reminderSubLabel": None,
    "skillInfo": None,
    "snoozedToTime": None,
    "sound": {
        "displayName": "Simple Alarm",
        "folder": None,
        "id": "system_alerts_melodic_01",
        "isChildDirected": False,
        "pricing": None,
        "providerId": "ECHO",
        "sampleUrl": "https://s3.amazonaws.com/deeappservice.prod.notificationtones/system_alerts_melodic_01.mp3"
    },
    "status": "ON",
    "targetPersonProfiles": None,
    "timeZoneId"
    None,
    "timerLabel": None,
    "tmwNotificationProperties": None,
    "triggerTime": 0,
    "type": "Reminder",
    "version": "5"
}

Timer

status: ON|OFF|PAUSED
counts down based on `remainingTime` in ms

Player

Notifications settings (volume)

Get and Put

{"deviceSerialNumber":"XXX","deviceType":"A3S5BH2HU6VAYF","softwareVersion":"649649820","volumeLevel":38}

Lists (brackets means replace with value)

item json

 {
"completed": false,
"createdDateTime": 1567557744041,
"customerId": null,
"id": "[Item ID]",
"listId": "[List itemId]",
"shoppingListItem": true,
"updatedDateTime": 1567557744041,
"value": "batteries",
"version": 1
},

Update item (put)

Delete item (delete)

{
"id": "[itemId]",
"listId": "[List itemId]",
"value": "batteries"
}

Websocket updates

Received websocket command: PUSH_LIST_ITEM_CHANGE : {'destinationUserId': 'A**********3EG', 'listId': '[List itemId]', 'eventName': 'itemCreated', 'version': 1, 'listItemId': '[itemId]'}

Smarthome

Whole Home Audio (lemur)

Alexa Guard (phoenix) (PUT for set) (issue)

Amazon Devices (for viewing registered apps, etc.)

see https://www.amazon.com/hz/mycd/myx#/home/devices/1