<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="clouddebugger_v2.html">Stackdriver Debugger API</a> . <a href="clouddebugger_v2.debugger.html">debugger</a> . <a href="clouddebugger_v2.debugger.debuggees.html">debuggees</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="clouddebugger_v2.debugger.debuggees.breakpoints.html">breakpoints()</a></code>
</p>
<p class="firstline">Returns the breakpoints Resource.</p>

<p class="toc_element">
  <code><a href="#list">list(clientVersion=None, includeInactive=None, project=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the debuggees that the user can set breakpoints to.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(clientVersion=None, includeInactive=None, project=None, x__xgafv=None)</code>
  <pre>Lists all the debuggees that the user can set breakpoints to.

Args:
  clientVersion: string, The client version making the call.
Following: `domain/type/version` (e.g., `google.com/intellij/v1`).
  includeInactive: boolean, When set to `true`, the result includes all debuggees. Otherwise, the
result includes only debuggees that are active.
  project: string, Project number of a Google Cloud project whose debuggees to list.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for listing debuggees.
    "debuggees": [ # List of debuggees accessible to the calling user.
        # Note that the `description` field is the only human readable field
        # that should be displayed to the user.
        # The fields `debuggee.id` and  `description` fields are guaranteed to be
        # set on each debuggee.
      { # Represents the application to debug. The application may include one or more
          # replicated processes executing the same code. Each of these processes is
          # attached with a debugger agent, carrying out the debugging commands.
          # The agents attached to the same debuggee are identified by using exactly the
          # same field values when registering.
        "status": { # Represents a contextual status message. # Human readable message to be displayed to the user about this debuggee.
            # Absence of this field indicates no status. The message can be either
            # informational or an error status.
            # The message can indicate an error or informational status, and refer to
            # specific parts of the containing object.
            # For example, the `Breakpoint.status` field can indicate an error referring
            # to the `BREAKPOINT_SOURCE_LOCATION` with the message `Location not found`.
          "isError": True or False, # Distinguishes errors from informational messages.
          "refersTo": "A String", # Reference to which the message applies.
          "description": { # Represents a message with parameters. # Status message text.
            "parameters": [ # Optional parameters to be embedded into the message.
              "A String",
            ],
            "format": "A String", # Format template for the message. The `format` uses placeholders `$0`,
                # `$1`, etc. to reference parameters. `$$` can be used to denote the `$`
                # character.
                #
                # Examples:
                #
                # *   `Failed to load '$0' which helps debug $1 the first time it
                #     is loaded.  Again, $0 is very important.`
                # *   `Please pay $$10 to use $0 instead of $1.`
          },
        },
        "description": "A String", # Human readable description of the debuggee.
            # Including a human-readable project name, environment name and version
            # information is recommended.
        "isDisabled": True or False, # If set to `true`, indicates that the agent should disable itself and
            # detach from the debuggee.
        "labels": { # A set of custom debuggee properties, populated by the agent, to be
            # displayed to the user.
          "a_key": "A String",
        },
        "uniquifier": "A String", # Debuggee uniquifier within the project.
            # Any string that identifies the application within the project can be used.
            # Including environment and version or build IDs is recommended.
        "project": "A String", # Project the debuggee is associated with.
            # Use the project number when registering a Google Cloud Platform project.
        "sourceContexts": [ # References to the locations and revisions of the source code used in the
            # deployed application.
            #
            # NOTE: This field is deprecated. Consumers should use
            # `ext_source_contexts` if it is not empty. Debug agents should populate
            # both this field and `ext_source_contexts`.
          { # A SourceContext is a reference to a tree of files. A SourceContext together
              # with a path point to a unique revision of a single file or directory.
            "cloudWorkspace": { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
              "snapshotId": "A String", # The ID of the snapshot.
                  # An empty snapshot_id refers to the most recent snapshot.
              "workspaceId": { # A CloudWorkspaceId is a unique identifier for a cloud workspace. # The ID of the workspace.
                  # A cloud workspace is a place associated with a repo where modified files
                  # can be stored before they are committed.
                "name": "A String", # The unique name of the workspace within the repo.  This is the name
                    # chosen by the client in the Source API's CreateWorkspace method.
                "repoId": { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
                  "projectRepoId": { # Selects a repo using a Google Cloud Platform project ID # A combination of a project ID and a repo name.
                      # (e.g. winged-cargo-31) and a repo name within that project.
                    "projectId": "A String", # The ID of the project.
                    "repoName": "A String", # The name of the repo. Leave empty for the default repo.
                  },
                  "uid": "A String", # A server-assigned, globally unique identifier.
                },
              },
            },
            "cloudRepo": { # A CloudRepoSourceContext denotes a particular revision in a cloud # A SourceContext referring to a revision in a cloud repo.
                # repo (a repo hosted by the Google Cloud Platform).
              "aliasContext": { # An alias to a repo revision. # An alias, which may be a branch or tag.
                "kind": "A String", # The alias kind.
                "name": "A String", # The alias name.
              },
              "revisionId": "A String", # A revision ID.
              "aliasName": "A String", # The name of an alias (branch, tag, etc.).
              "repoId": { # A unique identifier for a cloud repo. # The ID of the repo.
                "projectRepoId": { # Selects a repo using a Google Cloud Platform project ID # A combination of a project ID and a repo name.
                    # (e.g. winged-cargo-31) and a repo name within that project.
                  "projectId": "A String", # The ID of the project.
                  "repoName": "A String", # The name of the repo. Leave empty for the default repo.
                },
                "uid": "A String", # A server-assigned, globally unique identifier.
              },
            },
            "git": { # A GitSourceContext denotes a particular revision in a third party Git # A SourceContext referring to any third party Git repo (e.g. GitHub).
                # repository (e.g. GitHub).
              "url": "A String", # Git repository URL.
              "revisionId": "A String", # Git commit hash.
                  # required.
            },
            "gerrit": { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
              "aliasContext": { # An alias to a repo revision. # An alias, which may be a branch or tag.
                "kind": "A String", # The alias kind.
                "name": "A String", # The alias name.
              },
              "revisionId": "A String", # A revision (commit) ID.
              "hostUri": "A String", # The URI of a running Gerrit instance.
              "aliasName": "A String", # The name of an alias (branch, tag, etc.).
              "gerritProject": "A String", # The full project name within the host. Projects may be nested, so
                  # "project/subproject" is a valid project name.
                  # The "repo name" is hostURI/project.
            },
          },
        ],
        "extSourceContexts": [ # References to the locations and revisions of the source code used in the
            # deployed application.
            #
            # Contexts describing a remote repo related to the source code
            # have a `category` label of `remote_repo`. Source snapshot source
            # contexts have a `category` of `snapshot`.
          { # An ExtendedSourceContext is a SourceContext combined with additional
              # details describing the context.
            "labels": { # Labels with user defined metadata.
              "a_key": "A String",
            },
            "context": { # A SourceContext is a reference to a tree of files. A SourceContext together # Any source context.
                # with a path point to a unique revision of a single file or directory.
              "cloudWorkspace": { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
                "snapshotId": "A String", # The ID of the snapshot.
                    # An empty snapshot_id refers to the most recent snapshot.
                "workspaceId": { # A CloudWorkspaceId is a unique identifier for a cloud workspace. # The ID of the workspace.
                    # A cloud workspace is a place associated with a repo where modified files
                    # can be stored before they are committed.
                  "name": "A String", # The unique name of the workspace within the repo.  This is the name
                      # chosen by the client in the Source API's CreateWorkspace method.
                  "repoId": { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
                    "projectRepoId": { # Selects a repo using a Google Cloud Platform project ID # A combination of a project ID and a repo name.
                        # (e.g. winged-cargo-31) and a repo name within that project.
                      "projectId": "A String", # The ID of the project.
                      "repoName": "A String", # The name of the repo. Leave empty for the default repo.
                    },
                    "uid": "A String", # A server-assigned, globally unique identifier.
                  },
                },
              },
              "cloudRepo": { # A CloudRepoSourceContext denotes a particular revision in a cloud # A SourceContext referring to a revision in a cloud repo.
                  # repo (a repo hosted by the Google Cloud Platform).
                "aliasContext": { # An alias to a repo revision. # An alias, which may be a branch or tag.
                  "kind": "A String", # The alias kind.
                  "name": "A String", # The alias name.
                },
                "revisionId": "A String", # A revision ID.
                "aliasName": "A String", # The name of an alias (branch, tag, etc.).
                "repoId": { # A unique identifier for a cloud repo. # The ID of the repo.
                  "projectRepoId": { # Selects a repo using a Google Cloud Platform project ID # A combination of a project ID and a repo name.
                      # (e.g. winged-cargo-31) and a repo name within that project.
                    "projectId": "A String", # The ID of the project.
                    "repoName": "A String", # The name of the repo. Leave empty for the default repo.
                  },
                  "uid": "A String", # A server-assigned, globally unique identifier.
                },
              },
              "git": { # A GitSourceContext denotes a particular revision in a third party Git # A SourceContext referring to any third party Git repo (e.g. GitHub).
                  # repository (e.g. GitHub).
                "url": "A String", # Git repository URL.
                "revisionId": "A String", # Git commit hash.
                    # required.
              },
              "gerrit": { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
                "aliasContext": { # An alias to a repo revision. # An alias, which may be a branch or tag.
                  "kind": "A String", # The alias kind.
                  "name": "A String", # The alias name.
                },
                "revisionId": "A String", # A revision (commit) ID.
                "hostUri": "A String", # The URI of a running Gerrit instance.
                "aliasName": "A String", # The name of an alias (branch, tag, etc.).
                "gerritProject": "A String", # The full project name within the host. Projects may be nested, so
                    # "project/subproject" is a valid project name.
                    # The "repo name" is hostURI/project.
              },
            },
          },
        ],
        "agentVersion": "A String", # Version ID of the agent release. The version ID is structured as
            # following: `domain/type/vmajor.minor` (for example
            # `google.com/gcp-java/v1.1`).
        "isInactive": True or False, # If set to `true`, indicates that the debuggee is considered as inactive by
            # the Controller service.
        "id": "A String", # Unique identifier for the debuggee generated by the controller service.
      },
    ],
  }</pre>
</div>

</body></html>