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