Drippay · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Drip Contracts API
8 actions
8 updates
phrasing
extends
openapi/drippay-contracts-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Drippay's API. It is a proposal applied on top of the contract, not a document Drippay publishes.
What the actions change
x-apievangelist-phrasing
Targets 8
$.info
$.paths['/v1/contracts'].get
$.paths['/v1/contracts'].post
$.paths['/v1/contracts/{id}'].get
$.paths['/v1/contracts/{id}'].delete
$.paths['/v1/contracts/{id}'].patch
$.paths['/v1/contracts/{id}/overrides'].post
$.paths['/v1/contracts/{id}/overrides/{unitType}'].delete
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 Drip Contracts API
version: 1.0.0
extends: openapi/drippay-contracts-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: 7
- target: $.paths['/v1/contracts'].get
update:
x-apievangelist-phrasing:
intent: List customer contracts
effect: read
questions:
- Which contracts does a particular customer have with us?
- Can I see only my active contracts, newest first?
instructions:
- text: List contracts for customer {customerId}.
slots:
customerId: query.customerId
- text: Show all contracts with status {status}.
slots:
status: query.status
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contracts'].post
update:
x-apievangelist-phrasing:
intent: Create a per-customer contract
effect: write
questions:
- How do I set up an enterprise deal with a prepaid commit for a customer?
- Can a contract cap how much a customer is billed?
- What does a contract with a minimum commit and a percentage discount look like?
instructions:
- text: Create contract {name} for customer {customerId} starting {startDate}.
slots:
name: requestBody.name
customerId: requestBody.customerId
startDate: requestBody.startDate
- text: Create a {discountPct}% discount contract {name} for {customerId} from {startDate} to {endDate}.
slots:
discountPct: requestBody.discountPct
name: requestBody.name
customerId: requestBody.customerId
startDate: requestBody.startDate
endDate: requestBody.endDate
- text: Set up contract {name} for {customerId} from {startDate} with a {prepaidAmountUsdc} USDC prepaid commit.
slots:
name: requestBody.name
customerId: requestBody.customerId
startDate: requestBody.startDate
prepaidAmountUsdc: requestBody.prepaidAmountUsdc
- text: Create contract {name} for {customerId} starting {startDate} with a spend cap of {maximumUsdc} USDC.
slots:
name: requestBody.name
customerId: requestBody.customerId
startDate: requestBody.startDate
maximumUsdc: requestBody.maximumUsdc
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contracts/{id}'].get
update:
x-apievangelist-phrasing:
intent: Get a contract with balance and overrides
effect: read
questions:
- How much prepaid balance is left on a customer's contract?
- What price overrides are on one specific contract?
instructions:
- text: Get contract {id}.
slots:
id: path.id
- text: Show the prepaid balance and price overrides on contract {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contracts/{id}'].delete
update:
x-apievangelist-phrasing:
intent: Cancel a contract permanently
effect: destructive
questions:
- Can a cancelled contract ever be reactivated?
- What happens to the remaining prepaid balance when I cancel a contract?
instructions:
- text: Cancel contract {id}.
slots:
id: path.id
- text: Terminate the customer agreement {id} so its overrides stop applying.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contracts/{id}'].patch
update:
x-apievangelist-phrasing:
intent: Amend an active contract's terms
effect: write
questions:
- How do I extend the end date on an existing contract?
- Which contract terms can't be changed after it's created?
- Are included units merged or replaced when I amend a contract?
instructions:
- text: Extend contract {id} to end on {endDate}.
slots:
id: path.id
endDate: requestBody.endDate
- text: Change the discount on existing contract {id} to {discountPct}%.
slots:
id: path.id
discountPct: requestBody.discountPct
- text: Raise the spend cap on contract {id} to {maximumUsdc} USDC.
slots:
id: path.id
maximumUsdc: requestBody.maximumUsdc
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contracts/{id}/overrides'].post
update:
x-apievangelist-phrasing:
intent: Add a negotiated price override to a contract
effect: write
questions:
- How do I give one customer a lower per-unit rate than the default plan?
- Can I update an existing unit price override on a contract?
instructions:
- text: Set {unitType} to {unitPriceUsd} per unit on contract {id}.
slots:
unitType: requestBody.unitType
unitPriceUsd: requestBody.unitPriceUsd
id: path.id
- text: Add a negotiated rate of {unitPriceUsd} for {unitType} to contract {id}.
slots:
unitPriceUsd: requestBody.unitPriceUsd
unitType: requestBody.unitType
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/v1/contracts/{id}/overrides/{unitType}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a price override from a contract
effect: destructive
questions:
- How do I put a customer back on the default rate for one usage type?
- Does the unit type have to match exactly when removing an override?
instructions:
- text: Remove the {unitType} price override from contract {id}.
slots:
unitType: path.unitType
id: path.id
- text: Revert contract {id} to the default plan rate for {unitType}.
slots:
id: path.id
unitType: path.unitType
method: generated
generated: '2026-09-26'