<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">Cloud Debugger API (Deprecated)</a> . <a href="clouddebugger_v2.controller.html">controller</a> . <a href="clouddebugger_v2.controller.debuggees.html">debuggees</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="clouddebugger_v2.controller.debuggees.breakpoints.html">breakpoints()</a></code>
</p>
<p class="firstline">Returns the breakpoints Resource.</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="#register">register(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Registers the debuggee with the controller service. All agents attached to the same application must call this method with exactly the same request content to get back the same stable `debuggee_id`. Agents should call this method again whenever `google.rpc.Code.NOT_FOUND` is returned from any controller method. This protocol allows the controller service to disable debuggees, recover from data loss, or change the `debuggee_id` format. Agents must handle `debuggee_id` value changing upon re-registration.</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="register">register(body=None, x__xgafv=None)</code>
  <pre>Registers the debuggee with the controller service. All agents attached to the same application must call this method with exactly the same request content to get back the same stable `debuggee_id`. Agents should call this method again whenever `google.rpc.Code.NOT_FOUND` is returned from any controller method. This protocol allows the controller service to disable debuggees, recover from data loss, or change the `debuggee_id` format. Agents must handle `debuggee_id` value changing upon re-registration.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request to register a debuggee.
  &quot;debuggee&quot;: { # Represents the debugged application. 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. Agents attached to the same debuggee identify themselves as such by using exactly the same Debuggee message value when registering. # Required. Debuggee information to register. The fields `project`, `uniquifier`, `description` and `agent_version` of the debuggee must be set.
    &quot;agentVersion&quot;: &quot;A String&quot;, # Version ID of the agent. Schema: `domain/language-platform/vmajor.minor` (for example `google.com/java-gcp/v1.1`).
    &quot;canaryMode&quot;: &quot;A String&quot;, # Used when setting breakpoint canary for this debuggee.
    &quot;description&quot;: &quot;A String&quot;, # Human readable description of the debuggee. Including a human-readable project name, environment name and version information is recommended.
    &quot;extSourceContexts&quot;: [ # References to the locations and revisions of the source code used in the deployed application.
      { # An ExtendedSourceContext is a SourceContext combined with additional details describing the context.
        &quot;context&quot;: { # 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. # Any source context.
          &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a cloud repo (a repo hosted by the Google Cloud Platform). # A SourceContext referring to a revision in a cloud repo.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
            &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g. winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
          },
          &quot;cloudWorkspace&quot;: { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
            &quot;snapshotId&quot;: &quot;A String&quot;, # The ID of the snapshot. An empty snapshot_id refers to the most recent snapshot.
            &quot;workspaceId&quot;: { # A CloudWorkspaceId is a unique identifier for a cloud workspace. A cloud workspace is a place associated with a repo where modified files can be stored before they are committed. # The ID of the workspace.
              &quot;name&quot;: &quot;A String&quot;, # The unique name of the workspace within the repo. This is the name chosen by the client in the Source API&#x27;s CreateWorkspace method.
              &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
                &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g. winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                },
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              },
            },
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
            &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is hostURI/project.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
          },
          &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g. GitHub). # A SourceContext referring to any third party Git repo (e.g. GitHub).
            &quot;revisionId&quot;: &quot;A String&quot;, # Git commit hash. required.
            &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
          },
        },
        &quot;labels&quot;: { # Labels with user defined metadata.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the debuggee generated by the controller service.
    &quot;isDisabled&quot;: True or False, # If set to `true`, indicates that the agent should disable itself and detach from the debuggee.
    &quot;isInactive&quot;: True or False, # If set to `true`, indicates that Controller service does not detect any activity from the debuggee agents and the application is possibly stopped.
    &quot;labels&quot;: { # A set of custom debuggee properties, populated by the agent, to be displayed to the user.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;project&quot;: &quot;A String&quot;, # Project the debuggee is associated with. Use project number or id when registering a Google Cloud Platform project.
    &quot;sourceContexts&quot;: [ # References to the locations and revisions of the source code used in the deployed application.
      { # 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.
        &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a cloud repo (a repo hosted by the Google Cloud Platform). # A SourceContext referring to a revision in a cloud repo.
          &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
            &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
            &quot;name&quot;: &quot;A String&quot;, # The alias name.
          },
          &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
          &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo.
            &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g. winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
              &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
              &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
            },
            &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
          },
          &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
        },
        &quot;cloudWorkspace&quot;: { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
          &quot;snapshotId&quot;: &quot;A String&quot;, # The ID of the snapshot. An empty snapshot_id refers to the most recent snapshot.
          &quot;workspaceId&quot;: { # A CloudWorkspaceId is a unique identifier for a cloud workspace. A cloud workspace is a place associated with a repo where modified files can be stored before they are committed. # The ID of the workspace.
            &quot;name&quot;: &quot;A String&quot;, # The unique name of the workspace within the repo. This is the name chosen by the client in the Source API&#x27;s CreateWorkspace method.
            &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g. winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
          },
        },
        &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
          &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
            &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
            &quot;name&quot;: &quot;A String&quot;, # The alias name.
          },
          &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
          &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is hostURI/project.
          &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
          &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
        },
        &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g. GitHub). # A SourceContext referring to any third party Git repo (e.g. GitHub).
          &quot;revisionId&quot;: &quot;A String&quot;, # Git commit hash. required.
          &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
        },
      },
    ],
    &quot;status&quot;: { # Represents a contextual status message. 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`. # 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.
      &quot;description&quot;: { # Represents a message with parameters. # Status message text.
        &quot;format&quot;: &quot;A String&quot;, # 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 &#x27;$0&#x27; which helps debug $1 the first time it is loaded. Again, $0 is very important.` * `Please pay $$10 to use $0 instead of $1.`
        &quot;parameters&quot;: [ # Optional parameters to be embedded into the message.
          &quot;A String&quot;,
        ],
      },
      &quot;isError&quot;: True or False, # Distinguishes errors from informational messages.
      &quot;refersTo&quot;: &quot;A String&quot;, # Reference to which the message applies.
    },
    &quot;uniquifier&quot;: &quot;A String&quot;, # Uniquifier to further distinguish the application. It is possible that different applications might have identical values in the debuggee message, thus, incorrectly identified as a single application by the Controller service. This field adds salt to further distinguish the application. Agents should consider seeding this field with value that identifies the code, binary, configuration and environment.
  },
}

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

