generated: '2026-08-13' method: searched source: https://developers.google.com/marketing-platform/devguides/api/admin/v1/rest derived_from: - openapi/google-marketing-platform-v1alpha-discovery.json - grpc/google-marketing-platform-marketingplatform-admin.proto - grpc/google-marketing-platform-resources.proto - grpc/google-marketing-platform-grpc-service-config.json note: >- This API follows the Google API Design Guide (AIP) conventions rather than a bespoke house style. Every convention below is evidenced from the provider's own Discovery Document, protos, or docs pages — nothing is assumed from the general Google pattern without a match in this API's own artifacts. design_guide: name: Google API Design Guide (AIP) url: https://google.aip.dev/ evidence: >- Resource-oriented method names (get/list/create/delete plus custom :setPropertyServiceLevel, :reportPropertyUsage, :findSalesPartnerManagedClients), google.api.resource annotations with name patterns, google.api.method_signature options, and google.api.field_behavior REQUIRED/OPTIONAL markers throughout the protos. authentication: style: oauth2-bearer header: 'Authorization: Bearer ' flows: [authorizationCode] authorization_endpoint: https://accounts.google.com/o/oauth2/v2/auth token_endpoint: https://oauth2.googleapis.com/token application_default_credentials: true adc_command: >- gcloud auth application-default login --scopes="https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/marketingplatformadmin.analytics.read" quota_project_required: true quota_project_note: >- "The Google Marketing Platform Admin API requires a quota project, which is not set by default." — quickstart. A caller that authenticates correctly but never sets a quota project will still fail; this is the single most common first-call trap on this API. detail: authentication/google-marketing-platform-authentication.yml scopes: scopes/google-marketing-platform-scopes.yml resource_naming: style: aip-122-resource-names patterns: - resource: Organization pattern: organizations/{organization} type: marketingplatformadmin.googleapis.com/Organization - resource: AnalyticsAccountLink pattern: organizations/{organization}/analyticsAccountLinks/{analytics_account_link} type: marketingplatformadmin.googleapis.com/AnalyticsAccountLink - resource: Analytics Account (external reference) pattern: accounts/{account} type: analyticsadmin.googleapis.com/Account note: >- AnalyticsAccountLink.analytics_account is a cross-service resource reference into the Google Analytics Admin API, not a local id. note: >- Identifiers are full relative resource names, never bare ids. A caller passes "organizations/12345", not "12345". Every {+name} / {+parent} path parameter in the Discovery Document uses the reserved-expansion form, meaning the slashes inside the resource name are NOT percent-encoded. pagination: style: page-token request_params: - name: pageSize type: integer note: >- Maximum items to return. The service may return fewer than the requested value. - name: pageToken type: string note: >- Opaque token from a previous response's nextPageToken. When paging, all other parameters must match the call that produced the token. response_fields: - name: nextPageToken note: Absent or empty when there are no further pages. applies_to: - listOrganizations - listAnalyticsAccountLinks - findSalesPartnerManagedClients idempotency: supported: false header: null note: >- No idempotency key header, no client-supplied request id, and no idempotency section anywhere in this API's documentation, Discovery Document, or protos. DELETE on an AnalyticsAccountLink is naturally idempotent by resource-name semantics, and setPropertyServiceLevel is a declarative set rather than an increment, but createAnalyticsAccountLink has no replay protection: a retried create can produce a duplicate link. Recorded as an honest absence — no Idempotency pointer is wired into apis.yml for this provider. field_masks: supported: false note: >- No update/patch method exists on this API, so there is no updateMask surface. The only mutation shapes are create, delete and two custom declarative POSTs. error_envelope: format: google-json-error spec: https://google.aip.dev/193 rfc9457: false shape: error: code: HTTP status code as an integer message: Human-readable message status: Canonical google.rpc.Code enum name errors: Legacy array carrying domain, reason and message details: Optional typed google.rpc detail payloads note: >- This is the standard Google JSON error envelope, NOT RFC 9457 application/problem+json. The machine-readable reason an agent must branch on lives at error.errors[].reason (e.g. rateLimitExceeded) or at error.status. See errors/google-marketing-platform-problem-types.yml. rate_limit_signaling: headers: none status_on_exhaustion: 403 reason_on_exhaustion: rateLimitExceeded detail: rate-limits/google-marketing-platform-rate-limits.yml note: >- No RateLimit-*, X-RateLimit-* or Retry-After headers are documented or returned. Exhaustion is a 403 with a reason string in the body, which is unusual enough to break naive agent retry logic that keys on 429. retry: client_policy_published: true source: grpc/google-marketing-platform-grpc-service-config.json timeout: 60s max_attempts: 5 initial_backoff: 1s max_backoff: 60s backoff_multiplier: 1.3 retryable_status_codes: [UNAVAILABLE, UNKNOWN] note: >- This is the retry policy Google bakes into its own generated gRPC clients. RESOURCE_EXHAUSTED is deliberately not retryable, so quota errors surface to the caller rather than being absorbed by the SDK. request_tracing: request_id_header: null note: No request-id or trace header is documented for this API. system_parameters: note: >- The Discovery Document declares Google's standard system query parameters on every method. parameters: - alt - callback - fields - key - access_token - oauth_token - prettyPrint - quotaUser - uploadType - upload_protocol - $.xgafv field_selection: param: fields note: >- Partial-response field selector; the AIP equivalent of sparse fieldsets. Reduces payload by naming the response subfields to return. transport: protocols: [rest, grpc] rest_base: https://marketingplatformadmin.googleapis.com grpc_service: google.marketingplatform.admin.v1alpha.MarketingplatformAdminService content_type: application/json note: >- Both surfaces are first-party and generated from the same protos. The GAPIC client libraries in packages/ speak gRPC; the Discovery-generated clients speak REST. cross_links: errors: errors/google-marketing-platform-problem-types.yml lifecycle: lifecycle/google-marketing-platform-lifecycle.yml authentication: authentication/google-marketing-platform-authentication.yml rate_limits: rate-limits/google-marketing-platform-rate-limits.yml data_model: data-model/google-marketing-platform-data-model.yml