// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.ads.datamanager.v1;

import "google/api/field_behavior.proto";

option csharp_namespace = "Google.Ads.DataManager.V1";
option go_package = "cloud.google.com/go/datamanager/apiv1/datamanagerpb;datamanagerpb";
option java_multiple_files = true;
option java_outer_classname = "DeviceInfoProto";
option java_package = "com.google.ads.datamanager.v1";
option php_namespace = "Google\\Ads\\DataManager\\V1";
option ruby_package = "Google::Ads::DataManager::V1";

// Information about the device being used (if any) when the event happened.
message DeviceInfo {
  // Optional. The user-agent string of the device for the given context.
  string user_agent = 1 [(google.api.field_behavior) = OPTIONAL];

  // 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.
  string ip_address = 2 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The category of device. For example, “desktop”, “tablet”,
  // “mobile”, “smart TV”.
  string category = 3 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The language the device uses in ISO 639-1 format.
  string language_code = 4 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The height of the screen in pixels.
  int32 screen_height = 5 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The width of the screen in pixels.
  int32 screen_width = 6 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The operating system or platform of the device.
  string operating_system = 7 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The version of the operating system or platform.
  string operating_system_version = 8 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The model of the device.
  string model = 9 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The brand of the device.
  string brand = 10 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The brand or type of the browser.
  string browser = 11 [(google.api.field_behavior) = OPTIONAL];

  // Optional. The version of the browser.
  string browser_version = 12 [(google.api.field_behavior) = OPTIONAL];
}
