<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;enablePrivateKeyCheck&quot;: True or False, # Reject a Git push that contains a private key.
  &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.
    },
  },
}</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;projectConfig&quot;: { # Cloud Source Repositories configuration of a project. # The new configuration for the project.
    &quot;enablePrivateKeyCheck&quot;: True or False, # Reject a Git push that contains a private key.
    &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;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.
}

  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;enablePrivateKeyCheck&quot;: True or False, # Reject a Git push that contains a private key.
  &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.
    },
  },
}</pre>
</div>

</body></html>