as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
AWS
Documentation
Support
Contact Us
My Cases
Get Started
Design and Develop
Publish
Reference
Support

Manifest [offers] Section

The [offers] section declares the capabilities that an application package offers to other application packages installed on a Vega system. Offers is an optional section.

[offers]
[[offers.interaction]]
# Configuration for allowed interactions 

[[offers.service]]
# Configuration for offered services

[[offers.module]]
# Defining shared artifacts 
 
[[offers.message-target]]
# Mapping URIs to lifecycle components

[[offers.interaction]]

Optional

This section is a legacy mechanism for offering launchable targets in the app to the rest of the system. This section is being replaced with [[offers.module]] + includes-messages and offers.message-target. In the transition period, apps that are missing offers.message-target but have non zero entries in offers.interaction will produce a manifest validation error in packaging.

The offers.interaction section declares the interactive or task components, available to launch by other application packages, given they have the required privileges as declared here.

[[offers.interaction]]
id = "com.foo.bar.interactive"
launch-uris = ["foo://interactive"]

Fields

  • id (string, required): The unique identifier of the interactive or task component. The identifier belongs to one of the components declared in the manifest under the [components] section.

  • launch-uris (array of strings, optional): A list of URIs that can be used to invoke the component.

      launch-uris = ["smart_app://main"]
    
  • required-privileges (array of strings, optional): A list of privileges required to launch the component. Only system packages can restrict access using required privileges. This restriction feature does not work for non-system packages.

      required-privileges = [
          "com.amazon.smart_app.privilege.access"
      ]
    

[[offers.service]]

Optional

The offers.service section defines:

  • The services provided by this package
  • The permissions that other installed apps need to use these services
[[offers.service]]
id = "com.foo.bar.service"

Fields

  • id (string, required): The unique identifier of the service component. The identifier belongs to one of the components declared in the manifest under the [components] section.

  • required-privileges (array of strings, optional): A list of privileges required to invoke the service. Only system packages can restrict access using required privileges. This restriction feature does not work for non-system packages.

      required-privileges = [
          "com.amazon.smart_app.privilege.access"
      ]
    

[[offers.module]]

Optional

The [[offers.module]] section declares the shared artifacts that this package offers to other app packages.

[[offers.module]]
id = "/com.amazon.samplepkg.module@IMod1"
 
includes-messages = [
    "pkg://com.amazon.samplepkg.main",
    "samplepkg://play"
]

Fields

  • id [string] (required): The fully-qualified identifier of the module must follow this format: /<component_name>@<revision_tag>. Replace <component_name> and <revision_tag> with the following information:

    • <component_name>:
      • Must use reverse-DNS notation (such as com.company.product).
      • The parts of the reverse DNS name should be lowercase alphanumeric ASCII characters (a-z0-9) and underscores (_) only, with namespace parts separated by a dot (.). Words in namespace parts are separated with an underscore (_).
      • These constraints are described by the regular expression ^[a-z_][a-z0-9_]*(?:\.[a-z_][a-z0-9_]*)*$.
      • Must be unique in the system.
      • Tip: Using package ID as prefix helps ensure uniqueness.
    • @: Separator between component name and revision tag.

    • <revision_tag>:
      • Follow the same naming convention as interfaces in IDL.
      • Must start with uppercase 'I', as is traditional in IDL languages of this sort: IThingDoer, not ThingDoer.
      • The character after 'I' must be uppercase.
      • Remaining characters can be alphanumeric (a-zA-Z0-9) or underscore (_).
      • These constraints are described by the regular expression ^I([A-Z][a-zA-Z0-9_]*)$.
      id = "/com.amazon.samplepkg.module@IMod1"
    
  • includes-messages [array of strings] (optional): List of URIs defined by this module. Each URI must have a corresponding [[message]] section describing the sender and receiver privileges. Each URI can only be included in one module.

includes-messages = [
    "pkg://com.amazon.samplepkg.main",
    "samplepkg://play"
]

[[offers.message-target]]

Optional

The [[offers.message-target]] maps URIs to the corresponding lifecycle component to launch. The URIs must either be defined in a module in the same manifest or imported via a needs.module or a wants.module call. The section can be repeated to define multiple mapping groups of URIs to component. Note that pkg:// is used for URIs which directly contain the lifecycle component's name. As a result this section can be skipped.

Fields

  • uris [array of strings] (required): List of URIs that are part of the current mapping group.
uris = [
  "samplepkg://play"
]
  • uses-component [string] (required): Name of the component that is the recipient of the URI. The name should match a component listed in either the [components.interactive], or the [components.service], or the [components.task] sections in the manifest.
uses-component = "com.amazon.samplepkg.main"

Last updated: Sep 30, 2025