<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.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">Deprecated: Use `CreateKeyEvent` instead. 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">Deprecated: Use `DeleteKeyEvent` instead. 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">Deprecated: Use `GetKeyEvent` instead. 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">Deprecated: Use `ListKeyEvents` instead. 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">Deprecated: Use `UpdateKeyEvent` instead. 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>Deprecated: Use `CreateKeyEvent` instead. 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 information.
    &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 information.
    &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>Deprecated: Use `DeleteKeyEvent` instead. 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>Deprecated: Use `GetKeyEvent` instead. 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 information.
    &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>Deprecated: Use `ListKeyEvents` instead. 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 information.
        &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>Deprecated: Use `UpdateKeyEvent` instead. 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 information.
    &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 information.
    &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>