-
Notifications
You must be signed in to change notification settings - Fork 300
Developers: Known Endpoints
This is a list of known endpoints. This can be discovered by debugging https://alexa.amazon.com.
- https://alexa.amazon.com/api/bootstrap
- https://alexa.amazon.com/api/devices-v2/device
- https://alexa.amazon.com/api/wake-word
- https://alexa.amazon.com/api/device-preferences
- https://alexa.amazon.com/api/get-languages
- https://alexa.amazon.com/api/activities?startTime=&size=10&offset=1
- https://alexa.amazon.com/api/behaviors/automations (deprecated) use https://alexa.amazon.com/api/behaviors/v2/automations
- https://alexa.amazon.com/api/dnd/device-status-list
- https://alexa.amazon.com/api/cards?limit=50
- https://alexa.amazon.com/api/amazon-music-benefits?customerId=XXX&deviceSerialNumber=XXX&deviceType=XXX
- https://alexa.amazon.com/api/featureaccess-v3 (post)
- https://alexa.amazon.com/api/household
- https://alexa.amazon.com/api/device-wifi-details?deviceSerialNumber=XXX&deviceType=XXX
- https://alexa.amazon.com/api/wake-words-locale?deviceSerialNumber=XXX&deviceType=XXX&softwareVersion=XXX
- https://alexa.amazon.com/api/dnd/schedule?deviceType=XXX&deviceSerialNumber=XXX
- https://alexa.amazon.com/api/notifications (list all notifications)
- https://alexa.amazon.com/api/notifications/[id] (specific notification)
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
originalDate
and originalTime
are the time it will trigger displayed in local time.
Snooze not investigated yet.
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"
}
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"
}
status: ON|OFF|PAUSED
counts down based on `remainingTime` in ms
- https://alexa.amazon.com/api/np/queue?deviceSerialNumber=XXX&deviceType=XXX&size=25
- https://alexa.amazon.com/api/np/player?deviceSerialNumber=XXX&deviceType=XXX&screenWidth=1402&lemurId=XXX&lemurDeviceType=XXX
- https://alexa.amazon.com/api/media/historical-queue?deviceSerialNumber=XXX&deviceType=XXX&size=50&offset=-1
- https://alexa.amazon.com/api/device-notification-state/
- https://alexa.amazon.com/api/device-notification-state/[deviceType]/[softwareVersion]/[deviceSerialNumber]
Get and Put
{"deviceSerialNumber":"XXX","deviceType":"A3S5BH2HU6VAYF","softwareVersion":"649649820","volumeLevel":38}
- https://alexa.amazon.com/api/namedLists
- https://alexa.amazon.com/api/namedLists/[List itemId]/items?startTime=&endTime=&completed=&listIds=[List itemId]
{
"completed": false,
"createdDateTime": 1567557744041,
"customerId": null,
"id": "[Item ID]",
"listId": "[List itemId]",
"shoppingListItem": true,
"updatedDateTime": 1567557744041,
"value": "batteries",
"version": 1
},
-
https://alexa.amazon.com/api/namedLists/[List itemId]/item/[id] PUT with json of the object with added
lastLocalUpdatedDate: 1568015674666
- https://alexa.amazon.com/api/namedLists/[List itemId]/item/[id]
{
"id": "[itemId]",
"listId": "[List itemId]",
"value": "batteries"
}
Received websocket command: PUSH_LIST_ITEM_CHANGE : {'destinationUserId': 'A**********3EG', 'listId': '[List itemId]', 'eventName': 'itemCreated', 'version': 1, 'listItemId': '[itemId]'}
- https://alexa.amazon.com/api/phoenix/group (Alexa Whole-House Audio Groups)