<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="sourcerepo_v1.html">Cloud Source Repositories API</a> . <a href="sourcerepo_v1.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="sourcerepo_v1.projects.repos.html">repos()</a></code>
</p>
<p class="firstline">Returns the repos 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="#getConfig">getConfig(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the Cloud Source Repositories configuration of the project.</p>
<p class="toc_element">
  <code><a href="#updateConfig">updateConfig(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the Cloud Source Repositories configuration of the project.</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="getConfig">getConfig(name, x__xgafv=None)</code>
  <pre>Returns the Cloud Source Repositories configuration of the project.

Args:
  name: string, The name of the requested project. Values are of the form `projects/`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Cloud Source Repositories configuration of a project.
    &quot;name&quot;: &quot;A String&quot;, # The name of the project. Values are of the form `projects/`.
    &quot;pubsubConfigs&quot;: { # How this project publishes a change in the repositories through Cloud Pub/Sub. Keyed by the topic names.
      &quot;a_key&quot;: { # Configuration to publish a Cloud Pub/Sub message.
        &quot;messageFormat&quot;: &quot;A String&quot;, # The format of the Cloud Pub/Sub messages.
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Email address of the service account used for publishing Cloud Pub/Sub messages. This service account needs to be in the same project as the PubsubConfig. When added, the caller needs to have iam.serviceAccounts.actAs permission on this service account. If unspecified, it defaults to the compute engine default service account.
        &quot;topic&quot;: &quot;A String&quot;, # A topic of Cloud Pub/Sub. Values are of the form `projects//topics/`. The project needs to be the same project as this config is in.
      },
    },
    &quot;enablePrivateKeyCheck&quot;: True or False, # Reject a Git push that contains a private key.
  }</pre>
</div>

<div class="method">
    <code class="details" id="updateConfig">updateConfig(name, body=None, x__xgafv=None)</code>
  <pre>Updates the Cloud Source Repositories configuration of the project.

Args:
  name: string, The name of the requested project. Values are of the form `projects/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for UpdateProjectConfig.
    &quot;updateMask&quot;: &quot;A String&quot;, # A FieldMask specifying which fields of the project_config to modify. Only the fields in the mask will be modified. If no mask is provided, this request is no-op.
    &quot;projectConfig&quot;: { # Cloud Source Repositories configuration of a project. # The new configuration for the project.
      &quot;name&quot;: &quot;A String&quot;, # The name of the project. Values are of the form `projects/`.
      &quot;pubsubConfigs&quot;: { # How this project publishes a change in the repositories through Cloud Pub/Sub. Keyed by the topic names.
        &quot;a_key&quot;: { # Configuration to publish a Cloud Pub/Sub message.
          &quot;messageFormat&quot;: &quot;A String&quot;, # The format of the Cloud Pub/Sub messages.
          &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Email address of the service account used for publishing Cloud Pub/Sub messages. This service account needs to be in the same project as the PubsubConfig. When added, the caller needs to have iam.serviceAccounts.actAs permission on this service account. If unspecified, it defaults to the compute engine default service account.
          &quot;topic&quot;: &quot;A String&quot;, # A topic of Cloud Pub/Sub. Values are of the form `projects//topics/`. The project needs to be the same project as this config is in.
        },
      },
      &quot;enablePrivateKeyCheck&quot;: True or False, # Reject a Git push that contains a private key.
    },
  }

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

Returns:
  An object of the form:

    { # Cloud Source Repositories configuration of a project.
    &quot;name&quot;: &quot;A String&quot;, # The name of the project. Values are of the form `projects/`.
    &quot;pubsubConfigs&quot;: { # How this project publishes a change in the repositories through Cloud Pub/Sub. Keyed by the topic names.
      &quot;a_key&quot;: { # Configuration to publish a Cloud Pub/Sub message.
        &quot;messageFormat&quot;: &quot;A String&quot;, # The format of the Cloud Pub/Sub messages.
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Email address of the service account used for publishing Cloud Pub/Sub messages. This service account needs to be in the same project as the PubsubConfig. When added, the caller needs to have iam.serviceAccounts.actAs permission on this service account. If unspecified, it defaults to the compute engine default service account.
        &quot;topic&quot;: &quot;A String&quot;, # A topic of Cloud Pub/Sub. Values are of the form `projects//topics/`. The project needs to be the same project as this config is in.
      },
    },
    &quot;enablePrivateKeyCheck&quot;: True or False, # Reject a Git push that contains a private key.
  }</pre>
</div>

</body></html>