Alexa for Apps V2 Skill Manifest Reference

To enable Alexa for Apps V2 in your skill, you must make changes to your skill manifest. The following example and reference describe how to add an appLink object to your skill manifest and declare support for the APP_LINKS_V2 interface. For the full skill manifest format, see Skill Manifest Schema.

Skill connection request skill manifest example

The following example shows a skill manifest for a skill connection request.

{
   "manifest": {
      "apis": {
         "custom": {
            "endpoint": {
               "uri": "arn:aws:lambda:us-east-1:040623927470:function:cityGuideSkillLambda"
            },
            "interfaces": [
               {
                  "type":"APP_LINKS_V2"
               }
            ],
================== ALEXA FOR APPS ADDITIONS START ==================
            "appLink": {
               "linkedApplications": [
                  {
                     "friendlyName":{
                        "default":"CityGuide",
                        "localizedNames": [
                           {
                              "locale":"de-DE",
                              "name":"Stadtführer"
                           }
                        ]
                     },
                     "catalogInfo": {
                        "type": "IOS_APP_STORE",
                        "identifier": "id123456789"
                     },
                     "customSchemes": [
                        "cityguide://",
                        "ctgd://"
                     ],
                     "domains": [
                        "cityguide.com",
                        "ctgd.com"
                     ]
                  },
                  {
                     "friendlyName":{
                        "default":"CityGuide",
                        "localizedNames": [
                           {
                              "locale":"de-DE",
                              "name":"Stadtführer"
                           }
                        ]
                     },
                     "catalogInfo": {
                        "type": "GOOGLE_PLAY_STORE",
                        "identifier": "com.cityguide.app"
                     },
                     "customSchemes": [
                        "cityguide://",
                        "ctgd://"
                     ],
                     "domains": [
                        "cityguide.com",
                        "ctgd.com"
                     ],
                     "androidCustomIntents": [
                        {
                           "component": "com.someapp.SomeActivity",
                           "action": "com.someapp.SOME_ACTION"
                        }
                     ]
                  }
               ],
               "linkedWebDomains": [
                  "grubbhouse.com",
                  "amazon.com",
                  "yahoo.com"
               ],
               "linkedCommonSchemes": {
                  "IOS_APP_STORE": [
                     "MAPS",
                     "TEL"
                  ],
                  "GOOGLE_PLAY_STORE": [
                     "MAPS",
                     "TEL"
                  ]
               },
               "linkedAndroidCommonIntents": [
                  {
                     "intentName": "SHOW_IN_MAP",
                     "catalogType": "GOOGLE_PLAY_STORE"
                  }
               ]
            }
================== ALEXA FOR APPS ADDITIONS END ==================
         }
      }
   }
}

The appLink object contains an object for each app your skill links to. If you have iOS and Android versions of your app, these versions count as separate apps.

If your deep link request includes a URI, prefix, or package name, it must match a corresponding item in the domains or customSchemes field in your skill manifest. Otherwise, the deep link request fails as unauthorized.

Field Description Type Required
linkedApplications A list of associated apps. Array of objects At least one of linkedApplications, linkedWebDomains, or linkedCommonSchemes must be declared.
linkedWebDomains A list of website domains or subdomains that your skill wants to launch in a browser. Only use this field when there's no associated app; it's not a universal link. String array At least one of linkedApplications, linkedWebDomains, or linkedCommonSchemes must be declared.
linkedCommonSchemes Common schemes that your skill can launch in the iOS App Store or Google Play Store. Object At least one of linkedApplications, linkedWebDomains, or linkedCommonSchemes must be declared.
linkedCommonSchemes.IOS_APP_STORE List of common schemes that your skill can launch in the iOS App Store. Valid schemes are MAPS and TEL. Array of enum No
linkedCommonSchemes.GOOGLE_PLAY_STORE List of common schemes that your skill can launch in the Google Play Store. Valid schemes are MAPS and TEL. Array of enum No
linkedAndroidCommonIntents A list of Android common intents that your skill can launch. Array of objects No
linkedAndroidCommonIntents.intentName The name of the Android common intent. One of: SHOW_IN_MAP, ADD_CALENDAR_EVENT, PLAY_MEDIA, START_PHONE_CALL, OPEN_SETTINGS. This value specifies the format of the Android intent. For example, SHOW_IN_MAP requires "action" to be "android.intent.action.VIEW" and "data" to be "geo:" in the Android intent. Enum No
linkedAndroidCommonIntents.catalogType The catalog type for the linked intent. Currently the only possible value is GOOGLE_PLAY_STORE. Enum No

linkedApplications object

Field Description Type Required
friendlyName Names for the app according to locale Object Yes
catalogInfo Information Alexa for Apps needs to link to your app in the iOS App Store or Google Play Store Object Yes
customSchemes A comma-separated list of custom schemes used to validate custom scheme links. At runtime, Alexa for Apps validates the custom scheme within the deep link by using a regular expression built with this value. Required for custom scheme link requests. String array No
domains A list of domains used to validate universal links. At runtime, Alexa for Apps validates the domain within the deep link by using a regular expression built with this value. Required for universal links and website deep links. String array No
androidCustomIntents A list of custom Android intents. Array of objects Yes

friendlyName object

The friendlyName object indicates how you want your app name to appear in any voice responses that Alexa provides automatically when deep linking.

For example, in a fallback scenario when the customer hasn't installed your app, you might have Alexa take the customer to the iOS App Store or the Google Play Store instead. In those cases, Alexa says something like, "To enable this experience you'll need to install the app. Here's <App Name> in the App Store."

Field Description Type Required
default Friendly name for your app in its home locale. If you don't specify localizedNames, Alexa for Apps uses this value for all locales. String Yes
localizedNames Contains an array of friendly names for your app when the user's device locale isn't the home locale. This array is required only if your app has different friendly names across different locales. You can only specify localizedNames values for the locales that you included in the manifest.publishingInformation.locales section of your skill manifest. Object array No
localizedNames[].locale Locale, for example, de-DE. String Yes
localizedNames[].names Name for your app in that locale. String Yes

catalogInfo object

The catalogInfo object contains the information that Alexa for Apps needs to link to your app in the iOS App Store or Google Play Store.

Alexa for Apps uses the identifierfield to validate deep link requests. For example, an Android intent deep link request must be for an intent whose root package name is in the catalogInfo object. Otherwise, the request fails as unauthorized.

Field Description Type Required
type IOS_APP_STORE or GOOGLE_PLAY_STORE String enumeration value Yes
identifier The identifier for your app in the iOS App Store or Google Play Store. For iOS apps, it's a numeric identifier, for example, id123456789. For Android intents, it's typically the package name, for example, com.cityguide.app. String Yes

androidCustomIntents object

Use androidCustomIntents object to declare an Android custom intent. If your skill sends an Android custom intent, you must declare the custom intent in your skill manifest.

Field Description Type Required
component The component for the Android custom intent. Required if action isn't specified. String No
action The action for the Android custom intent. Required if component isn't specified. String No