Google Ads · Schema

GoogleAdsGoogleadsV25Services__AddOfflineUserDataJobOperationsRequest

Request message for OfflineUserDataJobService.AddOfflineUserDataJobOperations.

AdvertisingCampaign ManagementDigital AdvertisingGoogleMarketingPPCGoogle AdsAdTech

Properties

Name Type Description
enablePartialFailure boolean True to enable partial failure for the offline user data job.
enableWarnings boolean True to enable warnings for the offline user data job. When enabled, a warning will not block the OfflineUserDataJobOperation, and will also return warning messages about malformed field values.
validateOnly boolean If true, the request is validated but not executed. Only errors are returned, not results.
operations array Required. The list of operations to be done.
View JSON Schema on GitHub

JSON Schema

google-ads-google-ads-googleads-v25-services-add-offline-user-data-job-operations-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/google-ads/json-schema/google-ads-google-ads-googleads-v25-services-add-offline-user-data-job-operations-request-schema.json",
  "title": "GoogleAdsGoogleadsV25Services__AddOfflineUserDataJobOperationsRequest",
  "description": "Request message for OfflineUserDataJobService.AddOfflineUserDataJobOperations.",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/google-ads-customers-offlineuserdatajobs-api-openapi.yml#/components/schemas/GoogleAdsGoogleadsV25Services__AddOfflineUserDataJobOperationsRequest",
  "type": "object",
  "properties": {
    "enablePartialFailure": {
      "type": "boolean",
      "description": "True to enable partial failure for the offline user data job."
    },
    "enableWarnings": {
      "description": "True to enable warnings for the offline user data job. When enabled, a warning will not block the OfflineUserDataJobOperation, and will also return warning messages about malformed field values.",
      "type": "boolean"
    },
    "validateOnly": {
      "type": "boolean",
      "description": "If true, the request is validated but not executed. Only errors are returned, not results."
    },
    "operations": {
      "description": "Required. The list of operations to be done.",
      "items": {
        "$ref": "#/$defs/GoogleAdsGoogleadsV25Services__OfflineUserDataJobOperation"
      },
      "type": "array"
    }
  },
  "$defs": {
    "GoogleAdsGoogleadsV25Common__Consent": {
      "type": "object",
      "properties": {
        "adUserData": {
          "x-enumDescriptions": [
            "Not specified.",
            "Output-only. Represents a format not yet defined in this enum.",
            "Granted.",
            "Denied."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "GRANTED",
            "DENIED"
          ],
          "description": "This represents consent for ad user data.",
          "type": "string"
        },
        "adPersonalization": {
          "type": "string",
          "description": "This represents consent for ad personalization. This can only be set for OfflineUserDataJobService and UserDataService.",
          "x-enumDescriptions": [
            "Not specified.",
            "Output-only. Represents a format not yet defined in this enum.",
            "Granted.",
            "Denied."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "GRANTED",
            "DENIED"
          ]
        }
      },
      "description": "Consent"
    },
    "GoogleAdsGoogleadsV25Common__EventAttribute": {
      "type": "object",
      "properties": {
        "itemAttribute": {
          "type": "array",
          "description": "Required. Item attributes of the event.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__EventItemAttribute"
          }
        },
        "eventDateTime": {
          "description": "Required. Timestamp at which the event happened. The format is YYYY-MM-DD HH:MM:SS[+/-HH:MM], where [+/-HH:MM] is an optional timezone offset from UTC. If the offset is absent, the API will use the account's timezone as default.",
          "type": "string"
        },
        "event": {
          "type": "string",
          "description": "Required. Advertiser defined event to be used for remarketing. The accepted values are \"Viewed\", \"Cart\", \"Purchased\" and \"Recommended\"."
        }
      },
      "description": "Advertiser defined events and their attributes. All the values in the nested fields are required."
    },
    "GoogleAdsGoogleadsV25Common__EventItemAttribute": {
      "description": "Event Item attributes of the Customer Match.",
      "type": "object",
      "properties": {
        "itemId": {
          "type": "string",
          "description": "Optional. A unique identifier of a product. It can be either the Merchant Center Item ID or GTIN (Global Trade Item Number)."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__ItemAttribute": {
      "description": "Item attributes of the transaction.",
      "type": "object",
      "properties": {
        "merchantId": {
          "description": "ID of the Merchant Center Account. Required.",
          "type": "string",
          "format": "int64"
        },
        "countryCode": {
          "description": "Common Locale Data Repository (CLDR) territory code of the country associated with the feed where your items are uploaded. See https://developers.google.com/google-ads/api/reference/data/codes-formats#country-codes for more information. This information is useful to differentiate product information in cases where a product (identified by item_id) is associated with multiple countries.",
          "type": "string"
        },
        "itemId": {
          "description": "A unique identifier of a product. It must be the exact same Merchant Center Item ID you use in your Google Merchant Center for this product. Required.",
          "type": "string"
        },
        "languageCode": {
          "type": "string",
          "description": "ISO 639-1 code of the language associated with the feed where your items are uploaded. This information is useful to differentiate product information in cases where a product (identified by item_id) is associated with multiple languages."
        },
        "quantity": {
          "type": "string",
          "description": "The number of items sold. Defaults to 1 if not set.",
          "format": "int64"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__OfflineUserAddressInfo": {
      "description": "Address identifier of offline data.",
      "type": "object",
      "properties": {
        "postalCode": {
          "type": "string",
          "description": "Postal code of the user's address."
        },
        "hashedFirstName": {
          "description": "First name of the user, which is hashed as SHA-256 after normalized (Lowercase all characters; Remove any extra spaces before, after, and in between).",
          "type": "string"
        },
        "state": {
          "type": "string",
          "description": "State code of the address. Only accepted for Store Sales and ConversionAdjustmentUploadService."
        },
        "city": {
          "type": "string",
          "description": "City of the address. Only accepted for Store Sales and ConversionAdjustmentUploadService."
        },
        "hashedLastName": {
          "description": "Last name of the user, which is hashed as SHA-256 after normalized (lower case only and no punctuation).",
          "type": "string"
        },
        "hashedStreetAddress": {
          "type": "string",
          "description": "The street address of the user hashed using SHA-256 hash function after normalization (lower case only). Only accepted for ConversionAdjustmentUploadService."
        },
        "countryCode": {
          "type": "string",
          "description": "2-letter country code in ISO-3166-1 alpha-2 of the user's address."
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__ShoppingLoyalty": {
      "type": "object",
      "properties": {
        "loyaltyTier": {
          "description": "The membership tier. It is a free-form string as each merchant may have their own loyalty system. For example, it could be a number from 1 to 10, or a string such as \"Golden\" or \"Silver\", or even empty string \"\".",
          "type": "string"
        }
      },
      "description": "The shopping loyalty related data. Shopping utilizes this data to provide users with a better experience. Accessible only to merchants on the allow-list."
    },
    "GoogleAdsGoogleadsV25Common__StoreAttribute": {
      "description": "Store attributes of the transaction.",
      "type": "object",
      "properties": {
        "storeCode": {
          "type": "string",
          "description": "Store code from https://support.google.com/business/answer/3370250#storecode"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__TransactionAttribute": {
      "type": "object",
      "properties": {
        "transactionAmountMicros": {
          "description": "Transaction amount in micros. Required. Transaction amount in micros needs to be greater than 1000. If item Attributes are provided, it represents the total value of the items, after multiplying the unit price per item by the quantity provided in the ItemAttributes.",
          "type": "number",
          "format": "double"
        },
        "currencyCode": {
          "description": "Transaction currency code. ISO 4217 three-letter code is used. Required.",
          "type": "string"
        },
        "orderId": {
          "type": "string",
          "description": "Transaction order id. Useful to group transactions which are part of the same order."
        },
        "itemAttribute": {
          "description": "Item attributes of the transaction. Accessible only to customers on the allow-list.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ItemAttribute"
        },
        "transactionDateTime": {
          "description": "Timestamp when transaction occurred. Required. The format is \"YYYY-MM-DD HH:MM:SS[+/-HH:MM]\", where [+/-HH:MM] is an optional timezone offset from UTC. If the offset is absent, the API will use the account's timezone as default. Examples: \"2018-03-05 09:15:00\" or \"2018-02-01 14:34:30+03:00\"",
          "type": "string"
        },
        "storeAttribute": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__StoreAttribute",
          "description": "Store attributes of the transaction."
        },
        "conversionAction": {
          "type": "string",
          "description": "The resource name of conversion action to report conversions to. Required."
        },
        "customValue": {
          "description": "Value of the custom variable for each transaction. Allowed only if a custom key is provided in the store sales metadata.",
          "type": "string"
        }
      },
      "description": "Attribute of the store sales transaction."
    },
    "GoogleAdsGoogleadsV25Common__UserAttribute": {
      "description": "User attribute, can only be used with CUSTOMER_MATCH_WITH_ATTRIBUTES job type.",
      "type": "object",
      "properties": {
        "shoppingLoyalty": {
          "description": "The shopping loyalty related data. Shopping utilizes this data to provide users with a better experience. Accessible only to merchants on the allow-list with the user's consent.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__ShoppingLoyalty"
        },
        "lifecycleStage": {
          "type": "string",
          "description": "Optional. Advertiser defined lifecycle stage for the user. The accepted values are \"Lead\", \"Active\" and \"Churned\"."
        },
        "eventAttribute": {
          "description": "Optional. Advertiser defined events and their attributes. All the values in the nested fields are required. Currently this field is in beta.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__EventAttribute"
          },
          "type": "array"
        },
        "lastPurchaseDateTime": {
          "type": "string",
          "description": "Timestamp of the last purchase made by the user. The format is YYYY-MM-DD HH:MM:SS[+/-HH:MM], where [+/-HH:MM] is an optional timezone offset from UTC. If the offset is absent, the API will use the account's timezone as default."
        },
        "averagePurchaseCount": {
          "type": "integer",
          "description": "Advertiser defined average number of purchases that are made by the user in a 30 day period.",
          "format": "int32"
        },
        "acquisitionDateTime": {
          "type": "string",
          "description": "Timestamp when the user was acquired. The format is YYYY-MM-DD HH:MM:SS[+/-HH:MM], where [+/-HH:MM] is an optional timezone offset from UTC. If the offset is absent, the API will use the account's timezone as default."
        },
        "averagePurchaseValueMicros": {
          "type": "string",
          "description": "Advertiser defined average purchase value in micros for the user.",
          "format": "int64"
        },
        "lifetimeValueMicros": {
          "description": "Advertiser defined lifetime value for the user.",
          "type": "string",
          "format": "int64"
        },
        "firstPurchaseDateTime": {
          "type": "string",
          "description": "Optional. Timestamp of the first purchase made by the user. The format is YYYY-MM-DD HH:MM:SS[+/-HH:MM], where [+/-HH:MM] is an optional timezone offset from UTC. If the offset is absent, the API will use the account's timezone as default."
        },
        "lifetimeValueBucket": {
          "format": "int32",
          "description": "Advertiser defined lifetime value bucket for the user. The valid range for a lifetime value bucket is from 1 (low) to 10 (high), except for remove operation where 0 will also be accepted.",
          "type": "integer"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__UserData": {
      "description": "User data holding user identifiers and attributes.",
      "type": "object",
      "properties": {
        "userIdentifiers": {
          "type": "array",
          "description": "User identification info. Required.",
          "items": {
            "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__UserIdentifier"
          }
        },
        "consent": {
          "description": "The consent setting for the user. If set, will override the job level consent for this user.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__Consent"
        },
        "transactionAttribute": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__TransactionAttribute",
          "description": "Additional transactions/attributes associated with the user. Required when updating store sales data."
        },
        "userAttribute": {
          "description": "Additional attributes associated with the user. Required when updating customer match attributes. These have an expiration of 540 days.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__UserAttribute"
        }
      }
    },
    "GoogleAdsGoogleadsV25Common__UserIdentifier": {
      "type": "object",
      "properties": {
        "mobileId": {
          "type": "string",
          "description": "Mobile device ID (advertising ID/IDFA). Accepted only for Customer Match."
        },
        "userIdentifierSource": {
          "x-enumDescriptions": [
            "Not specified.",
            "Used for return value only. Represents value unknown in this version",
            "Indicates that the user identifier was provided by the first party (advertiser).",
            "Indicates that the user identifier was provided by the third party (partner)."
          ],
          "enum": [
            "UNSPECIFIED",
            "UNKNOWN",
            "FIRST_PARTY",
            "THIRD_PARTY"
          ],
          "type": "string",
          "description": "Source of the user identifier when the upload is from Store Sales, ConversionUploadService, or ConversionAdjustmentUploadService."
        },
        "hashedPhoneNumber": {
          "type": "string",
          "description": "Hashed phone number using SHA-256 hash function after normalization (E164 standard). Accepted for Customer Match, Store Sales, ConversionUploadService, and ConversionAdjustmentUploadService."
        },
        "hashedEmail": {
          "description": "Hashed email address using SHA-256 hash function after normalization. Accepted for Customer Match, Store Sales, ConversionUploadService, and ConversionAdjustmentUploadService.",
          "type": "string"
        },
        "addressInfo": {
          "description": "Address information. Accepted only for Customer Match, Store Sales, and ConversionAdjustmentUploadService.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__OfflineUserAddressInfo"
        },
        "thirdPartyUserId": {
          "description": "Advertiser-assigned user ID for Customer Match upload, or third-party-assigned user ID for Store Sales. Accepted only for Customer Match and Store Sales.",
          "type": "string"
        }
      },
      "description": "User identifying information."
    },
    "GoogleAdsGoogleadsV25Services__OfflineUserDataJobOperation": {
      "type": "object",
      "properties": {
        "removeAll": {
          "description": "Remove all previously provided data. This is only supported for Customer Match.",
          "type": "boolean"
        },
        "remove": {
          "description": "Remove the provided data from the transaction. Data cannot be retrieved after being uploaded.",
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__UserData"
        },
        "create": {
          "$ref": "#/$defs/GoogleAdsGoogleadsV25Common__UserData",
          "description": "Add the provided data to the transaction. Data cannot be retrieved after being uploaded."
        }
      },
      "description": "Operation to be made for the AddOfflineUserDataJobOperationsRequest."
    }
  }
}

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/google-ads-google-ads-googleads-v25-services-add-offline-user-data-job-operations-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.