IBANforge · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for IBANforge API Keys API

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

What the actions change

x-apievangelist-phrasing

Targets 14

$.info
$.paths['/v1/keys/generate'].post
$.paths['/v1/keys/device'].post
$.paths['/v1/keys/device/token'].post
$.paths['/v1/keys/device/lookup'].post
$.paths['/v1/keys/device/approve'].post
$.paths['/v1/keys/device/deny'].post
$.paths['/v1/keys/usage'].get
$.paths['/v1/keys/report'].get
$.paths['/v1/keys/revoke'].post
$.paths['/v1/keys/claim'].post
$.paths['/v1/keys/rotate'].post
$.paths['/stats'].get
$.paths['/stats/history'].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 IBANforge API Keys API
  version: 1.0.0
extends: openapi/ibanforge-api-keys-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: 13
- target: $.paths['/v1/keys/generate'].post
  update:
    x-apievangelist-phrasing:
      intent: Generate a free API key
      effect: write
      questions:
      - Can I get an API key with no email and no card?
      - What is the difference between an anonymous key and one issued to an email address?
      - Why did key creation answer verification_required and mail me a code?
      instructions:
      - text: Create an anonymous free API key.
      - text: Generate a free API key registered to {email}.
        slots:
          email: requestBody.email
      - text: Finish creating the key for {email} with verification code {code}.
        slots:
          email: requestBody.email
          code: requestBody.code
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/device'].post
  update:
    x-apievangelist-phrasing:
      intent: Start a device authorization request for a key
      effect: write
      questions:
      - How can an agent get an API key approved by a human without handling their email?
      - How long does a device authorization request stay open?
      - What code and link do I show the human for device approval?
      instructions:
      - text: Open a device authorization request for an API key.
      - text: Start a device key request as {client_name}, explaining it is for {reason}.
        slots:
          client_name: requestBody.client_name
          reason: requestBody.reason
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/device/token'].post
  update:
    x-apievangelist-phrasing:
      intent: Collect the key after device approval
      effect: write
      questions:
      - How often should an agent poll for the key after asking a human to approve it?
      - What does slow_down mean when waiting for a device-approved key?
      - Is the approved key handed over more than once?
      instructions:
      - text: Poll for the approved API key with device code {device_code}.
        slots:
          device_code: requestBody.device_code
      - text: Collect the key for device request {device_code} once the human approves it.
        slots:
          device_code: requestBody.device_code
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/device/lookup'].post
  update:
    x-apievangelist-phrasing:
      intent: Look up a pending device request by its code
      effect: write
      questions:
      - What does a pending device request show before I approve it?
      - Where do I get the approval token needed to approve or refuse a device request?
      instructions:
      - text: Look up the pending device request for user code {user_code}.
        slots:
          user_code: requestBody.user_code
      - text: Fetch the approval token for device code {user_code} the human typed.
        slots:
          user_code: requestBody.user_code
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/device/approve'].post
  update:
    x-apievangelist-phrasing:
      intent: Approve a device request and issue the key
      effect: write
      questions:
      - Can I approve an agent's key request and raise it to 200 requests a month by verifying my mailbox?
      - What does approving a device request without an email give the agent?
      instructions:
      - text: Approve device request {user_code} with approval token {approval_token}.
        slots:
          user_code: requestBody.user_code
          approval_token: requestBody.approval_token
      - text: Approve device request {user_code} using token {approval_token} and verify mailbox {email}.
        slots:
          user_code: requestBody.user_code
          approval_token: requestBody.approval_token
          email: requestBody.email
      - text: Confirm mailbox {email} with code {code} to approve device request {user_code} (token {approval_token}).
        slots:
          user_code: requestBody.user_code
          approval_token: requestBody.approval_token
          email: requestBody.email
          code: requestBody.code
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/device/deny'].post
  update:
    x-apievangelist-phrasing:
      intent: Refuse a device key request
      effect: destructive
      questions:
      - What should I do with a device approval request that is not mine?
      - Can the agent try again after I refuse its key request?
      instructions:
      - text: Deny device request {user_code} with approval token {approval_token}.
        slots:
          user_code: requestBody.user_code
          approval_token: requestBody.approval_token
      - text: Refuse the key request for code {user_code}; the token is {approval_token}.
        slots:
          user_code: requestBody.user_code
          approval_token: requestBody.approval_token
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/usage'].get
  update:
    x-apievangelist-phrasing:
      intent: Check this month's usage of an API key
      effect: read
      questions:
      - How many requests do I have left on my API key this month?
      - Does my key's allowance reset monthly or is it a lifetime limit?
      - Which tier is my API key on?
      instructions:
      - text: Show the usage and remaining quota of my API key.
      - text: Tell me whether my key is anonymous, email, claimed or paid.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/report'].get
  update:
    x-apievangelist-phrasing:
      intent: Read the activity report of the presented key
      effect: read
      questions:
      - Which endpoints has my API key called, and what failed?
      - Can I tell if my API key was used from unusual networks?
      - Can the key report cover a full year of traffic?
      instructions:
      - text: Show the activity report for the API key I'm using.
      - text: Report what my key did over the last {days} days.
        slots:
          days: query.days
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/revoke'].post
  update:
    x-apievangelist-phrasing:
      intent: Permanently revoke the presented API key
      effect: destructive
      questions:
      - My API key leaked, how can I kill it immediately?
      - Is revoking a key reversible?
      instructions:
      - text: Revoke the API key I'm presenting, permanently.
      - text: Deactivate this leaked key without issuing a replacement.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/claim'].post
  update:
    x-apievangelist-phrasing:
      intent: Upgrade an anonymous key to the free tier
      effect: write
      questions:
      - Can I raise my anonymous key from 25 to 200 requests a month without changing the key?
      - Why does claiming my key answer unused_key?
      instructions:
      - text: Claim my anonymous key by verifying mailbox {email}.
        slots:
          email: requestBody.email
      - text: Complete the claim of my key for {email} with code {code}.
        slots:
          email: requestBody.email
          code: requestBody.code
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v1/keys/rotate'].post
  update:
    x-apievangelist-phrasing:
      intent: Rotate an API key into a fresh one
      effect: destructive
      questions:
      - Can I swap my API key for a new one and keep my plan and credits?
      - Does rotating a key reset my monthly quota?
      instructions:
      - text: Rotate my current API key and give me the replacement.
      - text: Replace this key with a fresh one and revoke the old one.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/stats'].get
  update:
    x-apievangelist-phrasing:
      intent: Get detailed usage statistics by operation
      effect: read
      questions:
      - What are the API's usage and revenue figures broken down by operation type?
      - Which operation types get the most calls right now?
      instructions:
      - text: Show the detailed API statistics by operation type.
      - text: Get the current usage and revenue breakdown.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/stats/history'].get
  update:
    x-apievangelist-phrasing:
      intent: Get per-day statistics for a period
      effect: read
      questions:
      - What did daily API usage look like over the past week?
      - How far back can the per-day statistics go?
      instructions:
      - text: Show per-day statistics for the last {period} days.
        slots:
          period: query.period
      - text: Get the daily usage history for the default seven days.
      method: generated
      generated: '2026-09-26'