<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="apigee_v1.html">Apigee API</a> . <a href="apigee_v1.organizations.html">organizations</a> . <a href="apigee_v1.organizations.environments.html">environments</a> . <a href="apigee_v1.organizations.environments.analytics.html">analytics</a> . <a href="apigee_v1.organizations.environments.analytics.admin.html">admin</a></h1>
<h2>Instance Methods</h2>
<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="#getSchemav2">getSchemav2(name, disableCache=None, type=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a list of metrics and dimensions that can be used to create analytics queries and reports. Each schema element contains the name of the field, its associated type, and a flag indicating whether it is a standard or custom field.</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="getSchemav2">getSchemav2(name, disableCache=None, type=None, x__xgafv=None)</code>
  <pre>Gets a list of metrics and dimensions that can be used to create analytics queries and reports. Each schema element contains the name of the field, its associated type, and a flag indicating whether it is a standard or custom field.

Args:
  name: string, Required. Path to the schema. Use the following structure in your request: `organizations/{org}/environments/{env}/analytics/admin/schemav2`. (required)
  disableCache: boolean, Flag that specifies whether the schema is be read from the database or cache. Set to `true` to read the schema from the database. Defaults to cache.
  type: string, Required. Name of the dataset for which you want to retrieve the schema. For example: `fact` or `agg_cus1`
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for Schema call
  &quot;dimensions&quot;: [ # List of schema fields grouped as dimensions.
    { # Message type for the schema element
      &quot;name&quot;: &quot;A String&quot;, # Name of the field.
      &quot;properties&quot;: { # Properties for the schema field. # Properties for the schema field. For example: { &quot;createTime&quot;: &quot;2016-02-26T10:23:09.592Z&quot;, &quot;custom&quot;: &quot;false&quot;, &quot;type&quot;: &quot;string&quot; }
        &quot;createTime&quot;: &quot;A String&quot;, # Time the field was created in RFC3339 string form. For example: `2016-02-26T10:23:09.592Z`.
        &quot;custom&quot;: &quot;A String&quot;, # Flag that specifies whether the field is standard in the dataset or a custom field created by the customer. `true` indicates that it is a custom field.
        &quot;type&quot;: &quot;A String&quot;, # Data type of the field.
      },
    },
  ],
  &quot;meta&quot;: [ # Additional metadata associated with schema. This is a legacy field and usually consists of an empty array of strings.
    &quot;A String&quot;,
  ],
  &quot;metrics&quot;: [ # List of schema fields grouped as dimensions that can be used with an aggregate function such as `sum`, `avg`, `min`, and `max`.
    { # Message type for the schema element
      &quot;name&quot;: &quot;A String&quot;, # Name of the field.
      &quot;properties&quot;: { # Properties for the schema field. # Properties for the schema field. For example: { &quot;createTime&quot;: &quot;2016-02-26T10:23:09.592Z&quot;, &quot;custom&quot;: &quot;false&quot;, &quot;type&quot;: &quot;string&quot; }
        &quot;createTime&quot;: &quot;A String&quot;, # Time the field was created in RFC3339 string form. For example: `2016-02-26T10:23:09.592Z`.
        &quot;custom&quot;: &quot;A String&quot;, # Flag that specifies whether the field is standard in the dataset or a custom field created by the customer. `true` indicates that it is a custom field.
        &quot;type&quot;: &quot;A String&quot;, # Data type of the field.
      },
    },
  ],
}</pre>
</div>

</body></html>