Skip to content

Supported services

Legend: ✅ supported · 🚧 partial · ⬜ planned

Cloud Storage (storage)

Client: google-cloud-storage · Transport: JSON API (default) · Backend: global namespace.

Operation Status
Create / get / list / delete bucket ✅
Bucket metadata (location, labels, versioning) 🚧
Upload - simple (media) ✅
Upload - multipart ✅
Upload - resumable (single + chunked) ✅
Download (full) ✅
Download with Range ✅
Object metadata get / patch ✅
List objects (prefix + delimiter) ✅
Delete object ✅
Copy / rewrite object ✅
Bucket IAM policy (get / set / test) ✅
HMAC keys (create / list / get / update / delete) ✅
Signed URLs, object ACLs, notifications ⬜

Secret Manager (secretmanager)

Client: google-cloud-secret-manager · Transport: gRPC (default), forced to REST during a mock scope (no code change needed) · Backend: per-project.

Operation Status
Create / get / list / delete secret ✅
Update secret (labels) 🚧
Add / get / list versions ✅
Access version (incl. latest) ✅
Enable / disable / destroy version ✅
IAM policy ⬜

Pub/Sub (pubsub)

Client: google-cloud-pubsub (sync, gRPC via PUBSUB_EMULATOR_HOST) and gcloud.aio.pubsub (async, aiohttp/REST via the aiohttp interceptor) · Backend: global namespace, shared between both transports. Use the normal clients with no changes.

Operation Status
Create / get / list / delete topic ✅
Create / get / list / delete subscription ✅
Publish (with attributes, fan-out to all subs) ✅
Pull / acknowledge ✅
Async client (gcloud.aio.pubsub) ✅
Nack via modifyAckDeadline(0) (redelivery) ✅
Streaming pull (subscribe()) ⬜
Ack-deadline expiry / retention ⬜
IAM, schemas, snapshots, seek ⬜

BigQuery (bigquery)

Client: google-cloud-bigquery · Transport: REST/JSON (default) · Backend: per-project.

Operation Status
Create / get / list / delete dataset ✅
Create / get / list / delete table (with schema) ✅
Streaming inserts (insert_rows_json / insertAll) ✅
Read rows (list_rows / tabledata.list) ✅
SQL query execution (client.query(...)) ✅ (via drongo[bigquery])
Load/extract/copy jobs, routines, views ⬜

Cloud Tasks (cloudtasks)

Client: google-cloud-tasks · Transport: gRPC (default), forced to REST during a mock scope (no emulator env var exists) · Backend: per-project. Use the normal client with no transport argument.

Operation Status
Create / get / list / delete queue ✅
Pause / resume / purge queue ✅
Create / get / list / delete task ✅
run_task (marks dispatched) ✅
Actual task dispatch / delivery to targets ⬜ (no real network I/O)
Retry config, rate limits, IAM ⬜

Note: because the client is forced onto REST, errors surface as REST-style google.api_core.exceptions (e.g. a duplicate queue raises Conflict, not the gRPC AlreadyExists). NotFound is the same for both.

Cloud Run Jobs (cloudrun)

Client: google-cloud-run (run_v2.JobsClient / ExecutionsClient) · Transport: gRPC (default), forced to REST during a mock scope · Backend: per-project. Use the normal clients with no transport argument.

Operation Status
Create / get / list / delete job ✅
run_job (creates an execution) ✅
Executions: get / list / delete ✅
Long-running operations (.result()) ✅ (completed synchronously)
Actual container execution ⬜ (no real compute)
Cloud Run services (serving), revisions, traffic ⬜

Errors surface as REST-style exceptions (a duplicate job raises Conflict).

Resource Manager (resourcemanager)

Client: google-cloud-resource-manager (resourcemanager_v3.ProjectsClient) · Transport: gRPC (default), forced to REST during a mock scope · Backend: global namespace. Use the normal client with no transport argument. Scoped to the Projects API.

Operation Status
Create / get project ✅
Get by project_id or projects/<number> ✅
List projects (by parent) ✅
Search projects ✅
Delete / undelete project ✅
Update project (display name, labels) ✅
Move project, IAM policy, tags ⬜
Folders, Organizations ⬜

Mutations are long-running operations completed synchronously (.result() returns immediately). A duplicate project raises Conflict.

Firestore (firestore)

Client: google-cloud-firestore · Transport: gRPC (default), served by an in-process gRPC emulator via FIRESTORE_EMULATOR_HOST · Backend: global namespace. Use the normal client with no transport argument.

Operation Status
Document set / get / update / delete ✅
set(merge=True), collection.add() (auto id) ✅
Typed values (str/int/float/bool/null/bytes/array/map/timestamp) ✅
Subcollections ✅
Queries: where, order_by, limit, offset ✅
Composite AND/OR, in / array_contains ✅
Transactions, batched writes ⬜
Real-time listeners (on_snapshot) ⬜
Aggregation / collection-group queries ⬜

IAM & Service Accounts (iam)

Client: google-cloud-iam (iam_admin_v1.IAMClient) · Transport: gRPC only, served by an in-process gRPC emulator with an injected transport (no REST transport or emulator env var exists) · Backend: per-project. Use the normal client with no transport argument.

Operation Status
Create / get / list / delete service account ✅
Get by email or unique id ✅
Enable / disable service account ✅
Create / list / get / delete key ✅
Update (display name / description) ⬜
Roles, IAM policy get/set ⬜
SignBlob / SignJwt ⬜

Cloud Logging (logging)

Client: google-cloud-logging (logging.Client) · Transport: gRPC only, served by an in-process gRPC emulator with an injected transport · Backend: global namespace. Use the normal client with no transport argument.

