{
  "description": "A unified ingestion API for data partners, agencies and advertisers to connect first-party data across Google advertising products.",
  "servicePath": "",
  "ownerName": "Google",
  "kind": "discovery#restDescription",
  "fullyEncodeReservedExpansion": true,
  "batchPath": "batch",
  "canonicalName": "Data Manager",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/datamanager": {
          "description": "See, edit, create, import, or delete your customer data in Google Ads, Google Marketing Platform (Campaign Manager 360, Search Ads 360, Display & Video 360), and Google Analytics"
        },
        "https://www.googleapis.com/auth/datamanager.partnerlink": {
          "description": "View, create, or delete your partner links in Google Ads, Marketing Platform (Campaign Manager 360, Search Ads 360, Display & Video 360), and Analytics"
        }
      }
    }
  },
  "version": "v1",
  "version_module": true,
  "ownerDomain": "google.com",
  "schemas": {
    "RemoveAudienceMembersStatus": {
      "type": "object",
      "properties": {
        "mobileDataRemovalStatus": {
          "$ref": "RemoveMobileDataStatus",
          "description": "The status of the mobile data removal from the destination."
        },
        "userDataRemovalStatus": {
          "$ref": "RemoveUserDataStatus",
          "description": "The status of the user data removal from the destination."
        },
        "ppidDataRemovalStatus": {
          "description": "The status of the ppid data removal from the destination.",
          "$ref": "RemovePpidDataStatus"
        },
        "userIdDataRemovalStatus": {
          "$ref": "RemoveUserIdDataStatus",
          "description": "The status of the user id data removal from the destination."
        },
        "pairDataRemovalStatus": {
          "description": "The status of the pair data removal from the destination.",
          "$ref": "RemovePairDataStatus"
        }
      },
      "description": "The status of the remove audience members request.",
      "id": "RemoveAudienceMembersStatus"
    },
    "GcpWrappedKeyInfo": {
      "description": "Information about the Google Cloud Platform wrapped key.",
      "type": "object",
      "properties": {
        "keyType": {
          "description": "Required. The type of algorithm used to encrypt the data.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified key type. Should never be used.",
            "Algorithm XChaCha20-Poly1305"
          ],
          "enum": [
            "KEY_TYPE_UNSPECIFIED",
            "XCHACHA20_POLY1305"
          ]
        },
        "wipProvider": {
          "type": "string",
          "description": "Required. The [Workload Identity](//cloud.google.com/iam/docs/workload-identity-federation) pool provider required to use KEK."
        },
        "kekUri": {
          "description": "Required. Google Cloud Platform [Cloud Key Management Service resource ID](//cloud.google.com/kms/docs/getting-resource-ids). Should be in the format of `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key}` or `gcp-kms://projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key}`",
          "type": "string"
        },
        "encryptedDek": {
          "description": "Required. The base64 encoded encrypted data encryption key.",
          "type": "string"
        }
      },
      "id": "GcpWrappedKeyInfo"
    },
    "ListUserListDirectLicensesResponse": {
      "id": "ListUserListDirectLicensesResponse",
      "type": "object",
      "properties": {
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        },
        "userListDirectLicenses": {
          "description": "The licenses for the given user list in the request.",
          "items": {
            "$ref": "UserListDirectLicense"
          },
          "type": "array"
        }
      },
      "description": "Response from the ListUserListDirectLicensesRequest."
    },
    "AddressInfo": {
      "id": "AddressInfo",
      "type": "object",
      "properties": {
        "givenName": {
          "description": "Required. Given (first) name of the user, all lowercase, with no punctuation, no leading or trailing whitespace, and hashed as SHA-256.",
          "type": "string"
        },
        "regionCode": {
          "description": "Required. The 2-letter region code in ISO-3166-1 alpha-2 of the user's address.",
          "type": "string"
        },
        "familyName": {
          "type": "string",
          "description": "Required. Family (last) name of the user, all lowercase, with no punctuation, no leading or trailing whitespace, and hashed as SHA-256."
        },
        "postalCode": {
          "type": "string",
          "description": "Required. The postal code of the user's address."
        }
      },
      "description": "Address information for the user."
    },
    "RemoveAudienceMembersResponse": {
      "id": "RemoveAudienceMembersResponse",
      "description": "Response from the RemoveAudienceMembersRequest.",
      "type": "object",
      "properties": {
        "requestId": {
          "type": "string",
          "description": "The auto-generated ID of the request."
        }
      }
    },
    "ListUserListGlobalLicensesResponse": {
      "description": "Response from the ListUserListGlobalLicensesRequest.",
      "type": "object",
      "properties": {
        "userListGlobalLicenses": {
          "type": "array",
          "description": "The licenses for the given user list in the request.",
          "items": {
            "$ref": "UserListGlobalLicense"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "id": "ListUserListGlobalLicensesResponse"
    },
    "Location": {
      "id": "Location",
      "type": "object",
      "properties": {
        "regionCodes": {
          "description": "List of ISO 3166-1 alpha-2 region codes.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "description": "The baseline location of the request. Baseline location is on OR-list of ISO 3166-1 alpha-2 region codes of the requested regions."
    },
    "MarketingDataInsight": {
      "type": "object",
      "properties": {
        "attributes": {
          "description": "Insights for values of a given dimension.",
          "items": {
            "$ref": "MarketingDataInsightsAttribute"
          },
          "type": "array"
        },
        "dimension": {
          "type": "string",
          "description": "The dimension to which the insight belongs.",
          "enumDescriptions": [
            "Not specified.",
            "The value is unknown in this version.",
            "An Affinity UserInterest.",
            "An In-Market UserInterest.",
            "An age range.",
            "A gender."
          ],
          "enum": [
            "AUDIENCE_INSIGHTS_DIMENSION_UNSPECIFIED",
            "AUDIENCE_INSIGHTS_DIMENSION_UNKNOWN",
            "AFFINITY_USER_INTEREST",
            "IN_MARKET_USER_INTEREST",
            "AGE_RANGE",
            "GENDER"
          ]
        }
      },
      "description": "Insights for marketing data. This feature is only available to data partners.",
      "id": "MarketingDataInsight"
    },
    "RemoveUserIdDataStatus": {
      "id": "RemoveUserIdDataStatus",
      "description": "The status of the user id data removal from the destination.",
      "type": "object",
      "properties": {
        "userIdCount": {
          "description": "The total count of user ids sent in the removal request. Includes all user ids in the request, regardless of whether they were successfully removed or not.",
          "format": "int64",
          "type": "string"
        },
        "recordCount": {
          "description": "The total count of audience members sent in the removal request. Includes all audience members in the request, regardless of whether they were successfully removed or not.",
          "format": "int64",
          "type": "string"
        }
      }
    },
    "RemovePairDataStatus": {
      "type": "object",
      "properties": {
        "recordCount": {
          "type": "string",
          "description": "The total count of audience members sent in the removal request. Includes all audience members in the request, regardless of whether they were successfully removed or not.",
          "format": "int64"
        },
        "pairIdCount": {
          "type": "string",
          "description": "The total count of pair ids sent in the removal request. Includes all pair ids in the request, regardless of whether they were successfully removed or not.",
          "format": "int64"
        }
      },
      "description": "The status of the pair data removal from the destination.",
      "id": "RemovePairDataStatus"
    },
    "UserListGlobalLicenseCustomerInfo": {
      "id": "UserListGlobalLicenseCustomerInfo",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Identifier. The resource name of the user list global license customer."
        },
        "pricing": {
          "description": "Output only. UserListDirectLicense pricing.",
          "$ref": "UserListLicensePricing",
          "readOnly": true
        },
        "clientAccountId": {
          "readOnly": true,
          "description": "Output only. ID of client customer which the user list is being licensed to.",
          "format": "int64",
          "type": "string"
        },
        "userListId": {
          "description": "Output only. ID of the user list being licensed.",
          "format": "int64",
          "type": "string",
          "readOnly": true
        },
        "userListDisplayName": {
          "description": "Output only. Name of the user list being licensed.",
          "type": "string",
          "readOnly": true
        },
        "historicalPricings": {
          "description": "Output only. Pricing history of this user list license.",
          "items": {
            "$ref": "UserListLicensePricing"
          },
          "type": "array",
          "readOnly": true
        },
        "metrics": {
          "readOnly": true,
          "description": "Output only. Metrics related to this license This field is only populated if the start and end dates are set in the ListUserListGlobalLicenseCustomerInfos call.",
          "$ref": "UserListLicenseMetrics"
        },
        "clientAccountDisplayName": {
          "description": "Output only. Name of client customer which the user list is being licensed to.",
          "type": "string",
          "readOnly": true
        },
        "licenseType": {
          "enum": [
            "USER_LIST_GLOBAL_LICENSE_TYPE_UNSPECIFIED",
            "USER_LIST_GLOBAL_LICENSE_TYPE_RESELLER",
            "USER_LIST_GLOBAL_LICENSE_TYPE_DATA_MART_SELL_SIDE",
            "USER_LIST_GLOBAL_LICENSE_TYPE_DATA_MART_BUY_SIDE"
          ],
          "type": "string",
          "description": "Output only. Product type of client customer which the user list is being licensed to.",
          "readOnly": true,
          "enumDescriptions": [
            "UNSPECIFIED.",
            "Reseller license.",
            "DataMart Sell Side license.",
            "DataMart Buy Side license."
          ]
        },
        "status": {
          "enum": [
            "USER_LIST_LICENSE_STATUS_UNSPECIFIED",
            "USER_LIST_LICENSE_STATUS_ENABLED",
            "USER_LIST_LICENSE_STATUS_DISABLED"
          ],
          "enumDescriptions": [
            "Unknown.",
            "Active status - user list is still being licensed.",
            "Inactive status - user list is no longer being licensed."
          ],
          "readOnly": true,
          "description": "Output only. Status of UserListDirectLicense - ENABLED or DISABLED.",
          "type": "string"
        },
        "clientAccountType": {
          "description": "Output only. Product type of client customer which the user list is being licensed to.",
          "type": "string",
          "enumDescriptions": [
            "Unknown.",
            "Google Ads customer.",
            "Display & Video 360 partner.",
            "Display & Video 360 advertiser.",
            "Google Ad Manager audience link."
          ],
          "readOnly": true,
          "enum": [
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_UNKNOWN",
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_GOOGLE_ADS",
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_DISPLAY_VIDEO_PARTNER",
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_DISPLAY_VIDEO_ADVERTISER",
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_GOOGLE_AD_MANAGER_AUDIENCE_LINK"
          ]
        }
      },
      "description": "Information about a customer of a user list global license. This will automatically be created by the system when a customer purchases a global license."
    },
    "IngestMobileDataStatus": {
      "id": "IngestMobileDataStatus",
      "description": "The status of the mobile data ingestion to the destination containing stats related to the ingestion.",
      "type": "object",
      "properties": {
        "recordCount": {
          "description": "The total count of audience members sent in the upload request for the destination. Includes all audience members in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64",
          "type": "string"
        },
        "mobileIdCount": {
          "type": "string",
          "description": "The total count of mobile ids sent in the upload request for the destination. Includes all mobile ids in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64"
        }
      }
    },
    "MobileIdInfo": {
      "id": "MobileIdInfo",
      "description": "Additional information when `MOBILE_ID` is one of the `upload_key_types`.",
      "type": "object",
      "properties": {
        "keySpace": {
          "enumDescriptions": [
            "Not specified.",
            "The iOS keyspace.",
            "The Android keyspace."
          ],
          "enum": [
            "KEY_SPACE_UNSPECIFIED",
            "IOS",
            "ANDROID"
          ],
          "type": "string",
          "description": "Required. Immutable. The key space of mobile IDs."
        },
        "dataSourceType": {
          "enumDescriptions": [
            "Not specified.",
            "The uploaded data is first-party data.",
            "The uploaded data is from a third-party credit bureau.",
            "The uploaded data is from a third-party voter file.",
            "The uploaded data is third party partner data."
          ],
          "enum": [
            "DATA_SOURCE_TYPE_UNSPECIFIED",
            "DATA_SOURCE_TYPE_FIRST_PARTY",
            "DATA_SOURCE_TYPE_THIRD_PARTY_CREDIT_BUREAU",
            "DATA_SOURCE_TYPE_THIRD_PARTY_VOTER_FILE",
            "DATA_SOURCE_TYPE_THIRD_PARTY_PARTNER_DATA"
          ],
          "type": "string",
          "description": "Optional. Immutable. Source of the upload data."
        },
        "appId": {
          "type": "string",
          "description": "Required. Immutable. A string that uniquely identifies a mobile application from which the data was collected."
        }
      }
    },
    "UserListDirectLicense": {
      "id": "UserListDirectLicense",
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Identifier. The resource name of the user list direct license."
        },
        "pricing": {
          "$ref": "UserListLicensePricing",
          "description": "Optional. UserListDirectLicense pricing."
        },
        "clientAccountId": {
          "type": "string",
          "description": "Immutable. ID of client customer which the user list is being licensed to.",
          "format": "int64"
        },
        "userListId": {
          "description": "Immutable. ID of the user list being licensed.",
          "format": "int64",
          "type": "string"
        },
        "userListDisplayName": {
          "description": "Output only. Name of the user list being licensed. This field is read-only.",
          "type": "string",
          "readOnly": true
        },
        "historicalPricings": {
          "description": "Output only. Pricing history of this user list license. This field is read-only.",
          "items": {
            "$ref": "UserListLicensePricing"
          },
          "type": "array",
          "readOnly": true
        },
        "metrics": {
          "$ref": "UserListLicenseMetrics",
          "description": "Output only. Metrics related to this license This field is read-only and only populated if the start and end dates are set in the ListUserListDirectLicenses call",
          "readOnly": true
        },
        "clientAccountDisplayName": {
          "readOnly": true,
          "description": "Output only. Name of client customer which the user list is being licensed to. This field is read-only.",
          "type": "string"
        },
        "clientAccountType": {
          "type": "string",
          "description": "Immutable. Account type of client customer which the user list is being licensed to.",
          "enumDescriptions": [
            "Unknown.",
            "Google Ads customer.",
            "Display & Video 360 partner.",
            "Display & Video 360 advertiser.",
            "Google Ad Manager audience link."
          ],
          "enum": [
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_UNKNOWN",
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_GOOGLE_ADS",
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_DISPLAY_VIDEO_PARTNER",
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_DISPLAY_VIDEO_ADVERTISER",
            "USER_LIST_LICENSE_CLIENT_ACCOUNT_TYPE_GOOGLE_AD_MANAGER_AUDIENCE_LINK"
          ]
        },
        "status": {
          "description": "Optional. Status of UserListDirectLicense - ENABLED or DISABLED.",
          "type": "string",
          "enumDescriptions": [
            "Unknown.",
            "Active status - user list is still being licensed.",
            "Inactive status - user list is no longer being licensed."
          ],
          "enum": [
            "USER_LIST_LICENSE_STATUS_UNSPECIFIED",
            "USER_LIST_LICENSE_STATUS_ENABLED",
            "USER_LIST_LICENSE_STATUS_DISABLED"
          ]
        }
      },
      "description": "A user list direct license. This feature is only available to data partners."
    },
    "ErrorCount": {
      "description": "The error count for a given error reason.",
      "type": "object",
      "properties": {
        "recordCount": {
          "description": "The count of records that failed to upload for a given reason.",
          "format": "int64",
          "type": "string"
        },
        "reason": {
          "enumDescriptions": [
            "The processing error reason is unknown.",
            "The custom variable is invalid.",
            "The status of the custom variable is not enabled.",
            "The conversion is older than max supported age.",
            "The ad user data is denied, either by the user or in the advertiser default settings.",
            "Advertiser did not give 3P consent for the Ads core platform services.",
            "The overall consent (determined from row level consent, request level consent, and account settings) could not be determined for this user",
            "A conversion with the same GCLID and conversion time already exists in the system.",
            "A conversion with the same order id and conversion action combination was already uploaded.",
            "The gbraid could not be decoded.",
            "The google click ID could not be decoded.",
            "Merchant id contains non-digit characters.",
            "The wbraid could not be decoded.",
            "Internal error.",
            "Enhanced conversions terms are not signed in the destination account.",
            "The event is invalid.",
            "The matched transactions are less than the minimum threshold.",
            "The transactions are less than the minimum threshold.",
            "The event has format error.",
            "The event has a decryption error.",
            "The DEK failed to be decrypted.",
            "The WIP is formatted incorrectly or the WIP does not exist.",
            "The KEK cannot decrypt data because it is the wrong KEK, or it does not exist.",
            "The WIP could not be used because it was rejected by its attestation condition.",
            "The system did not have the permissions needed to access the KEK.",
            "The system failed to authenticate with AWS.",
            "Failed to decrypt the UserIdentifier data using the DEK.",
            "The user attempted to ingest events with an ad identifier that isn't from the operating account's ads.",
            "One-per-click conversion actions cannot be used with BRAIDs."
          ],
          "enum": [
            "PROCESSING_ERROR_REASON_UNSPECIFIED",
            "PROCESSING_ERROR_REASON_INVALID_CUSTOM_VARIABLE",
            "PROCESSING_ERROR_REASON_CUSTOM_VARIABLE_NOT_ENABLED",
            "PROCESSING_ERROR_REASON_EVENT_TOO_OLD",
            "PROCESSING_ERROR_REASON_DENIED_CONSENT",
            "PROCESSING_ERROR_REASON_NO_CONSENT",
            "PROCESSING_ERROR_REASON_UNKNOWN_CONSENT",
            "PROCESSING_ERROR_REASON_DUPLICATE_GCLID",
            "PROCESSING_ERROR_REASON_DUPLICATE_TRANSACTION_ID",
            "PROCESSING_ERROR_REASON_INVALID_GBRAID",
            "PROCESSING_ERROR_REASON_INVALID_GCLID",
            "PROCESSING_ERROR_REASON_INVALID_MERCHANT_ID",
            "PROCESSING_ERROR_REASON_INVALID_WBRAID",
            "PROCESSING_ERROR_REASON_INTERNAL_ERROR",
            "PROCESSING_ERROR_REASON_DESTINATION_ACCOUNT_ENHANCED_CONVERSIONS_TERMS_NOT_SIGNED",
            "PROCESSING_ERROR_REASON_INVALID_EVENT",
            "PROCESSING_ERROR_REASON_INSUFFICIENT_MATCHED_TRANSACTIONS",
            "PROCESSING_ERROR_REASON_INSUFFICIENT_TRANSACTIONS",
            "PROCESSING_ERROR_REASON_INVALID_FORMAT",
            "PROCESSING_ERROR_REASON_DECRYPTION_ERROR",
            "PROCESSING_ERROR_REASON_DEK_DECRYPTION_ERROR",
            "PROCESSING_ERROR_REASON_INVALID_WIP",
            "PROCESSING_ERROR_REASON_INVALID_KEK",
            "PROCESSING_ERROR_REASON_WIP_AUTH_FAILED",
            "PROCESSING_ERROR_REASON_KEK_PERMISSION_DENIED",
            "PROCESSING_ERROR_REASON_AWS_AUTH_FAILED",
            "PROCESSING_ERROR_REASON_USER_IDENTIFIER_DECRYPTION_ERROR",
            "PROCESSING_ERROR_OPERATING_ACCOUNT_MISMATCH_FOR_AD_IDENTIFIER",
            "PROCESSING_ERROR_REASON_ONE_PER_CLICK_CONVERSION_ACTION_NOT_PERMITTED_WITH_BRAID"
          ],
          "type": "string",
          "description": "The error reason of the failed records."
        }
      },
      "id": "ErrorCount"
    },
    "RemoveUserDataStatus": {
      "id": "RemoveUserDataStatus",
      "description": "The status of the user data removal from the destination.",
      "type": "object",
      "properties": {
        "recordCount": {
          "type": "string",
          "description": "The total count of audience members sent in the removal request. Includes all audience members in the request, regardless of whether they were successfully removed or not.",
          "format": "int64"
        },
        "userIdentifierCount": {
          "description": "The total count of user identifiers sent in the removal request. Includes all user identifiers in the request, regardless of whether they were successfully removed or not.",
          "format": "int64",
          "type": "string"
        }
      }
    },
    "TargetNetworkInfo": {
      "type": "object",
      "properties": {
        "eligibleForDisplay": {
          "type": "boolean",
          "description": "Output only. Indicates this user list is eligible for Google Display Network.",
          "readOnly": true
        },
        "eligibleForSearch": {
          "description": "Optional. Indicates if this user list is eligible for Google Search Network.",
          "type": "boolean"
        }
      },
      "description": "Eligibility information for different target networks.",
      "id": "TargetNetworkInfo"
    },
    "DeviceInfo": {
      "type": "object",
      "properties": {
        "operatingSystemVersion": {
          "description": "Optional. The version of the operating system or platform.",
          "type": "string"
        },
        "browser": {
          "description": "Optional. The brand or type of the browser.",
          "type": "string"
        },
        "userAgent": {
          "description": "Optional. The user-agent string of the device for the given context.",
          "type": "string"
        },
        "languageCode": {
          "description": "Optional. The language the device uses in ISO 639-1 format.",
          "type": "string"
        },
        "brand": {
          "description": "Optional. The brand of the device.",
          "type": "string"
        },
        "operatingSystem": {
          "type": "string",
          "description": "Optional. The operating system or platform of the device."
        },
        "ipAddress": {
          "description": "Optional. The IP address of the device for the given context. **Note:** Google Ads does not support IP address matching for end users in the European Economic Area (EEA), United Kingdom (UK), or Switzerland (CH). Add logic to conditionally exclude sharing IP addresses from users from these regions and ensure that you provide users with clear and comprehensive information about the data you collect on your sites, apps, and other properties and get consent where required by law or any applicable Google policies. See the [About offline conversion imports](https://support.google.com/google-ads/answer/2998031) page for more details.",
          "type": "string"
        },
        "category": {
          "type": "string",
          "description": "Optional. The category of device. For example, “desktop”, “tablet”, “mobile”, “smart TV”."
        },
        "model": {
          "description": "Optional. The model of the device.",
          "type": "string"
        },
        "screenHeight": {
          "type": "integer",
          "description": "Optional. The height of the screen in pixels.",
          "format": "int32"
        },
        "screenWidth": {
          "type": "integer",
          "description": "Optional. The width of the screen in pixels.",
          "format": "int32"
        },
        "browserVersion": {
          "type": "string",
          "description": "Optional. The version of the browser."
        }
      },
      "description": "Information about the device being used (if any) when the event happened.",
      "id": "DeviceInfo"
    },
    "ExperimentalField": {
      "description": "Experimental field representing unofficial fields.",
      "type": "object",
      "properties": {
        "field": {
          "description": "Optional. The name of the field to use.",
          "type": "string"
        },
        "value": {
          "type": "string",
          "description": "Optional. The value the field to set."
        }
      },
      "id": "ExperimentalField"
    },
    "Event": {
      "id": "Event",
      "type": "object",
      "properties": {
        "cartData": {
          "description": "Optional. Information about the transaction and items associated with the event.",
          "$ref": "CartData"
        },
        "conversionValue": {
          "description": "Optional. The conversion value associated with the event, for value-based conversions.",
          "format": "double",
          "type": "number"
        },
        "currency": {
          "description": "Optional. The currency code associated with all monetary values within this event.",
          "type": "string"
        },
        "customVariables": {
          "description": "Optional. Additional key/value pair information to send to the conversion containers (conversion action or FL activity).",
          "items": {
            "$ref": "CustomVariable"
          },
          "type": "array"
        },
        "additionalEventParameters": {
          "type": "array",
          "description": "Optional. A bucket of any [event parameters](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference/events) to be included within the event that were not already specified using other structured fields.",
          "items": {
            "$ref": "EventParameter"
          }
        },
        "destinationReferences": {
          "type": "array",
          "description": "Optional. Reference string used to determine the destination. If empty, the event will be sent to all destinations in the request.",
          "items": {
            "type": "string"
          }
        },
        "userData": {
          "$ref": "UserData",
          "description": "Optional. Pieces of user provided data, representing the user the event is associated with."
        },
        "userProperties": {
          "description": "Optional. Advertiser-assessed information about the user at the time that the event happened.",
          "$ref": "UserProperties"
        },
        "thirdPartyUserData": {
          "description": "Optional. The same type of data provided in user_data, but explicitly flagged as being provided as owned by a third-party and not first-party advertiser data.",
          "$ref": "UserData"
        },
        "transactionId": {
          "description": "Optional. The unique identifier for this event. Required for events sent as an additional data source for tag conversions.",
          "type": "string"
        },
        "consent": {
          "description": "Optional. Information about whether the associated user has provided different types of consent.",
          "$ref": "Consent"
        },
        "experimentalFields": {
          "type": "array",
          "description": "Optional. A list of key/value pairs for experimental fields that may eventually be promoted to be part of the API.",
          "items": {
            "$ref": "ExperimentalField"
          }
        },
        "eventTimestamp": {
          "type": "string",
          "description": "Required. The time the event occurred.",
          "format": "google-datetime"
        },
        "lastUpdatedTimestamp": {
          "description": "Optional. The last time the event was updated.",
          "format": "google-datetime",
          "type": "string"
        },
        "appInstanceId": {
          "description": "Optional. A unique identifier for the user instance of an app client for this GA4 app stream.",
          "type": "string"
        },
        "clientId": {
          "description": "Optional. A unique identifier for the user instance of a web client for this GA4 web stream.",
          "type": "string"
        },
        "userId": {
          "description": "Optional. A unique identifier for a user, as defined by the advertiser.",
          "type": "string"
        },
        "eventLocation": {
          "$ref": "EventLocation",
          "description": "Optional. Information gathered about the location of the user when this event occurred."
        },
        "adIdentifiers": {
          "$ref": "AdIdentifiers",
          "description": "Optional. Identifiers and other information used to match the conversion event with other online activity (such as ad clicks)."
        },
        "eventSource": {
          "description": "Optional. Signal for where the event happened (web, app, in-store, etc.).",
          "type": "string",
          "enumDescriptions": [
            "Unspecified EventSource. Should never be used.",
            "The event was generated from a web browser.",
            "The event was generated from an app.",
            "The event was generated from an in-store transaction.",
            "The event was generated from a phone call.",
            "The event was generated from a message.",
            "The event was generated from other sources."
          ],
          "enum": [
            "EVENT_SOURCE_UNSPECIFIED",
            "WEB",
            "APP",
            "IN_STORE",
            "PHONE",
            "MESSAGE",
            "OTHER"
          ]
        },
        "eventDeviceInfo": {
          "description": "Optional. Information gathered about the device being used (if any) when the event happened.",
          "$ref": "DeviceInfo"
        },
        "eventName": {
          "type": "string",
          "description": "Optional. The name of the event. Required for GA4 events."
        }
      },
      "description": "An event representing a user interaction with an advertiser's website or app."
    },
    "AudienceMember": {
      "type": "object",
      "properties": {
        "pairData": {
          "$ref": "PairData",
          "description": "[Publisher Advertiser Identity Reconciliation (PAIR) IDs](//support.google.com/admanager/answer/15067908). This feature is only available to data partners."
        },
        "destinationReferences": {
          "type": "array",
          "description": "Optional. Defines which Destination to send the audience member to.",
          "items": {
            "type": "string"
          }
        },
        "userData": {
          "description": "User-provided data that identifies the user.",
          "$ref": "UserData"
        },
        "userIdData": {
          "$ref": "UserIdData",
          "description": "Data related to unique identifiers for a user, as defined by the advertiser."
        },
        "mobileData": {
          "description": "Data identifying the user's mobile devices.",
          "$ref": "MobileData"
        },
        "ppidData": {
          "$ref": "PpidData",
          "description": "Data related to publisher provided identifiers. This feature is only available to data partners."
        },
        "consent": {
          "$ref": "Consent",
          "description": "Optional. The consent setting for the user."
        }
      },
      "description": "The audience member to be operated on.",
      "id": "AudienceMember"
    },
    "MobileData": {
      "type": "object",
      "properties": {
        "mobileIds": {
          "type": "array",
          "description": "Required. The list of mobile device IDs (advertising ID/IDFA). At most 10 `mobileIds` can be provided in a single AudienceMember.",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "Mobile IDs for the audience. At least one mobile ID is required.",
      "id": "MobileData"
    },
    "IngestEventsResponse": {
      "type": "object",
      "properties": {
        "requestId": {
          "type": "string",
          "description": "The auto-generated ID of the request."
        }
      },
      "description": "Response from the IngestEventsRequest.",
      "id": "IngestEventsResponse"
    },
    "UserList": {
      "id": "UserList",
      "description": "A user list resource.",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The unique ID of the user list.",
          "format": "int64",
          "readOnly": true
        },
        "membershipDuration": {
          "type": "string",
          "description": "Optional. The duration a user remains in the user list. Valid durations are exact multiples of 24 hours (86400 seconds). Providing a value that is not an exact multiple of 24 hours will result in an INVALID_ARGUMENT error.",
          "format": "google-duration"
        },
        "membershipStatus": {
          "enumDescriptions": [
            "Not specified.",
            "Open status - User list is accruing members and can be targeted to.",
            "Closed status - No new members being added."
          ],
          "enum": [
            "MEMBERSHIP_STATUS_UNSPECIFIED",
            "OPEN",
            "CLOSED"
          ],
          "type": "string",
          "description": "Optional. Membership status of this user list."
        },
        "closingReason": {
          "type": "string",
          "description": "Output only. The reason why this user list membership status is closed.",
          "readOnly": true,
          "enumDescriptions": [
            "Not specified.",
            "The user list was closed because it has not been used in targeting recently. See https://support.google.com/google-ads/answer/2472738 for details."
          ],
          "enum": [
            "CLOSING_REASON_UNSPECIFIED",
            "UNUSED"
          ]
        },
        "sizeInfo": {
          "description": "Output only. Estimated number of members in this user list in different target networks.",
          "$ref": "SizeInfo",
          "readOnly": true
        },
        "targetNetworkInfo": {
          "$ref": "TargetNetworkInfo",
          "description": "Optional. Eligibility information for different target networks."
        },
        "name": {
          "description": "Identifier. The resource name of the user list. Format: accountTypes/{account_type}/accounts/{account}/userLists/{user_list}",
          "type": "string"
        },
        "description": {
          "description": "Optional. A description of the user list.",
          "type": "string"
        },
        "ingestedUserListInfo": {
          "description": "Optional. Represents a user list that is populated by user ingested data.",
          "$ref": "IngestedUserListInfo"
        },
        "integrationCode": {
          "description": "Optional. An ID from external system. It is used by user list sellers to correlate IDs on their systems.",
          "type": "string"
        },
        "displayName": {
          "type": "string",
          "description": "Required. The display name of the user list."
        },
        "readOnly": {
          "readOnly": true,
          "description": "Output only. An option that indicates if a user may edit a list.",
          "type": "boolean"
        },
        "accessReason": {
          "readOnly": true,
          "enumDescriptions": [
            "Not specified.",
            "The resource is owned by the user.",
            "The resource is shared to the user.",
            "The resource is licensed to the user.",
            "The user subscribed to the resource.",
            "The resource is accessible to the user."
          ],
          "type": "string",
          "description": "Output only. The reason this account has been granted access to the list.",
          "enum": [
            "ACCESS_REASON_UNSPECIFIED",
            "OWNED",
            "SHARED",
            "LICENSED",
            "SUBSCRIBED",
            "AFFILIATED"
          ]
        },
        "accountAccessStatus": {
          "enumDescriptions": [
            "Not specified.",
            "The access is enabled.",
            "The access is disabled."
          ],
          "enum": [
            "ACCESS_STATUS_UNSPECIFIED",
            "ENABLED",
            "DISABLED"
          ],
          "description": "Optional. Indicates if this share is still enabled. When a user list is shared with the account this field is set to `ENABLED`. Later the user list owner can decide to revoke the share and make it `DISABLED`.",
          "type": "string"
        }
      }
    },
    "UserIdInfo": {
      "description": "Additional information when `USER_ID` is one of the `upload_key_types`.",
      "type": "object",
      "properties": {
        "dataSourceType": {
          "description": "Optional. Immutable. Source of the upload data.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The uploaded data is first-party data.",
            "The uploaded data is from a third-party credit bureau.",
            "The uploaded data is from a third-party voter file.",
            "The uploaded data is third party partner data."
          ],
          "enum": [
            "DATA_SOURCE_TYPE_UNSPECIFIED",
            "DATA_SOURCE_TYPE_FIRST_PARTY",
            "DATA_SOURCE_TYPE_THIRD_PARTY_CREDIT_BUREAU",
            "DATA_SOURCE_TYPE_THIRD_PARTY_VOTER_FILE",
            "DATA_SOURCE_TYPE_THIRD_PARTY_PARTNER_DATA"
          ]
        }
      },
      "id": "UserIdInfo"
    },
    "ItemParameter": {
      "type": "object",
      "properties": {
        "parameterName": {
          "type": "string",
          "description": "Required. The name of the parameter to use."
        },
        "value": {
          "type": "string",
          "description": "Required. The string representation of the value of the parameter to set."
        }
      },
      "description": "A bucket of any [event parameters related to an item](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference/events) to be included within the event that were not already specified using other structured fields.",
      "id": "ItemParameter"
    },
    "UserProperty": {
      "id": "UserProperty",
      "type": "object",
      "properties": {
        "propertyName": {
          "description": "Required. The name of the user property to use.",
          "type": "string"
        },
        "value": {
          "type": "string",
          "description": "Required. The string representation of the value of the user property to use."
        }
      },
      "description": "A bucket of any additional [user properties](https://developers.google.com/analytics/devguides/collection/protocol/ga4/user-properties) for the user associated with this event."
    },
    "ContactIdInfo": {
      "type": "object",
      "properties": {
        "dataSourceType": {
          "description": "Optional. Immutable. Source of the upload data",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "The uploaded data is first-party data.",
            "The uploaded data is from a third-party credit bureau.",
            "The uploaded data is from a third-party voter file.",
            "The uploaded data is third party partner data."
          ],
          "enum": [
            "DATA_SOURCE_TYPE_UNSPECIFIED",
            "DATA_SOURCE_TYPE_FIRST_PARTY",
            "DATA_SOURCE_TYPE_THIRD_PARTY_CREDIT_BUREAU",
            "DATA_SOURCE_TYPE_THIRD_PARTY_VOTER_FILE",
            "DATA_SOURCE_TYPE_THIRD_PARTY_PARTNER_DATA"
          ]
        },
        "matchRatePercentage": {
          "readOnly": true,
          "type": "integer",
          "description": "Output only. Match rate for customer match user lists.",
          "format": "int32"
        }
      },
      "description": "Additional information when `CONTACT_ID` is one of the `upload_key_types`.",
      "id": "ContactIdInfo"
    },
    "ErrorInfo": {
      "id": "ErrorInfo",
      "description": "Error counts for each type of error.",
      "type": "object",
      "properties": {
        "errorCounts": {
          "type": "array",
          "description": "A list of errors and counts per error reason. May not be populated in all cases.",
          "items": {
            "$ref": "ErrorCount"
          }
        }
      }
    },
    "UserListLicensePricing": {
      "id": "UserListLicensePricing",
      "type": "object",
      "properties": {
        "buyerApprovalState": {
          "enum": [
            "USER_LIST_PRICING_BUYER_APPROVAL_STATE_UNSPECIFIED",
            "PENDING",
            "APPROVED",
            "REJECTED"
          ],
          "type": "string",
          "description": "Output only. The buyer approval state of this pricing. This field is read-only.",
          "readOnly": true,
          "enumDescriptions": [
            "UNSPECIFIED.",
            "User list client has not yet accepted the pricing terms set by the user list owner.",
            "User list client has accepted the pricing terms set by the user list owner.",
            "User list client has rejected the pricing terms set by the user list owner."
          ]
        },
        "endTime": {
          "type": "string",
          "description": "Optional. End time of the pricing.",
          "format": "google-datetime"
        },
        "costType": {
          "enumDescriptions": [
            "Unspecified.",
            "Cost per click.",
            "Cost per mille (thousand impressions).",
            "Media share."
          ],
          "enum": [
            "USER_LIST_PRICING_COST_TYPE_UNSPECIFIED",
            "CPC",
            "CPM",
            "MEDIA_SHARE"
          ],
          "type": "string",
          "description": "Immutable. The cost type of this pricing. Can be set only in the `create` operation. Can't be updated for an existing license."
        },
        "currencyCode": {
          "description": "Optional. The currency in which cost and max_cost is specified. Must be a three-letter currency code defined in ISO 4217.",
          "type": "string"
        },
        "pricingId": {
          "description": "Output only. The ID of this pricing.",
          "format": "int64",
          "type": "string",
          "readOnly": true
        },
        "pricingActive": {
          "readOnly": true,
          "description": "Output only. Whether this pricing is active.",
          "type": "boolean"
        },
        "costMicros": {
          "type": "string",
          "description": "Optional. The cost associated with the model, in micro units (10^-6), in the currency specified by the currency_code field. For example, 2000000 means $2 if `currency_code` is `USD`.",
          "format": "int64"
        },
        "startTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Start time of the pricing.",
          "format": "google-datetime"
        },
        "maxCostMicros": {
          "type": "string",
          "description": "Optional. The maximum CPM a commerce audience can be charged when the MEDIA_SHARE cost type is used. The value is in micro units (10^-6) and in the currency specified by the currency_code field. For example, 2000000 means $2 if `currency_code` is `USD`. This is only relevant when cost_type is MEDIA_SHARE. When cost_type is not MEDIA_SHARE, and this field is set, a MAX_COST_NOT_ALLOWED error will be returned. If not set or set to`0`, there is no cap.",
          "format": "int64"
        }
      },
      "description": "A user list license pricing."
    },
    "IngestPpidDataStatus": {
      "type": "object",
      "properties": {
        "recordCount": {
          "description": "The total count of audience members sent in the upload request for the destination. Includes all audience members in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64",
          "type": "string"
        },
        "ppidCount": {
          "type": "string",
          "description": "The total count of ppids sent in the upload request for the destination. Includes all ppids in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64"
        }
      },
      "description": "The status of the ppid data ingestion to the destination containing stats related to the ingestion.",
      "id": "IngestPpidDataStatus"
    },
    "RemoveMobileDataStatus": {
      "type": "object",
      "properties": {
        "recordCount": {
          "description": "The total count of audience members sent in the removal request. Includes all audience members in the request, regardless of whether they were successfully removed or not.",
          "format": "int64",
          "type": "string"
        },
        "mobileIdCount": {
          "description": "The total count of mobile Ids sent in the removal request. Includes all mobile ids in the request, regardless of whether they were successfully removed or not.",
          "format": "int64",
          "type": "string"
        }
      },
      "description": "The status of the mobile data removal from the destination.",
      "id": "RemoveMobileDataStatus"
    },
    "EncryptionInfo": {
      "id": "EncryptionInfo",
      "type": "object",
      "properties": {
        "gcpWrappedKeyInfo": {
          "$ref": "GcpWrappedKeyInfo",
          "description": "Google Cloud Platform wrapped key information."
        },
        "awsWrappedKeyInfo": {
          "description": "Amazon Web Services wrapped key information.",
          "$ref": "AwsWrappedKeyInfo"
        }
      },
      "description": "Encryption information for the data being ingested."
    },
    "UserProperties": {
      "description": "Advertiser-assessed information about the user at the time that the event happened. See https://support.google.com/google-ads/answer/14007601 for more details.",
      "type": "object",
      "properties": {
        "customerValueBucket": {
          "type": "string",
          "description": "Optional. The advertiser-assessed value of the customer.",
          "enumDescriptions": [
            "Unspecified CustomerValueBucket. Should never be used.",
            "The customer is low value.",
            "The customer is medium value.",
            "The customer is high value."
          ],
          "enum": [
            "CUSTOMER_VALUE_BUCKET_UNSPECIFIED",
            "LOW",
            "MEDIUM",
            "HIGH"
          ]
        },
        "additionalUserProperties": {
          "description": "Optional. A bucket of any additional [user properties](https://developers.google.com/analytics/devguides/collection/protocol/ga4/user-properties) for the user associated with this event.",
          "items": {
            "$ref": "UserProperty"
          },
          "type": "array"
        },
        "customerType": {
          "type": "string",
          "description": "Optional. Type of the customer associated with the event.",
          "enumDescriptions": [
            "Unspecified CustomerType. Should never be used.",
            "The customer is new to the advertiser.",
            "The customer is returning to the advertiser.",
            "The customer has re-engaged with the advertiser."
          ],
          "enum": [
            "CUSTOMER_TYPE_UNSPECIFIED",
            "NEW",
            "RETURNING",
            "REENGAGED"
          ]
        }
      },
      "id": "UserProperties"
    },
    "AwsWrappedKeyInfo": {
      "id": "AwsWrappedKeyInfo",
      "description": "A data encryption key wrapped by an AWS KMS key.",
      "type": "object",
      "properties": {
        "kekUri": {
          "description": "Required. The URI of the AWS KMS key used to decrypt the DEK. Should be in the format of `arn:{partition}:kms:{region}:{account_id}:key/{key_id}` or `aws-kms://arn:{partition}:kms:{region}:{account_id}:key/{key_id}`",
          "type": "string"
        },
        "encryptedDek": {
          "description": "Required. The base64 encoded encrypted data encryption key.",
          "type": "string"
        },
        "keyType": {
          "description": "Required. The type of algorithm used to encrypt the data.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified key type. Should never be used.",
            "Algorithm XChaCha20-Poly1305"
          ],
          "enum": [
            "KEY_TYPE_UNSPECIFIED",
            "XCHACHA20_POLY1305"
          ]
        },
        "roleArn": {
          "type": "string",
          "description": "Required. The Amazon Resource Name of the IAM Role to assume for KMS decryption access. Should be in the format of `arn:{partition}:iam::{account_id}:role/{role_name}`"
        }
      }
    },
    "Item": {
      "description": "Represents an item in the cart associated with the event.",
      "type": "object",
      "properties": {
        "merchantId": {
          "description": "Optional. The Merchant Center ID associated with the item. For Store Sales events this will override the value set at the cart level. This field is ignored for other events.",
          "type": "string"
        },
        "conversionValue": {
          "type": "number",
          "description": "Optional. The conversion value associated with this item within the event, for cases where the conversion value is different for each item.",
          "format": "double"
        },
        "customVariables": {
          "description": "Optional. Additional key/value pair information to send to the conversion containers (conversion action or Floodlight activity), when tracking per-item conversions.",
          "items": {
            "$ref": "ItemCustomVariable"
          },
          "type": "array"
        },
        "unitPrice": {
          "type": "number",
          "description": "Optional. The unit price excluding tax, shipping, and any transaction level discounts.",
          "format": "double"
        },
        "merchantFeedLabel": {
          "type": "string",
          "description": "Optional. The feed label of the Merchant Center feed. If countries are still being used, the 2-letter country code in ISO-3166-1 alpha-2 can be used instead. For Store Sales events this will override the value set at the cart level. This field is ignored for other events."
        },
        "merchantFeedLanguageCode": {
          "description": "Optional. The language code in ISO 639-1 associated with the Merchant Center feed where your items are uploaded.",
          "type": "string"
        },
        "quantity": {
          "description": "Optional. The number of this item associated with the event.",
          "format": "int64",
          "type": "string"
        },
        "additionalItemParameters": {
          "description": "Optional. A bucket of any [event parameters related to an item](https://developers.google.com/analytics/devguides/collection/protocol/ga4/reference/events) to be included within the event that were not already specified using other structured fields.",
          "items": {
            "$ref": "ItemParameter"
          },
          "type": "array"
        },
        "merchantProductId": {
          "type": "string",
          "description": "Optional. The product ID within the Merchant Center account."
        },
        "itemId": {
          "type": "string",
          "description": "Optional. A unique identifier to reference the item."
        }
      },
      "id": "Item"
    },
    "Status": {
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        },
        "details": {
          "type": "array",
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          }
        },
        "code": {
          "type": "integer",
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "format": "int32"
        }
      },
      "id": "Status"
    },
    "IngestEventsRequest": {
      "id": "IngestEventsRequest",
      "description": "Request to upload audience members to the provided destinations. Returns an IngestEventsResponse.",
      "type": "object",
      "properties": {
        "events": {
          "description": "Required. The list of events to send to the specified destinations. At most 2000 Event resources can be sent in a single request.",
          "items": {
            "$ref": "Event"
          },
          "type": "array"
        },
        "encryptionInfo": {
          "$ref": "EncryptionInfo",
          "description": "Optional. Encryption information for UserData uploads. If not set, it's assumed that uploaded identifying information is hashed but not encrypted. For non `UserData` uploads, this field is ignored."
        },
        "consent": {
          "$ref": "Consent",
          "description": "Optional. Request-level consent to apply to all users in the request. User-level consent overrides request-level consent, and can be specified in each Event."
        },
        "encoding": {
          "description": "Optional. Required for UserData uploads. The encoding type of the user identifiers. For hashed user identifiers, this is the encoding type of the hashed string. For encrypted hashed user identifiers, this is the encoding type of the outer encrypted string, but not necessarily the inner hashed string, meaning the inner hashed string could be encoded in a different way than the outer encrypted string. For non `UserData` uploads, this field is ignored.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified Encoding type. Should never be used.",
            "Hex encoding.",
            "Base 64 encoding."
          ],
          "enum": [
            "ENCODING_UNSPECIFIED",
            "HEX",
            "BASE64"
          ]
        },
        "validateOnly": {
          "description": "Optional. For testing purposes. If `true`, the request is validated but not executed. Only errors are returned, not results.",
          "type": "boolean"
        },
        "destinations": {
          "description": "Required. The list of destinations to send the events to.",
          "items": {
            "$ref": "Destination"
          },
          "type": "array"
        }
      }
    },
    "CustomVariable": {
      "id": "CustomVariable",
      "description": "Custom variable for ads conversions.",
      "type": "object",
      "properties": {
        "destinationReferences": {
          "type": "array",
          "description": "Optional. Reference string used to determine which of the Event.destination_references the custom variable should be sent to. If empty, the Event.destination_references will be used.",
          "items": {
            "type": "string"
          }
        },
        "variable": {
          "type": "string",
          "description": "Optional. The name of the custom variable to set. If the variable is not found for the given destination, it will be ignored."
        },
        "value": {
          "type": "string",
          "description": "Optional. The value to store for the custom variable."
        }
      }
    },
    "RemoveAudienceMembersRequest": {
      "type": "object",
      "properties": {
        "audienceMembers": {
          "description": "Required. The list of users to remove.",
          "items": {
            "$ref": "AudienceMember"
          },
          "type": "array"
        },
        "destinations": {
          "description": "Required. The list of destinations to remove the users from.",
          "items": {
            "$ref": "Destination"
          },
          "type": "array"
        },
        "validateOnly": {
          "description": "Optional. For testing purposes. If `true`, the request is validated but not executed. Only errors are returned, not results.",
          "type": "boolean"
        },
        "encryptionInfo": {
          "$ref": "EncryptionInfo",
          "description": "Optional. Encryption information for UserData uploads. If not set, it's assumed that uploaded identifying information is hashed but not encrypted. For non `UserData` uploads, this field is ignored."
        },
        "encoding": {
          "description": "Optional. Required for UserData uploads. The encoding type of the user identifiers. Applies to only the outer encoding for encrypted user identifiers. For non `UserData` uploads, this field is ignored.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified Encoding type. Should never be used.",
            "Hex encoding.",
            "Base 64 encoding."
          ],
          "enum": [
            "ENCODING_UNSPECIFIED",
            "HEX",
            "BASE64"
          ]
        }
      },
      "description": "Request to remove users from an audience in the provided destinations. Returns a RemoveAudienceMembersResponse.",
      "id": "RemoveAudienceMembersRequest"
    },
    "ItemCustomVariable": {
      "type": "object",
      "properties": {
        "value": {
          "description": "Optional. The value to store for the custom variable.",
          "type": "string"
        },
        "destinationReferences": {
          "type": "array",
          "description": "Optional. Reference string used to determine which of the Event.destination_references the custom variable should be sent to. If empty, the Event.destination_references will be used.",
          "items": {
            "type": "string"
          }
        },
        "variable": {
          "description": "Optional. The name of the custom variable to set. If the variable is not found for the given destination, it will be ignored.",
          "type": "string"
        }
      },
      "description": "Item-level custom variable for ads conversions.",
      "id": "ItemCustomVariable"
    },
    "RetrieveRequestStatusResponse": {
      "id": "RetrieveRequestStatusResponse",
      "description": "Response from the RetrieveRequestStatusRequest.",
      "type": "object",
      "properties": {
        "requestStatusPerDestination": {
          "description": "A list of request statuses per destination. The order of the statuses matches the order of the destinations in the original request.",
          "items": {
            "$ref": "RequestStatusPerDestination"
          },
          "type": "array"
        }
      }
    },
    "IngestPairDataStatus": {
      "id": "IngestPairDataStatus",
      "description": "The status of the pair data ingestion to the destination containing stats related to the ingestion.",
      "type": "object",
      "properties": {
        "recordCount": {
          "description": "The total count of audience members sent in the upload request for the destination. Includes all audience members in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64",
          "type": "string"
        },
        "pairIdCount": {
          "type": "string",
          "description": "The total count of pair ids sent in the upload request for the destination. Includes all pair ids in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64"
        }
      }
    },
    "UserIdData": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "string",
          "description": "Required. A unique identifier for a user, as defined by the advertiser."
        }
      },
      "description": "User id data holding the user id.",
      "id": "UserIdData"
    },
    "PseudonymousIdInfo": {
      "description": "Additional information when `PSEUDONYMOUS_ID` is one of the `upload_key_types`.",
      "type": "object",
      "properties": {
        "syncStatus": {
          "enum": [
            "SYNC_STATUS_UNSPECIFIED",
            "CREATED",
            "READY_FOR_USE",
            "FAILED"
          ],
          "enumDescriptions": [
            "Not specified.",
            "The user list has been created as a placeholder. List contents and/or metadata are still being synced. The user list is not ready for use.",
            "The user list is ready for use. Contents and cookies have been synced correctly.",
            "An error has occurred syncing user list contents and/or metadata. The user list cannot be used."
          ],
          "readOnly": true,
          "description": "Output only. Sync status of the user list.",
          "type": "string"
        },
        "billableRecordCount": {
          "type": "string",
          "description": "Optional. Immutable. The number of billable records (e.g. uploaded or matched).",
          "format": "int64"
        }
      },
      "id": "PseudonymousIdInfo"
    },
    "Consent": {
      "description": "[Digital Markets Act (DMA)](//digital-markets-act.ec.europa.eu/index_en) consent settings for the user.",
      "type": "object",
      "properties": {
        "adUserData": {
          "description": "Optional. Represents if the user consents to ad user data.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Granted.",
            "Denied."
          ],
          "enum": [
            "CONSENT_STATUS_UNSPECIFIED",
            "CONSENT_GRANTED",
            "CONSENT_DENIED"
          ]
        },
        "adPersonalization": {
          "description": "Optional. Represents if the user consents to ad personalization.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Granted.",
            "Denied."
          ],
          "enum": [
            "CONSENT_STATUS_UNSPECIFIED",
            "CONSENT_GRANTED",
            "CONSENT_DENIED"
          ]
        }
      },
      "id": "Consent"
    },
    "Destination": {
      "id": "Destination",
      "type": "object",
      "properties": {
        "loginAccount": {
          "$ref": "ProductAccount",
          "description": "Optional. The account used to make this API call. To add or remove data from the `operating_account`, this `login_account` must have write access to the `operating_account`. For example, a manager account of the `operating_account`, or an account with an established link to the `operating_account`."
        },
        "operatingAccount": {
          "$ref": "ProductAccount",
          "description": "Required. The account to send the data to or remove the data from."
        },
        "reference": {
          "type": "string",
          "description": "Optional. ID for this `Destination` resource, unique within the request. Use to reference this `Destination` in the IngestEventsRequest and IngestAudienceMembersRequest."
        },
        "linkedAccount": {
          "$ref": "ProductAccount",
          "description": "Optional. An account that the calling user's `login_account` has access to, through an established account link. For example, a data partner's `login_account` might have access to a client's `linked_account`. The partner might use this field to send data from the `linked_account` to another `operating_account`."
        },
        "productDestinationId": {
          "description": "Required. The object within the product account to ingest into. For example, a Google Ads audience ID, a Display & Video 360 audience ID or a Google Ads conversion action ID.",
          "type": "string"
        }
      },
      "description": "The Google product you're sending data to. For example, a Google Ads account."
    },
    "IngestAudienceMembersResponse": {
      "type": "object",
      "properties": {
        "requestId": {
          "description": "The auto-generated ID of the request.",
          "type": "string"
        }
      },
      "description": "Response from the IngestAudienceMembersRequest.",
      "id": "IngestAudienceMembersResponse"
    },
    "CartData": {
      "description": "The cart data associated with the event.",
      "type": "object",
      "properties": {
        "transactionDiscount": {
          "type": "number",
          "description": "Optional. The sum of all discounts associated with the transaction.",
          "format": "double"
        },
        "merchantFeedLanguageCode": {
          "type": "string",
          "description": "Optional. The language code in ISO 639-1 associated with the Merchant Center feed of the items.where your items are uploaded."
        },
        "merchantFeedLabel": {
          "description": "Optional. The Merchant Center feed label associated with the feed of the items.",
          "type": "string"
        },
        "couponCodes": {
          "description": "Optional. The list of coupon codes that were applied to the cart. Cart-level and item-level coupon codes are independent. If the event is for a Google Analytics destination, only provide a single coupon code. Google Analytics ignores additional coupon codes.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "items": {
          "description": "Optional. The list of items associated with the event.",
          "items": {
            "$ref": "Item"
          },
          "type": "array"
        },
        "merchantId": {
          "description": "Optional. The Merchant Center ID associated with the items.",
          "type": "string"
        }
      },
      "id": "CartData"
    },
    "SearchPartnerLinksResponse": {
      "type": "object",
      "properties": {
        "partnerLinks": {
          "type": "array",
          "description": "The partner links for the given account.",
          "items": {
            "$ref": "PartnerLink"
          }
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "description": "Response from the SearchPartnerLinksRequest.",
      "id": "SearchPartnerLinksResponse"
    },
    "IngestedUserListInfo": {
      "id": "IngestedUserListInfo",
      "description": "Represents a user list that is populated by user provided data.",
      "type": "object",
      "properties": {
        "mobileIdInfo": {
          "$ref": "MobileIdInfo",
          "description": "Optional. Additional information when `MOBILE_ID` is one of the `upload_key_types`."
        },
        "pseudonymousIdInfo": {
          "$ref": "PseudonymousIdInfo",
          "description": "Optional. Additional information for `PSEUDONYMOUS_ID` is one of the `upload_key_types`."
        },
        "contactIdInfo": {
          "$ref": "ContactIdInfo",
          "description": "Optional. Additional information when `CONTACT_ID` is one of the `upload_key_types`."
        },
        "pairIdInfo": {
          "$ref": "PairIdInfo",
          "description": "Optional. Additional information when `PAIR_ID` is one of the `upload_key_types`. This feature is only available to data partners."
        },
        "uploadKeyTypes": {
          "type": "array",
          "description": "Required. Immutable. Upload key types of this user list.",
          "items": {
            "type": "string",
            "enumDescriptions": [
              "Not specified.",
              "Customer info such as email address, phone number or physical address.",
              "Mobile advertising ids.",
              "Third party provided user ids.",
              "Publisher advertiser identity reconciliation ids.",
              "Data Management Platform IDs: - Google User ID - Partner Provided ID - Publisher Provided ID - iOS IDFA - Android advertising ID - Roku ID - Amazon Fire TV ID - Xbox or Microsoft ID"
            ],
            "enum": [
              "UPLOAD_KEY_TYPE_UNSPECIFIED",
              "CONTACT_ID",
              "MOBILE_ID",
              "USER_ID",
              "PAIR_ID",
              "PSEUDONYMOUS_ID"
            ]
          }
        },
        "userIdInfo": {
          "$ref": "UserIdInfo",
          "description": "Optional. Additional information when `USER_ID` is one of the `upload_key_types`."
        },
        "partnerAudienceInfo": {
          "$ref": "PartnerAudienceInfo",
          "description": "Optional. Additional information for partner audiences. This feature is only available to data partners."
        }
      }
    },
    "UserIdentifier": {
      "description": "A single identifier for the user.",
      "type": "object",
      "properties": {
        "address": {
          "description": "The known components of a user's address. Holds a grouping of identifiers that are matched all at once.",
          "$ref": "AddressInfo"
        },
        "emailAddress": {
          "description": "Hashed email address using SHA-256 hash function after normalization.",
          "type": "string"
        },
        "phoneNumber": {
          "type": "string",
          "description": "Hashed phone number using SHA-256 hash function after normalization (E164 standard)."
        }
      },
      "id": "UserIdentifier"
    },
    "PartnerLink": {
      "description": "A partner link between an owning account and a partner account.",
      "type": "object",
      "properties": {
        "partnerAccount": {
          "$ref": "ProductAccount",
          "description": "Required. The partner account granted access by the owning account."
        },
        "partnerLinkId": {
          "readOnly": true,
          "description": "Output only. The partner link ID.",
          "type": "string"
        },
        "owningAccount": {
          "description": "Required. The owning account granting access to the partner account.",
          "$ref": "ProductAccount"
        },
        "name": {
          "description": "Identifier. The name of the partner link. Format: accountTypes/{account_type}/accounts/{account}/partnerLinks/{partner_link}",
          "type": "string"
        }
      },
      "id": "PartnerLink"
    },
    "PairData": {
      "description": "[PAIR](//support.google.com/admanager/answer/15067908) IDs for the audience. At least one PAIR ID is required. This feature is only available to data partners.",
      "type": "object",
      "properties": {
        "pairIds": {
          "type": "array",
          "description": "Required. Cleanroom-provided PII data, hashed with SHA256, and encrypted with an EC commutative cipher using publisher key for the [PAIR]((//support.google.com/admanager/answer/15067908)) user list. At most 10 `pairIds` can be provided in a single AudienceMember.",
          "items": {
            "type": "string"
          }
        }
      },
      "id": "PairData"
    },
    "Empty": {
      "id": "Empty",
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "type": "object",
      "properties": {}
    },
    "ProductAccount": {
      "description": "Represents a specific account.",
      "type": "object",
      "properties": {
        "accountId": {
          "type": "string",
          "description": "Required. The ID of the account. For example, your Google Ads account ID."
        },
        "accountType": {
          "description": "Optional. The type of the account. For example, `GOOGLE_ADS`. Either `account_type` or the deprecated `product` is required. If both are set, the values must match.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified product. Should never be used.",
            "Google Ads.",
            "Display & Video 360 partner.",
            "Display & Video 360 advertiser.",
            "Data Partner.",
            "Google Analytics.",
            "Google Ad Manager audience link."
          ],
          "enum": [
            "ACCOUNT_TYPE_UNSPECIFIED",
            "GOOGLE_ADS",
            "DISPLAY_VIDEO_PARTNER",
            "DISPLAY_VIDEO_ADVERTISER",
            "DATA_PARTNER",
            "GOOGLE_ANALYTICS_PROPERTY",
            "GOOGLE_AD_MANAGER_AUDIENCE_LINK"
          ]
        },
        "product": {
          "deprecated": true,
          "enum": [
            "PRODUCT_UNSPECIFIED",
            "GOOGLE_ADS",
            "DISPLAY_VIDEO_PARTNER",
            "DISPLAY_VIDEO_ADVERTISER",
            "DATA_PARTNER"
          ],
          "description": "Deprecated. Use `account_type` instead.",
          "type": "string",
          "enumDescriptions": [
            "Unspecified product. Should never be used.",
            "Google Ads.",
            "Display & Video 360 partner.",
            "Display & Video 360 advertiser.",
            "Data Partner."
          ]
        }
      },
      "id": "ProductAccount"
    },
    "IngestUserDataStatus": {
      "description": "The status of the user data ingestion to the destination containing stats related to the ingestion.",
      "type": "object",
      "properties": {
        "uploadMatchRateRange": {
          "enumDescriptions": [
            "The match rate range is unknown.",
            "The match rate range is not eligible.",
            "The match rate range is less than 20% (in the interval `[0, 20)`).",
            "The match rate range is between 20% and 30% (in the interval `[20, 31)`).",
            "The match rate range is between 31% and 40% (in the interval `[31, 41)`).",
            "The match rate range is between 41% and 50% (in the interval `[41, 51)`).",
            "The match rate range is between 51% and 60% (in the interval `[51, 61)`.",
            "The match rate range is between 61% and 70% (in the interval `[61, 71)`).",
            "The match rate range is between 71% and 80% (in the interval `[71, 81)`).",
            "The match rate range is between 81% and 90% (in the interval `[81, 91)`).",
            "The match rate range is between 91% and 100% (in the interval `[91, 100]`)."
          ],
          "enum": [
            "MATCH_RATE_RANGE_UNKNOWN",
            "MATCH_RATE_RANGE_NOT_ELIGIBLE",
            "MATCH_RATE_RANGE_LESS_THAN_20",
            "MATCH_RATE_RANGE_20_TO_30",
            "MATCH_RATE_RANGE_31_TO_40",
            "MATCH_RATE_RANGE_41_TO_50",
            "MATCH_RATE_RANGE_51_TO_60",
            "MATCH_RATE_RANGE_61_TO_70",
            "MATCH_RATE_RANGE_71_TO_80",
            "MATCH_RATE_RANGE_81_TO_90",
            "MATCH_RATE_RANGE_91_TO_100"
          ],
          "type": "string",
          "description": "The match rate range of the upload."
        },
        "recordCount": {
          "description": "The total count of audience members sent in the upload request for the destination. Includes all audience members in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64",
          "type": "string"
        },
        "userIdentifierCount": {
          "type": "string",
          "description": "The total count of user identifiers sent in the upload request for the destination. Includes all user identifiers in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64"
        }
      },
      "id": "IngestUserDataStatus"
    },
    "RetrieveInsightsRequest": {
      "type": "object",
      "properties": {
        "baseline": {
          "description": "Required. Baseline for the insights requested.",
          "$ref": "Baseline"
        },
        "userListId": {
          "type": "string",
          "description": "Required. The user list ID for which insights are requested."
        }
      },
      "description": "Request message for DM API MarketingDataInsightsService.RetrieveInsights",
      "id": "RetrieveInsightsRequest"
    },
    "IngestEventsStatus": {
      "description": "The status of the events ingestion to the destination.",
      "type": "object",
      "properties": {
        "recordCount": {
          "description": "The total count of events sent in the upload request. Includes all events in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64",
          "type": "string"
        }
      },
      "id": "IngestEventsStatus"
    },
    "UserData": {
      "id": "UserData",
      "description": "Data that identifies the user. At least one identifier is required.",
      "type": "object",
      "properties": {
        "userIdentifiers": {
          "description": "Required. The identifiers for the user. It's possible to provide multiple instances of the same type of data (for example, multiple email addresses). To increase the likelihood of a match, provide as many identifiers as possible. At most 10 `userIdentifiers` can be provided in a single AudienceMember or Event.",
          "items": {
            "$ref": "UserIdentifier"
          },
          "type": "array"
        }
      }
    },
    "IngestAudienceMembersRequest": {
      "type": "object",
      "properties": {
        "audienceMembers": {
          "type": "array",
          "description": "Required. The list of users to send to the specified destinations. At most 10000 AudienceMember resources can be sent in a single request.",
          "items": {
            "$ref": "AudienceMember"
          }
        },
        "destinations": {
          "description": "Required. The list of destinations to send the audience members to.",
          "items": {
            "$ref": "Destination"
          },
          "type": "array"
        },
        "validateOnly": {
          "type": "boolean",
          "description": "Optional. For testing purposes. If `true`, the request is validated but not executed. Only errors are returned, not results."
        },
        "encryptionInfo": {
          "$ref": "EncryptionInfo",
          "description": "Optional. Encryption information for UserData uploads. If not set, it's assumed that uploaded identifying information is hashed but not encrypted. For non `UserData` uploads, this field is ignored."
        },
        "encoding": {
          "enumDescriptions": [
            "Unspecified Encoding type. Should never be used.",
            "Hex encoding.",
            "Base 64 encoding."
          ],
          "enum": [
            "ENCODING_UNSPECIFIED",
            "HEX",
            "BASE64"
          ],
          "type": "string",
          "description": "Optional. Required for UserData uploads. The encoding type of the user identifiers. For hashed user identifiers, this is the encoding type of the hashed string. For encrypted hashed user identifiers, this is the encoding type of the outer encrypted string, but not necessarily the inner hashed string, meaning the inner hashed string could be encoded in a different way than the outer encrypted string. For non `UserData` uploads, this field is ignored."
        },
        "consent": {
          "description": "Optional. Request-level consent to apply to all users in the request. User-level consent overrides request-level consent, and can be specified in each AudienceMember.",
          "$ref": "Consent"
        },
        "termsOfService": {
          "description": "Optional. The terms of service that the user has accepted/rejected.",
          "$ref": "TermsOfService"
        }
      },
      "description": "Request to upload audience members to the provided destinations. Returns an IngestAudienceMembersResponse.",
      "id": "IngestAudienceMembersRequest"
    },
    "ListUserListsResponse": {
      "id": "ListUserListsResponse",
      "type": "object",
      "properties": {
        "userLists": {
          "description": "The user lists from the specified account.",
          "items": {
            "$ref": "UserList"
          },
          "type": "array"
        },
        "nextPageToken": {
          "type": "string",
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
        }
      },
      "description": "Response message for ListUserLists."
    },
    "IngestUserIdDataStatus": {
      "description": "The status of the user id data ingestion to the destination containing stats related to the ingestion.",
      "type": "object",
      "properties": {
        "recordCount": {
          "type": "string",
          "description": "The total count of audience members sent in the upload request for the destination. Includes all audience members in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64"
        },
        "userIdCount": {
          "type": "string",
          "description": "The total count of user ids sent in the upload request for the destination. Includes all user ids in the request, regardless of whether they were successfully ingested or not.",
          "format": "int64"
        }
      },
      "id": "IngestUserIdDataStatus"
    },
    "WarningCount": {
      "id": "WarningCount",
      "type": "object",
      "properties": {
        "recordCount": {
          "type": "string",
          "description": "The count of records that have a warning.",
          "format": "int64"
        },
        "reason": {
          "enumDescriptions": [
            "The processing warning reason is unknown.",
            "The system did not have the permissions needed to access the KEK.",
            "The DEK failed to be decrypted.",
            "The event has a decryption error.",
            "The WIP could not be used because it was rejected by its attestation condition.",
            "The WIP is formatted incorrectly or the WIP does not exist.",
            "The KEK cannot decrypt data because it is the wrong KEK, or it does not exist.",
            "Failed to decrypt the UserIdentifier data using the DEK.",
            "Internal error.",
            "The system failed to authenticate with AWS."
          ],
          "enum": [
            "PROCESSING_WARNING_REASON_UNSPECIFIED",
            "PROCESSING_WARNING_REASON_KEK_PERMISSION_DENIED",
            "PROCESSING_WARNING_REASON_DEK_DECRYPTION_ERROR",
            "PROCESSING_WARNING_REASON_DECRYPTION_ERROR",
            "PROCESSING_WARNING_REASON_WIP_AUTH_FAILED",
            "PROCESSING_WARNING_REASON_INVALID_WIP",
            "PROCESSING_WARNING_REASON_INVALID_KEK",
            "PROCESSING_WARNING_REASON_USER_IDENTIFIER_DECRYPTION_ERROR",
            "PROCESSING_WARNING_REASON_INTERNAL_ERROR",
            "PROCESSING_WARNING_REASON_AWS_AUTH_FAILED"
          ],
          "description": "The warning reason.",
          "type": "string"
        }
      },
      "description": "The warning count for a given warning reason."
    },
    "AdIdentifiers": {
      "id": "AdIdentifiers",
      "type": "object",
      "properties": {
        "wbraid": {
          "type": "string",
          "description": "Optional. The click identifier for clicks associated with web events and originating from iOS devices starting with iOS14."
        },
        "sessionAttributes": {
          "description": "Optional. Session attributes for event attribution and modeling.",
          "type": "string"
        },
        "mobileDeviceId": {
          "type": "string",
          "description": "Optional. The mobile identifier for advertisers. This would be IDFA on iOS, AdID on Android, or other platforms’ identifiers for advertisers."
        },
        "gclid": {
          "type": "string",
          "description": "Optional. The Google click ID (gclid) associated with this event."
        },
        "gbraid": {
          "type": "string",
          "description": "Optional. The click identifier for clicks associated with app events and originating from iOS devices starting with iOS14."
        },
        "landingPageDeviceInfo": {
          "$ref": "DeviceInfo",
          "description": "Optional. Information gathered about the device being used (if any) at the time of landing onto the advertiser’s site after interacting with the ad."
        }
      },
      "description": "Identifiers and other information used to match the conversion event with other online activity (such as ad clicks)."
    },
    "EventLocation": {
      "description": "The location where the event occurred.",
      "type": "object",
      "properties": {
        "city": {
          "type": "string",
          "description": "Optional. The name of the city where the event occurred."
        },
        "subdivisionCode": {
          "type": "string",
          "description": "Optional. The ISO 3166-2 subdivision code where the event occurred."
        },
        "regionCode": {
          "description": "Optional. The 2-letter CLDR region code of the user's address.",
          "type": "string"
        },
        "continentCode": {
          "type": "string",
          "description": "Optional. The continent code in UN M49 format where the event occurred."
        },
        "subcontinentCode": {
          "description": "Optional. The subcontinent code in UN M49 format where the event occurred.",
          "type": "string"
        },
        "storeId": {
          "type": "string",
          "description": "Optional. Required for Store Sales. The identifier to represent a physical store where the event happened."
        }
      },
      "id": "EventLocation"
    },
    "WarningInfo": {
      "id": "WarningInfo",
      "type": "object",
      "properties": {
        "warningCounts": {
          "description": "A list of warnings and counts per warning reason.",
          "items": {
            "$ref": "WarningCount"
          },
          "type": "array"
        }
      },
      "description": "Warning counts for each type of warning."
    },
    "RemovePpidDataStatus": {
      "description": "The status of the ppid data removal from the destination.",
      "type": "object",
      "properties": {
        "recordCount": {
          "description": "The total count of audience members sent in the removal request. Includes all audience members in the request, regardless of whether they were successfully removed or not.",
          "format": "int64",
          "type": "string"
        },
        "ppidCount": {
          "type": "string",
          "description": "The total count of ppids sent in the removal request. Includes all ppids in the request, regardless of whether they were successfully removed or not.",
          "format": "int64"
        }
      },
      "id": "RemovePpidDataStatus"
    },
    "Baseline": {
      "id": "Baseline",
      "type": "object",
      "properties": {
        "baselineLocation": {
          "description": "The baseline location of the request. Baseline location is an OR-list of the requested regions.",
          "$ref": "Location"
        },
        "locationAutoDetectionEnabled": {
          "type": "boolean",
          "description": "If set to true, the service will try to automatically detect the baseline location for insights."
        }
      },
      "description": "Baseline criteria against which insights are compared."
    },
    "EventParameter": {
      "id": "EventParameter",
      "type": "object",
      "properties": {
        "parameterName": {
          "type": "string",
          "description": "Required. The name of the parameter to use."
        },
        "value": {
          "description": "Required. The string representation of the value of the parameter to set.",
          "type": "string"
        }
      },
      "description": "Event parameter for GA4 events."
    },
    "IngestAudienceMembersStatus": {
      "id": "IngestAudienceMembersStatus",
      "type": "object",
      "properties": {
        "mobileDataIngestionStatus": {
          "$ref": "IngestMobileDataStatus",
          "description": "The status of the mobile data ingestion to the destination."
        },
        "pairDataIngestionStatus": {
          "description": "The status of the pair data ingestion to the destination.",
          "$ref": "IngestPairDataStatus"
        },
        "userDataIngestionStatus": {
          "$ref": "IngestUserDataStatus",
          "description": "The status of the user data ingestion to the destination."
        },
        "userIdDataIngestionStatus": {
          "$ref": "IngestUserIdDataStatus",
          "description": "The status of the user id data ingestion to the destination."
        },
        "ppidDataIngestionStatus": {
          "$ref": "IngestPpidDataStatus",
          "description": "The status of the ppid data ingestion to the destination."
        }
      },
      "description": "The status of the ingest audience members request."
    },
    "TermsOfService": {
      "id": "TermsOfService",
      "type": "object",
      "properties": {
        "customerMatchTermsOfServiceStatus": {
          "description": "Optional. The Customer Match terms of service: https://support.google.com/adspolicy/answer/6299717. This must be accepted when ingesting UserData or MobileData. This field is not required for Partner Match User list.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Status indicating the caller has chosen to accept the terms of service.",
            "Status indicating the caller has chosen to reject the terms of service."
          ],
          "enum": [
            "TERMS_OF_SERVICE_STATUS_UNSPECIFIED",
            "ACCEPTED",
            "REJECTED"
          ]
        }
      },
      "description": "The terms of service that the user has accepted/rejected."
    },
    "RequestStatusPerDestination": {
      "description": "A request status per destination.",
      "type": "object",
      "properties": {
        "warningInfo": {
          "description": "A warning info containing the warning reason and warning counts related to the upload. This field isn't populated while the request has `request_status` of `PROCESSING`.",
          "$ref": "WarningInfo"
        },
        "requestStatus": {
          "enumDescriptions": [
            "The request status is unknown.",
            "Processing succeeded for all records without any errors. However, there may be warnings in the `warning_info` field.",
            "The request is processing.",
            "Processing failed for all records. Check the `error_info` field for error details, and check the `warning_info` field for warning details.",
            "Processing completed successfully without errors for some records, but failed with errors for other records. Check the `error_info` field for error details, and check the `warning_info` field for warning details."
          ],
          "enum": [
            "REQUEST_STATUS_UNKNOWN",
            "SUCCESS",
            "PROCESSING",
            "FAILED",
            "PARTIAL_SUCCESS"
          ],
          "description": "The request status of the destination.",
          "type": "string"
        },
        "destination": {
          "description": "A destination within a DM API request.",
          "$ref": "Destination"
        },
        "errorInfo": {
          "$ref": "ErrorInfo",
          "description": "An error info error containing the error reason and error counts related to the upload. Only populated if the `request_status` is `FAILED` or `PARTIAL_SUCCESS`. This field isn't populated while the request has `request_status` of `PROCESSING`."
        },
        "audienceMembersIngestionStatus": {
          "$ref": "IngestAudienceMembersStatus",
          "description": "The status of the ingest audience members request."
        },
        "eventsIngestionStatus": {
          "$ref": "IngestEventsStatus",
          "description": "The status of the ingest events request."
        },
        "audienceMembersRemovalStatus": {
          "$ref": "RemoveAudienceMembersStatus",
          "description": "The status of the remove audience members request."
        }
      },
      "id": "RequestStatusPerDestination"
    },
    "ListUserListGlobalLicenseCustomerInfosResponse": {
      "description": "Response from the ListUserListGlobalLicensesCustomerInfoRequest.",
      "type": "object",
      "properties": {
        "userListGlobalLicenseCustomerInfos": {
          "type": "array",
          "description": "The customer information for the given license in the request.",
          "items": {
            "$ref": "UserListGlobalLicenseCustomerInfo"
          }
        },
        "nextPageToken": {
          "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
          "type": "string"
        }
      },
      "id": "ListUserListGlobalLicenseCustomerInfosResponse"
    },
    "PartnerAudienceInfo": {
      "type": "object",
      "properties": {
        "commercePartner": {
          "description": "Optional. The commerce partner name. Only allowed if `partner_audience_source` is `COMMERCE_AUDIENCE`.",
          "type": "string"
        },
        "partnerAudienceSource": {
          "description": "Required. Immutable. The source of the partner audience.",
          "type": "string",
          "enumDescriptions": [
            "Not specified.",
            "Partner Audience source is commerce audience.",
            "Partner Audience source is linear TV audience.",
            "Partner Audience source is agency/provider audience."
          ],
          "enum": [
            "PARTNER_AUDIENCE_SOURCE_UNSPECIFIED",
            "COMMERCE_AUDIENCE",
            "LINEAR_TV_AUDIENCE",
            "AGENCY_PROVIDER_AUDIENCE"
          ]
        }
      },
      "description": "Additional information for partner audiences. This feature is only available to data partners.",
      "id": "PartnerAudienceInfo"
    },
    "UserListLicenseMetrics": {
      "id": "UserListLicenseMetrics",
      "type": "object",
      "properties": {
        "revenueUsdMicros": {
          "description": "Output only. The revenue for the user list license in USD micros.",
          "format": "int64",
          "type": "string",
          "readOnly": true
        },
        "endDate": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The end date (inclusive) of the metrics in the format YYYYMMDD. For example, 20260102 represents January 2, 2026. If `start_date` is used in the filter, `end_date` is also required. If neither `start_date` nor `end_date` are included in the filter, the UserListLicenseMetrics fields will not be populated in the response.",
          "format": "int64"
        },
        "clickCount": {
          "description": "Output only. The number of clicks for the user list license.",
          "format": "int64",
          "type": "string",
          "readOnly": true
        },
        "startDate": {
          "readOnly": true,
          "description": "Output only. The start date (inclusive) of the metrics in the format YYYYMMDD. For example, 20260102 represents January 2, 2026. If `end_date` is used in the filter, `start_date` is also required. If neither `start_date` nor `end_date` are included in the filter, the UserListLicenseMetrics fields will not be populated in the response.",
          "format": "int64",
          "type": "string"
        },
        "impressionCount": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The number of impressions for the user list license.",
          "format": "int64"
        }
      },
      "description": "Metrics related to a user list license."
    },
    "RetrieveInsightsResponse": {
      "description": "Response message for DM API MarketingDataInsightsService.RetrieveInsights",
      "type": "object",
      "properties": {
        "marketingDataInsights": {
          "description": "Contains the insights for the marketing data.",
          "items": {
            "$ref": "MarketingDataInsight"
          },
          "type": "array"
        }
      },
      "id": "RetrieveInsightsResponse"
    },
    "PpidData": {
      "description": "Publisher provided identifiers data holding the ppids. At least one ppid is required. This feature is only available to data partners.",
      "type": "object",
      "properties": {
        "ppids": {
          "description": "Required. The list of publisher provided identifiers for a user.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "id": "PpidData"
    },
    "SizeInfo": {
      "type": "object",
      "properties": {
        "searchNetworkMembersCount": {
          "readOnly": true,
          "description": "Output only. Estimated number of members in this user list in the google.com domain. These are the members available for targeting in Search campaigns.",
          "format": "int64",
          "type": "string"
        },
        "gmailMembersCount": {
          "type": "string",
          "description": "Output only. Estimated number of members in this user list on Gmail.",
          "format": "int64",
          "readOnly": true
        },
        "displayNetworkMembersCount": {
          "readOnly": true,
          "description": "Output only. Estimated number of members in this user list, on the Google Display Network.",
          "format": "int64",
          "type": "string"
        },
        "youtubeMembersCount": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Estimated number of members in this user list on YouTube.",
          "format": "int64"
        }
      },
      "description": "Estimated number of members in this user list in different target networks.",
      "id": "SizeInfo"
    },
    "PairIdInfo": {
      "id": "PairIdInfo",
      "type": "object",
      "properties": {
        "publisherId": {
          "type": "string",
          "description": "Required. Immutable. Identifies the publisher that the Publisher Advertiser Identity Reconciliation user list is reconciled with. This field is provided by the cleanroom provider and is only unique in the scope of that cleanroom. This cannot be used as a global identifier across multiple cleanrooms.",
          "format": "int64"
        },
        "matchRatePercentage": {
          "type": "integer",
          "description": "Required. This field denotes the percentage of membership match of this user list with the corresponding publisher's first party data. Must be between 0 and 100 inclusive.",
          "format": "int32"
        },
        "cleanRoomIdentifier": {
          "description": "Required. Immutable. Identifies a unique advertiser to publisher relationship with one clean room provider or across multiple clean room providers.",
          "type": "string"
        },
        "publisherName": {
          "description": "Required. Descriptive name of the publisher to be displayed in the UI for a better targeting experience.",
          "type": "string"
        },
        "advertiserIdentifierCount": {
          "description": "Optional. The count of the advertiser's first party data records that have been uploaded to a clean room provider. This does not signify the size of a PAIR user list.",
          "format": "int64",
          "type": "string"
        }
      },
      "description": "Additional information when `PAIR_ID` is one of the `upload_key_types`. This feature is only available to data partners."
    },
    "MarketingDataInsightsAttribute": {
      "description": "Insights for a collection of related attributes of the same dimension.",
      "type": "object",
      "properties": {
        "userInterestId": {
          "description": "The user interest ID.",
          "format": "int64",
          "type": "string"
        },
        "ageRange": {
          "type": "string",
          "description": "Age range of the audience for which the lift is provided.",
          "enumDescriptions": [
            "Not specified.",
            "Unknown.",
            "Between 18 and 24 years old.",
            "Between 25 and 34 years old.",
            "Between 35 and 44 years old.",
            "Between 45 and 54 years old.",
            "Between 55 and 64 years old.",
            "65 years old and beyond."
          ],
          "enum": [
            "AGE_RANGE_UNSPECIFIED",
            "AGE_RANGE_UNKNOWN",
            "AGE_RANGE_18_24",
            "AGE_RANGE_25_34",
            "AGE_RANGE_35_44",
            "AGE_RANGE_45_54",
            "AGE_RANGE_55_64",
            "AGE_RANGE_65_UP"
          ]
        },
        "lift": {
          "description": "Measure of lift that the audience has for the attribute value as compared to the baseline. Range [0-1].",
          "format": "float",
          "type": "number"
        },
        "gender": {
          "type": "string",
          "description": "Gender of the audience for which the lift is provided.",
          "enumDescriptions": [
            "Not specified.",
            "Unknown.",
            "Male.",
            "Female."
          ],
          "enum": [
            "GENDER_UNSPECIFIED",
            "GENDER_UNKNOWN",
            "GENDER_MALE",
            "GENDER_FEMALE"
          ]
        }
      },
      "id": "MarketingDataInsightsAttribute"
    },
    "UserListGlobalLicense": {
      "id": "UserListGlobalLicense",
      "description": "A user list global license. This feature is only available to data partners.",
      "type": "object",
      "properties": {
        "historicalPricings": {
          "description": "Output only. Pricing history of this user list license. This field is read-only.",
          "items": {
            "$ref": "UserListLicensePricing"
          },
          "type": "array",
          "readOnly": true
        },
        "metrics": {
          "$ref": "UserListLicenseMetrics",
          "description": "Output only. Metrics related to this license This field is read-only and only populated if the start and end dates are set in the ListUserListGlobalLicenses call",
          "readOnly": true
        },
        "userListId": {
          "type": "string",
          "description": "Immutable. ID of the user list being licensed.",
          "format": "int64"
        },
        "userListDisplayName": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Name of the user list being licensed. This field is read-only."
        },
        "licenseType": {
          "type": "string",
          "description": "Immutable. Product type of client customer which the user list is being licensed to.",
          "enumDescriptions": [
            "UNSPECIFIED.",
            "Reseller license.",
            "DataMart Sell Side license.",
            "DataMart Buy Side license."
          ],
          "enum": [
            "USER_LIST_GLOBAL_LICENSE_TYPE_UNSPECIFIED",
            "USER_LIST_GLOBAL_LICENSE_TYPE_RESELLER",
            "USER_LIST_GLOBAL_LICENSE_TYPE_DATA_MART_SELL_SIDE",
            "USER_LIST_GLOBAL_LICENSE_TYPE_DATA_MART_BUY_SIDE"
          ]
        },
        "status": {
          "type": "string",
          "description": "Optional. Status of UserListGlobalLicense - ENABLED or DISABLED.",
          "enumDescriptions": [
            "Unknown.",
            "Active status - user list is still being licensed.",
            "Inactive status - user list is no longer being licensed."
          ],
          "enum": [
            "USER_LIST_LICENSE_STATUS_UNSPECIFIED",
            "USER_LIST_LICENSE_STATUS_ENABLED",
            "USER_LIST_LICENSE_STATUS_DISABLED"
          ]
        },
        "pricing": {
          "description": "Optional. UserListGlobalLicense pricing.",
          "$ref": "UserListLicensePricing"
        },
        "name": {
          "type": "string",
          "description": "Identifier. The resource name of the user list global license."
        }
      }
    }
  },
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "title": "Data Manager API",
  "name": "datamanager",
  "revision": "20260507",
  "rootUrl": "https://datamanager.googleapis.com/",
  "parameters": {
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "uploadType": {
      "type": "string",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "location": "query"
    },
    "quotaUser": {
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query"
    },
    "prettyPrint": {
      "type": "boolean",
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query"
    },
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "upload_protocol": {
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "location": "query",
      "type": "string"
    },
    "fields": {
      "type": "string",
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query"
    },
    "$.xgafv": {
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "description": "V1 error format.",
      "type": "string",
      "enum": [
        "1",
        "2"
      ],
      "location": "query"
    },
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "alt": {
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "type": "string",
      "description": "Data format for response.",
      "default": "json"
    },
    "key": {
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "location": "query",
      "type": "string"
    }
  },
  "id": "datamanager:v1",
  "resources": {
    "accountTypes": {
      "resources": {
        "accounts": {
          "resources": {
            "userListDirectLicenses": {
              "methods": {
                "get": {
                  "parameters": {
                    "name": {
                      "description": "Required. The resource name of the user list direct license.",
                      "type": "string",
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+/userListDirectLicenses/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "UserListDirectLicense"
                  },
                  "id": "datamanager.accountTypes.accounts.userListDirectLicenses.get",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListDirectLicenses/{userListDirectLicensesId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "GET",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Retrieves a user list direct license. This feature is only available to data partners."
                },
                "create": {
                  "id": "datamanager.accountTypes.accounts.userListDirectLicenses.create",
                  "parameters": {
                    "parent": {
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. The account that owns the user list being licensed. Should be in the format accountTypes/{ACCOUNT_TYPE}/accounts/{ACCOUNT_ID}"
                    }
                  },
                  "response": {
                    "$ref": "UserListDirectLicense"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "POST",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListDirectLicenses",
                  "path": "v1/{+parent}/userListDirectLicenses",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a user list direct license. This feature is only available to data partners.",
                  "request": {
                    "$ref": "UserListDirectLicense"
                  }
                },
                "patch": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Updates a user list direct license. This feature is only available to data partners.",
                  "request": {
                    "$ref": "UserListDirectLicense"
                  },
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListDirectLicenses/{userListDirectLicensesId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "PATCH",
                  "parameters": {
                    "name": {
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+/userListDirectLicenses/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Identifier. The resource name of the user list direct license."
                    },
                    "updateMask": {
                      "type": "string",
                      "description": "Optional. The list of fields to update. The special character `*` is not supported and an `INVALID_UPDATE_MASK` error will be thrown if used.",
                      "location": "query",
                      "format": "google-fieldmask"
                    }
                  },
                  "response": {
                    "$ref": "UserListDirectLicense"
                  },
                  "id": "datamanager.accountTypes.accounts.userListDirectLicenses.patch"
                },
                "list": {
                  "path": "v1/{+parent}/userListDirectLicenses",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Lists all user list direct licenses owned by the parent account. This feature is only available to data partners.",
                  "id": "datamanager.accountTypes.accounts.userListDirectLicenses.list",
                  "parameters": {
                    "filter": {
                      "type": "string",
                      "description": "Optional. A [filter string](https://google.aip.dev/160) to apply to the list request. All fields need to be on the left hand side of each condition (for example: `user_list_id = 123`). Fields must be specified using either all [camel case](https://en.wikipedia.org/wiki/Camel_case) or all [snake case](https://en.wikipedia.org/wiki/Snake_case). Don't use a combination of camel case and snake case. **Supported Operations:** - `AND` - `=` - `!=` - `\u003e` - `\u003e=` - `\u003c` - `\u003c=` **Unsupported Fields:** - `name` (use get method instead) - `historical_pricings` and all its subfields - `pricing.start_time` - `pricing.end_time`",
                      "location": "query"
                    },
                    "parent": {
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. The account whose licenses are being queried. Should be in the format accountTypes/{ACCOUNT_TYPE}/accounts/{ACCOUNT_ID}"
                    },
                    "pageSize": {
                      "description": "Optional. The maximum number of licenses to return per page. The service may return fewer than this value. If unspecified, at most 50 licenses will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query",
                      "format": "int32",
                      "type": "integer"
                    },
                    "pageToken": {
                      "type": "string",
                      "description": "Optional. A page token, received from a previous `ListUserListDirectLicense` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListUserListDirectLicense` must match the call that provided the page token.",
                      "location": "query"
                    }
                  },
                  "response": {
                    "$ref": "ListUserListDirectLicensesResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "GET",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListDirectLicenses"
                }
              }
            },
            "userLists": {
              "methods": {
                "delete": {
                  "id": "datamanager.accountTypes.accounts.userLists.delete",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Required. The name of the user list to delete. Format: accountTypes/{account_type}/accounts/{account}/userLists/{user_list}",
                      "required": true,
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+/userLists/[^/]+$",
                      "location": "path"
                    },
                    "validateOnly": {
                      "description": "Optional. If true, the request is validated but not executed.",
                      "location": "query",
                      "type": "boolean"
                    }
                  },
                  "response": {
                    "$ref": "Empty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "DELETE",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userLists/{userListsId}",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Deletes a UserList. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}` * `linked-account`: (Optional) The resource name of the account with an established product link to the `login-account`. Format: `accountTypes/{linkedAccountType}/accounts/{linkedAccountId}`"
                },
                "get": {
                  "id": "datamanager.accountTypes.accounts.userLists.get",
                  "parameters": {
                    "name": {
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+/userLists/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. The resource name of the UserList to retrieve. Format: accountTypes/{account_type}/accounts/{account}/userLists/{user_list}"
                    }
                  },
                  "response": {
                    "$ref": "UserList"
                  },
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userLists/{userListsId}",
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Gets a UserList. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}` * `linked-account`: (Optional) The resource name of the account with an established product link to the `login-account`. Format: `accountTypes/{linkedAccountType}/accounts/{linkedAccountId}`"
                },
                "patch": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Updates a UserList. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}` * `linked-account`: (Optional) The resource name of the account with an established product link to the `login-account`. Format: `accountTypes/{linkedAccountType}/accounts/{linkedAccountId}`",
                  "request": {
                    "$ref": "UserList"
                  },
                  "id": "datamanager.accountTypes.accounts.userLists.patch",
                  "parameters": {
                    "name": {
                      "type": "string",
                      "description": "Identifier. The resource name of the user list. Format: accountTypes/{account_type}/accounts/{account}/userLists/{user_list}",
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+/userLists/[^/]+$",
                      "location": "path",
                      "required": true
                    },
                    "updateMask": {
                      "description": "Optional. The list of fields to update.",
                      "location": "query",
                      "format": "google-fieldmask",
                      "type": "string"
                    },
                    "validateOnly": {
                      "description": "Optional. If true, the request is validated but not executed.",
                      "location": "query",
                      "type": "boolean"
                    }
                  },
                  "response": {
                    "$ref": "UserList"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "PATCH",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userLists/{userListsId}"
                },
                "create": {
                  "path": "v1/{+parent}/userLists",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a UserList. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}` * `linked-account`: (Optional) The resource name of the account with an established product link to the `login-account`. Format: `accountTypes/{linkedAccountType}/accounts/{linkedAccountId}`",
                  "request": {
                    "$ref": "UserList"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "POST",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userLists",
                  "id": "datamanager.accountTypes.accounts.userLists.create",
                  "parameters": {
                    "parent": {
                      "type": "string",
                      "description": "Required. The parent account where this user list will be created. Format: accountTypes/{account_type}/accounts/{account}",
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "required": true
                    },
                    "validateOnly": {
                      "type": "boolean",
                      "description": "Optional. If true, the request is validated but not executed.",
                      "location": "query"
                    }
                  },
                  "response": {
                    "$ref": "UserList"
                  }
                },
                "list": {
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "GET",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userLists",
                  "id": "datamanager.accountTypes.accounts.userLists.list",
                  "parameters": {
                    "pageSize": {
                      "type": "integer",
                      "description": "Optional. The maximum number of user lists to return. The service may return fewer than this value. If unspecified, at most 50 user lists will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query",
                      "format": "int32"
                    },
                    "pageToken": {
                      "description": "Optional. A page token, received from a previous `ListUserLists` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListUserLists` must match the call that provided the page token.",
                      "location": "query",
                      "type": "string"
                    },
                    "filter": {
                      "type": "string",
                      "description": "Optional. A [filter string](https://google.aip.dev/160). All fields need to be on the left hand side of each condition (for example: `display_name = \"list 1\"`). Fields must be specified using either all [camel case](https://en.wikipedia.org/wiki/Camel_case) or all [snake case](https://en.wikipedia.org/wiki/Snake_case). Don't use a combination of camel case and snake case. Supported operations: - `AND` - `=` - `!=` - `\u003e` - `\u003e=` - `\u003c` - `\u003c=` - `:` (has) Supported fields: - `id` - `display_name` - `description` - `membership_status` - `integration_code` - `access_reason` - `ingested_user_list_info.upload_key_types`",
                      "location": "query"
                    },
                    "parent": {
                      "required": true,
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "type": "string",
                      "description": "Required. The parent account which owns this collection of user lists. Format: accountTypes/{account_type}/accounts/{account}"
                    }
                  },
                  "response": {
                    "$ref": "ListUserListsResponse"
                  },
                  "path": "v1/{+parent}/userLists",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Lists UserLists. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}` * `linked-account`: (Optional) The resource name of the account with an established product link to the `login-account`. Format: `accountTypes/{linkedAccountType}/accounts/{linkedAccountId}`"
                }
              }
            },
            "insights": {
              "methods": {
                "retrieve": {
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "POST",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/insights:retrieve",
                  "id": "datamanager.accountTypes.accounts.insights.retrieve",
                  "parameters": {
                    "parent": {
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "required": true,
                      "type": "string",
                      "description": "Required. The parent account that owns the user list. Format: `accountTypes/{account_type}/accounts/{account}`"
                    }
                  },
                  "response": {
                    "$ref": "RetrieveInsightsResponse"
                  },
                  "path": "v1/{+parent}/insights:retrieve",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Retrieves marketing data insights for a given user list. This feature is only available to data partners. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}` * `linked-account`: (Optional) The resource name of the account with an established product link to the `login-account`. Format: `accountTypes/{linkedAccountType}/accounts/{linkedAccountId}`",
                  "request": {
                    "$ref": "RetrieveInsightsRequest"
                  }
                }
              }
            },
            "userListGlobalLicenses": {
              "resources": {
                "userListGlobalLicenseCustomerInfos": {
                  "methods": {
                    "list": {
                      "path": "v1/{+parent}/userListGlobalLicenseCustomerInfos",
                      "parameterOrder": [
                        "parent"
                      ],
                      "description": "Lists all customer info for a user list global license. This feature is only available to data partners.",
                      "scopes": [
                        "https://www.googleapis.com/auth/datamanager"
                      ],
                      "httpMethod": "GET",
                      "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListGlobalLicenses/{userListGlobalLicensesId}/userListGlobalLicenseCustomerInfos",
                      "id": "datamanager.accountTypes.accounts.userListGlobalLicenses.userListGlobalLicenseCustomerInfos.list",
                      "parameters": {
                        "filter": {
                          "type": "string",
                          "description": "Optional. A [filter string](https://google.aip.dev/160) to apply to the list request. All fields need to be on the left hand side of each condition (for example: `user_list_id = 123`). Fields must be specified using either all [camel case](https://en.wikipedia.org/wiki/Camel_case) or all [snake case](https://en.wikipedia.org/wiki/Snake_case). Don't use a combination of camel case and snake case. **Supported Operations:** - `AND` - `=` - `!=` - `\u003e` - `\u003e=` - `\u003c` - `\u003c=` **Unsupported Fields:** - `name` (use get method instead) - `historical_pricings` and all its subfields - `pricing.start_time` - `pricing.end_time`",
                          "location": "query"
                        },
                        "parent": {
                          "type": "string",
                          "description": "Required. The global license whose customer info are being queried. Should be in the format `accountTypes/{ACCOUNT_TYPE}/accounts/{ACCOUNT_ID}/userListGlobalLicenses/{USER_LIST_GLOBAL_LICENSE_ID}`. To list all global license customer info under an account, replace the user list global license id with a '-' (for example, `accountTypes/DATA_PARTNER/accounts/123/userListGlobalLicenses/-`)",
                          "required": true,
                          "pattern": "^accountTypes/[^/]+/accounts/[^/]+/userListGlobalLicenses/[^/]+$",
                          "location": "path"
                        },
                        "pageSize": {
                          "type": "integer",
                          "description": "Optional. The maximum number of licenses to return. The service may return fewer than this value. If unspecified, at most 50 licenses will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                          "location": "query",
                          "format": "int32"
                        },
                        "pageToken": {
                          "type": "string",
                          "description": "Optional. A page token, received from a previous `ListUserListDirectLicense` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListUserListDirectLicense` must match the call that provided the page token.",
                          "location": "query"
                        }
                      },
                      "response": {
                        "$ref": "ListUserListGlobalLicenseCustomerInfosResponse"
                      }
                    }
                  }
                }
              },
              "methods": {
                "create": {
                  "httpMethod": "POST",
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListGlobalLicenses",
                  "id": "datamanager.accountTypes.accounts.userListGlobalLicenses.create",
                  "parameters": {
                    "parent": {
                      "description": "Required. The account that owns the user list being licensed. Should be in the format accountTypes/{ACCOUNT_TYPE}/accounts/{ACCOUNT_ID}",
                      "type": "string",
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "UserListGlobalLicense"
                  },
                  "request": {
                    "$ref": "UserListGlobalLicense"
                  },
                  "path": "v1/{+parent}/userListGlobalLicenses",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a user list global license. This feature is only available to data partners."
                },
                "get": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Retrieves a user list global license. This feature is only available to data partners.",
                  "id": "datamanager.accountTypes.accounts.userListGlobalLicenses.get",
                  "parameters": {
                    "name": {
                      "description": "Required. The resource name of the user list global license.",
                      "type": "string",
                      "required": true,
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+/userListGlobalLicenses/[^/]+$",
                      "location": "path"
                    }
                  },
                  "response": {
                    "$ref": "UserListGlobalLicense"
                  },
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListGlobalLicenses/{userListGlobalLicensesId}"
                },
                "patch": {
                  "id": "datamanager.accountTypes.accounts.userListGlobalLicenses.patch",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+/userListGlobalLicenses/[^/]+$",
                      "location": "path",
                      "type": "string",
                      "description": "Identifier. The resource name of the user list global license."
                    },
                    "updateMask": {
                      "description": "Optional. The list of fields to update. The special character `*` is not supported and an `INVALID_UPDATE_MASK` error will be thrown if used.",
                      "location": "query",
                      "format": "google-fieldmask",
                      "type": "string"
                    }
                  },
                  "response": {
                    "$ref": "UserListGlobalLicense"
                  },
                  "httpMethod": "PATCH",
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListGlobalLicenses/{userListGlobalLicensesId}",
                  "request": {
                    "$ref": "UserListGlobalLicense"
                  },
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Updates a user list global license. This feature is only available to data partners."
                },
                "list": {
                  "id": "datamanager.accountTypes.accounts.userListGlobalLicenses.list",
                  "parameters": {
                    "pageToken": {
                      "description": "Optional. A page token, received from a previous `ListUserListGlobalLicense` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListUserListDirectLicense` must match the call that provided the page token.",
                      "location": "query",
                      "type": "string"
                    },
                    "pageSize": {
                      "description": "Optional. The maximum number of licenses to return. The service may return fewer than this value. If unspecified, at most 50 licenses will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                      "location": "query",
                      "format": "int32",
                      "type": "integer"
                    },
                    "parent": {
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. The account whose licenses are being queried. Should be in the format accountTypes/{ACCOUNT_TYPE}/accounts/{ACCOUNT_ID}",
                      "type": "string"
                    },
                    "filter": {
                      "description": "Optional. A [filter string](https://google.aip.dev/160) to apply to the list request. All fields need to be on the left hand side of each condition (for example: `user_list_id = 123`). Fields must be specified using either all [camel case](https://en.wikipedia.org/wiki/Camel_case) or all [snake case](https://en.wikipedia.org/wiki/Snake_case). Don't use a combination of camel case and snake case. **Supported Operations:** - `AND` - `=` - `!=` - `\u003e` - `\u003e=` - `\u003c` - `\u003c=` **Unsupported Fields:** - `name` (use get method instead) - `historical_pricings` and all its subfields - `pricing.start_time` - `pricing.end_time`",
                      "location": "query",
                      "type": "string"
                    }
                  },
                  "response": {
                    "$ref": "ListUserListGlobalLicensesResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager"
                  ],
                  "httpMethod": "GET",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/userListGlobalLicenses",
                  "path": "v1/{+parent}/userListGlobalLicenses",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Lists all user list global licenses owned by the parent account. This feature is only available to data partners."
                }
              }
            },
            "partnerLinks": {
              "methods": {
                "search": {
                  "parameters": {
                    "filter": {
                      "type": "string",
                      "description": "Optional. A [filter string](https://google.aip.dev/160). All fields need to be on the left hand side of each condition (for example: `partner_link_id = 123456789`). Fields must be specified using either all [camel case](https://en.wikipedia.org/wiki/Camel_case) or all [snake case](https://en.wikipedia.org/wiki/Snake_case). Don't use a combination of camel case and snake case. Supported operations: - `AND` - `=` - `!=` Supported fields: - `partner_link_id` - `owning_account.account_type` - `owning_account.account_id` - `partner_account.account_type` - `partner_account.account_id` Example: `owning_account.account_type = \"GOOGLE_ADS\" AND partner_account.account_id = 987654321`",
                      "location": "query"
                    },
                    "parent": {
                      "required": true,
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "description": "Required. Account to search for partner links. If no `filter` is specified, all partner links where this account is either the `owning_account` or `partner_account` are returned. Format: `accountTypes/{account_type}/accounts/{account}`",
                      "type": "string"
                    },
                    "pageSize": {
                      "type": "integer",
                      "description": "The maximum number of partner links to return. The service may return fewer than this value. If unspecified, at most 10 partner links will be returned. The maximum value is 100; values above 100 will be coerced to 100.",
                      "location": "query",
                      "format": "int32"
                    },
                    "pageToken": {
                      "type": "string",
                      "description": "A page token, received from a previous `SearchPartnerLinks` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `SearchPartnerLinks` must match the call that provided the page token.",
                      "location": "query"
                    }
                  },
                  "response": {
                    "$ref": "SearchPartnerLinksResponse"
                  },
                  "id": "datamanager.accountTypes.accounts.partnerLinks.search",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/partnerLinks:search",
                  "httpMethod": "GET",
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager",
                    "https://www.googleapis.com/auth/datamanager.partnerlink"
                  ],
                  "path": "v1/{+parent}/partnerLinks:search",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Searches for all partner links to and from a given account. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}`"
                },
                "create": {
                  "request": {
                    "$ref": "PartnerLink"
                  },
                  "path": "v1/{+parent}/partnerLinks",
                  "parameterOrder": [
                    "parent"
                  ],
                  "description": "Creates a partner link for the given account. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}`",
                  "httpMethod": "POST",
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager",
                    "https://www.googleapis.com/auth/datamanager.partnerlink"
                  ],
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/partnerLinks",
                  "id": "datamanager.accountTypes.accounts.partnerLinks.create",
                  "parameters": {
                    "parent": {
                      "description": "Required. The parent, which owns this collection of partner links. Format: accountTypes/{account_type}/accounts/{account}",
                      "type": "string",
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "response": {
                    "$ref": "PartnerLink"
                  }
                },
                "delete": {
                  "path": "v1/{+name}",
                  "parameterOrder": [
                    "name"
                  ],
                  "description": "Deletes a partner link for the given account. Authorization Headers: This method supports the following optional headers to define how the API authorizes access for the request: * `login-account`: (Optional) The resource name of the account where the Google Account of the credentials is a user. If not set, defaults to the account of the request. Format: `accountTypes/{loginAccountType}/accounts/{loginAccountId}`",
                  "id": "datamanager.accountTypes.accounts.partnerLinks.delete",
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^accountTypes/[^/]+/accounts/[^/]+/partnerLinks/[^/]+$",
                      "location": "path",
                      "description": "Required. The resource name of the partner link to delete. Format: accountTypes/{account_type}/accounts/{account}/partnerLinks/{partner_link}",
                      "type": "string"
                    }
                  },
                  "response": {
                    "$ref": "Empty"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/datamanager",
                    "https://www.googleapis.com/auth/datamanager.partnerlink"
                  ],
                  "httpMethod": "DELETE",
                  "flatPath": "v1/accountTypes/{accountTypesId}/accounts/{accountsId}/partnerLinks/{partnerLinksId}"
                }
              }
            }
          }
        }
      }
    },
    "audienceMembers": {
      "methods": {
        "remove": {
          "request": {
            "$ref": "RemoveAudienceMembersRequest"
          },
          "path": "v1/audienceMembers:remove",
          "parameterOrder": [],
          "description": "Removes a list of AudienceMember resources from the provided Destination.",
          "id": "datamanager.audienceMembers.remove",
          "parameters": {},
          "response": {
            "$ref": "RemoveAudienceMembersResponse"
          },
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/datamanager"
          ],
          "flatPath": "v1/audienceMembers:remove"
        },
        "ingest": {
          "id": "datamanager.audienceMembers.ingest",
          "parameters": {},
          "response": {
            "$ref": "IngestAudienceMembersResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/datamanager"
          ],
          "httpMethod": "POST",
          "flatPath": "v1/audienceMembers:ingest",
          "path": "v1/audienceMembers:ingest",
          "parameterOrder": [],
          "description": "Uploads a list of AudienceMember resources to the provided Destination.",
          "request": {
            "$ref": "IngestAudienceMembersRequest"
          }
        }
      }
    },
    "events": {
      "methods": {
        "ingest": {
          "flatPath": "v1/events:ingest",
          "httpMethod": "POST",
          "scopes": [
            "https://www.googleapis.com/auth/datamanager"
          ],
          "parameters": {},
          "response": {
            "$ref": "IngestEventsResponse"
          },
          "id": "datamanager.events.ingest",
          "request": {
            "$ref": "IngestEventsRequest"
          },
          "path": "v1/events:ingest",
          "parameterOrder": [],
          "description": "Uploads a list of Event resources from the provided Destination."
        }
      }
    },
    "requestStatus": {
      "methods": {
        "retrieve": {
          "path": "v1/requestStatus:retrieve",
          "parameterOrder": [],
          "description": "Gets the status of a request given request id.",
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/datamanager"
          ],
          "flatPath": "v1/requestStatus:retrieve",
          "id": "datamanager.requestStatus.retrieve",
          "parameters": {
            "requestId": {
              "description": "Required. Required. The request ID of the Data Manager API request.",
              "location": "query",
              "type": "string"
            }
          },
          "response": {
            "$ref": "RetrieveRequestStatusResponse"
          }
        }
      }
    }
  },
  "mtlsRootUrl": "https://datamanager.mtls.googleapis.com/",
  "baseUrl": "https://datamanager.googleapis.com/",
  "documentationLink": "https://developers.google.com/data-manager",
  "discoveryVersion": "v1",
  "protocol": "rest",
  "basePath": ""
}
