# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Flagsmith Webhooks API version: 1.0.0 extends: openapi/flagsmith-webhooks-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: 21 - target: $.paths['/environments/{environment_api_key}/webhooks/'].get update: x-apievangelist-phrasing: intent: List environment webhooks (unversioned path) effect: read questions: - Which webhooks receive flag evaluation data for identified users in my environment, via the unversioned path? - Can I see the environment webhooks list without the /api/v1 prefix? instructions: - text: Using the unversioned route, list webhooks for environment {environment_api_key}. slots: environment_api_key: path.environment_api_key - text: Show the identity evaluation webhooks on environment {environment_api_key} from the non-v1 endpoint. slots: environment_api_key: path.environment_api_key method: generated generated: '2026-09-26' - target: $.paths['/environments/{environment_api_key}/webhooks/'].post update: x-apievangelist-phrasing: intent: Add an environment webhook (unversioned path) effect: write questions: - How can I get flag evaluation data POSTed to my URL whenever identities are evaluated? - Can I sign environment webhook payloads with a secret when creating one on the unversioned route? instructions: - text: On the unversioned route, add a webhook to environment {environment_api_key} that posts to {url}. slots: environment_api_key: path.environment_api_key url: requestBody.url - text: Create an identity evaluation webhook for {environment_api_key} at {url} signed with secret {secret}, non-v1 path. slots: environment_api_key: path.environment_api_key url: requestBody.url secret: requestBody.secret method: generated generated: '2026-09-26' - target: $.paths['/organisations/{organisation_id}/webhooks/'].get update: x-apievangelist-phrasing: intent: List organisation audit webhooks (unversioned) effect: read questions: - Which webhooks receive audit log events for my whole organisation, from the unversioned path? - Is there a non-v1 endpoint to list an organisation's audit webhooks? instructions: - text: Via the unversioned route, list audit log webhooks for organisation {organisation_id}. slots: organisation_id: path.organisation_id - text: Show organisation {organisation_id}'s audit webhooks from the non-v1 endpoint. slots: organisation_id: path.organisation_id method: generated generated: '2026-09-26' - target: $.paths['/organisations/{organisation_id}/webhooks/'].post update: x-apievangelist-phrasing: intent: Add an organisation audit webhook (unversioned) effect: write questions: - How do I stream audit log events for changes across my organisation to my own URL? - Can the unversioned organisation webhook create call take a signing secret? instructions: - text: Using the unversioned route, create an audit log webhook for organisation {organisation_id} posting to {url}. slots: organisation_id: path.organisation_id url: requestBody.url - text: Send organisation {organisation_id} audit events to {url} signed with {secret}, non-v1 path. slots: organisation_id: path.organisation_id url: requestBody.url secret: requestBody.secret method: generated generated: '2026-09-26' - target: $.paths['/api/v1/cb-webhook/'].post update: x-apievangelist-phrasing: intent: Receive Chargebee subscription webhooks effect: write questions: - What endpoint handles incoming Chargebee billing webhooks for subscription changes? - How are Chargebee payment failures used to detect subscriptions in dunning? instructions: - text: Deliver this Chargebee subscription event to the billing webhook receiver. - text: Process the Chargebee payment failure notification to update dunning state. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/cohort-sync/mixpanel/webhook/'].post update: x-apievangelist-phrasing: intent: Receive a Mixpanel cohort sync effect: write questions: - How does Mixpanel push cohort membership into Flagsmith each sync cycle? - Can the Mixpanel sync send only added and removed members instead of the full list? instructions: - text: Apply the Mixpanel cohort sync action {action} with parameters {parameters}. slots: action: requestBody.action parameters: requestBody.parameters - text: Ingest this Mixpanel cohort membership payload {parameters}. slots: parameters: requestBody.parameters method: generated generated: '2026-09-26' - target: $.paths['/api/v1/cohort-sync/webhook/cohorts/{id}/members/add/'].post update: x-apievangelist-phrasing: intent: Add members to a CSV cohort effect: write questions: - How do I add identities to an existing CSV cohort without re-uploading the file? - Is it safe to retry adding a member who is already in the cohort? instructions: - text: Add identifiers {identifiers} to cohort {id}. slots: identifiers: requestBody.identifiers id: path.id - text: Put these users {identifiers} into CSV cohort {id} through the sync webhook. slots: identifiers: requestBody.identifiers id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/v1/cohort-sync/webhook/cohorts/{id}/members/remove/'].post update: x-apievangelist-phrasing: intent: Remove members from a CSV cohort effect: write questions: - How can I take specific identities out of a CSV cohort? - What happens if I remove someone who isn't a member of the cohort? instructions: - text: Remove identifiers {identifiers} from cohort {id}. slots: identifiers: requestBody.identifiers id: path.id - text: Drop these users {identifiers} out of CSV cohort {id}. slots: identifiers: requestBody.identifiers id: path.id method: generated generated: '2026-09-26' - target: $.paths['/api/v1/environments/{environment_api_key}/webhooks/'].get update: x-apievangelist-phrasing: intent: List an environment's webhooks (v1) effect: read questions: - What webhooks are set up on my environment in the v1 API? - Can I check which of an environment's webhooks are enabled? instructions: - text: List the v1 webhooks for environment {environment_api_key}. slots: environment_api_key: path.environment_api_key - text: Show every webhook configured on environment {environment_api_key} with its enabled status. slots: environment_api_key: path.environment_api_key method: generated generated: '2026-09-26' - target: $.paths['/api/v1/environments/{environment_api_key}/webhooks/'].post update: x-apievangelist-phrasing: intent: Create an environment webhook (v1) effect: write questions: - How do I add a webhook to an environment through the v1 API? - Can I create an environment webhook disabled so it doesn't fire yet? instructions: - text: Create a v1 webhook on environment {environment_api_key} pointing to {url}. slots: environment_api_key: path.environment_api_key url: requestBody.url - text: Add webhook {url} to environment {environment_api_key} with enabled set to {enabled}. slots: url: requestBody.url environment_api_key: path.environment_api_key enabled: requestBody.enabled method: generated generated: '2026-09-26' - target: $.paths['/api/v1/environments/{environment_api_key}/webhooks/{id}/'].put update: x-apievangelist-phrasing: intent: Replace an environment webhook effect: write questions: - How do I fully replace an environment webhook's URL and settings? - Does a full update of an environment webhook require the URL again? instructions: - text: Replace environment {environment_api_key} webhook {id} so it posts to {url}. slots: environment_api_key: path.environment_api_key id: path.id url: requestBody.url - text: Overwrite webhook {id} on {environment_api_key} with URL {url} and secret {secret}. slots: id: path.id environment_api_key: path.environment_api_key url: requestBody.url secret: requestBody.secret method: generated generated: '2026-09-26' - target: $.paths['/api/v1/environments/{environment_api_key}/webhooks/{id}/'].delete update: x-apievangelist-phrasing: intent: Delete an environment webhook effect: destructive questions: - How do I remove a webhook from an environment? - Can I delete an environment webhook I no longer need? instructions: - text: Delete webhook {id} from environment {environment_api_key}. slots: id: path.id environment_api_key: path.environment_api_key - text: Remove the environment webhook {id} on {environment_api_key} permanently. slots: id: path.id environment_api_key: path.environment_api_key method: generated generated: '2026-09-26' - target: $.paths['/api/v1/environments/{environment_api_key}/webhooks/{id}/'].patch update: x-apievangelist-phrasing: intent: Edit part of an environment webhook effect: write questions: - Can I just switch off an environment webhook without changing its URL? - What's the way to rotate only the secret on an environment webhook? instructions: - text: Set enabled to {enabled} on webhook {id} in environment {environment_api_key}. slots: enabled: requestBody.enabled id: path.id environment_api_key: path.environment_api_key - text: Change only the secret of environment webhook {id} on {environment_api_key} to {secret}. slots: id: path.id environment_api_key: path.environment_api_key secret: requestBody.secret method: generated generated: '2026-09-26' - target: $.paths['/api/v1/github-webhook/'].post update: x-apievangelist-phrasing: intent: Receive GitHub integration webhooks effect: write questions: - Which endpoint receives events from the GitHub integration? - Where should the GitHub app deliver its webhook events? instructions: - text: Deliver this GitHub event to the GitHub webhook receiver. - text: Forward the incoming GitHub webhook payload for processing. method: generated generated: '2026-09-26' - target: $.paths['/api/v1/organisations/{organisation_pk}/webhooks/'].get update: x-apievangelist-phrasing: intent: List organisation webhooks (v1) effect: read questions: - What webhooks does my organisation have in the v1 API? - Can I page through an organisation's webhooks? instructions: - text: List the v1 webhooks for organisation {organisation_pk}. slots: organisation_pk: path.organisation_pk - text: Show page {page} of organisation {organisation_pk}'s webhooks. slots: page: query.page organisation_pk: path.organisation_pk method: generated generated: '2026-09-26' - target: $.paths['/api/v1/organisations/{organisation_pk}/webhooks/'].post update: x-apievangelist-phrasing: intent: Create an organisation webhook (v1) effect: write questions: - How do I add an organisation-level webhook with the v1 API? - Can a new v1 organisation webhook start out disabled? instructions: - text: Create a v1 webhook for organisation {organisation_pk} posting to {url}. slots: organisation_pk: path.organisation_pk url: requestBody.url - text: Add organisation webhook {url} to {organisation_pk} with enabled {enabled}. slots: url: requestBody.url organisation_pk: path.organisation_pk enabled: requestBody.enabled method: generated generated: '2026-09-26' - target: $.paths['/api/v1/organisations/{organisation_pk}/webhooks/{id}/'].get update: x-apievangelist-phrasing: intent: Get an organisation webhook effect: read questions: - What URL and status does a specific organisation webhook have? - Can I look up one organisation webhook by its ID? instructions: - text: Get webhook {id} of organisation {organisation_pk}. slots: id: path.id organisation_pk: path.organisation_pk - text: Show the details of organisation {organisation_pk}'s webhook {id}. slots: id: path.id organisation_pk: path.organisation_pk method: generated generated: '2026-09-26' - target: $.paths['/api/v1/organisations/{organisation_pk}/webhooks/{id}/'].put update: x-apievangelist-phrasing: intent: Replace an organisation webhook effect: write questions: - How do I fully replace an organisation webhook's configuration? - Must I resend the URL when replacing an organisation webhook? instructions: - text: Replace organisation {organisation_pk} webhook {id} so it posts to {url}. slots: organisation_pk: path.organisation_pk id: path.id url: requestBody.url - text: Overwrite org webhook {id} in {organisation_pk} with URL {url} and secret {secret}. slots: id: path.id organisation_pk: path.organisation_pk url: requestBody.url secret: requestBody.secret method: generated generated: '2026-09-26' - target: $.paths['/api/v1/organisations/{organisation_pk}/webhooks/{id}/'].delete update: x-apievangelist-phrasing: intent: Delete an organisation webhook effect: destructive questions: - How do I stop audit events going to an old organisation webhook by deleting it? - Can I remove an organisation webhook entirely? instructions: - text: Delete webhook {id} from organisation {organisation_pk}. slots: id: path.id organisation_pk: path.organisation_pk - text: Remove organisation {organisation_pk}'s webhook {id} permanently. slots: id: path.id organisation_pk: path.organisation_pk method: generated generated: '2026-09-26' - target: $.paths['/api/v1/organisations/{organisation_pk}/webhooks/{id}/'].patch update: x-apievangelist-phrasing: intent: Edit part of an organisation webhook effect: write questions: - Can I pause an organisation webhook by just flipping enabled? - Is there a way to change only an organisation webhook's URL? instructions: - text: Set enabled to {enabled} on organisation {organisation_pk} webhook {id}. slots: enabled: requestBody.enabled organisation_pk: path.organisation_pk id: path.id - text: Point org webhook {id} in {organisation_pk} at new URL {url}, leaving the rest unchanged. slots: id: path.id organisation_pk: path.organisation_pk url: requestBody.url method: generated generated: '2026-09-26' - target: $.paths['/api/v1/webhooks/test/'].post update: x-apievangelist-phrasing: intent: Send a test webhook effect: write questions: - Can I fire a test payload at a webhook URL before saving it? - How do I check my endpoint accepts webhook requests signed with my secret? instructions: - text: Send a test webhook to {webhook_url} for scope {scope}. slots: webhook_url: requestBody.webhook_url scope: requestBody.scope - text: Test {webhook_url} with scope {scope} signing it with {secret}. slots: webhook_url: requestBody.webhook_url scope: requestBody.scope secret: requestBody.secret method: generated generated: '2026-09-26'