<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="cloudprofiler_v2.html">Stackdriver Profiler API</a> . <a href="cloudprofiler_v2.projects.html">projects</a> . <a href="cloudprofiler_v2.projects.profiles.html">profiles</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">CreateProfile creates a new profile resource in the online mode. The server ensures that the new profiles are created at a constant rate per deployment, so the creation request may hang for some time until the next profile session is available. The request may fail with ABORTED error if the creation is not available within ~1m, the response will indicate the duration of the backoff the client should take before attempting creating a profile again. The backoff duration is returned in google.rpc.RetryInfo extension on the response status. To a gRPC client, the extension will be return as a binary-serialized proto in the trailing metadata item named "google.rpc.retryinfo-bin".</p>
<p class="toc_element">
  <code><a href="#createOffline">createOffline(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">CreateOfflineProfile creates a new profile resource in the offline mode. The client provides the profile to create along with the profile bytes, the server records it.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">UpdateProfile updates the profile bytes and labels on the profile resource created in the online mode. Updating the bytes for profiles created in the offline mode is currently not supported: the profile content must be provided at the time of the profile creation.</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>CreateProfile creates a new profile resource in the online mode. The server ensures that the new profiles are created at a constant rate per deployment, so the creation request may hang for some time until the next profile session is available. The request may fail with ABORTED error if the creation is not available within ~1m, the response will indicate the duration of the backoff the client should take before attempting creating a profile again. The backoff duration is returned in google.rpc.RetryInfo extension on the response status. To a gRPC client, the extension will be return as a binary-serialized proto in the trailing metadata item named &quot;google.rpc.retryinfo-bin&quot;.

Args:
  parent: string, Parent project to create the profile in. (required)
  body: object, The request body.
    The object takes the form of:

{ # CreateProfileRequest describes a profile resource online creation request. The deployment field must be populated. The profile_type specifies the list of profile types supported by the agent. The creation call will hang until a profile of one of these types needs to be collected.
  &quot;deployment&quot;: { # Deployment contains the deployment identification information. # Deployment details.
    &quot;labels&quot;: { # Labels identify the deployment within the user universe and same target. Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. Value for an individual label must be &lt;= 512 bytes, the total size of all label names and values must be &lt;= 1024 bytes. Label named &quot;language&quot; can be used to record the programming language of the profiled deployment. The standard choices for the value include &quot;java&quot;, &quot;go&quot;, &quot;python&quot;, &quot;ruby&quot;, &quot;nodejs&quot;, &quot;php&quot;, &quot;dotnet&quot;. For deployments running on Google Cloud Platform, &quot;zone&quot; or &quot;region&quot; label should be present describing the deployment location. An example of a zone is &quot;us-central1-a&quot;, an example of a region is &quot;us-central1&quot; or &quot;us-central&quot;.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Project ID is the ID of a cloud project. Validation regex: `^a-z{4,61}[a-z0-9]$`.
    &quot;target&quot;: &quot;A String&quot;, # Target is the service name used to group related deployments: * Service name for GAE Flex / Standard. * Cluster and container name for GKE. * User-specified string for direct GCE profiling (e.g. Java). * Job name for Dataflow. Validation regex: `^[a-z]([-a-z0-9_.]{0,253}[a-z0-9])?$`.
  },
  &quot;profileType&quot;: [ # One or more profile types that the agent is capable of providing.
    &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:

    { # Profile resource.
  &quot;deployment&quot;: { # Deployment contains the deployment identification information. # Deployment this profile corresponds to.
    &quot;labels&quot;: { # Labels identify the deployment within the user universe and same target. Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. Value for an individual label must be &lt;= 512 bytes, the total size of all label names and values must be &lt;= 1024 bytes. Label named &quot;language&quot; can be used to record the programming language of the profiled deployment. The standard choices for the value include &quot;java&quot;, &quot;go&quot;, &quot;python&quot;, &quot;ruby&quot;, &quot;nodejs&quot;, &quot;php&quot;, &quot;dotnet&quot;. For deployments running on Google Cloud Platform, &quot;zone&quot; or &quot;region&quot; label should be present describing the deployment location. An example of a zone is &quot;us-central1-a&quot;, an example of a region is &quot;us-central1&quot; or &quot;us-central&quot;.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Project ID is the ID of a cloud project. Validation regex: `^a-z{4,61}[a-z0-9]$`.
    &quot;target&quot;: &quot;A String&quot;, # Target is the service name used to group related deployments: * Service name for GAE Flex / Standard. * Cluster and container name for GKE. * User-specified string for direct GCE profiling (e.g. Java). * Job name for Dataflow. Validation regex: `^[a-z]([-a-z0-9_.]{0,253}[a-z0-9])?$`.
  },
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the profiling session. Input (for the offline mode) or output (for the online mode). The field represents requested profiling duration. It may slightly differ from the effective profiling duration, which is recorded in the profile data, in case the profiling can&#x27;t be stopped immediately (e.g. in case stopping the profiling is handled asynchronously).
  &quot;labels&quot;: { # Input only. Labels associated to this specific profile. These labels will get merged with the deployment labels for the final data set. See documentation on deployment labels for validation rules and limits.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Opaque, server-assigned, unique ID for this profile.
  &quot;profileBytes&quot;: &quot;A String&quot;, # Input only. Profile bytes, as a gzip compressed serialized proto, the format is https://github.com/google/pprof/blob/master/proto/profile.proto.
  &quot;profileType&quot;: &quot;A String&quot;, # Type of profile. For offline mode, this must be specified when creating the profile. For online mode it is assigned and returned by the server.
}</pre>
</div>

<div class="method">
    <code class="details" id="createOffline">createOffline(parent, body=None, x__xgafv=None)</code>
  <pre>CreateOfflineProfile creates a new profile resource in the offline mode. The client provides the profile to create along with the profile bytes, the server records it.

Args:
  parent: string, Parent project to create the profile in. (required)
  body: object, The request body.
    The object takes the form of:

{ # Profile resource.
  &quot;deployment&quot;: { # Deployment contains the deployment identification information. # Deployment this profile corresponds to.
    &quot;labels&quot;: { # Labels identify the deployment within the user universe and same target. Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. Value for an individual label must be &lt;= 512 bytes, the total size of all label names and values must be &lt;= 1024 bytes. Label named &quot;language&quot; can be used to record the programming language of the profiled deployment. The standard choices for the value include &quot;java&quot;, &quot;go&quot;, &quot;python&quot;, &quot;ruby&quot;, &quot;nodejs&quot;, &quot;php&quot;, &quot;dotnet&quot;. For deployments running on Google Cloud Platform, &quot;zone&quot; or &quot;region&quot; label should be present describing the deployment location. An example of a zone is &quot;us-central1-a&quot;, an example of a region is &quot;us-central1&quot; or &quot;us-central&quot;.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Project ID is the ID of a cloud project. Validation regex: `^a-z{4,61}[a-z0-9]$`.
    &quot;target&quot;: &quot;A String&quot;, # Target is the service name used to group related deployments: * Service name for GAE Flex / Standard. * Cluster and container name for GKE. * User-specified string for direct GCE profiling (e.g. Java). * Job name for Dataflow. Validation regex: `^[a-z]([-a-z0-9_.]{0,253}[a-z0-9])?$`.
  },
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the profiling session. Input (for the offline mode) or output (for the online mode). The field represents requested profiling duration. It may slightly differ from the effective profiling duration, which is recorded in the profile data, in case the profiling can&#x27;t be stopped immediately (e.g. in case stopping the profiling is handled asynchronously).
  &quot;labels&quot;: { # Input only. Labels associated to this specific profile. These labels will get merged with the deployment labels for the final data set. See documentation on deployment labels for validation rules and limits.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Opaque, server-assigned, unique ID for this profile.
  &quot;profileBytes&quot;: &quot;A String&quot;, # Input only. Profile bytes, as a gzip compressed serialized proto, the format is https://github.com/google/pprof/blob/master/proto/profile.proto.
  &quot;profileType&quot;: &quot;A String&quot;, # Type of profile. For offline mode, this must be specified when creating the profile. For online mode it is assigned and returned by the server.
}

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

Returns:
  An object of the form:

    { # Profile resource.
  &quot;deployment&quot;: { # Deployment contains the deployment identification information. # Deployment this profile corresponds to.
    &quot;labels&quot;: { # Labels identify the deployment within the user universe and same target. Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. Value for an individual label must be &lt;= 512 bytes, the total size of all label names and values must be &lt;= 1024 bytes. Label named &quot;language&quot; can be used to record the programming language of the profiled deployment. The standard choices for the value include &quot;java&quot;, &quot;go&quot;, &quot;python&quot;, &quot;ruby&quot;, &quot;nodejs&quot;, &quot;php&quot;, &quot;dotnet&quot;. For deployments running on Google Cloud Platform, &quot;zone&quot; or &quot;region&quot; label should be present describing the deployment location. An example of a zone is &quot;us-central1-a&quot;, an example of a region is &quot;us-central1&quot; or &quot;us-central&quot;.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Project ID is the ID of a cloud project. Validation regex: `^a-z{4,61}[a-z0-9]$`.
    &quot;target&quot;: &quot;A String&quot;, # Target is the service name used to group related deployments: * Service name for GAE Flex / Standard. * Cluster and container name for GKE. * User-specified string for direct GCE profiling (e.g. Java). * Job name for Dataflow. Validation regex: `^[a-z]([-a-z0-9_.]{0,253}[a-z0-9])?$`.
  },
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the profiling session. Input (for the offline mode) or output (for the online mode). The field represents requested profiling duration. It may slightly differ from the effective profiling duration, which is recorded in the profile data, in case the profiling can&#x27;t be stopped immediately (e.g. in case stopping the profiling is handled asynchronously).
  &quot;labels&quot;: { # Input only. Labels associated to this specific profile. These labels will get merged with the deployment labels for the final data set. See documentation on deployment labels for validation rules and limits.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Opaque, server-assigned, unique ID for this profile.
  &quot;profileBytes&quot;: &quot;A String&quot;, # Input only. Profile bytes, as a gzip compressed serialized proto, the format is https://github.com/google/pprof/blob/master/proto/profile.proto.
  &quot;profileType&quot;: &quot;A String&quot;, # Type of profile. For offline mode, this must be specified when creating the profile. For online mode it is assigned and returned by the server.
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>UpdateProfile updates the profile bytes and labels on the profile resource created in the online mode. Updating the bytes for profiles created in the offline mode is currently not supported: the profile content must be provided at the time of the profile creation.

Args:
  name: string, Output only. Opaque, server-assigned, unique ID for this profile. (required)
  body: object, The request body.
    The object takes the form of:

{ # Profile resource.
  &quot;deployment&quot;: { # Deployment contains the deployment identification information. # Deployment this profile corresponds to.
    &quot;labels&quot;: { # Labels identify the deployment within the user universe and same target. Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. Value for an individual label must be &lt;= 512 bytes, the total size of all label names and values must be &lt;= 1024 bytes. Label named &quot;language&quot; can be used to record the programming language of the profiled deployment. The standard choices for the value include &quot;java&quot;, &quot;go&quot;, &quot;python&quot;, &quot;ruby&quot;, &quot;nodejs&quot;, &quot;php&quot;, &quot;dotnet&quot;. For deployments running on Google Cloud Platform, &quot;zone&quot; or &quot;region&quot; label should be present describing the deployment location. An example of a zone is &quot;us-central1-a&quot;, an example of a region is &quot;us-central1&quot; or &quot;us-central&quot;.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Project ID is the ID of a cloud project. Validation regex: `^a-z{4,61}[a-z0-9]$`.
    &quot;target&quot;: &quot;A String&quot;, # Target is the service name used to group related deployments: * Service name for GAE Flex / Standard. * Cluster and container name for GKE. * User-specified string for direct GCE profiling (e.g. Java). * Job name for Dataflow. Validation regex: `^[a-z]([-a-z0-9_.]{0,253}[a-z0-9])?$`.
  },
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the profiling session. Input (for the offline mode) or output (for the online mode). The field represents requested profiling duration. It may slightly differ from the effective profiling duration, which is recorded in the profile data, in case the profiling can&#x27;t be stopped immediately (e.g. in case stopping the profiling is handled asynchronously).
  &quot;labels&quot;: { # Input only. Labels associated to this specific profile. These labels will get merged with the deployment labels for the final data set. See documentation on deployment labels for validation rules and limits.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Opaque, server-assigned, unique ID for this profile.
  &quot;profileBytes&quot;: &quot;A String&quot;, # Input only. Profile bytes, as a gzip compressed serialized proto, the format is https://github.com/google/pprof/blob/master/proto/profile.proto.
  &quot;profileType&quot;: &quot;A String&quot;, # Type of profile. For offline mode, this must be specified when creating the profile. For online mode it is assigned and returned by the server.
}

  updateMask: string, Field mask used to specify the fields to be overwritten. Currently only profile_bytes and labels fields are supported by UpdateProfile, so only those fields can be specified in the mask. When no mask is provided, all fields are overwritten.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Profile resource.
  &quot;deployment&quot;: { # Deployment contains the deployment identification information. # Deployment this profile corresponds to.
    &quot;labels&quot;: { # Labels identify the deployment within the user universe and same target. Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. Value for an individual label must be &lt;= 512 bytes, the total size of all label names and values must be &lt;= 1024 bytes. Label named &quot;language&quot; can be used to record the programming language of the profiled deployment. The standard choices for the value include &quot;java&quot;, &quot;go&quot;, &quot;python&quot;, &quot;ruby&quot;, &quot;nodejs&quot;, &quot;php&quot;, &quot;dotnet&quot;. For deployments running on Google Cloud Platform, &quot;zone&quot; or &quot;region&quot; label should be present describing the deployment location. An example of a zone is &quot;us-central1-a&quot;, an example of a region is &quot;us-central1&quot; or &quot;us-central&quot;.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;projectId&quot;: &quot;A String&quot;, # Project ID is the ID of a cloud project. Validation regex: `^a-z{4,61}[a-z0-9]$`.
    &quot;target&quot;: &quot;A String&quot;, # Target is the service name used to group related deployments: * Service name for GAE Flex / Standard. * Cluster and container name for GKE. * User-specified string for direct GCE profiling (e.g. Java). * Job name for Dataflow. Validation regex: `^[a-z]([-a-z0-9_.]{0,253}[a-z0-9])?$`.
  },
  &quot;duration&quot;: &quot;A String&quot;, # Duration of the profiling session. Input (for the offline mode) or output (for the online mode). The field represents requested profiling duration. It may slightly differ from the effective profiling duration, which is recorded in the profile data, in case the profiling can&#x27;t be stopped immediately (e.g. in case stopping the profiling is handled asynchronously).
  &quot;labels&quot;: { # Input only. Labels associated to this specific profile. These labels will get merged with the deployment labels for the final data set. See documentation on deployment labels for validation rules and limits.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Opaque, server-assigned, unique ID for this profile.
  &quot;profileBytes&quot;: &quot;A String&quot;, # Input only. Profile bytes, as a gzip compressed serialized proto, the format is https://github.com/google/pprof/blob/master/proto/profile.proto.
  &quot;profileType&quot;: &quot;A String&quot;, # Type of profile. For offline mode, this must be specified when creating the profile. For online mode it is assigned and returned by the server.
}</pre>
</div>

</body></html>