Appwrite · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Appwrite Waf API
14 actions
14 updates
phrasing
extends
openapi/appwrite-waf-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Appwrite's API. It is a proposal applied on top of the contract, not a document Appwrite publishes.
What the actions change
x-apievangelist-phrasing
Targets 14
$.info
$.paths['/waf/rules'].get
$.paths['/waf/rules/bypass'].post
$.paths['/waf/rules/bypass/{ruleId}'].patch
$.paths['/waf/rules/challenge'].post
$.paths['/waf/rules/challenge/{ruleId}'].patch
$.paths['/waf/rules/deny'].post
$.paths['/waf/rules/deny/{ruleId}'].patch
$.paths['/waf/rules/rate-limit'].post
$.paths['/waf/rules/rate-limit/{ruleId}'].patch
$.paths['/waf/rules/redirect'].post
$.paths['/waf/rules/redirect/{ruleId}'].patch
$.paths['/waf/rules/{ruleId}'].get
$.paths['/waf/rules/{ruleId}'].delete
OpenAPI Overlay
# 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'