Returns:
  An object of the form:

    { # Response for registering a debuggee.
  &quot;agentId&quot;: &quot;A String&quot;, # A unique ID generated for the agent. Each RegisterDebuggee request will generate a new agent ID.
  &quot;debuggee&quot;: { # Represents the debugged application. 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. Agents attached to the same debuggee identify themselves as such by using exactly the same Debuggee message value when registering. # Debuggee resource. The field `id` is guaranteed to be set (in addition to the echoed fields). If the field `is_disabled` is set to `true`, the agent should disable itself by removing all breakpoints and detaching from the application. It should however continue to poll `RegisterDebuggee` until reenabled.
    &quot;agentVersion&quot;: &quot;A String&quot;, # Version ID of the agent. Schema: `domain/language-platform/vmajor.minor` (for example `google.com/java-gcp/v1.1`).
    &quot;canaryMode&quot;: &quot;A String&quot;, # Used when setting breakpoint canary for this debuggee.
    &quot;description&quot;: &quot;A String&quot;, # Human readable description of the debuggee. Including a human-readable project name, environment name and version information is recommended.
    &quot;extSourceContexts&quot;: [ # References to the locations and revisions of the source code used in the deployed application.
      { # An ExtendedSourceContext is a SourceContext combined with additional details describing the context.
        &quot;context&quot;: { # 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. # Any source context.
          &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a cloud repo (a repo hosted by the Google Cloud Platform). # A SourceContext referring to a revision in a cloud repo.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
            &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g. winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
          },
          &quot;cloudWorkspace&quot;: { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
            &quot;snapshotId&quot;: &quot;A String&quot;, # The ID of the snapshot. An empty snapshot_id refers to the most recent snapshot.
            &quot;workspaceId&quot;: { # A CloudWorkspaceId is a unique identifier for a cloud workspace. A cloud workspace is a place associated with a repo where modified files can be stored before they are committed. # The ID of the workspace.
              &quot;name&quot;: &quot;A String&quot;, # The unique name of the workspace within the repo. This is the name chosen by the client in the Source API&#x27;s CreateWorkspace method.
              &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
                &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g. winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                },
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              },
            },
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
            },
            &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
            &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is hostURI/project.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
          },
          &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g. GitHub). # A SourceContext referring to any third party Git repo (e.g. GitHub).
            &quot;revisionId&quot;: &quot;A String&quot;, # Git commit hash. required.
            &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
          },
        },
        &quot;labels&quot;: { # Labels with user defined metadata.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
    ],
    &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the debuggee generated by the controller service.
    &quot;isDisabled&quot;: True or False, # If set to `true`, indicates that the agent should disable itself and detach from the debuggee.
    &quot;isInactive&quot;: True or False, # If set to `true`, indicates that Controller service does not detect any activity from the debuggee agents and the application is possibly stopped.
    &quot;labels&quot;: { # A set of custom debuggee properties, populated by the agent, to be displayed to the user.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;project&quot;: &quot;A String&quot;, # Project the debuggee is associated with. Use project number or id when registering a Google Cloud Platform project.
    &quot;sourceContexts&quot;: [ # References to the locations and revisions of the source code used in the deployed application.
      { # 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.
        &quot;cloudRepo&quot;: { # A CloudRepoSourceContext denotes a particular revision in a cloud repo (a repo hosted by the Google Cloud Platform). # A SourceContext referring to a revision in a cloud repo.
          &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
            &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
            &quot;name&quot;: &quot;A String&quot;, # The alias name.
          },
          &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
          &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo.
            &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g. winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
              &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
              &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
            },
            &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
          },
          &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
        },
        &quot;cloudWorkspace&quot;: { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
          &quot;snapshotId&quot;: &quot;A String&quot;, # The ID of the snapshot. An empty snapshot_id refers to the most recent snapshot.
          &quot;workspaceId&quot;: { # A CloudWorkspaceId is a unique identifier for a cloud workspace. A cloud workspace is a place associated with a repo where modified files can be stored before they are committed. # The ID of the workspace.
            &quot;name&quot;: &quot;A String&quot;, # The unique name of the workspace within the repo. This is the name chosen by the client in the Source API&#x27;s CreateWorkspace method.
            &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
              &quot;projectRepoId&quot;: { # Selects a repo using a Google Cloud Platform project ID (e.g. winged-cargo-31) and a repo name within that project. # A combination of a project ID and a repo name.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                &quot;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
              },
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
            },
          },
        },
        &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
          &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
            &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
            &quot;name&quot;: &quot;A String&quot;, # The alias name.
          },
          &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
          &quot;gerritProject&quot;: &quot;A String&quot;, # The full project name within the host. Projects may be nested, so &quot;project/subproject&quot; is a valid project name. The &quot;repo name&quot; is hostURI/project.
          &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
          &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
        },
        &quot;git&quot;: { # A GitSourceContext denotes a particular revision in a third party Git repository (e.g. GitHub). # A SourceContext referring to any third party Git repo (e.g. GitHub).
          &quot;revisionId&quot;: &quot;A String&quot;, # Git commit hash. required.
          &quot;url&quot;: &quot;A String&quot;, # Git repository URL.
        },
      },
    ],
    &quot;status&quot;: { # Represents a contextual status message. 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`. # 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.
      &quot;description&quot;: { # Represents a message with parameters. # Status message text.
        &quot;format&quot;: &quot;A String&quot;, # 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 &#x27;$0&#x27; which helps debug $1 the first time it is loaded. Again, $0 is very important.` * `Please pay $$10 to use $0 instead of $1.`
        &quot;parameters&quot;: [ # Optional parameters to be embedded into the message.
          &quot;A String&quot;,
        ],
      },
      &quot;isError&quot;: True or False, # Distinguishes errors from informational messages.
      &quot;refersTo&quot;: &quot;A String&quot;, # Reference to which the message applies.
    },
    &quot;uniquifier&quot;: &quot;A String&quot;, # Uniquifier to further distinguish the application. It is possible that different applications might have identical values in the debuggee message, thus, incorrectly identified as a single application by the Controller service. This field adds salt to further distinguish the application. Agents should consider seeding this field with value that identifies the code, binary, configuration and environment.
  },
}</pre>
</div>

</body></html>