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.

Operations 19

POST /manager/blocks Create a new resource block for a project #
DELETE /manager/blocks Delete resource blocks for a project #
GET /manager/blocks/{projectId} List all resource blocks for a project #
DELETE /manager/cache Clear internal cache #
PATCH /manager/database/{databaseId} Update database status (used by Edge) #
POST /manager/databases/activity Sync database last-active timestamps in bulk #
POST /manager/databases/metrics Submit database metrics in bulk #
POST /manager/databases/{databaseId}/event Create a database lifecycle event #
GET /manager/domain Find the DNS details for given domain. #
GET /manager/domains/records Find the DNS details for given domain. #
GET /manager/domains/{domain}/zone Retrieve the DNS zone file for the given domain. #
POST /manager/events Create a new event for the manager using CloudEvents specification #
GET /manager/projects/{projectId}/databases/{databaseId} Get database routing info #
POST /manager/projects/{projectId}/keys Get project key authorization data #
POST /manager/projects/{projectId}/user Resolve a user JWT to a project user #
GET /manager/projects/{projectId}/waf-rules List enabled WAF rules for a project. #
GET /manager/rule Find the deployment rule for a given domain. #
PATCH /manager/users/status Update a user status by ID or email #
POST /manager/verify-s3-signature Verify an AWS SigV4 signature against a project's API keys. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/appwrite-manager-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

appwrite-manager-api-openapi.yml Raw ↑
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