OneSignal · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Onesignal Apps API

43 actions 43 updates phrasing extends openapi/onesignal-apps-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for OneSignal's API. It is a proposal applied on top of the contract, not a document OneSignal publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 43 · first 16 shown; the file carries all of them

$.info
$.paths['/apps'].get
$.paths['/apps'].post
$.paths['/apps/{app_id}'].get
$.paths['/apps/{app_id}'].put
$.paths['/apps/{app_id}/segments'].get
$.paths['/apps/{app_id}/segments'].post
$.paths['/apps/{app_id}/segments/{segment_id}'].get
$.paths['/apps/{app_id}/segments/{segment_id}'].delete
$.paths['/apps/{app_id}/segments/{segment_id}'].patch
$.paths['/apps/{app_id}/outcomes?outcome_names={outcome_names}&outcome_time_range={outcome_time_range}&outcome_platforms={outcome_platforms}&outcome_attribution={outcome_attribution}'].get
$.paths['/apps/{app_id}/subscriptions/{subscription_id}'].delete
$.paths['/apps/{app_id}/subscriptions/{subscription_id}'].patch
$.paths['/apps/{app_id}/subscriptions_by_token/{token_type}/{token}'].patch
$.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/subscriptions'].post
$.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Onesignal Apps API
  version: 1.0.0
