OneSignal website screenshot

OneSignal

OneSignal is a customer engagement platform with push notifications, in-app messaging, email, SMS, and live activities. Free tier serves billions of messages monthly.

5 APIs 0 Features
NotificationsPushEmailSMSMobile

APIs

OneSignal Messages API

Send push, email, SMS, and Live Activity messages.

OneSignal Users & Subscriptions API

Create, update, view and delete users and their subscriptions.

OneSignal Segments API

Create and manage dynamic and saved segments for targeting.

OneSignal Apps & Keys API

Manage apps, API keys and templates at the org level.

OneSignal Exports & Analytics API

CSV export of subscriptions and events plus message analytics.

Collections

OneSignal

OPEN

GraphQL

OneSignal GraphQL Schema

Conceptual GraphQL schema for the OneSignal multi-channel customer engagement platform, derived from the OneSignal REST API v1 (https://documentation.onesignal.com/reference).

GRAPHQL

Pricing Plans

Onesignal Plans Pricing

1 plans

PLANS

Rate Limits

Onesignal Rate Limits

1 limits

RATE LIMITS

FinOps

Resources

👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
LlmsText
LlmsText

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: OneSignal
  version: 5.5.0
items:
- info:
    name: View notifications
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/notifications
    params:
    - name: app_id
      value: ''
      type: query
      description: The app ID that you want to view notifications from
    - name: limit
      value: ''
      type: query
      description: How many notifications to return.  Max is 50.  Default is 50.
    - name: offset
      value: ''
      type: query
      description: Page offset.  Default is 0.  Results are sorted by queued_at in descending order.  queued_at is a representation
        of the time that the notification was queued at.
    - name: kind
      value: ''
      type: query
      description: "Kind of notifications returned:\n  * unset - All notification types (default)\n  * `0` - Dashboard only\n\
        \  * `1` - API only\n  * `3` - Automated only\n"
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: View the details of multiple notifications
- info:
    name: Create notification
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/notifications
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: 'Sends notifications to your users.


    **Target by External ID (push example):** set `include_aliases` to `{ "external_id": ["your-user-id"] }` and set `target_channel`
    to `push` (or `email` / `sms` for those channels). Alias object keys must match API labels exactly (for example `external_id`,
    not camelCase).


    **Do not confuse** the notification-level `external_id` field with External ID targeting: top-level `external_id` / `idempotency_key`
    are for idempotent notification requests only, not for s'
- info:
    name: View notification
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/notifications/:notification_id
    params:
    - name: app_id
      value: ''
      type: query
    - name: notification_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: View the details of a single notification and outcomes associated with it
- info:
    name: Stop a scheduled or currently outgoing notification
    type: http
  http:
    method: DELETE
    url: https://api.onesignal.com/notifications/:notification_id
    params:
    - name: app_id
      value: ''
      type: query
    - name: notification_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Used to stop a scheduled or currently outgoing notification
- info:
    name: Notification History
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/notifications/:notification_id/history
    params:
    - name: notification_id
      value: ''
      type: path
      description: The "id" of the message found in the Notification object
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: -> View the devices sent a message - OneSignal Paid Plan Required This method will return all devices that were sent
    the given notification_id of an Email or Push Notification if used within 7 days of the date sent. After 7 days of the
    sending date, the message history data will be unavailable. After a successful response is received, the destination url
    may be polled until the file becomes available. Most exports are done in ~1-3 minutes, so setting a poll interval of 10
    seconds should be adequ
- info:
    name: View apps
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/apps
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: View the details of all of your current OneSignal apps
- info:
    name: Create an app
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Creates a new OneSignal app
- info:
    name: View an app
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/apps/:app_id
    params:
    - name: app_id
      value: ''
      type: path
      description: An app id
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: View the details of a single OneSignal app
- info:
    name: Update an app
    type: http
  http:
    method: PUT
    url: https://api.onesignal.com/apps/:app_id
    params:
    - name: app_id
      value: ''
      type: path
      description: An app id
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Updates the name or configuration settings of an existing OneSignal app
- info:
    name: Get Segments
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/apps/:app_id/segments
    params:
    - name: app_id
      value: ''
      type: path
      description: The OneSignal App ID for your app.  Available in Keys & IDs.
    - name: offset
      value: ''
      type: query
      description: Segments are listed in ascending order of created_at date. offset will omit that number of segments from
        the beginning of the list. Eg offset 5, will remove the 5 earliest created Segments.
    - name: limit
      value: ''
      type: query
      description: The amount of Segments in the response. Maximum 300.
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Returns an array of segments from an app.
- info:
    name: Create Segment
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/segments
    params:
    - name: app_id
      value: ''
      type: path
      description: The OneSignal App ID for your app.  Available in Keys & IDs.
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: 'Create a segment visible and usable in the dashboard and API - Required: OneSignal Paid Plan

    The Create Segment method is used when you want your server to programmatically create a segment instead of using the
    OneSignal Dashboard UI. Just like creating Segments from the dashboard you can pass in filters with multiple "AND" or
    "OR" operator''s.

    🚧

    Does Not Update Segments

    This endpoint will only create segments, it does not edit or update currently created Segments. You will need to use th'
- info:
    name: Delete Segment
    type: http
  http:
    method: DELETE
    url: https://api.onesignal.com/apps/:app_id/segments/:segment_id
    params:
    - name: app_id
      value: ''
      type: path
      description: The OneSignal App ID for your app.  Available in Keys & IDs.
    - name: segment_id
      value: ''
      type: path
      description: The segment_id can be found in the URL of the segment when viewing it in the dashboard.
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: 'Delete a segment (not user devices) - Required: OneSignal Paid Plan

    You can delete a segment under your app by calling this API. You must provide an API key in the Authorization header that
    has admin access on the app.

    The segment_id can be found in the URL of the segment when viewing it in the dashboard.

    '
- info:
    name: View Outcomes
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/apps/:app_id/outcomes
    params:
    - name: app_id
      value: ''
      type: path
      description: The OneSignal App ID for your app.  Available in Keys & IDs.
    - name: outcome_names
      value: ''
      type: query
      description: 'Required

        Comma-separated list of names and the value (sum/count) for the returned outcome data.

        Note: Clicks only support count aggregation.

        For out-of-the-box OneSignal outcomes such as click and session duration, please use the "os" prefix with two underscores.
        For other outcomes, please use the name specified by the user.

        Example:os__session_duration.count,os__click.count,CustomOutcomeName.sum

        '
    - name: outcome_names[]
      value: ''
      type: query
      description: 'Optional

        If outcome names contain any commas, then please specify only one value at a time.

        Example: outcome_names[]=os__click.count&outcome_names[]=Sales, Purchase.count

        where "Sales, Purchase" is the custom outcomes with a comma in the name.

        '
    - name: outcome_time_range
      value: ''
      type: query
      description: 'Optional

        Time range for the returned data. The values can be 1h (for the last 1 hour data), 1d (for the last 1 day data), or
        1mo (for the last 1 month data).

        Default is 1h if the parameter is omitted.

        '
    - name: outcome_platforms
      value: ''
      type: query
      description: 'Optional

        Platform id. Refer device''s platform ids for values.

        Example:

        outcome_platform=0 for iOS

        outcome_platform=7,8 for Safari and Firefox

        Default is data from all platforms if the parameter is omitted.

        '
    - name: outcome_attribution
      value: ''
      type: query
      description: 'Optional

        Attribution type for the outcomes. The values can be direct or influenced or unattributed.

        Example: outcome_attribution=direct

        Default is total (returns direct+influenced+unattributed) if the parameter is omitted.

        '
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: 'View the details of all the outcomes associated with your app


    🚧

    Requires Authentication Key

    Requires your OneSignal App''s REST API Key, available in Keys & IDs.


    🚧

    Outcome Data Limitations

    Outcomes are only accessible for around 30 days before deleted from our servers. You will need to export this data every
    month if you want to keep it.

    '
- info:
    name: Start Live Activity
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/activities/activity/:activity_type
    params:
    - name: app_id
      value: ''
      type: path
      description: Your OneSignal App ID in UUID v4 format.
    - name: activity_type
      value: ''
      type: path
      description: The name of the Live Activity defined in your app. This should match the attributes struct used in your
        app's Live Activity implementation.
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Remotely start a Live Activity on iOS devices via OneSignal’s REST API.
- info:
    name: Update a Live Activity via Push
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/live_activities/:activity_id/notifications
    params:
    - name: app_id
      value: ''
      type: path
      description: The OneSignal App ID for your app.  Available in Keys & IDs.
    - name: activity_id
      value: ''
      type: path
      description: Live Activity record ID
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Updates a specified live activity.
- info:
    name: create_user
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/users
    params:
    - name: app_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: 'Creates a User, optionally Subscriptions owned by the User as well as Aliases.

    Aliases provided in the payload will be used to look up an existing User.'
- info:
    name: get_user
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id
    params:
    - name: app_id
      value: ''
      type: path
    - name: alias_label
      value: ''
      type: path
    - name: alias_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Returns the User’s properties, Aliases, and Subscriptions.
- info:
    name: update_user
    type: http
  http:
    method: PATCH
    url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id
    params:
    - name: app_id
      value: ''
      type: path
    - name: alias_label
      value: ''
      type: path
    - name: alias_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Updates an existing User’s properties.
- info:
    name: delete_user
    type: http
  http:
    method: DELETE
    url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id
    params:
    - name: app_id
      value: ''
      type: path
    - name: alias_label
      value: ''
      type: path
    - name: alias_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Removes the User identified by (:alias_label, :alias_id), and all Subscriptions and Aliases
- info:
    name: get_aliases
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id/identity
    params:
    - name: app_id
      value: ''
      type: path
    - name: alias_label
      value: ''
      type: path
    - name: alias_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Lists all Aliases for the User identified by (:alias_label, :alias_id).
- info:
    name: create_alias
    type: http
  http:
    method: PATCH
    url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id/identity
    params:
    - name: app_id
      value: ''
      type: path
    - name: alias_label
      value: ''
      type: path
    - name: alias_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Upserts one or more Aliases to an existing User identified by (:alias_label, :alias_id).
- info:
    name: delete_alias
    type: http
  http:
    method: DELETE
    url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id/identity/:alias_label_to_delete
    params:
    - name: app_id
      value: ''
      type: path
    - name: alias_label
      value: ''
      type: path
    - name: alias_id
      value: ''
      type: path
    - name: alias_label_to_delete
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Deletes an alias by alias label
- info:
    name: create_subscription
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/users/by/:alias_label/:alias_id/subscriptions
    params:
    - name: app_id
      value: ''
      type: path
    - name: alias_label
      value: ''
      type: path
    - name: alias_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Creates a new Subscription under the User provided. Useful to add email addresses and SMS numbers to the User.
- info:
    name: update_subscription
    type: http
  http:
    method: PATCH
    url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id
    params:
    - name: app_id
      value: ''
      type: path
    - name: subscription_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Updates an existing Subscription’s properties.
- info:
    name: delete_subscription
    type: http
  http:
    method: DELETE
    url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id
    params:
    - name: app_id
      value: ''
      type: path
    - name: subscription_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Deletes the Subscription.
- info:
    name: get_aliases_by_subscription
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id/user/identity
    params:
    - name: app_id
      value: ''
      type: path
    - name: subscription_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Lists all Aliases for the User identified by :subscription_id.
- info:
    name: create_alias_by_subscription
    type: http
  http:
    method: PATCH
    url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id/user/identity
    params:
    - name: app_id
      value: ''
      type: path
    - name: subscription_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Upserts one or more Aliases for the User identified by :subscription_id.
- info:
    name: transfer_subscription
    type: http
  http:
    method: PATCH
    url: https://api.onesignal.com/apps/:app_id/subscriptions/:subscription_id/owner
    params:
    - name: app_id
      value: ''
      type: path
    - name: subscription_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Transfers this Subscription to the User identified by the identity in the payload.
- info:
    name: Update subscription by token
    type: http
  http:
    method: PATCH
    url: https://api.onesignal.com/apps/:app_id/subscriptions_by_token/:token_type/:token
    params:
    - name: app_id
      value: ''
      type: path
      description: Your OneSignal App ID in UUID v4 format.
    - name: token_type
      value: ''
      type: path
      description: The type of token to use when looking up the subscription. See Subscription Types.
    - name: token
      value: ''
      type: path
      description: The value of the token to lookup by (e.g., email address, phone number).
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Update properties on an existing OneSignal subscription using its token.
- info:
    name: Unsubscribe with token
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/notifications/:notification_id/unsubscribe
    params:
    - name: app_id
      value: ''
      type: path
      description: The OneSignal App ID for your app.  Available in Keys & IDs.
    - name: notification_id
      value: ''
      type: path
      description: The id of the message found in the creation notification POST response, View Notifications GET response,
        or URL within the Message Report.
    - name: token
      value: ''
      type: query
      description: The unsubscribe token that is generated via liquid syntax in {{subscription.unsubscribe_token}} when personalizing
        an email.
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Unsubscribe an email with a token when using your own custom email unsubscribe landing page
- info:
    name: Export CSV of Subscriptions
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/players/csv_export?app_id=:app_id
    params:
    - name: app_id
      value: ''
      type: path
      description: The app ID that you want to export devices from
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: 'Generate a compressed CSV export of all of your current user data

    This method can be used to generate a compressed CSV export of all of your current user data. It is a much faster alternative
    than retrieving this data using the /players API endpoint.

    The file will be compressed using GZip.

    The file may take several minutes to generate depending on the number of users in your app.

    The URL generated will be available for 3 days and includes random v4 uuid as part of the resource name to be unguess'
- info:
    name: Export CSV of Events
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/notifications/:notification_id/export_events?app_id=:app_id
    params:
    - name: notification_id
      value: ''
      type: path
      description: The ID of the notification to export events from.
    - name: app_id
      value: ''
      type: query
      description: The ID of the app that the notification belongs to.
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: 'Generate a compressed CSV report of all of the events data for a notification.

    This will return a URL immediately upon success but it may take several minutes for the CSV to become available at that
    URL depending on the volume of data. Only one export can be in-progress per OneSignal account at any given time.'
- info:
    name: View templates
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/templates
    params:
    - name: app_id
      value: ''
      type: query
      description: Your OneSignal App ID in UUID v4 format.
    - name: limit
      value: ''
      type: query
      description: Maximum number of templates. Default and max is 50.
    - name: offset
      value: ''
      type: query
      description: Pagination offset.
    - name: channel
      value: ''
      type: query
      description: Filter by delivery channel.
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: List templates for an app.
- info:
    name: Create template
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/templates
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Create reusable message templates for push, email, and SMS channels.
- info:
    name: View template
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/templates/:template_id
    params:
    - name: template_id
      value: ''
      type: path
    - name: app_id
      value: ''
      type: query
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Fetch a single template by id.
- info:
    name: Update template
    type: http
  http:
    method: PATCH
    url: https://api.onesignal.com/templates/:template_id
    params:
    - name: template_id
      value: ''
      type: path
    - name: app_id
      value: ''
      type: query
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Update an existing template.
- info:
    name: Delete template
    type: http
  http:
    method: DELETE
    url: https://api.onesignal.com/templates/:template_id
    params:
    - name: template_id
      value: ''
      type: path
    - name: app_id
      value: ''
      type: query
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Delete a template by id.
- info:
    name: Copy template to another app
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/templates/:template_id/copy_to_app
    params:
    - name: template_id
      value: ''
      type: path
    - name: app_id
      value: ''
      type: query
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Copy a template to a destination app.
- info:
    name: View API keys
    type: http
  http:
    method: GET
    url: https://api.onesignal.com/apps/:app_id/auth/tokens
    params:
    - name: app_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: View the details of all of your current app API keys (Rich Authentication Token) for a single OneSignal app.
- info:
    name: Create API key
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/auth/tokens
    params:
    - name: app_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Use this API to create a new App API Key (also called a Rich Authentication Token) for a specific OneSignal app. These
    keys are used to authenticate API requests at the app level and offer enhanced security features, including optional IP
    allowlisting.
- info:
    name: Update API key
    type: http
  http:
    method: PATCH
    url: https://api.onesignal.com/apps/:app_id/auth/tokens/:token_id
    params:
    - name: app_id
      value: ''
      type: path
    - name: token_id
      value: ''
      type: path
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Update a Rich Authentication Token (App API Key) for a OneSignal app.
- info:
    name: Delete API key
    type: http
  http:
    method: DELETE
    url: https://api.onesignal.com/apps/:app_id/auth/tokens/:token_id
    params:
    - name: app_id
      value: ''
      type: path
    - name: token_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Delete a specific Rich Authentication Token (App API Key) for a OneSignal app. Requires your Organization API Key
    and the token’s unique ID, not the token value itself.
- info:
    name: Rotate API key
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/auth/tokens/:token_id/rotate
    params:
    - name: app_id
      value: ''
      type: path
    - name: token_id
      value: ''
      type: path
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: Rotate a Rich Authentication Token (App API Key) for a OneSignal app. Rotating a key revokes the current token and
    generates a new one under the same configuration—ideal when a token is lost or compromised but you don’t want to recreate
    and reconfigure it from scratch.
- info:
    name: Create custom events
    type: http
  http:
    method: POST
    url: https://api.onesignal.com/apps/:app_id/integrations/custom_events
    params:
    - name: app_id
      value: ''
      type: path
      description: Your OneSignal App ID in UUID v4 format.
    body:
      type: json
      data: '{}'
    auth:
      type: bearer
      token: '{{bearerToken}}'
  docs: The Custom Events API allows you to record user events. Custom events can represent any action users take in your
    application, such as completing a purchase, viewing content, or achieving milestones.
bundled: true