<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_v1beta.html">Google Analytics Admin API</a> . <a href="analyticsadmin_v1beta.properties.html">properties</a> . <a href="analyticsadmin_v1beta.properties.conversionEvents.html">conversionEvents</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 conversion event with the specified attributes.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a conversion event in a property.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve a single conversion event.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a list of conversion events in the specified parent property. Returns an empty list if no conversion events are found.</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 conversion event with the specified attributes.</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 conversion event with the specified attributes.

Args:
  parent: string, Required. The resource name of the parent property where this conversion event will be created. Format: properties/123 (required)
  body: object, The request body.
    The object takes the form of:

{ # A conversion event in a Google Analytics property.
  &quot;countingMethod&quot;: &quot;A String&quot;, # Optional. The method by which conversions will be counted across multiple events within a session. If this value is not provided, it will be set to `ONCE_PER_EVENT`.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this conversion event was created in the property.
  &quot;custom&quot;: True or False, # Output only. If set to true, this conversion event refers to a custom event. If set to false, this conversion event refers to a default event in GA. Default events typically have special meaning in GA. Default events are usually created for you by the GA system, but in some cases can be created by property admins. Custom events count towards the maximum number of custom conversion events that may be created per property.
  &quot;defaultConversionValue&quot;: { # Defines a default value/currency for a conversion event. Both value and currency must be provided. # Optional. Defines a default value/currency for a conversion event.
    &quot;currencyCode&quot;: &quot;A String&quot;, # When a conversion event for this event_name has no set currency, this currency will be applied as the default. Must be in ISO 4217 currency code format. See https://en.wikipedia.org/wiki/ISO_4217 for more.
    &quot;value&quot;: 3.14, # This value will be used to populate the value for all conversions of the specified event_name where the event &quot;value&quot; parameter is unset.
  },
  &quot;deletable&quot;: True or False, # Output only. If set, this event can currently be deleted with DeleteConversionEvent.
  &quot;eventName&quot;: &quot;A String&quot;, # Immutable. The event name for this conversion event. Examples: &#x27;click&#x27;, &#x27;purchase&#x27;
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this conversion event. Format: properties/{property}/conversionEvents/{conversion_event}
}

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