extends: openapi/onesignal-apps-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 42
- target: $.paths['/apps'].get
  update:
    x-apievangelist-phrasing:
      intent: List all apps in my OneSignal account
      effect: read
      questions:
      - Which OneSignal apps does my organization have?
      - Can I see the subscriber counts for every app I manage at once?
      instructions:
      - text: List all of my OneSignal apps with their app IDs and subscriber counts.
      - text: Show every app on my account and when each was created.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new app
      effect: write
      questions:
      - How do I create a new OneSignal app through the API?
      - What do I need to set up web push when creating an app?
      - Can I configure iOS and Android push credentials at the moment I create an app?
      instructions:
      - text: Create a new app called {name} in organization {organization_id}.
        slots:
          name: requestBody.name
          organization_id: requestBody.organization_id
      - text: Create app {name} under organization {organization_id} with web push for site {chrome_web_origin}.
        slots:
          name: requestBody.name
          organization_id: requestBody.organization_id
          chrome_web_origin: requestBody.chrome_web_origin
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: View one app's details
      effect: read
      questions:
      - What settings and platform configuration does a single app have?
      - Can I look up one app's details by its app ID?
      instructions:
      - text: Show me the details of app {app_id}.
        slots:
          app_id: path.app_id
      - text: Get app {app_id} and tell me its name and subscriber count.
        slots:
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}'].put
  update:
    x-apievangelist-phrasing:
      intent: Update an app's name or push configuration
      effect: write
      questions:
      - How do I rename an existing app?
      - Can I replace the APNs or FCM credentials on an app I already created?
      instructions:
      - text: Rename app {app_id} to {name}.
        slots:
          app_id: path.app_id
          name: requestBody.name
      - text: Change the APNs environment on existing app {app_id} to {apns_env}.
        slots:
          app_id: path.app_id
          apns_env: requestBody.apns_env
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/segments'].get
  update:
    x-apievangelist-phrasing:
      intent: List an app's segments
      effect: read
      questions:
      - What audience segments exist in my app?
      - Can I page through segments if my app has a lot of them?
      instructions:
      - text: List all segments in app {app_id}.
        slots:
          app_id: path.app_id
      - text: Show {limit} segments from app {app_id} starting at offset {offset}.
        slots:
          limit: query.limit
          app_id: path.app_id
          offset: query.offset
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/segments'].post
  update:
    x-apievangelist-phrasing:
      intent: Create an audience segment
      effect: write
      questions:
      - How do I build a new audience segment with filters?
      - Can I define a segment by tags or activity rules through the API?
      instructions:
      - text: Create a segment named {name} in app {app_id} using filters {filters}.
        slots:
          name: requestBody.name
          app_id: path.app_id
          filters: requestBody.filters
      - text: Add a new segment {name} to app {app_id} with filters {filters} and description {description}.
        slots:
          name: requestBody.name
          app_id: path.app_id
          filters: requestBody.filters
          description: requestBody.description
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/segments/{segment_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: View one segment and its subscriber count
      effect: read
      questions:
      - How many subscribers are in a particular segment right now?
      - Can I see the filters behind a single segment?
      instructions:
      - text: Show me segment {segment_id} in app {app_id}.
        slots:
          segment_id: path.segment_id
          app_id: path.app_id
      - text: Get segment {segment_id} from app {app_id} including its filters and metadata.
        slots:
          segment_id: path.segment_id
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/segments/{segment_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a segment
      effect: destructive
      questions:
      - Does deleting a segment also remove the users in it?
      - How do I get rid of a segment I no longer use?
      instructions:
      - text: Delete segment {segment_id} from app {app_id}.
        slots:
          segment_id: path.segment_id
          app_id: path.app_id
      - text: Remove the unused segment {segment_id} in app {app_id}, keeping its users.
        slots:
          segment_id: path.segment_id
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/segments/{segment_id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Rename or change the filters of a segment
      effect: write
      questions:
      - If I change a segment's filters, are the old filters replaced or merged?
      - Can I rename an existing segment without recreating it?
      instructions:
      - text: Rename segment {segment_id} in app {app_id} to {name}.
        slots:
          segment_id: path.segment_id
          app_id: path.app_id
          name: requestBody.name
      - text: Replace the filters on existing segment {segment_id} in app {app_id} with {filters}, keeping the name {name}.
        slots:
          segment_id: path.segment_id
          app_id: path.app_id
          filters: requestBody.filters
          name: requestBody.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/outcomes?outcome_names={outcome_names}&outcome_time_range={outcome_time_range}&outcome_platforms={outcome_platforms}&outcome_attribution={outcome_attribution}'].get
  update:
    x-apievangelist-phrasing:
      intent: View outcome metrics for an app
      effect: read
      questions:
      - How many clicks and conversions did my push notifications drive?
      - Can I filter outcome metrics by platform or attribution type?
      instructions:
      - text: Show outcomes {outcome_names} for app {app_id} over {outcome_time_range}.
        slots:
          outcome_names: query.outcome_names
          app_id: path.app_id
          outcome_time_range: query.outcome_time_range
      - text: Report outcome {outcome_names} for app {app_id} on platforms {outcome_platforms} with {outcome_attribution} attribution.
        slots:
          outcome_names: query.outcome_names
          app_id: path.app_id
          outcome_platforms: query.outcome_platforms
          outcome_attribution: query.outcome_attribution
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/subscriptions/{subscription_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a subscription
      effect: destructive
      questions:
      - How do I stop sending messages to one specific device or email subscription?
      - If I delete a subscription, can the same token subscribe again later?
      instructions:
      - text: Delete subscription {subscription_id} from app {app_id}.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
      - text: Permanently remove subscription {subscription_id} in app {app_id} so it gets no more messages.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/subscriptions/{subscription_id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a subscription by its ID
      effect: write
      questions:
      - How do I disable a subscription when I know its subscription ID?
      - Can I re-enable a subscription from my backend instead of through the SDK?
      instructions:
      - text: Update subscription {subscription_id} in app {app_id} with {subscription}.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
          subscription: requestBody.subscription
      - text: Disable subscription ID {subscription_id} in app {app_id}.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/subscriptions_by_token/{token_type}/{token}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a subscription by its push token or address
      effect: write
      questions:
      - Can I update a subscription when I only have its push token or email address?
      - How do I turn off a subscription identified by token type and token?
      instructions:
      - text: Disable the {token_type} subscription with token {token} in app {app_id}.
        slots:
          token_type: path.token_type
          token: path.token
          app_id: path.app_id
      - text: Update the subscription for {token_type} token {token} in app {app_id} with {subscription}.
        slots:
          token_type: path.token_type
          token: path.token
          app_id: path.app_id
          subscription: requestBody.subscription
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/subscriptions'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a subscription to an existing user
      effect: write
      questions:
      - How do I attach an email or SMS subscription to a user I already have?
      - Can I add a new push subscription to a user identified by their external ID?
      instructions:
      - text: Add subscription {subscription} to the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          subscription: requestBody.subscription
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Attach a new email subscription {subscription} to user {alias_id} (by {alias_label}) in app {app_id}.
        slots:
          subscription: requestBody.subscription
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: View a user with their properties and subscriptions
      effect: read
      questions:
      - What properties, tags and subscriptions does a given user have?
      - Can I look up a user by their external ID?
      instructions:
      - text: Show me the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Get the full profile and subscriptions of user {alias_id} by {alias_label} in app {app_id}.
        slots:
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a user and all their subscriptions
      effect: destructive
      questions:
      - How do I completely delete a user and everything attached to them?
      - Does deleting a user also remove their subscriptions and aliases?
      instructions:
      - text: Delete the user with {alias_label} {alias_id} from app {app_id}.
        slots:
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Erase user {alias_id} (by {alias_label}) in app {app_id} along with their subscriptions and identity.
        slots:
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a user's properties and tags
      effect: write
      questions:
      - How do I change tags or language on an existing user?
      - Can I increment a user's session count or purchase totals with deltas?
      instructions:
      - text: Set properties {properties} on the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          properties: requestBody.properties
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Apply deltas {deltas} to user {alias_id} by {alias_label} in app {app_id}.
        slots:
          deltas: requestBody.deltas
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a user with identity and subscriptions
      effect: write
      questions:
      - How do I create a new user along with their email and push subscriptions?
      - Can I register a user with an external ID and tags in one call?
      instructions:
      - text: Create a user in app {app_id} with identity {identity}.
        slots:
          app_id: path.app_id
          identity: requestBody.identity
      - text: Create a new user in app {app_id} with identity {identity} and subscriptions {subscriptions}.
        slots:
          app_id: path.app_id
          identity: requestBody.identity
          subscriptions: requestBody.subscriptions
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up all aliases for a user from one alias
      effect: read
      questions:
      - Given a user's external ID, how do I find their OneSignal ID and other aliases?
      - Which identities are linked to a user I know by one alias?
      instructions:
      - text: List every alias for the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Map user {alias_id} (known by {alias_label}) in app {app_id} to their full identity.
        slots:
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity'].patch
  update:
    x-apievangelist-phrasing:
      intent: Add or update aliases on a user by alias
      effect: write
      questions:
      - How do I add a custom alias to a user I already know by external ID?
      - Can I update several aliases on a user's identity at once?
      instructions:
      - text: Add aliases {identity} to the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          identity: requestBody.identity
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Upsert identity {identity} for user {alias_id} found by {alias_label} in app {app_id}.
        slots:
          identity: requestBody.identity
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/subscriptions/{subscription_id}/owner'].patch
  update:
    x-apievangelist-phrasing:
      intent: Move a subscription to a different user
      effect: write
      questions:
      - How do I reassign a push or email subscription to another user?
      - Can a subscription be transferred to a new user identity within the same app?
      instructions:
      - text: Transfer subscription {subscription_id} in app {app_id} to the user with identity {identity}.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
          identity: requestBody.identity
      - text: Change the owner of subscription {subscription_id} in app {app_id} to {identity}.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
          identity: requestBody.identity
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/subscriptions/{subscription_id}/user/identity'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up a user's aliases from a subscription ID
      effect: read
      questions:
      - Who owns this subscription, and what are their aliases?
      - Can I find a user's external ID when all I have is a subscription ID?
      instructions:
      - text: Show the aliases of the user who owns subscription {subscription_id} in app {app_id}.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
      - text: Find the identity behind subscription {subscription_id} in app {app_id}.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/subscriptions/{subscription_id}/user/identity'].patch
  update:
    x-apievangelist-phrasing:
      intent: Add an alias to a user via their subscription ID
      effect: write
      questions:
      - How do I set an external ID on a user when I only know one of their subscription IDs?
      - Can I create an alias through a subscription instead of an existing alias?
      instructions:
      - text: Add alias {identity} to the user owning subscription {subscription_id} in app {app_id}.
        slots:
          identity: requestBody.identity
          subscription_id: path.subscription_id
          app_id: path.app_id
      - text: Using subscription {subscription_id} in app {app_id}, set that user's identity to include {identity}.
        slots:
          subscription_id: path.subscription_id
          app_id: path.app_id
          identity: requestBody.identity
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/identity/{alias_label_to_delete}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove an alias from a user
      effect: destructive
      questions:
      - How do I remove one alias from a user without deleting the user?
      - Can I drop a custom alias label from someone's identity?
      instructions:
      - text: Remove the {alias_label_to_delete} alias from the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          alias_label_to_delete: path.alias_label_to_delete
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Delete alias label {alias_label_to_delete} from user {alias_id} (by {alias_label}) in app {app_id}.
        slots:
          alias_label_to_delete: path.alias_label_to_delete
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/notifications/{notification_id}/unsubscribe?token={token}'].post
  update:
    x-apievangelist-phrasing:
      intent: Unsubscribe an email address from a custom page
      effect: write
      questions:
      - How does my own unsubscribe page opt someone out of emails?
      - What token do I need to unsubscribe an email recipient from a specific message?
      instructions:
      - text: Unsubscribe the email recipient with token {token} from message {notification_id} in app {app_id}.
        slots:
          token: query.token
          notification_id: path.notification_id
          app_id: path.app_id
      - text: Process an unsubscribe from my custom landing page for notification {notification_id} in app {app_id}.
        slots:
          notification_id: path.notification_id
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/live_activities/{activity_id}/notifications'].post
  update:
    x-apievangelist-phrasing:
      intent: Update or end a running iOS Live Activity
      effect: write
      questions:
      - How do I push new content to a Live Activity that's already running?
      - Can I end a Live Activity remotely and set when it gets dismissed?
      instructions:
      - text: Update Live Activity {activity_id} in app {app_id} with {event_updates}, named {name}, event {event}.
        slots:
          activity_id: path.activity_id
          app_id: path.app_id
          event_updates: requestBody.event_updates
          name: requestBody.name
          event: requestBody.event
      - text: End Live Activity {activity_id} in app {app_id} with event {event}, final state {event_updates}, name {name}, dismissed at {dismissal_date}.
        slots:
          activity_id: path.activity_id
          app_id: path.app_id
          event: requestBody.event
          event_updates: requestBody.event_updates
          name: requestBody.name
          dismissal_date: requestBody.dismissal_date
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/activities/activity/{activity_type}'].post
  update:
    x-apievangelist-phrasing:
      intent: Start a Live Activity on users' iOS devices
      effect: write
      questions:
      - Can I remotely start an iOS Live Activity without the user opening my app?
      - Which users or segments can I target when starting a Live Activity?
      instructions:
      - text: Start a {activity_type} Live Activity {activity_id} in app {app_id} for segments {included_segments}.
        slots:
          activity_type: path.activity_type
          activity_id: requestBody.activity_id
          app_id: path.app_id
          included_segments: requestBody.included_segments
      - text: Launch Live Activity type {activity_type} in app {app_id} with heading {headings} and message {contents}.
        slots:
          activity_type: path.activity_type
          app_id: path.app_id
          headings: requestBody.headings
          contents: requestBody.contents
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/inbox'].post
  update:
    x-apievangelist-phrasing:
      intent: Broadcast a message to users' in-app inboxes
      effect: write
      questions:
      - How do I post a message to every user's in-app inbox?
      - Can I schedule an inbox broadcast to appear later?
      instructions:
      - text: Broadcast inbox message {name} with subject {subjects} to app {app_id}.
        slots:
          name: requestBody.name
          subjects: requestBody.subjects
          app_id: path.app_id
      - text: Schedule inbox broadcast {name} in app {app_id} with subject {subjects} for {send_after}.
        slots:
          name: requestBody.name
          app_id: path.app_id
          subjects: requestBody.subjects
          send_after: requestBody.send_after
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/inbox?last_broadcast_id={broadcast_id}&limit={number}'].get
  update:
    x-apievangelist-phrasing:
      intent: List inbox broadcasts sent by an app
      effect: read
      questions:
      - What inbox broadcasts has my app sent to its audience?
      - Can I page through older inbox broadcasts after a given one?
      instructions:
      - text: List the inbox broadcasts for app {app_id}.
        slots:
          app_id: path.app_id
      - text: Show {limit} inbox broadcasts in app {app_id} after broadcast {last_broadcast_id}.
        slots:
          limit: query.limit
          app_id: path.app_id
          last_broadcast_id: query.last_broadcast_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/inbox?last_message_id={message_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: List the inbox messages one user received
      effect: read
      questions:
      - Which inbox messages has a specific user received?
      - Can I see one person's inbox history starting after a certain message?
      instructions:
      - text: Show the inbox messages for user {alias_id} by {alias_label} in app {app_id} after message {last_message_id}.
        slots:
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
          last_message_id: query.last_message_id
      - text: List what's in the inbox of the user with {alias_label} {alias_id} in app {app_id}, after {last_message_id}.
        slots:
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
          last_message_id: query.last_message_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/inbox?last_message_id={message_id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Mark many inbox messages read or deleted for a user
      effect: write
      questions:
      - How do I mark all of a user's inbox messages as read at once?
      - Can I clear a user's whole inbox in a single request?
      instructions:
      - text: Mark all inbox messages as read for the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Set is_deleted to {is_deleted} on every inbox message up to {last_message_id} for user {alias_id} by {alias_label} in app {app_id}.
        slots:
          is_deleted: requestBody.is_deleted
          last_message_id: query.last_message_id
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/inbox/unread_count'].get
  update:
    x-apievangelist-phrasing:
      intent: Count a user's unread inbox messages
      effect: read
      questions:
      - How many unread inbox messages does a user have?
      - What number should I show on a user's inbox badge?
      instructions:
      - text: Get the unread inbox count for the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Tell me how many unread messages user {alias_id} (by {alias_label}) has in app {app_id}.
        slots:
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/users/by/{alias_label}/{alias_id}/inbox/{message_id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Mark a single inbox message read, opened or deleted
      effect: write
      questions:
      - How do I mark just one inbox message as opened?
      - Can I delete a single message from a user's inbox?
      instructions:
      - text: Mark inbox message {message_id} as read for the user with {alias_label} {alias_id} in app {app_id}.
        slots:
          message_id: path.message_id
          alias_label: path.alias_label
          alias_id: path.alias_id
          app_id: path.app_id
      - text: Set is_opened to {is_opened} on message {message_id} for user {alias_id} by {alias_label} in app {app_id}.
        slots:
          is_opened: requestBody.is_opened
          message_id: path.message_id
          alias_id: path.alias_id
          alias_label: path.alias_label
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/auth/tokens'].get
  update:
    x-apievangelist-phrasing:
      intent: List an app's API keys
      effect: read
      questions:
      - What API keys currently exist for my app?
      - Can I review the IP allowlist settings on my app's keys?
      instructions:
      - text: List all API keys for app {app_id}.
        slots:
          app_id: path.app_id
      - text: Show the Rich Authentication Tokens configured on app {app_id}.
        slots:
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/auth/tokens'].post
  update:
    x-apievangelist-phrasing:
      intent: Create an app API key
      effect: write
      questions:
      - How do I generate a new REST API key for one of my apps?
      - Can I restrict a new app key to specific IP addresses?
      instructions:
      - text: Create an API key named {name} for app {app_id}.
        slots:
          name: requestBody.name
          app_id: path.app_id
      - text: Create key {name} on app {app_id} limited to IPs {ip_allowlist}.
        slots:
          name: requestBody.name
          app_id: path.app_id
          ip_allowlist: requestBody.ip_allowlist
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/auth/tokens/{token_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an app API key
      effect: destructive
      questions:
      - How do I revoke an app API key I no longer need?
      - Do I delete a key by its token value or by its ID?
      instructions:
      - text: Delete API key {token_id} from app {app_id}.
        slots:
          token_id: path.token_id
          app_id: path.app_id
      - text: Revoke key ID {token_id} on app {app_id} permanently.
        slots:
          token_id: path.token_id
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/auth/tokens/{token_id}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Rename an API key or change its IP allowlist
      effect: write
      questions:
      - Can I change the IP allowlist on an existing app key?
      - How do I rename an API key without rotating it?
      instructions:
      - text: Rename API key {token_id} on app {app_id} to {name}.
        slots:
          token_id: path.token_id
          app_id: path.app_id
          name: requestBody.name
      - text: Set the IP allowlist of key {token_id} in app {app_id} to {ip_allowlist}.
        slots:
          token_id: path.token_id
          app_id: path.app_id
          ip_allowlist: requestBody.ip_allowlist
      method: generated
      generated: '2026-09-26'
- target: $.paths['/apps/{app_id}/auth/tokens/{token_id}/rotate'].post
  update:
    x-apievangelist-phrasing:
      intent: Rotate a compromised app API key
      effect: destructive
      questions:
      - What should I do if an app API key has leaked?
      - Can I get a fresh secret for a key without creating a new one from scratch?
      instructions:
      - text: Rotate API key {token_id} on app {app_id}.
        slots:
          token_id: path.token_id
          app_id: path.app_id
      - text: Issue a replacement secret for compromised key {token_id} in app {app_id}.
        slots:
          token_id: path.token_id
          app_id: path.app_id
      method: generated
      generated: '2026-09-26'


# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/onesignal/refs/heads/main/overlays/onesignal-apps-api-phrasing-overlay.yaml