Service Usage
List a local project's service catalog and enable or disable services in its recorded configuration.
Plan: Free10 of 10 methods implemented
Enabling a service records configuration: it doesn't install a missing emulator package, change your Vera plan or provision Google Cloud resources.
Example checked on Vera 1.2.2, 8 November 2026. Each coverage note names its own evidence and date.
Connect
Section titled “Connect”Start Vera as in Get started, then run these in a terminal of their own. They use Google Cloud’s address on your machine: if you published another host port, use that one.
export VERA_ENDPOINT="http://localhost:8081"export CLOUDSDK_AUTH_DISABLE_CREDENTIALS=trueexport CLOUDSDK_CORE_PROJECT=example-service-usageexport CLOUDSDK_API_ENDPOINT_OVERRIDES_SERVICEUSAGE="$VERA_ENDPOINT/_gcp/serviceusage/"export CLOUDSDK_API_ENDPOINT_OVERRIDES_CLOUDRESOURCEMANAGER="$VERA_ENDPOINT/_gcp/cloudresourcemanager/"Requests go to $VERA_ENDPOINT/_gcp/serviceusage/v1/. Use v1: in Vera 1.2.0 preview, v1beta1 list and get requests answered 404. Keep the /_gcp/serviceusage/ path in gcloud’s override. With the emulator’s root address instead, some requests work, but gcloud services disable fails with an error that the route is ambiguous. The create, enable, list and disable commands were first checked with gcloud 585.0.0. The whole example, including deleting the project with gcloud and REST, was checked on Vera 1.2.2 on 8 November 2026. Other gcloud commands may call other APIs.
Service Usage needs a project that Cloud Resource Manager knows, unlike Compute Engine, which accepts any project ID. A project that hasn’t been created answers 403: that’s about the project, not your Vera plan. The example creates a disposable local project first. Requests accept a project ID or number, and responses name the project by its number.
Example
Section titled “Example”Create a local project, enable Secret Manager in its service configuration and check that it’s enabled, then clean up. Enabling changes only the project’s recorded configuration: it doesn’t start, add or provision anything.
Both tabs create the same project, example-service-usage, and a deleted project stays as a record marked for deletion. Run one tab, or change the ID before running the other.
gcloud projects create example-service-usage --name="Service Usage example"gcloud services enable secretmanager.googleapis.com --project=example-service-usagegcloud services list --enabled --project=example-service-usage \ --filter='config.name:secretmanager.googleapis.com' --format=jsonCreating the project through gcloud also enables cloudapis.googleapis.com in it, so the list is filtered to Secret Manager. These are the listed service’s selected fields. In name, PROJECT_NUMBER stands for the number the emulator generated for the project, which differs on every run.
[ { "config": { "name": "secretmanager.googleapis.com" }, "name": "projects/PROJECT_NUMBER/services/secretmanager.googleapis.com", "state": "ENABLED" }]To clean up, disable the service and delete the project:
gcloud services disable secretmanager.googleapis.com --project=example-service-usage --quietgcloud projects delete example-service-usage --quietThis example needs curl and Python 3 (python3), which copies a value from one response into the next request.
PROJECT_ID=example-service-usageCRM="$VERA_ENDPOINT/_gcp/cloudresourcemanager/v1"
curl --fail --silent --show-error -X POST "$CRM/projects" \ -H 'Content-Type: application/json' \ -d '{"projectId":"example-service-usage","name":"Service Usage example"}' \ -o project-operation.jsonOPERATION=$(python3 -c 'import json; print(json.load(open("project-operation.json"))["name"])')curl --fail --silent --show-error "$CRM/$OPERATION"
PROJECT_NUMBER=$(curl --fail --silent --show-error "$CRM/projects/$PROJECT_ID" | \ python3 -c 'import json,sys; print(json.load(sys.stdin)["projectNumber"])')BASE="$VERA_ENDPOINT/_gcp/serviceusage/v1/projects/$PROJECT_NUMBER/services"
curl --fail --silent --show-error -X POST "$BASE/secretmanager.googleapis.com:enable" \ -H 'Content-Type: application/json' -d '{}' -o enable-operation.jsonOPERATION=$(python3 -c 'import json; print(json.load(open("enable-operation.json"))["name"])')curl --fail --silent --show-error "$VERA_ENDPOINT/_gcp/serviceusage/v1/$OPERATION"curl --fail --silent --show-error "$BASE/secretmanager.googleapis.com"The project’s creation and the enable request each return an operation, saved to a JSON file and then polled. The service’s state changes at once. A new enable operation reports done: false at first, then finishes when polled. Enabling a service that’s already enabled can return a finished operation that changes nothing. Operation names differ on every run.
The last request returns the service. These are its selected fields. PROJECT_NUMBER stands for the number the emulator generated for the project, which differs on every run.
{ "name": "projects/PROJECT_NUMBER/services/secretmanager.googleapis.com", "config": { "name": "secretmanager.googleapis.com" }, "state": "ENABLED"}To clean up, disable the service, delete the project and remove the saved operations:
curl --fail --silent --show-error -X POST "$BASE/secretmanager.googleapis.com:disable" \ -H 'Content-Type: application/json' -d '{}'curl --fail --silent --show-error -X DELETE "$CRM/projects/$PROJECT_ID"rm project-operation.json enable-operation.jsonSupported features
Section titled “Supported features”- A service catalog for each project Resource Manager knows: read and list services, with whether each is enabled or disabled.
- Enabling and disabling services in a project’s configuration, one at a time or several with
batchEnable, and reading several withbatchGet. - Operations for changes: get, list, delete and cancel. They’re local operation records, not Google Cloud jobs.
Limitations
Section titled “Limitations”The main limits are below. A few more apply to every service, and the API coverage notes cover smaller differences.
- No real activation. Enabling a service activates no Google Cloud API, provisions nothing and bills nothing.
- Enabled isn’t coverage. The catalog names services beyond the ones Vera emulates, so a service being enabled says nothing about what the emulator implements. Each service’s page gives that.
- No plan or release changes. Service Usage state doesn’t grant Pro access, and enabling a service doesn’t add one that Vera leaves out.
- No enforcement shown. Testing didn’t establish that disabling a service blocks requests to that service’s emulator, so don’t rely on it either way.
- Projects must exist. Service Usage answers
403for a project that Resource Manager doesn’t know, even when other services accept the project ID.
API coverage
Section titled “API coverage”Every method in Google Cloud's published v1 API (discovery document, revision 20261022), and whether the emulator implements it. Known differences are from testing on 5 November 2026. Notes marked Local observation without a build or date are from Vera 1.2.0 preview, on 5 November 2026. What the statuses mean
No resource or method matches .
Try part of a name, such as cancel, or .
operations
4 of 4 implemented
| Method | Status | Notes |
|---|---|---|
| cancel | Implemented | Local observation: operations are local records of enable and disable requests, not Google Cloud jobs. |
| delete | Implemented | Local observation: operations are local records of enable and disable requests, not Google Cloud jobs. |
| get | Implemented | Local observation: a new enable or disable operation reported done: false, then finished when polled. The service's state had already changed. |
| list | Implemented | Local observation: operations are local records of enable and disable requests, not Google Cloud jobs. |
services
6 of 6 implemented
| Method | Status | Notes |
|---|---|---|
| batch | Implemented | Local observation: records the services as enabled in the project's configuration, without activating or provisioning anything. |
| batch | Implemented | |
| disable | Implemented | Local observation: records the service as disabled. Testing didn't establish that this blocks requests to that service's emulator. |
| enable | Implemented | Local observation: records the service as enabled in the project's configuration, without activating, adding or provisioning anything. Enabling a service that's already enabled can return a finished operation that changes nothing. |
| get | Implemented | Local observation: the project must exist in Cloud Resource Manager, or the request answers 403. Accepts a project ID or number, and names the project by its number. |
| list | Implemented | Local observation: the catalog names services beyond the ones Vera emulates. The project must exist in Cloud Resource Manager. |