Appwrite Manager API
Console management surface for project-level WAF rules and operator tooling. 19 operations across 18 paths in the Appwrite 2.0.0 OpenAPI.
Console management surface for project-level WAF rules and operator tooling. 19 operations across 18 paths in the Appwrite 2.0.0 OpenAPI.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/appwrite-manager-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.0.0
info:
title: Appwrite Manager API
description: Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)
version: 2.0.0
termsOfService: https://appwrite.io/policy/terms
contact:
name: Appwrite Team
url: https://appwrite.io/support
email: team@appwrite.io
license:
name: BSD-3-Clause
url: https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE
servers:
- url: https://cloud.appwrite.io/v1
description: Appwrite Cloud endpoint.
- url: https://{region}.cloud.appwrite.io/v1
description: Appwrite Cloud regional endpoint. Replace `{region}` with your project region.
variables:
region:
default: fra
description: Appwrite Cloud region.
tags:
- name: manager
description: Appwrite manager service.
paths:
/manager/blocks:
post:
summary: Create a new resource block for a project
operationId: managerCreateBlock
tags:
- manager
description: Creates a new resource block.
responses:
'201':
description: Block
content:
application/json:
schema:
$ref: '#/components/schemas/block'
deprecated: false
x-appwrite:
group: null
demo: manager/create-block.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
- console
packaging: false
public: true
requestBody:
content:
application/json:
schema:
type: object
properties:
projectId:
description: Project ID
type: string
example: <PROJECT_ID>
resourceType:
description: Resource type to block (e.g., projects, functions, databases, storage, etc.)
type: string
example: projects
title: BlockResourceType
oneOf:
- type: string
enum:
- projects
title: projects
- type: string
enum:
- functions
title: functions
- type: string
enum:
- sites
title: sites
- type: string
enum:
- databases
title: databases
- type: string
enum:
- buckets
title: buckets
- type: string
enum:
- providers
title: providers
- type: string
enum:
- topics
title: topics
- type: string
enum:
- subscribers
title: subscribers
- type: string
enum:
- messages
title: messages
resourceId:
description: Optional resource ID (if omitted, all resources of this type will be blocked)
type: string
default: ''
example: <RESOURCE_ID>
mode:
description: Block mode. Use full to block reads and writes, or readOnly to block database writes only.
type: string
default: full
example: full
title: BlockMode
oneOf:
- type: string
enum:
- full
title: full
- type: string
enum:
- readonly
title: readonly
reason:
description: Optional reason why the resource is blocked
type: string
default: ''
example: <REASON>
expiredAt:
description: Optional expiration date for the block
type: string
default: ''
example: '2020-10-15T06:38:00.000+00:00'
format: datetime
required:
- projectId
- resourceType
delete:
summary: Delete resource blocks for a project
operationId: managerDeleteBlock
tags:
- manager
description: Deletes resource blocks for a project.
responses:
'200':
description: BlockDelete
content:
application/json:
schema:
$ref: '#/components/schemas/blockDelete'
deprecated: false
x-appwrite:
group: null
demo: manager/delete-block.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
- console
packaging: false
public: true
parameters:
- name: projectId
description: Project ID
required: true
schema:
type: string
example: <PROJECT_ID>
in: query
- name: resourceType
description: Resource type to unblock
required: true
schema:
type: string
example: projects
title: BlockResourceType
oneOf:
- type: string
enum:
- projects
title: projects
- type: string
enum:
- functions
title: functions
- type: string
enum:
- sites
title: sites
- type: string
enum:
- databases
title: databases
- type: string
enum:
- buckets
title: buckets
- type: string
enum:
- providers
title: providers
- type: string
enum:
- topics
title: topics
- type: string
enum:
- subscribers
title: subscribers
- type: string
enum:
- messages
title: messages
in: query
- name: resourceId
description: Optional resource ID (if omitted, all blocks of this type will be removed)
required: false
schema:
type: string
example: <RESOURCE_ID>
default: ''
in: query
/manager/blocks/{projectId}:
get:
summary: List all resource blocks for a project
operationId: managerListBlocks
tags:
- manager
description: Lists all resource blocks for a project.
responses:
'200':
description: Blocks list
content:
application/json:
schema:
$ref: '#/components/schemas/blockList'
deprecated: false
x-appwrite:
group: null
demo: manager/list-blocks.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
- console
packaging: false
public: true
parameters:
- name: projectId
description: Project ID
required: true
schema:
type: string
example: <PROJECT_ID>
in: path
/manager/cache:
delete:
summary: Clear internal cache
operationId: managerDeleteCache
tags:
- manager
description: Clears internal cache.
responses:
'200':
description: File
content:
application/json:
schema:
type: string
format: binary
deprecated: false
x-appwrite:
group: cache
demo: manager/delete-cache.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
- console
packaging: false
public: true
parameters:
- name: region
description: Target region.
required: false
schema:
type: string
example: fra
title: Region
oneOf:
- type: string
enum:
- fra
title: fra
- type: string
enum:
- nyc
title: nyc
- type: string
enum:
- syd
title: syd
- type: string
enum:
- sfo
title: sfo
- type: string
enum:
- sgp
title: sgp
- type: string
enum:
- tor
title: tor
in: query
- name: cache
description: Cache target.
required: false
schema:
type: string
example: cache
title: CacheTarget
oneOf:
- type: string
enum:
- cache
title: cache
- type: string
enum:
- timelimit
title: timelimit
- type: string
enum:
- locks
title: locks
- type: string
enum:
- pubsub
title: pubsub
- type: string
enum:
- queue
title: queue
- type: string
enum:
- all
title: all
default: cache
in: query
- name: all
description: Clear the entire selected cache target.
required: false
schema:
type: boolean
example: false
default: false
in: query
- name: database
description: Database cache scope.
required: false
schema:
type: string
example: console
title: CacheDatabase
oneOf:
- type: string
enum:
- console
title: console
- type: string
enum:
- project
title: project
- type: string
enum:
- logs
title: logs
default: console
in: query
- name: projectId
description: Project ID for project or logs database cache.
required: false
schema:
type: string
example: <PROJECT_ID>
default: ''
in: query
- name: collectionId
description: Collection ID.
required: false
schema:
type: string
example: <COLLECTION_ID>
default: ''
in: query
- name: documentId
description: Document ID.
required: false
schema:
type: string
example: <DOCUMENT_ID>
default: ''
in: query
/manager/database/{databaseId}:
patch:
summary: Update database status (used by Edge)
operationId: managerUpdateDatabase
tags:
- manager
description: 'Update database container status after Edge spindown.
Called by Edge scheduler to notify Cloud of status changes.'
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: databases
demo: manager/update-database.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: databaseId
description: Database ID
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
containerStatus:
description: Container status
type: string
example: active
projectId:
description: Project ID scoping this tenant-owned database
type: string
default: ''
example: <PROJECT_ID>
required:
- containerStatus
/manager/databases/activity:
post:
summary: Sync database last-active timestamps in bulk
operationId: managerCreateDatabaseActivity
tags:
- manager
description: 'Sync last-active timestamps for shared and dedicated databases in bulk.
Called periodically by Edge from its in-memory activity cache. Each entry
carries a databaseId, the most recent Unix timestamp at which the database
served traffic, and optionally a tenantId scoping the update to one project.
Cloud advances the runtime document''s lastAccessedAt monotonically — an older
timestamp never regresses a newer one — and unknown databases are skipped.'
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: databases
demo: manager/create-database-activity.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
requestBody:
content:
application/json:
schema:
type: object
properties:
databases:
description: Activity entries, each `{databaseId, lastActive, tenantId?}`.
type: array
items:
type: object
required:
- databases
/manager/databases/metrics:
post:
summary: Submit database metrics in bulk
operationId: managerCreateDatabaseMetrics
tags:
- manager
description: 'Submit resource metrics for dedicated databases in bulk. Called periodically
by Edge after aggregating pushes from in-pod metrics agents. Accepts both
gauge values (cpu%, memory%, storage, connections, qps, iops) and counter
deltas (inbound/outbound bytes, cpu milliseconds) which edge has already computed
against previous-value caches in Redis.'
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: databases
demo: manager/create-database-metrics.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
requestBody:
content:
application/json:
schema:
type: object
properties:
projectIds:
description: Project IDs (parallel array).
type: array
items:
type: string
databaseIds:
description: Database IDs (parallel array).
type: array
items:
type: string
ordinals:
description: 'StatefulSet pod ordinals (parallel array). A stable per-node identity, not a role: ordinal 0 is the first member created, and a failover can leave the primary on any ordinal. Carried on each gauge and on the resource sample as its ordinal dimension so per-node series stay distinct. Empty defaults every sample to ordinal 0.'
type: array
default: []
items:
type: integer
cpuPercents:
description: CPU usage percentages.
type: array
default: []
items:
type: number
format: double
memoryPercents:
description: Memory usage percentages.
type: array
default: []
items:
type: number
format: double
storageUsedBytes:
description: Storage used in bytes.
type: array
default: []
items:
type: integer
connectionsActive:
description: Active connection counts.
type: array
default: []
items:
type: integer
qps:
description: Queries per second.
type: array
default: []
items:
type: number
format: double
iopsRead:
description: Read IOPS.
type: array
default: []
items:
type: number
format: double
iopsWrite:
description: Write IOPS.
type: array
default: []
items:
type: number
format: double
inboundBytesDeltas:
description: Inbound network bytes since previous sample.
type: array
default: []
items:
type: integer
outboundBytesDeltas:
description: Outbound network bytes since previous sample.
type: array
default: []
items:
type: integer
cpuMillisecondsDeltas:
description: CPU time in milliseconds since previous sample.
type: array
default: []
items:
type: integer
required:
- projectIds
- databaseIds
/manager/databases/{databaseId}/event:
post:
summary: Create a database lifecycle event
operationId: managerCreateDatabaseEvent
tags:
- manager
description: 'Creates a database lifecycle event for webhook, function, and realtime delivery, or
executes command events such as start and spin-down.
Called by Edge to notify Cloud of database lifecycle changes such as provisioning,
failover, backup completion, etc.'
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: databases
demo: manager/create-database-event.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: databaseId
description: Database ID
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
event:
description: Event name (e.g. start, spin-down, provision.completed, failover.completed). Customer delivery is the matching resource create/update/delete, not this opcode.
type: string
example: <EVENT>
data:
description: Additional event data. Start events may include projectId to scope tenant-reused database IDs.
type: object
default: {}
example: {}
required:
- event
/manager/domain:
get:
summary: Find the DNS details for given domain.
operationId: managerGetDomain
tags:
- manager
description: Retrieves DNS details for a given domain.
responses:
'200':
description: ManagerDomain
content:
application/json:
schema:
$ref: '#/components/schemas/managerDomain'
deprecated: false
x-appwrite:
group: null
demo: manager/get-domain.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: domain
description: Domain name
required: true
schema:
type: string
example: example.com
in: query
/manager/domains/records:
get:
summary: Find the DNS details for given domain.
operationId: managerGetDNSRecords
tags:
- manager
description: Retrieves DNS records for a given domain.
responses:
'200':
description: DNS records list
content:
application/json:
schema:
$ref: '#/components/schemas/dnsRecordsList'
deprecated: false
x-appwrite:
group: null
demo: manager/get-dns-records.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: domain
description: Domain name
required: true
schema:
type: string
example: example.com
in: query
/manager/domains/{domain}/zone:
get:
summary: Retrieve the DNS zone file for the given domain.
operationId: managerGetDomainZone
tags:
- manager
description: Retrieves the DNS zone file for a given domain.
responses:
'200':
description: Text
content:
text/plain:
schema:
type: string
deprecated: false
x-appwrite:
group: null
demo: manager/get-domain-zone.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: domain
description: Domain to retrieve the DNS zone file for.
required: true
schema:
type: string
example: example.com
in: path
/manager/events:
post:
summary: Create a new event for the manager using CloudEvents specification
operationId: managerCreateEvent
tags:
- manager
description: Creates a new event using CloudEvents specification for manager operations.
responses:
'204':
description: No content
deprecated: false
x-appwrite:
group: null
demo: manager/create-event.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
requestBody:
content:
application/json:
schema:
type: object
properties:
specversion:
description: CloudEvents spec version
type: string
default: '1.0'
example: <SPECVERSION>
type:
description: Event type that maps to worker. e.g. v1-stats-usage
type: string
example: <TYPE>
source:
description: Event source. e.g. imagine
type: string
default: ''
example: <SOURCE>
subject:
description: Subject of the event, i.e. projectId
type: string
example: <SUBJECT>
id:
description: Unique event ID
type: string
default: ''
example: <ID>
time:
description: Event timestamp in RFC3339 format
type: string
default: ''
example: <TIME>
datacontenttype:
description: Content type of data
type: string
default: application/json
example: <DATACONTENTTYPE>
data:
description: 'Event data containing metrics. e.g. {"metrics": [...]}'
type: object
default: {}
example: {}
required:
- type
- subject
- data
/manager/projects/{projectId}/databases/{databaseId}:
get:
summary: Get database routing info
operationId: managerGetDatabase
tags:
- manager
description: 'Retrieves database routing information for Edge TCP proxy.
Returns hostname, port, engine, status, and backend type.'
responses:
'200':
description: ManagerDatabase
content:
application/json:
schema:
$ref: '#/components/schemas/managerDatabase'
deprecated: false
x-appwrite:
group: databases
demo: manager/get-database.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: projectId
description: Project ID that owns the database
required: true
schema:
type: string
example: <PROJECT_ID>
in: path
- name: databaseId
description: Database ID
required: true
schema:
type: string
example: <DATABASE_ID>
in: path
/manager/projects/{projectId}/keys:
post:
summary: Get project key authorization data
operationId: managerGetProjectKey
tags:
- manager
description: Validates a project API key secret and returns the project ID and scopes for Edge.
responses:
'200':
description: ManagerProjectKey
content:
application/json:
schema:
$ref: '#/components/schemas/managerProjectKey'
deprecated: false
x-appwrite:
group: projects
demo: manager/get-project-key.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: projectId
description: Project ID that owns the API key.
required: true
schema:
type: string
example: <PROJECT_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
apiKey:
description: Project API key secret.
type: string
example: <API_KEY>
required:
- apiKey
/manager/projects/{projectId}/user:
post:
summary: Resolve a user JWT to a project user
operationId: managerGetProjectUser
tags:
- manager
description: 'Decodes a user JWT and confirms the resulting user belongs to the
project, returning their ID. Used by the edge router to key WAF rate
limits on the authenticated user without holding the signing key: the
JWT is verified here, on cloud, where _APP_OPENSSL_KEY_V1 lives.'
responses:
'200':
description: ManagerProjectUser
content:
application/json:
schema:
$ref: '#/components/schemas/managerProjectUser'
deprecated: false
x-appwrite:
group: projects
demo: manager/get-project-user.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: projectId
description: Project ID
required: true
schema:
type: string
example: <PROJECT_ID>
in: path
requestBody:
content:
application/json:
schema:
type: object
properties:
jwt:
description: User JWT issued by the Appwrite API.
type: string
example: <JWT>
required:
- jwt
/manager/projects/{projectId}/waf-rules:
get:
summary: List enabled WAF rules for a project.
operationId: managerListProjectWafRules
tags:
- manager
description: Lists enabled WAF rules for a project.
responses:
'200':
description: Manager WAF rule list
content:
application/json:
schema:
$ref: '#/components/schemas/managerWafRuleList'
deprecated: false
x-appwrite:
group: null
demo: manager/list-project-waf-rules.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: projectId
description: Project ID
required: true
schema:
type: string
example: <PROJECT_ID>
in: path
- name: total
description: When set to false, the total count returned will be 0 and will not be calculated.
required: false
schema:
type: boolean
example: false
default: true
in: query
/manager/rule:
get:
summary: Find the deployment rule for a given domain.
operationId: managerGetRule
tags:
- manager
description: Retrieves the deployment rule for a given domain.
responses:
'200':
description: Rule
content:
application/json:
schema:
$ref: '#/components/schemas/managerRule'
deprecated: false
x-appwrite:
group: null
demo: manager/get-rule.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
packaging: false
public: true
parameters:
- name: domain
description: Domain name
required: true
schema:
type: string
example: example.com
in: query
/manager/users/status:
patch:
summary: Update a user status by ID or email
operationId: managerUpdateUserStatus
tags:
- manager
description: Updates a console user status using a user ID or email address.
responses:
'200':
description: User
content:
application/json:
schema:
$ref: '#/components/schemas/user'
deprecated: false
x-appwrite:
group: users
demo: manager/update-user-status.md
rate-limit: 0
rate-time: 3600
rate-key: url:{url},ip:{ip}
scope: ''
platforms:
- manager
- console
packaging: false
public: true
requestBody:
content:
application/json:
schema:
type: object
properties:
userId:
description: User ID.
type: string
default: ''
example: <USER_ID>
email:
description: User email address.
type: string
default: ''
example: <EMAIL>
status:
description: User status. Set to `false` to block and `true` to unblock.
type: boolean
example: false
reason:
description: Optional reason when blocking a user. Accepted for parity with the CLI task but not persisted.
type: stri
# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/appwrite/refs/heads/main/openapi/appwrite-manager-api-openapi.yml