Operation Status
Write entries (log_text / log_struct / log_proto) ✅
List entries (by resource_names) ✅
Ordering (ascending / descending) ✅
Delete a log; list logs ✅
Advanced filter language ⬜ (entries returned unfiltered)
Sinks / exports, log-based metrics, tail ⬜

Cloud KMS (kms)

Client: google-cloud-kms (kms.KeyManagementServiceClient) · Transport: gRPC (default), forced to REST during a mock scope · Backend: per-project. Use the normal client with no transport argument.

Operation Status
Create / get / list key ring ✅
Create / get / list crypto key ✅
Encrypt / decrypt (with AAD) ✅ (reversible mock, not real crypto)
Crypto-key versions, rotation ⬜
Asymmetric sign/verify, MAC, raw encrypt ⬜
IAM policy, import jobs ⬜

Cloud Scheduler (cloudscheduler)

Client: google-cloud-scheduler (scheduler_v1.CloudSchedulerClient) · Transport: gRPC (default), forced to REST during a mock scope · Backend: per-project. Use the normal client with no transport argument.

Operation Status
Create / get / list / delete job ✅
Pause / resume / update ✅
run_job (+ executable handler) ✅
Actual cron scheduling / automatic firing ⬜ (no real clock)

Cloud Functions (cloudfunctions)

Client: google-cloud-functions (functions_v2.FunctionServiceClient) · Transport: gRPC (default), forced to REST during a mock scope · Backend: per-project. Use the normal client with no transport argument. Scoped to the 2nd-gen admin API.

Operation Status
Create / get / list / delete function (LRO) ✅
Update function (LRO) ✅
generate_upload_url ✅ (stub)
Synchronous invoke ⬜ (2nd gen has no invoke RPC)

Memorystore for Redis (memorystore)

Client: google-cloud-redis (redis_v1.CloudRedisClient) · Transport: gRPC (default), forced to REST during a mock scope · Backend: per-project. Use the normal client with no transport argument. Scoped to instance administration.

Operation Status
Create / get / list / delete instance (LRO) ✅
Update instance (LRO) ✅
Failover / export / import / upgrade ⬜
Redis data plane ⬜ (use a real Redis)

Datastore (datastore)

Client: google-cloud-datastore (datastore.Client) · Transport: gRPC (default), served by an in-process gRPC emulator via DATASTORE_EMULATOR_HOST · Backend: per-project. Use the normal client with no transport argument.

Operation Status
put / get / delete (Commit / Lookup) ✅
Named + auto-id keys (AllocateIds) ✅
Typed values (str/int/float/bool/null/bytes/array/timestamp/key) ✅
Queries: kind, filters, order, limit, offset ✅
Composite AND/OR, IN/NOT_IN ✅
Transactions (accepted, completed synchronously) ✅
Ancestor queries, projections, cursors, aggregation ⬜

Bigtable (bigtable)

Client: google-cloud-bigtable (bigtable.Client) · Transport: gRPC (default), served by an in-process gRPC emulator via BIGTABLE_EMULATOR_HOST · Backend: per-project. Use the normal client with admin=True.

Operation Status
Create / get / list / delete table, modify families ✅
set_cell, versioned cells, deletes ✅
read_row, read_rows (ranges, limit) ✅
Batch mutate_rows, sample_row_keys ✅
Read filters, check_and_mutate_row ⬜
Instance admin, change streams, aggregations ⬜

Vertex AI (vertexai)

Client: google-cloud-aiplatform (aiplatform_v1 service clients) · Transport: gRPC (default), forced to REST during a mock scope · Backend: per-project. Use the normal clients with no transport argument; pass the regional endpoint as usual. Scoped to the control plane.

Operation Status
Datasets: create / get / list / delete (LRO) ✅
Endpoints: create / get / list / delete (LRO) ✅
Deploy / undeploy model (LRO) ✅
Online prediction (predict, via a handler) ✅
Models: upload / get / list / delete (LRO) ✅
Custom jobs: create / get / list / cancel / delete ✅
Batch prediction jobs: create / get / list / cancel / delete ✅
Raw predict / explain, pipeline / tuning jobs, feature store, index ⬜

Cloud Monitoring (monitoring)

Client: google-cloud-monitoring (monitoring_v3 service clients) · Transport: gRPC only, served by an in-process gRPC emulator with an injected transport · Backend: per-project. Use the normal clients with no transport argument.

Operation Status
Metric descriptors: create / get / list / delete ✅
Time series: write (create_time_series) ✅
Time series: read (list_time_series, filter + interval) ✅
Aggregation (scalar align/reduce + distribution merge/percentile) ✅
Alert policies: create / get / list / update / delete ✅
Notification channels: create / get / list / update / delete ✅
Uptime checks, groups, snoozes, services + SLOs ✅
MQL query (separate QueryService) ⬜

Document AI (documentai)

Client: google-cloud-documentai (documentai_v1) · Transport: gRPC (default), forced to REST during a mock scope · Backend: per-project. Use the normal client with no transport argument; pass the regional endpoint as usual.

Operation Status
Processors: create / get / list / delete (LRO) ✅
Enable / disable processor (LRO) ✅
Process document (process_document, via a handler) ✅
Batch process (batch_process_documents, LRO) ✅
Processor types: fetch / list / get ✅
Processor versions, human review, evaluations ⬜

Planned

Next up (prioritized): Artifact Registry · Storage Transfer.

Also planned: Cloud Spanner · Firestore transactions & listeners · IAM roles & policies · KMS key versions · Bigtable read filters. See the roadmap and open a service request.