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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'