OneSignal · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Onesignal Notifications API
15 actions
15 updates
phrasing
extends
openapi/onesignal-notifications-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.
What the actions change
x-apievangelist-phrasing
Targets 15
$.info
$.paths['/notifications/{message_id}/history'].post
$.paths['/notifications/{message_id}/export_events'].post
$.paths['/notifications?c=email'].post
$.paths['/notifications?c=push'].post
$.paths['/notifications?c=sms'].post
$.paths['/notifications?app_id={app_id}&limit={limit}&offset={offset}&kind={kind}&template_id={template_id}&time_offset={time_offset}'].get
$.paths['/notifications/{message_id}?app_id={app_id}'].get
$.paths['/notifications/{message_id}?app_id={app_id}'].delete
$.paths['/notifications'].get
$.paths['/notifications'].post
$.paths['/notifications/{notification_id}'].get
$.paths['/notifications/{notification_id}'].delete
$.paths['/notifications/{notification_id}/history'].post
$.paths['/notifications/{notification_id}/export_events?app_id={app_id}'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Onesignal Notifications API
version: 1.0.0
extends: openapi/onesignal-notifications-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: 14
- target: $.paths['/notifications/{message_id}/history'].post
update:
x-apievangelist-phrasing:
intent: See which subscriptions received a message
effect: read
questions:
- Which subscriptions were sent or clicked a particular message?
- Can I get the recipient history of a message emailed to me as a file?
instructions:
- text: Show the {events} history for message {message_id} in app {app_id}.
slots:
events: requestBody.events
message_id: path.message_id
app_id: requestBody.app_id
- text: Email the {events} recipient list of message {message_id} in app {app_id} to {email}.
slots:
events: requestBody.events
message_id: path.message_id
app_id: requestBody.app_id
email: requestBody.email
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications/{message_id}/export_events'].post
update:
x-apievangelist-phrasing:
intent: Export a message's audience activity as CSV
effect: read
questions:
- How do I download delivered, clicked and unsubscribed data for a message across push, email and SMS?
- Can I export audience-level engagement for one message to a spreadsheet?
instructions:
- text: Export the audience activity CSV for message {message_id} in app {app_id}.
slots:
message_id: path.message_id
app_id: query.app_id
- text: Build a compressed CSV of sends, clicks and failures across channels for message {message_id}, app {app_id}.
slots:
message_id: path.message_id
app_id: query.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications?c=email'].post
update:
x-apievangelist-phrasing:
intent: Send an email message
effect: write
questions:
- How do I send an email campaign to a segment through OneSignal?
- Can I set a custom from name and reply-to address on an email send?
- Is it possible to schedule an email for a specific time of day?
instructions:
- text: Email segment {included_segments} in app {app_id} with subject {email_subject} and body {email_body}.
slots:
included_segments: requestBody.included_segments
app_id: requestBody.app_id
email_subject: requestBody.email_subject
email_body: requestBody.email_body
- text: Send an email to {email_to} from app {app_id} with subject {email_subject}, body {email_body}, from {email_from_name}.
slots:
email_to: requestBody.email_to
app_id: requestBody.app_id
email_subject: requestBody.email_subject
email_body: requestBody.email_body
email_from_name: requestBody.email_from_name
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications?c=push'].post
update:
x-apievangelist-phrasing:
intent: Send a push notification
effect: write
questions:
- How do I send a push notification with an image and action buttons?
- Can I throttle a push send to a set number per minute?
- What's the way to send a push to just iOS or just Android devices?
instructions:
- text: Send a push saying {contents} to segment {included_segments} in app {app_id}.
slots:
contents: requestBody.contents
included_segments: requestBody.included_segments
app_id: requestBody.app_id
- text: Push {contents} with title {headings} to users {include_aliases} in app {app_id} and open {url} on tap.
slots:
contents: requestBody.contents
headings: requestBody.headings
include_aliases: requestBody.include_aliases
app_id: requestBody.app_id
url: requestBody.url
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications?c=sms'].post
update:
x-apievangelist-phrasing:
intent: Send an SMS or MMS message
effect: write
questions:
- How do I text a message to specific phone numbers?
- Can I attach images to an SMS to send it as MMS?
instructions:
- text: Text {contents} to phone numbers {include_phone_numbers} from app {app_id} over channel {target_channel}.
slots:
contents: requestBody.contents
include_phone_numbers: requestBody.include_phone_numbers
app_id: requestBody.app_id
target_channel: requestBody.target_channel
- text: Send SMS {contents} from number {sms_from} to segment {included_segments} in app {app_id} on channel {target_channel}.
slots:
contents: requestBody.contents
sms_from: requestBody.sms_from
included_segments: requestBody.included_segments
app_id: requestBody.app_id
target_channel: requestBody.target_channel
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications?app_id={app_id}&limit={limit}&offset={offset}&kind={kind}&template_id={template_id}&time_offset={time_offset}'].get
update:
x-apievangelist-phrasing:
intent: List sent messages, filterable by template
effect: read
questions:
- Which messages were sent using a particular template?
- Can I list only the messages sent since a certain time offset?
instructions:
- text: List messages in app {app_id} that used template {template_id}.
slots:
app_id: query.app_id
template_id: query.template_id
- text: Show {limit} messages from app {app_id} of kind {kind} since time offset {time_offset}.
slots:
limit: query.limit
app_id: query.app_id
kind: query.kind
time_offset: query.time_offset
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications/{message_id}?app_id={app_id}'].get
update:
x-apievangelist-phrasing:
intent: View one message with its outcome metrics
effect: read
questions:
- How did a single message perform on clicks and conversion outcomes?
- Can I see outcomes for one message broken down by platform?
instructions:
- text: Show message {message_id} in app {app_id} with outcomes {outcome_names}.
slots:
message_id: path.message_id
app_id: query.app_id
outcome_names: query.outcome_names
- text: Get message {message_id} from app {app_id} with outcomes over {outcome_time_range}.
slots:
message_id: path.message_id
app_id: query.app_id
outcome_time_range: query.outcome_time_range
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications/{message_id}?app_id={app_id}'].delete
update:
x-apievangelist-phrasing:
intent: Cancel a scheduled or sending message
effect: destructive
questions:
- How do I stop a message that's already going out?
- Can I cancel a scheduled message before it sends?
instructions:
- text: Cancel message {message_id} in app {app_id}.
slots:
message_id: path.message_id
app_id: path.app_id
- text: Halt the outgoing message {message_id} for app {app_id} right now.
slots:
message_id: path.message_id
app_id: path.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications'].get
update:
x-apievangelist-phrasing:
intent: List notifications (legacy endpoint)
effect: read
questions:
- Is there an older endpoint that lists an app's notifications with paging?
- What does the legacy notifications list return for API-sent versus dashboard notifications?
instructions:
- text: Use the legacy notifications list for app {app_id}.
slots:
app_id: query.app_id
- text: Page through {limit} notifications of kind {kind} at offset {offset} in app {app_id} via the older list.
slots:
limit: query.limit
kind: query.kind
offset: query.offset
app_id: query.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications'].post
update:
x-apievangelist-phrasing:
intent: Create a notification on any channel (general endpoint)
effect: write
questions:
- Can one general endpoint send push, email or SMS depending on the target channel?
- How do I target a notification at users by their external ID?
instructions:
- text: Create a notification through the general notifications endpoint, scheduled for {send_after}.
slots:
send_after: requestBody.send_after
- text: Send a notification to my users via the multi-channel create endpoint.
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications/{notification_id}'].get
update:
x-apievangelist-phrasing:
intent: View a single notification (legacy endpoint)
effect: read
questions:
- Is there an older call to fetch one notification by its notification ID?
- What details does the legacy single-notification lookup return?
instructions:
- text: Fetch notification {notification_id} for app {app_id} with the legacy lookup.
slots:
notification_id: path.notification_id
app_id: query.app_id
- text: Look up notification ID {notification_id} in app {app_id} through the older endpoint.
slots:
notification_id: path.notification_id
app_id: query.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications/{notification_id}'].delete
update:
x-apievangelist-phrasing:
intent: Stop a notification (legacy endpoint)
effect: destructive
questions:
- Is there a legacy endpoint to stop a notification by notification ID?
- Which older call halts a scheduled notification?
instructions:
- text: Stop notification {notification_id} in app {app_id} using the legacy cancel.
slots:
notification_id: path.notification_id
app_id: query.app_id
- text: Call the older stop endpoint on scheduled notification {notification_id} for app {app_id}.
slots:
notification_id: path.notification_id
app_id: query.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications/{notification_id}/history'].post
update:
x-apievangelist-phrasing:
intent: List devices sent a notification (legacy, paid plan)
effect: read
questions:
- Can I see which devices got a notification in the last 7 days on a paid plan?
- Which older endpoint lists the devices that were sent a push or email notification?
instructions:
- text: List the devices sent notification {notification_id} using the legacy history call.
slots:
notification_id: path.notification_id
- text: Get the {events} device history for notification {notification_id} in app {app_id} from the older endpoint.
slots:
events: requestBody.events
notification_id: path.notification_id
app_id: requestBody.app_id
method: generated
generated: '2026-09-26'
- target: $.paths['/notifications/{notification_id}/export_events?app_id={app_id}'].post
update:
x-apievangelist-phrasing:
intent: Export a notification's events CSV (legacy endpoint)
effect: read
questions:
- Why does the events CSV URL take several minutes to become available?
- Is there a legacy call that generates an events CSV for a notification ID?
instructions:
- text: Generate the legacy events CSV for notification {notification_id} in app {app_id}.
slots:
notification_id: path.notification_id
app_id: query.app_id
- text: Request the older export of all event data for notification {notification_id}, app {app_id}.
slots:
notification_id: path.notification_id
app_id: query.app_id
method: generated
generated: '2026-09-26'