<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</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;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;refersTo&quot;: &quot;A String&quot;, # Reference to which the message applies.
        &quot;isError&quot;: True or False, # Distinguishes errors from informational messages.
      },
      &quot;canaryMode&quot;: &quot;A String&quot;, # Used when setting breakpoint canary for this debuggee.
      &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;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
            },
            &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo.
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
              },
            },
          },
          &quot;cloudWorkspace&quot;: { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
            &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;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                },
              },
              &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;snapshotId&quot;: &quot;A String&quot;, # The ID of the snapshot. An empty snapshot_id refers to the most recent snapshot.
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &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;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
            },
          },
          &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;url&quot;: &quot;A String&quot;, # Git repository URL.
            &quot;revisionId&quot;: &quot;A String&quot;, # Git commit hash. required.
          },
        },
      ],
      &quot;isDisabled&quot;: True or False, # If set to `true`, indicates that the agent should disable itself and detach from the debuggee.
      &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.
      &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;labels&quot;: { # Labels with user defined metadata.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &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;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              },
              &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo.
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                },
              },
            },
            &quot;cloudWorkspace&quot;: { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
              &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;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
                  &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                  &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                    &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  },
                },
                &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;snapshotId&quot;: &quot;A String&quot;, # The ID of the snapshot. An empty snapshot_id refers to the most recent snapshot.
            },
            &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
              &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
              &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
              &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;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              },
            },
            &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;url&quot;: &quot;A String&quot;, # Git repository URL.
              &quot;revisionId&quot;: &quot;A String&quot;, # Git commit hash. required.
            },
          },
        },
      ],
      &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;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;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;id&quot;: &quot;A String&quot;, # Unique identifier for the debuggee generated by the controller service.
    },
  }

  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;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;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;refersTo&quot;: &quot;A String&quot;, # Reference to which the message applies.
        &quot;isError&quot;: True or False, # Distinguishes errors from informational messages.
      },
      &quot;canaryMode&quot;: &quot;A String&quot;, # Used when setting breakpoint canary for this debuggee.
      &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;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
            &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
            },
            &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo.
              &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
              &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
              },
            },
          },
          &quot;cloudWorkspace&quot;: { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
            &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;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                },
              },
              &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;snapshotId&quot;: &quot;A String&quot;, # The ID of the snapshot. An empty snapshot_id refers to the most recent snapshot.
          },
          &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
            &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
            &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
            &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
            &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;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
              &quot;name&quot;: &quot;A String&quot;, # The alias name.
              &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
            },
          },
          &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;url&quot;: &quot;A String&quot;, # Git repository URL.
            &quot;revisionId&quot;: &quot;A String&quot;, # Git commit hash. required.
          },
        },
      ],
      &quot;isDisabled&quot;: True or False, # If set to `true`, indicates that the agent should disable itself and detach from the debuggee.
      &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.
      &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;labels&quot;: { # Labels with user defined metadata.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &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;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision ID.
              &quot;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              },
              &quot;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo.
                &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                },
              },
            },
            &quot;cloudWorkspace&quot;: { # A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot. # A SourceContext referring to a snapshot in a cloud workspace.
              &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;repoId&quot;: { # A unique identifier for a cloud repo. # The ID of the repo containing the workspace.
                  &quot;uid&quot;: &quot;A String&quot;, # A server-assigned, globally unique identifier.
                  &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;repoName&quot;: &quot;A String&quot;, # The name of the repo. Leave empty for the default repo.
                    &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project.
                  },
                },
                &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;snapshotId&quot;: &quot;A String&quot;, # The ID of the snapshot. An empty snapshot_id refers to the most recent snapshot.
            },
            &quot;gerrit&quot;: { # A SourceContext referring to a Gerrit project. # A SourceContext referring to a Gerrit project.
              &quot;aliasName&quot;: &quot;A String&quot;, # The name of an alias (branch, tag, etc.).
              &quot;revisionId&quot;: &quot;A String&quot;, # A revision (commit) ID.
              &quot;hostUri&quot;: &quot;A String&quot;, # The URI of a running Gerrit instance.
              &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;aliasContext&quot;: { # An alias to a repo revision. # An alias, which may be a branch or tag.
                &quot;name&quot;: &quot;A String&quot;, # The alias name.
                &quot;kind&quot;: &quot;A String&quot;, # The alias kind.
              },
            },
            &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;url&quot;: &quot;A String&quot;, # Git repository URL.
              &quot;revisionId&quot;: &quot;A String&quot;, # Git commit hash. required.
            },
          },
        },
      ],
      &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;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;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;id&quot;: &quot;A String&quot;, # Unique identifier for the debuggee generated by the controller service.
    },
    &quot;agentId&quot;: &quot;A String&quot;, # A unique ID generated for the agent. Each RegisterDebuggee request will generate a new agent ID.
  }</pre>
</div>

</body></html>