<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="baremetalsolution_v1alpha1.html">Bare Metal Solution API</a> . <a href="baremetalsolution_v1alpha1.projects.html">projects</a> . <a href="baremetalsolution_v1alpha1.projects.snapshotSchedulePolicies.html">snapshotSchedulePolicies</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">Create a SnapshotSchedulePolicy.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Delete removes named snapshot schedule policy</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get details for a specific snapshot schedule policy</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List the snapshot schedule policies for the specified project</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="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update a SnapshotSchedulePolicy.</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>Create a SnapshotSchedulePolicy.

Args:
  parent: string, Required. The parent project containing the SnapshotSchedulePolicy. (required)
  body: object, The request body.
    The object takes the form of:

{ # A snapshot schedule policy.
  &quot;description&quot;: &quot;A String&quot;, # The description of this SnapshotSchedulePolicy.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this SnapshotSchedulePolicy.
  &quot;schedules&quot;: [ # The snapshot Schedules contained in this Policy. At most 5 Schedules may be specified.
    { # A snapshot schedule.
      &quot;crontabSpec&quot;: &quot;A String&quot;, # The crontab-like specification that this Schedule will use to take snapshots.
      &quot;prefix&quot;: &quot;A String&quot;, # A string to prefix names of snapshots created under this Schedule.
      &quot;retentionCount&quot;: 42, # The maximum number of snapshots to retain under this Schedule.
    },
  ],
  &quot;volumes&quot;: [ # The names of the Volumes this policy is associated with.
    &quot;A String&quot;,
  ],
}

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

Returns:
  An object of the form:

    { # A snapshot schedule policy.
  &quot;description&quot;: &quot;A String&quot;, # The description of this SnapshotSchedulePolicy.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this SnapshotSchedulePolicy.
  &quot;schedules&quot;: [ # The snapshot Schedules contained in this Policy. At most 5 Schedules may be specified.
    { # A snapshot schedule.
      &quot;crontabSpec&quot;: &quot;A String&quot;, # The crontab-like specification that this Schedule will use to take snapshots.
      &quot;prefix&quot;: &quot;A String&quot;, # A string to prefix names of snapshots created under this Schedule.
      &quot;retentionCount&quot;: 42, # The maximum number of snapshots to retain under this Schedule.
    },
  ],
  &quot;volumes&quot;: [ # The names of the Volumes this policy is associated with.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Delete removes named snapshot schedule policy

Args:
  name: string, Required. The name of the snapshot to delete. (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); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get details for a specific snapshot schedule policy

Args:
  name: string, Required. The name of the policy 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:

    { # A snapshot schedule policy.
  &quot;description&quot;: &quot;A String&quot;, # The description of this SnapshotSchedulePolicy.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this SnapshotSchedulePolicy.
  &quot;schedules&quot;: [ # The snapshot Schedules contained in this Policy. At most 5 Schedules may be specified.
    { # A snapshot schedule.
      &quot;crontabSpec&quot;: &quot;A String&quot;, # The crontab-like specification that this Schedule will use to take snapshots.
      &quot;prefix&quot;: &quot;A String&quot;, # A string to prefix names of snapshots created under this Schedule.
      &quot;retentionCount&quot;: 42, # The maximum number of snapshots to retain under this Schedule.
    },
  ],
  &quot;volumes&quot;: [ # The names of the Volumes this policy is associated with.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List the snapshot schedule policies for the specified project

Args:
  parent: string, Required. The parent project containing the Snapshot Schedule Policies. (required)
  pageSize: integer, The maximum number of items to return.
  pageToken: string, The next_page_token value returned from a previous List request, if any.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for ListSnapshotSchedulePolicies.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
  &quot;snapshotSchedulePolicies&quot;: [ # The snapshot schedule policies registered in this project.
    { # A snapshot schedule policy.
      &quot;description&quot;: &quot;A String&quot;, # The description of this SnapshotSchedulePolicy.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this SnapshotSchedulePolicy.
      &quot;schedules&quot;: [ # The snapshot Schedules contained in this Policy. At most 5 Schedules may be specified.
        { # A snapshot schedule.
          &quot;crontabSpec&quot;: &quot;A String&quot;, # The crontab-like specification that this Schedule will use to take snapshots.
          &quot;prefix&quot;: &quot;A String&quot;, # A string to prefix names of snapshots created under this Schedule.
          &quot;retentionCount&quot;: 42, # The maximum number of snapshots to retain under this Schedule.
        },
      ],
      &quot;volumes&quot;: [ # The names of the Volumes this policy is associated with.
        &quot;A String&quot;,
      ],
    },
  ],
}</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="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update a SnapshotSchedulePolicy.

Args:
  name: string, Output only. The name of this SnapshotSchedulePolicy. (required)
  body: object, The request body.
    The object takes the form of:

{ # A snapshot schedule policy.
  &quot;description&quot;: &quot;A String&quot;, # The description of this SnapshotSchedulePolicy.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this SnapshotSchedulePolicy.
  &quot;schedules&quot;: [ # The snapshot Schedules contained in this Policy. At most 5 Schedules may be specified.
    { # A snapshot schedule.
      &quot;crontabSpec&quot;: &quot;A String&quot;, # The crontab-like specification that this Schedule will use to take snapshots.
      &quot;prefix&quot;: &quot;A String&quot;, # A string to prefix names of snapshots created under this Schedule.
      &quot;retentionCount&quot;: 42, # The maximum number of snapshots to retain under this Schedule.
    },
  ],
  &quot;volumes&quot;: [ # The names of the Volumes this policy is associated with.
    &quot;A String&quot;,
  ],
}

  updateMask: string, The list of fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A snapshot schedule policy.
  &quot;description&quot;: &quot;A String&quot;, # The description of this SnapshotSchedulePolicy.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of this SnapshotSchedulePolicy.
  &quot;schedules&quot;: [ # The snapshot Schedules contained in this Policy. At most 5 Schedules may be specified.
    { # A snapshot schedule.
      &quot;crontabSpec&quot;: &quot;A String&quot;, # The crontab-like specification that this Schedule will use to take snapshots.
      &quot;prefix&quot;: &quot;A String&quot;, # A string to prefix names of snapshots created under this Schedule.
      &quot;retentionCount&quot;: 42, # The maximum number of snapshots to retain under this Schedule.
    },
  ],
  &quot;volumes&quot;: [ # The names of the Volumes this policy is associated with.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>