AhaSend · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for AhaSend API v2 API Keys API

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

What the actions change

x-apievangelist-phrasing

Targets 6

$.info
$.paths['/v2/accounts/{account_id}/api-keys'].get
$.paths['/v2/accounts/{account_id}/api-keys'].post
$.paths['/v2/accounts/{account_id}/api-keys/{key_id}'].get
$.paths['/v2/accounts/{account_id}/api-keys/{key_id}'].put
$.paths['/v2/accounts/{account_id}/api-keys/{key_id}'].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 AhaSend API v2 API Keys API
  version: 1.0.0
extends: openapi/ahasend-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: 5
- target: $.paths['/v2/accounts/{account_id}/api-keys'].get
  update:
    x-apievangelist-phrasing:
      intent: List the account's API keys
      effect: read
      questions:
      - Which API keys exist on my AhaSend account?
      - Can I page through all the API keys we've created?
      instructions:
      - text: List every API key on account {account_id}.
        slots:
          account_id: path.account_id
      - text: Show the first {limit} API keys for account {account_id}.
        slots:
          limit: query.limit
          account_id: path.account_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/api-keys'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new API key
      effect: write
      questions:
      - How do I generate a new API key with only the scopes it needs?
      - Can I restrict a new API key so it only works from certain IP addresses?
      instructions:
      - text: Create an API key labeled {label} on account {account_id} with scopes {scopes}.
        slots:
          label: requestBody.label
          account_id: path.account_id
          scopes: requestBody.scopes
      - text: Generate a key called {label} with scopes {scopes} that only works from {ip_allow_list} on account {account_id}.
        slots:
          label: requestBody.label
          scopes: requestBody.scopes
          ip_allow_list: requestBody.ip_allow_list
          account_id: path.account_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/api-keys/{key_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up one API key
      effect: read
      questions:
      - What scopes does a specific API key of mine have?
      - Can I check the label and IP allow list on one particular key?
      instructions:
      - text: Show API key {key_id} on account {account_id}.
        slots:
          key_id: path.key_id
          account_id: path.account_id
      - text: Get the scopes granted to key {key_id} in account {account_id}.
        slots:
          key_id: path.key_id
          account_id: path.account_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/api-keys/{key_id}'].put
  update:
    x-apievangelist-phrasing:
      intent: Change an existing API key's label or scopes
      effect: write
      questions:
      - How do I add or remove scopes on a key I already created?
      - Can I replace the IP allow list on an existing API key?
      instructions:
      - text: Rename API key {key_id} on account {account_id} to {label}.
        slots:
          key_id: path.key_id
          account_id: path.account_id
          label: requestBody.label
      - text: Change the scopes of existing key {key_id} to {scopes} on account {account_id}.
        slots:
          key_id: path.key_id
          scopes: requestBody.scopes
          account_id: path.account_id
      - text: Limit existing key {key_id} in account {account_id} to the IPs {ip_allow_list}.
        slots:
          key_id: path.key_id
          account_id: path.account_id
          ip_allow_list: requestBody.ip_allow_list
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/api-keys/{key_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an API key
      effect: destructive
      questions:
      - How do I revoke an API key that may have leaked?
      - What happens when I permanently delete one of my account's API keys?
      instructions:
      - text: Delete API key {key_id} from account {account_id}.
        slots:
          key_id: path.key_id
          account_id: path.account_id
      - text: Revoke key {key_id} on account {account_id} so it can no longer be used.
        slots:
          key_id: path.key_id
          account_id: path.account_id
      method: generated
      generated: '2026-09-26'