Triple Whale · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Triple Whale Data In API
11 actions
11 updates
phrasing
extends
openapi/triple-whale-data-in-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Triple Whale's API. It is a proposal applied on top of the contract, not a document Triple Whale publishes.
What the actions change
x-apievangelist-phrasing
Targets 11
$.info
$.paths['/data-in/ads'].post
$.paths['/data-in/orders'].post
$.paths['/data-in/bulk-orders'].post
$.paths['/data-in/subscriptions'].post
$.paths['/data-in/products'].post
$.paths['/data-in/pps'].post
$.paths['/data-in/customers'].post
$.paths['/data-in/orders-enrichment'].post
$.paths['/data-in/products-enrichment'].post
$.paths['/data-in/event'].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 Triple Whale Data In API
version: 1.0.0
extends: openapi/triple-whale-data-in-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 10
- target: $.paths['/data-in/ads'].post
update:
x-apievangelist-phrasing:
intent: Upload ad performance data
effect: write
questions:
- How do I send ad spend and performance from an unsupported ad platform into Triple Whale?
- Can I upload campaign, ad set and ad level metrics for a single day?
- What channel ID should I use when importing ads from a custom channel?
instructions:
- text: Upload ad metrics for {shop} on channel {channel} for {event_date} in {currency}.
slots:
shop: requestBody.shop
channel: requestBody.channel
event_date: requestBody.event_date
currency: requestBody.currency
- text: Record campaign {campaign} performance {metrics} from {channel} on {event_date} for {shop} in {currency}.
slots:
campaign: requestBody.campaign
metrics: requestBody.metrics
channel: requestBody.channel
event_date: requestBody.event_date
shop: requestBody.shop
currency: requestBody.currency
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/orders'].post
update:
x-apievangelist-phrasing:
intent: Upload one order from a custom sales platform
effect: write
questions:
- How do I push a single order from my custom storefront into Triple Whale?
- Can I void an order I sent earlier so it and its refunds drop out of reporting?
- What customer details are required when sending an order?
instructions:
- text: Send order {order_id} for {shop} placed at {created_at} with revenue {order_revenue} {currency} by customer {customer}.
slots:
order_id: requestBody.order_id
shop: requestBody.shop
created_at: requestBody.created_at
order_revenue: requestBody.order_revenue
currency: requestBody.currency
customer: requestBody.customer
- text: Resend order {order_id} for {shop} with void set to {void} to soft delete it.
slots:
order_id: requestBody.order_id
shop: requestBody.shop
void: requestBody.void
- text: Upload order {order_id} with line items {line_items} and refunds {refunds}.
slots:
order_id: requestBody.order_id
line_items: requestBody.line_items
refunds: requestBody.refunds
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/bulk-orders'].post
update:
x-apievangelist-phrasing:
intent: Upload a batch of orders at once
effect: write
questions:
- How can I backfill thousands of historical orders from a custom platform in batches?
- What is the maximum number of orders I can send in one bulk request?
- Is there a faster way than sending orders one at a time?
instructions:
- text: Bulk upload these orders {orders} for shop {shop}.
slots:
orders: requestBody.orders
shop: requestBody.shop
- text: Import up to 1000 orders in one batch from {orders} into {shop}.
slots:
orders: requestBody.orders
shop: requestBody.shop
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/subscriptions'].post
update:
x-apievangelist-phrasing:
intent: Upload a customer subscription
effect: write
questions:
- How do I send subscription data from my subscription app into Triple Whale?
- Can I record why a subscriber canceled and when it ended?
- Which statuses can a subscription record have, like active or canceled?
instructions:
- text: Record subscription {subscription_id} for {shop} with status {status}, items {subscription_items}, customer {customer}, created {created_at} in {currency}.
slots:
subscription_id: requestBody.subscription_id
shop: requestBody.shop
status: requestBody.status
subscription_items: requestBody.subscription_items
customer: requestBody.customer
created_at: requestBody.created_at
currency: requestBody.currency
- text: Mark subscription {subscription_id} canceled at {canceled_at} with reason {cancellation_reason}.
slots:
subscription_id: requestBody.subscription_id
canceled_at: requestBody.canceled_at
cancellation_reason: requestBody.cancellation_reason
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/products'].post
update:
x-apievangelist-phrasing:
intent: Upload a product and its variants
effect: write
questions:
- How do I add products from a custom sales platform to Triple Whale's catalog?
- Do I need to include variants when a product has only one version?
- Can product collections, tags and images be included in the upload?
instructions:
- text: Create product {product_id} titled {product_title} with variants {variants} for {shop}.
slots:
product_id: requestBody.product_id
product_title: requestBody.product_title
variants: requestBody.variants
shop: requestBody.shop
- text: Upload product {product_title} from vendor {vendor} with status {product_status}.
slots:
product_title: requestBody.product_title
vendor: requestBody.vendor
product_status: requestBody.product_status
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/pps'].post
update:
x-apievangelist-phrasing:
intent: Upload a post-purchase survey response
effect: write
questions:
- How do I import post-purchase survey answers from my survey tool?
- Can survey responses count toward Total Impact attribution?
- What happens if I leave out the survey question ID?
instructions:
- text: Record the survey answer {response} to {question_text} for order {order_id} in {shop}.
slots:
response: requestBody.response
question_text: requestBody.question_text
order_id: requestBody.order_id
shop: requestBody.shop
- text: Upload a post-purchase survey response for order {order_id} attributed to source {source} and include it in attribution.
slots:
order_id: requestBody.order_id
source: requestBody.source
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/customers'].post
update:
x-apievangelist-phrasing:
intent: Upload a customer profile
effect: write
questions:
- How do I send customer profiles with marketing consent into Triple Whale?
- Can I include a customer's lifetime spend and order count?
- Which address and SMS consent fields can a customer record carry?
instructions:
- text: Create customer {customer_id} with email {email_address} for shop {shop}.
slots:
customer_id: requestBody.customer_id
email_address: requestBody.email_address
shop: requestBody.shop
- text: Upload customer {customer_id} with email consent status {email_marketing_consent_status}.
slots:
customer_id: requestBody.customer_id
email_marketing_consent_status: requestBody.email_marketing_consent_status
- text: Record that customer {customer_id} has placed {number_of_orders} orders spending {amount_spent}.
slots:
customer_id: requestBody.customer_id
number_of_orders: requestBody.number_of_orders
amount_spent: requestBody.amount_spent
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/orders-enrichment'].post
update:
x-apievangelist-phrasing:
intent: Add costs or tags to an existing Shopify-style order
effect: write
questions:
- How do I add shipping costs to orders that already came in from Shopify?
- Can I exclude a test order from reporting without deleting it?
- Can I set a custom net revenue or gross profit on an existing order?
instructions:
- text: Add shipping costs of {shipping_costs} to existing order {order_id} in {shop}.
slots:
shipping_costs: requestBody.shipping_costs
order_id: requestBody.order_id
shop: requestBody.shop
- text: Flag order {order_id} in {shop} to be ignored in reporting.
slots:
order_id: requestBody.order_id
shop: requestBody.shop
- text: Set custom status {custom_status} on already-imported order {order_id}.
slots:
custom_status: requestBody.custom_status
order_id: requestBody.order_id
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/products-enrichment'].post
update:
x-apievangelist-phrasing:
intent: Add cost data to an existing product
effect: write
questions:
- How do I add product costs from my ERP to items synced from my store?
- Can I set the cost of a specific variant rather than the whole product?
instructions:
- text: Set the cost of variant {variant_id} of product {product_id} to {variant_cost} in {shop}.
slots:
variant_id: requestBody.variant_id
product_id: requestBody.product_id
variant_cost: requestBody.variant_cost
shop: requestBody.shop
- text: Enrich existing product {product_id} in {shop} with a cost of {variant_cost}.
slots:
product_id: requestBody.product_id
shop: requestBody.shop
variant_cost: requestBody.variant_cost
method: generated
generated: '2026-10-01'
- target: $.paths['/data-in/event'].post
update:
x-apievangelist-phrasing:
intent: Send an offline or server-side Pixel event
effect: write
questions:
- How do I send leads or booked demos from my CRM into the Triple Pixel?
- What is the rate limit and payload size for offline events?
- Can I send a custom event with my own properties and attribution source?
instructions:
- text: Send a {type} event for {profileIdentifiers} to {shop}.
slots:
type: requestBody.type
profileIdentifiers: requestBody.profileIdentifiers
shop: requestBody.shop
- text: Record custom event {event_name} for {profileIdentifiers} in {shop} with source {source}.
slots:
event_name: requestBody.event_name
profileIdentifiers: requestBody.profileIdentifiers
shop: requestBody.shop
source: requestBody.source
- text: Log an mql event with id {eventId} at timestamp {timestamp}.
slots:
eventId: requestBody.eventId
timestamp: requestBody.timestamp
method: generated
generated: '2026-10-01'