<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="cloudcommerceprocurement_v1.html">Cloud Commerce Partner Procurement API</a> . <a href="cloudcommerceprocurement_v1.providers.html">providers</a> . <a href="cloudcommerceprocurement_v1.providers.accounts.html">accounts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#approve">approve(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Grants an approval on an Account.</p>
<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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a requested Account resource.</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 Accounts that the provider has access to.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#reject">reject(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Rejects an approval on an Account.</p>
<p class="toc_element">
  <code><a href="#reset">reset(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Resets an Account and cancel all associated Entitlements. Partner can only reset accounts they own rather than customer accounts.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="approve">approve(name, body=None, x__xgafv=None)</code>
  <pre>Grants an approval on an Account.

Args:
  name: string, The resource name of the account. Required. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for PartnerProcurementService.ApproveAccount.
  &quot;approvalName&quot;: &quot;A String&quot;, # The name of the approval being approved. If absent and there is only one approval possible, that approval will be granted. If absent and there are many approvals possible, the request will fail with a 400 Bad Request. Optional.
  &quot;properties&quot;: { # Set of properties that should be associated with the account. Optional.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;reason&quot;: &quot;A String&quot;, # Free form text string explaining the approval reason. Optional. Max allowed length: 256 bytes. Longer strings will be truncated.
}

  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); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a requested Account resource.

Args:
  name: string, The name of the account to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an account that was established by the customer on the service provider&#x27;s system.
  &quot;approvals&quot;: [ # Output only. The approvals for this account. These approvals are used to track actions that are permitted or have been completed by a customer within the context of the provider. This might include a sign up flow or a provisioning step, for example, that the provider can admit to having happened.
    { # An approval for some action on an account.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the approval.
      &quot;reason&quot;: &quot;A String&quot;, # Output only. An explanation for the state of the approval.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the approval.
      &quot;updateTime&quot;: &quot;A String&quot;, # Optional. The last update timestamp of the approval.
    },
  ],
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp.
  &quot;inputProperties&quot;: { # Output only. The custom properties that were collected from the user to create this account.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the account. Account names have the form `accounts/{account_id}`.
  &quot;provider&quot;: &quot;A String&quot;, # Output only. The identifier of the service provider that this account was created against. Each service provider is assigned a unique provider value when they onboard with Cloud Commerce platform.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the account. This is used to decide whether the customer is in good standing with the provider and is able to make purchases. An account might not be able to make a purchase if the billing account is suspended, for example.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists Accounts that the provider has access to.

Args:
  parent: string, The parent resource name. (required)
  pageSize: integer, The maximum number of entries that are requested. Default size is 200.
  pageToken: string, The token for fetching the next page.
  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 [PartnerProcurementService.ListAccounts[].
  &quot;accounts&quot;: [ # The list of accounts in this response.
    { # Represents an account that was established by the customer on the service provider&#x27;s system.
      &quot;approvals&quot;: [ # Output only. The approvals for this account. These approvals are used to track actions that are permitted or have been completed by a customer within the context of the provider. This might include a sign up flow or a provisioning step, for example, that the provider can admit to having happened.
        { # An approval for some action on an account.
          &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the approval.
          &quot;reason&quot;: &quot;A String&quot;, # Output only. An explanation for the state of the approval.
          &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the approval.
          &quot;updateTime&quot;: &quot;A String&quot;, # Optional. The last update timestamp of the approval.
        },
      ],
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The creation timestamp.
      &quot;inputProperties&quot;: { # Output only. The custom properties that were collected from the user to create this account.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the account. Account names have the form `accounts/{account_id}`.
      &quot;provider&quot;: &quot;A String&quot;, # Output only. The identifier of the service provider that this account was created against. Each service provider is assigned a unique provider value when they onboard with Cloud Commerce platform.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the account. This is used to decide whether the customer is in good standing with the provider and is able to make purchases. An account might not be able to make a purchase if the billing account is suspended, for example.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token for fetching the next page.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</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="reject">reject(name, body=None, x__xgafv=None)</code>
  <pre>Rejects an approval on an Account.

Args:
  name: string, The resource name of the account. Required. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for PartnerProcurementService.RejectAccount.
  &quot;approvalName&quot;: &quot;A String&quot;, # The name of the approval being rejected. If absent and there is only one approval possible, that approval will be rejected. If absent and there are many approvals possible, the request will fail with a 400 Bad Request. Optional.
  &quot;reason&quot;: &quot;A String&quot;, # Free form text string explaining the rejection reason. Max allowed length: 256 bytes. Longer strings will be truncated.
}

  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); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="reset">reset(name, body=None, x__xgafv=None)</code>
  <pre>Resets an Account and cancel all associated Entitlements. Partner can only reset accounts they own rather than customer accounts.

Args:
  name: string, The resource name of the account. Required. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for for PartnerProcurementService.ResetAccount.
}

  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); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

</body></html>