Returns:
  An object of the form:

    { # A conversion event in a Google Analytics property.
  &quot;countingMethod&quot;: &quot;A String&quot;, # Optional. The method by which conversions will be counted across multiple events within a session. If this value is not provided, it will be set to `ONCE_PER_EVENT`.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this conversion event was created in the property.
  &quot;custom&quot;: True or False, # Output only. If set to true, this conversion event refers to a custom event. If set to false, this conversion event refers to a default event in GA. Default events typically have special meaning in GA. Default events are usually created for you by the GA system, but in some cases can be created by property admins. Custom events count towards the maximum number of custom conversion events that may be created per property.
  &quot;defaultConversionValue&quot;: { # Defines a default value/currency for a conversion event. Both value and currency must be provided. # Optional. Defines a default value/currency for a conversion event.
    &quot;currencyCode&quot;: &quot;A String&quot;, # When a conversion event for this event_name has no set currency, this currency will be applied as the default. Must be in ISO 4217 currency code format. See https://en.wikipedia.org/wiki/ISO_4217 for more.
    &quot;value&quot;: 3.14, # This value will be used to populate the value for all conversions of the specified event_name where the event &quot;value&quot; parameter is unset.
  },
  &quot;deletable&quot;: True or False, # Output only. If set, this event can currently be deleted with DeleteConversionEvent.
  &quot;eventName&quot;: &quot;A String&quot;, # Immutable. The event name for this conversion event. Examples: &#x27;click&#x27;, &#x27;purchase&#x27;
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this conversion event. Format: properties/{property}/conversionEvents/{conversion_event}
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a conversion event in a property.

Args:
  name: string, Required. The resource name of the conversion event to delete. Format: properties/{property}/conversionEvents/{conversion_event} Example: &quot;properties/123/conversionEvents/456&quot; (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>Retrieve a single conversion event.

Args:
  name: string, Required. The resource name of the conversion event to retrieve. Format: properties/{property}/conversionEvents/{conversion_event} Example: &quot;properties/123/conversionEvents/456&quot; (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A conversion event in a Google Analytics property.
  &quot;countingMethod&quot;: &quot;A String&quot;, # Optional. The method by which conversions will be counted across multiple events within a session. If this value is not provided, it will be set to `ONCE_PER_EVENT`.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this conversion event was created in the property.
  &quot;custom&quot;: True or False, # Output only. If set to true, this conversion event refers to a custom event. If set to false, this conversion event refers to a default event in GA. Default events typically have special meaning in GA. Default events are usually created for you by the GA system, but in some cases can be created by property admins. Custom events count towards the maximum number of custom conversion events that may be created per property.
  &quot;defaultConversionValue&quot;: { # Defines a default value/currency for a conversion event. Both value and currency must be provided. # Optional. Defines a default value/currency for a conversion event.
    &quot;currencyCode&quot;: &quot;A String&quot;, # When a conversion event for this event_name has no set currency, this currency will be applied as the default. Must be in ISO 4217 currency code format. See https://en.wikipedia.org/wiki/ISO_4217 for more.
    &quot;value&quot;: 3.14, # This value will be used to populate the value for all conversions of the specified event_name where the event &quot;value&quot; parameter is unset.
  },
  &quot;deletable&quot;: True or False, # Output only. If set, this event can currently be deleted with DeleteConversionEvent.
  &quot;eventName&quot;: &quot;A String&quot;, # Immutable. The event name for this conversion event. Examples: &#x27;click&#x27;, &#x27;purchase&#x27;
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this conversion event. Format: properties/{property}/conversionEvents/{conversion_event}
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns a list of conversion events in the specified parent property. Returns an empty list if no conversion events are found.

Args:
  parent: string, Required. The resource name of the parent property. Example: &#x27;properties/123&#x27; (required)
  pageSize: integer, The maximum number of resources to return. 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 `ListConversionEvents` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListConversionEvents` 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 ListConversionEvents RPC.
  &quot;conversionEvents&quot;: [ # The requested conversion events
    { # A conversion event in a Google Analytics property.
      &quot;countingMethod&quot;: &quot;A String&quot;, # Optional. The method by which conversions will be counted across multiple events within a session. If this value is not provided, it will be set to `ONCE_PER_EVENT`.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this conversion event was created in the property.
      &quot;custom&quot;: True or False, # Output only. If set to true, this conversion event refers to a custom event. If set to false, this conversion event refers to a default event in GA. Default events typically have special meaning in GA. Default events are usually created for you by the GA system, but in some cases can be created by property admins. Custom events count towards the maximum number of custom conversion events that may be created per property.
      &quot;defaultConversionValue&quot;: { # Defines a default value/currency for a conversion event. Both value and currency must be provided. # Optional. Defines a default value/currency for a conversion event.
        &quot;currencyCode&quot;: &quot;A String&quot;, # When a conversion event for this event_name has no set currency, this currency will be applied as the default. Must be in ISO 4217 currency code format. See https://en.wikipedia.org/wiki/ISO_4217 for more.
        &quot;value&quot;: 3.14, # This value will be used to populate the value for all conversions of the specified event_name where the event &quot;value&quot; parameter is unset.
      },
      &quot;deletable&quot;: True or False, # Output only. If set, this event can currently be deleted with DeleteConversionEvent.
      &quot;eventName&quot;: &quot;A String&quot;, # Immutable. The event name for this conversion event. Examples: &#x27;click&#x27;, &#x27;purchase&#x27;
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this conversion event. Format: properties/{property}/conversionEvents/{conversion_event}
    },
  ],
  &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.
}</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 conversion event with the specified attributes.

Args:
  name: string, Output only. Resource name of this conversion event. Format: properties/{property}/conversionEvents/{conversion_event} (required)
  body: object, The request body.
    The object takes the form of:

{ # A conversion event in a Google Analytics property.
  &quot;countingMethod&quot;: &quot;A String&quot;, # Optional. The method by which conversions will be counted across multiple events within a session. If this value is not provided, it will be set to `ONCE_PER_EVENT`.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this conversion event was created in the property.
  &quot;custom&quot;: True or False, # Output only. If set to true, this conversion event refers to a custom event. If set to false, this conversion event refers to a default event in GA. Default events typically have special meaning in GA. Default events are usually created for you by the GA system, but in some cases can be created by property admins. Custom events count towards the maximum number of custom conversion events that may be created per property.
  &quot;defaultConversionValue&quot;: { # Defines a default value/currency for a conversion event. Both value and currency must be provided. # Optional. Defines a default value/currency for a conversion event.
    &quot;currencyCode&quot;: &quot;A String&quot;, # When a conversion event for this event_name has no set currency, this currency will be applied as the default. Must be in ISO 4217 currency code format. See https://en.wikipedia.org/wiki/ISO_4217 for more.
    &quot;value&quot;: 3.14, # This value will be used to populate the value for all conversions of the specified event_name where the event &quot;value&quot; parameter is unset.
  },
  &quot;deletable&quot;: True or False, # Output only. If set, this event can currently be deleted with DeleteConversionEvent.
  &quot;eventName&quot;: &quot;A String&quot;, # Immutable. The event name for this conversion event. Examples: &#x27;click&#x27;, &#x27;purchase&#x27;
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this conversion event. Format: properties/{property}/conversionEvents/{conversion_event}
}

  updateMask: string, Required. The list of fields to be updated. Field names must be in snake case (e.g., &quot;field_to_update&quot;). Omitted fields will not be updated. To replace the entire entity, use one path with the string &quot;*&quot; to match all fields.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A conversion event in a Google Analytics property.
  &quot;countingMethod&quot;: &quot;A String&quot;, # Optional. The method by which conversions will be counted across multiple events within a session. If this value is not provided, it will be set to `ONCE_PER_EVENT`.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this conversion event was created in the property.
  &quot;custom&quot;: True or False, # Output only. If set to true, this conversion event refers to a custom event. If set to false, this conversion event refers to a default event in GA. Default events typically have special meaning in GA. Default events are usually created for you by the GA system, but in some cases can be created by property admins. Custom events count towards the maximum number of custom conversion events that may be created per property.
  &quot;defaultConversionValue&quot;: { # Defines a default value/currency for a conversion event. Both value and currency must be provided. # Optional. Defines a default value/currency for a conversion event.
    &quot;currencyCode&quot;: &quot;A String&quot;, # When a conversion event for this event_name has no set currency, this currency will be applied as the default. Must be in ISO 4217 currency code format. See https://en.wikipedia.org/wiki/ISO_4217 for more.
    &quot;value&quot;: 3.14, # This value will be used to populate the value for all conversions of the specified event_name where the event &quot;value&quot; parameter is unset.
  },
  &quot;deletable&quot;: True or False, # Output only. If set, this event can currently be deleted with DeleteConversionEvent.
  &quot;eventName&quot;: &quot;A String&quot;, # Immutable. The event name for this conversion event. Examples: &#x27;click&#x27;, &#x27;purchase&#x27;
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this conversion event. Format: properties/{property}/conversionEvents/{conversion_event}
}</pre>
</div>

</body></html>