# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand. overlay: 1.0.0 info: title: API Evangelist conversational phrasing for Appwrite Waf API version: 1.0.0 extends: openapi/appwrite-waf-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['/waf/rules'].get update: x-apievangelist-phrasing: intent: List the firewall rules in a project effect: read questions: - Which web application firewall rules are active on my Appwrite project? - Can I search my WAF rules by name? instructions: - text: List all WAF rules in this project. - text: Search my firewall rules for {search}. slots: search: query.search method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/bypass'].post update: x-apievangelist-phrasing: intent: Create a firewall rule that lets traffic skip checks effect: write questions: - How do I let requests from my office IP range skip the firewall? - Can I allowlist traffic so it bypasses other WAF rules by header or country? instructions: - text: Create a bypass rule {ruleId} named {name} for resource type {resourceType}. slots: ruleId: requestBody.ruleId name: requestBody.name resourceType: requestBody.resourceType - text: Add bypass rule {name} ({ruleId}) on {resourceType} so traffic matching {conditions} skips the firewall. slots: name: requestBody.name ruleId: requestBody.ruleId resourceType: requestBody.resourceType conditions: requestBody.conditions method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/bypass/{ruleId}'].patch update: x-apievangelist-phrasing: intent: Edit an existing bypass firewall rule effect: write questions: - Can I change the conditions on a bypass rule I already created? - What do I change to temporarily disable an allowlist bypass rule? instructions: - text: Update the conditions of bypass rule {ruleId} to {conditions}. slots: ruleId: path.ruleId conditions: requestBody.conditions - text: Set enabled to {enabled} on bypass rule {ruleId}. slots: enabled: requestBody.enabled ruleId: path.ruleId method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/challenge'].post update: x-apievangelist-phrasing: intent: Create a proof-of-work challenge firewall rule effect: write questions: - How do I make suspicious visitors solve a challenge before reaching my site? - Can I tune how hard the challenge is, from 1 to 5? - How long does a visitor stay cleared after passing a WAF challenge? instructions: - text: Create challenge rule {ruleId} named {name} on {resourceType}. slots: ruleId: requestBody.ruleId name: requestBody.name resourceType: requestBody.resourceType - text: Add challenge rule {name} ({ruleId}) on {resourceType} with difficulty {difficulty} and clearance of {ttl} seconds. slots: name: requestBody.name ruleId: requestBody.ruleId resourceType: requestBody.resourceType difficulty: requestBody.difficulty ttl: requestBody.ttl method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/challenge/{ruleId}'].patch update: x-apievangelist-phrasing: intent: Edit an existing challenge firewall rule effect: write questions: - Can I raise the difficulty on a challenge rule that is already live? - Is it possible to shorten how long visitors stay cleared on an existing challenge rule? instructions: - text: Change the difficulty of challenge rule {ruleId} to {difficulty}. slots: ruleId: path.ruleId difficulty: requestBody.difficulty - text: Set the clearance time on challenge rule {ruleId} to {ttl} seconds. slots: ruleId: path.ruleId ttl: requestBody.ttl method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/deny'].post update: x-apievangelist-phrasing: intent: Create a firewall rule that blocks matching traffic effect: write questions: - How do I block requests from a specific country or IP range? - Can a deny rule match on user agent or request path? instructions: - text: Create deny rule {ruleId} named {name} on {resourceType}. slots: ruleId: requestBody.ruleId name: requestBody.name resourceType: requestBody.resourceType - text: Block all traffic matching {conditions} with a new deny rule {name} ({ruleId}) on {resourceType}. slots: conditions: requestBody.conditions name: requestBody.name ruleId: requestBody.ruleId resourceType: requestBody.resourceType method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/deny/{ruleId}'].patch update: x-apievangelist-phrasing: intent: Edit an existing blocking firewall rule effect: write questions: - Can I change which IPs an existing deny rule blocks? - What should I update to make a block rule run before my other rules? instructions: - text: Replace the conditions on deny rule {ruleId} with {conditions}. slots: ruleId: path.ruleId conditions: requestBody.conditions - text: Set the priority of deny rule {ruleId} to {priority}. slots: ruleId: path.ruleId priority: requestBody.priority method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/rate-limit'].post update: x-apievangelist-phrasing: intent: Create a rate-limit firewall rule effect: write questions: - How do I cap how many requests a single IP can make per minute? - Can I rate limit per authenticated user instead of per IP address? - Which rate limiting strategies are available, like sliding window or token bucket? instructions: - text: Create rate-limit rule {ruleId} named {name} on {resourceType} allowing {limit} requests every {interval} seconds. slots: ruleId: requestBody.ruleId name: requestBody.name resourceType: requestBody.resourceType limit: requestBody.limit interval: requestBody.interval - text: 'Add rate limit {name} ({ruleId}) on {resourceType}: {limit} per {interval} seconds counted by {key}.' slots: name: requestBody.name ruleId: requestBody.ruleId resourceType: requestBody.resourceType limit: requestBody.limit interval: requestBody.interval key: requestBody.key method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/rate-limit/{ruleId}'].patch update: x-apievangelist-phrasing: intent: Edit an existing rate-limit firewall rule effect: write questions: - Can I loosen the request limit on a rate-limit rule already in place? - Is it possible to change the burst bucket size of an existing rate-limit rule? instructions: - text: Change rate-limit rule {ruleId} to allow {limit} requests per {interval} seconds. slots: ruleId: path.ruleId limit: requestBody.limit interval: requestBody.interval - text: Set the max bucket size of rate-limit rule {ruleId} to {maxBucketSize}. slots: ruleId: path.ruleId maxBucketSize: requestBody.maxBucketSize method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/redirect'].post update: x-apievangelist-phrasing: intent: Create a firewall rule that redirects matching traffic effect: write questions: - How do I send visitors from certain countries to a different URL? - Can a firewall redirect rule choose the HTTP status code it returns? instructions: - text: Create redirect rule {ruleId} named {name} on {resourceType} sending traffic to {location} with status {statusCode}. slots: ruleId: requestBody.ruleId name: requestBody.name resourceType: requestBody.resourceType location: requestBody.location statusCode: requestBody.statusCode - text: Redirect requests matching {conditions} to {location} using status {statusCode} via new rule {name} ({ruleId}) on {resourceType}. slots: conditions: requestBody.conditions location: requestBody.location statusCode: requestBody.statusCode name: requestBody.name ruleId: requestBody.ruleId resourceType: requestBody.resourceType method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/redirect/{ruleId}'].patch update: x-apievangelist-phrasing: intent: Edit an existing redirect firewall rule effect: write questions: - Can I point an existing redirect rule at a new destination URL? - What do I change to switch a redirect rule from a temporary to a permanent status code? instructions: - text: Change the destination of redirect rule {ruleId} to {location}. slots: ruleId: path.ruleId location: requestBody.location - text: Set redirect rule {ruleId} to respond with status {statusCode}. slots: ruleId: path.ruleId statusCode: requestBody.statusCode method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/{ruleId}'].get update: x-apievangelist-phrasing: intent: Look up a single firewall rule effect: read questions: - What conditions and priority does a particular WAF rule have? - Can I see the full configuration of one firewall rule by its ID? instructions: - text: Get WAF rule {ruleId}. slots: ruleId: path.ruleId - text: Show me the configuration of firewall rule {ruleId}. slots: ruleId: path.ruleId method: generated generated: '2026-09-26' - target: $.paths['/waf/rules/{ruleId}'].delete update: x-apievangelist-phrasing: intent: Delete a firewall rule effect: destructive questions: - How do I permanently remove a WAF rule of any type? - Does deleting a firewall rule immediately stop it from applying? instructions: - text: Delete WAF rule {ruleId}. slots: ruleId: path.ruleId - text: Remove firewall rule {ruleId} from the project. slots: ruleId: path.ruleId method: generated generated: '2026-09-26'