<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="analyticsadmin_v1alpha.html">Google Analytics Admin API</a> . <a href="analyticsadmin_v1alpha.properties.html">properties</a> . <a href="analyticsadmin_v1alpha.properties.dataStreams.html">dataStreams</a> . <a href="analyticsadmin_v1alpha.properties.dataStreams.sKAdNetworkConversionValueSchema.html">sKAdNetworkConversionValueSchema</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a SKAdNetworkConversionValueSchema.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes target SKAdNetworkConversionValueSchema.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Looks up a single SKAdNetworkConversionValueSchema.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists SKAdNetworkConversionValueSchema on a stream. Properties can have at most one SKAdNetworkConversionValueSchema.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a SKAdNetworkConversionValueSchema.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a SKAdNetworkConversionValueSchema.

Args:
  parent: string, Required. The parent resource where this schema will be created. Format: properties/{property}/dataStreams/{dataStream} (required)
  body: object, The request body.
    The object takes the form of:

{ # SKAdNetwork conversion value schema of an iOS stream.
  &quot;applyConversionValues&quot;: True or False, # If enabled, the GA SDK will set conversion values using this schema definition, and schema will be exported to any Google Ads accounts linked to this property. If disabled, the GA SDK will not automatically set conversion values, and also the schema will not be exported to Ads.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the schema. This will be child of ONLY an iOS stream, and there can be at most one such child under an iOS stream. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema
  &quot;postbackWindowOne&quot;: { # Settings for a SKAdNetwork conversion postback window. # Required. The conversion value settings for the first postback window. These differ from values for postback window two and three in that they contain a &quot;Fine&quot; grained conversion value (a numeric value). Conversion values for this postback window must be set. The other windows are optional and may inherit this window&#x27;s settings if unset or disabled.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowThree&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the third postback window. This field should only be set if the user chose to define different conversion values for this postback window. It is allowed to configure window 3 without setting window 2. In case window 1 &amp; 2 settings are set and enable_postback_window_settings for this postback window is set to false, the schema will inherit settings from postback_window_two.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowTwo&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the second postback window. This field should only be configured if there is a need to define different conversion values for this postback window. If enable_postback_window_settings is set to false for this postback window, the values from postback_window_one will be used.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # SKAdNetwork conversion value schema of an iOS stream.
  &quot;applyConversionValues&quot;: True or False, # If enabled, the GA SDK will set conversion values using this schema definition, and schema will be exported to any Google Ads accounts linked to this property. If disabled, the GA SDK will not automatically set conversion values, and also the schema will not be exported to Ads.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the schema. This will be child of ONLY an iOS stream, and there can be at most one such child under an iOS stream. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema
  &quot;postbackWindowOne&quot;: { # Settings for a SKAdNetwork conversion postback window. # Required. The conversion value settings for the first postback window. These differ from values for postback window two and three in that they contain a &quot;Fine&quot; grained conversion value (a numeric value). Conversion values for this postback window must be set. The other windows are optional and may inherit this window&#x27;s settings if unset or disabled.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowThree&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the third postback window. This field should only be set if the user chose to define different conversion values for this postback window. It is allowed to configure window 3 without setting window 2. In case window 1 &amp; 2 settings are set and enable_postback_window_settings for this postback window is set to false, the schema will inherit settings from postback_window_two.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowTwo&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the second postback window. This field should only be configured if there is a need to define different conversion values for this postback window. If enable_postback_window_settings is set to false for this postback window, the values from postback_window_one will be used.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes target SKAdNetworkConversionValueSchema.

Args:
  name: string, Required. The name of the SKAdNetworkConversionValueSchema to delete. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema/{skadnetwork_conversion_value_schema} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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); }
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Looks up a single SKAdNetworkConversionValueSchema.

Args:
  name: string, Required. The resource name of SKAdNetwork conversion value schema to look up. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema/{skadnetwork_conversion_value_schema} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # SKAdNetwork conversion value schema of an iOS stream.
  &quot;applyConversionValues&quot;: True or False, # If enabled, the GA SDK will set conversion values using this schema definition, and schema will be exported to any Google Ads accounts linked to this property. If disabled, the GA SDK will not automatically set conversion values, and also the schema will not be exported to Ads.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the schema. This will be child of ONLY an iOS stream, and there can be at most one such child under an iOS stream. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema
  &quot;postbackWindowOne&quot;: { # Settings for a SKAdNetwork conversion postback window. # Required. The conversion value settings for the first postback window. These differ from values for postback window two and three in that they contain a &quot;Fine&quot; grained conversion value (a numeric value). Conversion values for this postback window must be set. The other windows are optional and may inherit this window&#x27;s settings if unset or disabled.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowThree&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the third postback window. This field should only be set if the user chose to define different conversion values for this postback window. It is allowed to configure window 3 without setting window 2. In case window 1 &amp; 2 settings are set and enable_postback_window_settings for this postback window is set to false, the schema will inherit settings from postback_window_two.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowTwo&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the second postback window. This field should only be configured if there is a need to define different conversion values for this postback window. If enable_postback_window_settings is set to false for this postback window, the values from postback_window_one will be used.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists SKAdNetworkConversionValueSchema on a stream. Properties can have at most one SKAdNetworkConversionValueSchema.

Args:
  parent: string, Required. The DataStream resource to list schemas for. Format: properties/{property_id}/dataStreams/{dataStream} Example: properties/1234/dataStreams/5678 (required)
  pageSize: integer, The maximum number of resources to return. The service may return fewer than this value, even if there are additional pages. If unspecified, at most 50 resources will be returned. The maximum value is 200; (higher values will be coerced to the maximum)
  pageToken: string, A page token, received from a previous `ListSKAdNetworkConversionValueSchemas` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSKAdNetworkConversionValueSchema` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for ListSKAdNetworkConversionValueSchemas RPC
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. Currently, Google Analytics supports only one SKAdNetworkConversionValueSchema per dataStream, so this will never be populated.
  &quot;skadnetworkConversionValueSchemas&quot;: [ # List of SKAdNetworkConversionValueSchemas. This will have at most one value.
    { # SKAdNetwork conversion value schema of an iOS stream.
      &quot;applyConversionValues&quot;: True or False, # If enabled, the GA SDK will set conversion values using this schema definition, and schema will be exported to any Google Ads accounts linked to this property. If disabled, the GA SDK will not automatically set conversion values, and also the schema will not be exported to Ads.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the schema. This will be child of ONLY an iOS stream, and there can be at most one such child under an iOS stream. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema
      &quot;postbackWindowOne&quot;: { # Settings for a SKAdNetwork conversion postback window. # Required. The conversion value settings for the first postback window. These differ from values for postback window two and three in that they contain a &quot;Fine&quot; grained conversion value (a numeric value). Conversion values for this postback window must be set. The other windows are optional and may inherit this window&#x27;s settings if unset or disabled.
        &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
          { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
            &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
            &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
            &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
              { # Event setting conditions to match an event.
                &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
                &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
                &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
                &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
                &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
              },
            ],
            &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
            &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
          },
        ],
        &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
      },
      &quot;postbackWindowThree&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the third postback window. This field should only be set if the user chose to define different conversion values for this postback window. It is allowed to configure window 3 without setting window 2. In case window 1 &amp; 2 settings are set and enable_postback_window_settings for this postback window is set to false, the schema will inherit settings from postback_window_two.
        &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
          { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
            &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
            &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
            &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
              { # Event setting conditions to match an event.
                &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
                &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
                &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
                &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
                &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
              },
            ],
            &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
            &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
          },
        ],
        &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
      },
      &quot;postbackWindowTwo&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the second postback window. This field should only be configured if there is a need to define different conversion values for this postback window. If enable_postback_window_settings is set to false for this postback window, the values from postback_window_one will be used.
        &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
          { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
            &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
            &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
            &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
              { # Event setting conditions to match an event.
                &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
                &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
                &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
                &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
                &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
              },
            ],
            &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
            &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
          },
        ],
        &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a SKAdNetworkConversionValueSchema.

Args:
  name: string, Output only. Resource name of the schema. This will be child of ONLY an iOS stream, and there can be at most one such child under an iOS stream. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema (required)
  body: object, The request body.
    The object takes the form of:

{ # SKAdNetwork conversion value schema of an iOS stream.
  &quot;applyConversionValues&quot;: True or False, # If enabled, the GA SDK will set conversion values using this schema definition, and schema will be exported to any Google Ads accounts linked to this property. If disabled, the GA SDK will not automatically set conversion values, and also the schema will not be exported to Ads.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the schema. This will be child of ONLY an iOS stream, and there can be at most one such child under an iOS stream. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema
  &quot;postbackWindowOne&quot;: { # Settings for a SKAdNetwork conversion postback window. # Required. The conversion value settings for the first postback window. These differ from values for postback window two and three in that they contain a &quot;Fine&quot; grained conversion value (a numeric value). Conversion values for this postback window must be set. The other windows are optional and may inherit this window&#x27;s settings if unset or disabled.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowThree&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the third postback window. This field should only be set if the user chose to define different conversion values for this postback window. It is allowed to configure window 3 without setting window 2. In case window 1 &amp; 2 settings are set and enable_postback_window_settings for this postback window is set to false, the schema will inherit settings from postback_window_two.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowTwo&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the second postback window. This field should only be configured if there is a need to define different conversion values for this postback window. If enable_postback_window_settings is set to false for this postback window, the values from postback_window_one will be used.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
}

  updateMask: string, Required. The list of fields to be updated. Omitted fields will not be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # SKAdNetwork conversion value schema of an iOS stream.
  &quot;applyConversionValues&quot;: True or False, # If enabled, the GA SDK will set conversion values using this schema definition, and schema will be exported to any Google Ads accounts linked to this property. If disabled, the GA SDK will not automatically set conversion values, and also the schema will not be exported to Ads.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the schema. This will be child of ONLY an iOS stream, and there can be at most one such child under an iOS stream. Format: properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema
  &quot;postbackWindowOne&quot;: { # Settings for a SKAdNetwork conversion postback window. # Required. The conversion value settings for the first postback window. These differ from values for postback window two and three in that they contain a &quot;Fine&quot; grained conversion value (a numeric value). Conversion values for this postback window must be set. The other windows are optional and may inherit this window&#x27;s settings if unset or disabled.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowThree&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the third postback window. This field should only be set if the user chose to define different conversion values for this postback window. It is allowed to configure window 3 without setting window 2. In case window 1 &amp; 2 settings are set and enable_postback_window_settings for this postback window is set to false, the schema will inherit settings from postback_window_two.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
  &quot;postbackWindowTwo&quot;: { # Settings for a SKAdNetwork conversion postback window. # The conversion value settings for the second postback window. This field should only be configured if there is a need to define different conversion values for this postback window. If enable_postback_window_settings is set to false for this postback window, the values from postback_window_one will be used.
    &quot;conversionValues&quot;: [ # Ordering of the repeated field will be used to prioritize the conversion value settings. Lower indexed entries are prioritized higher. The first conversion value setting that evaluates to true will be selected. It must have at least one entry if enable_postback_window_settings is set to true. It can have maximum of 128 entries.
      { # Conversion value settings for a postback window for SKAdNetwork conversion value schema.
        &quot;coarseValue&quot;: &quot;A String&quot;, # Required. A coarse grained conversion value. This value is not guaranteed to be unique.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the SKAdNetwork conversion value. The max allowed display name length is 50 UTF-16 code units.
        &quot;eventMappings&quot;: [ # Event conditions that must be met for this Conversion Value to be achieved. The conditions in this list are ANDed together. It must have minimum of 1 entry and maximum of 3 entries, if the postback window is enabled.
          { # Event setting conditions to match an event.
            &quot;eventName&quot;: &quot;A String&quot;, # Required. Name of the GA4 event. It must always be set. The max allowed display name length is 40 UTF-16 code units.
            &quot;maxEventCount&quot;: &quot;A String&quot;, # The maximum number of times the event occurred. If not set, maximum event count won&#x27;t be checked.
            &quot;maxEventValue&quot;: 3.14, # The maximum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, maximum event value won&#x27;t be checked.
            &quot;minEventCount&quot;: &quot;A String&quot;, # At least one of the following four min/max values must be set. The values set will be ANDed together to qualify an event. The minimum number of times the event occurred. If not set, minimum event count won&#x27;t be checked.
            &quot;minEventValue&quot;: 3.14, # The minimum revenue generated due to the event. Revenue currency will be defined at the property level. If not set, minimum event value won&#x27;t be checked.
          },
        ],
        &quot;fineValue&quot;: 42, # The fine-grained conversion value. This is applicable only to the first postback window. Its valid values are [0,63], both inclusive. It must be set for postback window 1, and must not be set for postback window 2 &amp; 3. This value is not guaranteed to be unique. If the configuration for the first postback window is re-used for second or third postback windows this field has no effect.
        &quot;lockEnabled&quot;: True or False, # If true, the SDK should lock to this conversion value for the current postback window.
      },
    ],
    &quot;postbackWindowSettingsEnabled&quot;: True or False, # If enable_postback_window_settings is true, conversion_values must be populated and will be used for determining when and how to set the Conversion Value on a client device and exporting schema to linked Ads accounts. If false, the settings are not used, but are retained in case they may be used in the future. This must always be true for postback_window_one.
  },
}</pre>
</div>

</body></html>