<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="fusiontables_v1.html">Fusion Tables API</a> . <a href="fusiontables_v1.template.html">template</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(tableId, templateId)</a></code></p>
<p class="firstline">Deletes a template</p>
<p class="toc_element">
  <code><a href="#get">get(tableId, templateId)</a></code></p>
<p class="firstline">Retrieves a specific template by its id</p>
<p class="toc_element">
  <code><a href="#insert">insert(tableId, body)</a></code></p>
<p class="firstline">Creates a new template for the table.</p>
<p class="toc_element">
  <code><a href="#list">list(tableId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Retrieves a list of templates.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(tableId, templateId, body)</a></code></p>
<p class="firstline">Updates an existing template. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(tableId, templateId, body)</a></code></p>
<p class="firstline">Updates an existing template</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(tableId, templateId)</code>
  <pre>Deletes a template

Args:
  tableId: string, Table from which the template is being deleted (required)
  templateId: integer, Identifier for the template which is being deleted (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(tableId, templateId)</code>
  <pre>Retrieves a specific template by its id

Args:
  tableId: string, Table to which the template belongs (required)
  templateId: integer, Identifier for the template that is being requested (required)

Returns:
  An object of the form:

    { # Represents the contents of InfoWindow templates.
      "body": "A String", # Body of the template. It contains HTML with {column_name} to insert values from a particular column. The body is sanitized to remove certain tags, e.g., script. Only one of body or automaticColumns can be specified.
      "kind": "fusiontables#template", # Type name: a template for the info window contents. The template can either include an HTML body or a list of columns from which the template is computed automatically.
      "name": "A String", # Optional name assigned to a template.
      "automaticColumnNames": [ # List of columns from which the template is to be automatically constructed. Only one of body or automaticColumns can be specified.
        "A String",
      ],
      "tableId": "A String", # Identifier for the table for which the template is defined.
      "templateId": 42, # Identifier for the template, unique within the context of a particular table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(tableId, body)</code>
  <pre>Creates a new template for the table.

Args:
  tableId: string, Table for which a new template is being created (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents the contents of InfoWindow templates.
    "body": "A String", # Body of the template. It contains HTML with {column_name} to insert values from a particular column. The body is sanitized to remove certain tags, e.g., script. Only one of body or automaticColumns can be specified.
    "kind": "fusiontables#template", # Type name: a template for the info window contents. The template can either include an HTML body or a list of columns from which the template is computed automatically.
    "name": "A String", # Optional name assigned to a template.
    "automaticColumnNames": [ # List of columns from which the template is to be automatically constructed. Only one of body or automaticColumns can be specified.
      "A String",
    ],
    "tableId": "A String", # Identifier for the table for which the template is defined.
    "templateId": 42, # Identifier for the template, unique within the context of a particular table.
  }


Returns:
  An object of the form:

    { # Represents the contents of InfoWindow templates.
      "body": "A String", # Body of the template. It contains HTML with {column_name} to insert values from a particular column. The body is sanitized to remove certain tags, e.g., script. Only one of body or automaticColumns can be specified.
      "kind": "fusiontables#template", # Type name: a template for the info window contents. The template can either include an HTML body or a list of columns from which the template is computed automatically.
      "name": "A String", # Optional name assigned to a template.
      "automaticColumnNames": [ # List of columns from which the template is to be automatically constructed. Only one of body or automaticColumns can be specified.
        "A String",
      ],
      "tableId": "A String", # Identifier for the table for which the template is defined.
      "templateId": 42, # Identifier for the template, unique within the context of a particular table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(tableId, pageToken=None, maxResults=None)</code>
  <pre>Retrieves a list of templates.

Args:
  tableId: string, Identifier for the table whose templates are being requested (required)
  pageToken: string, Continuation token specifying which results page to return. Optional.
  maxResults: integer, Maximum number of templates to return. Optional. Default is 5.

Returns:
  An object of the form:

    { # Represents a list of templates for a given table.
    "nextPageToken": "A String", # Token used to access the next page of this result. No token is displayed if there are no more pages left.
    "items": [ # List of all requested templates.
      { # Represents the contents of InfoWindow templates.
          "body": "A String", # Body of the template. It contains HTML with {column_name} to insert values from a particular column. The body is sanitized to remove certain tags, e.g., script. Only one of body or automaticColumns can be specified.
          "kind": "fusiontables#template", # Type name: a template for the info window contents. The template can either include an HTML body or a list of columns from which the template is computed automatically.
          "name": "A String", # Optional name assigned to a template.
          "automaticColumnNames": [ # List of columns from which the template is to be automatically constructed. Only one of body or automaticColumns can be specified.
            "A String",
          ],
          "tableId": "A String", # Identifier for the table for which the template is defined.
          "templateId": 42, # Identifier for the template, unique within the context of a particular table.
        },
    ],
    "kind": "fusiontables#templateList", # Type name: a list of all templates.
    "totalItems": 42, # Total number of templates for the table.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(tableId, templateId, body)</code>
  <pre>Updates an existing template. This method supports patch semantics.

Args:
  tableId: string, Table to which the updated template belongs (required)
  templateId: integer, Identifier for the template that is being updated (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents the contents of InfoWindow templates.
    "body": "A String", # Body of the template. It contains HTML with {column_name} to insert values from a particular column. The body is sanitized to remove certain tags, e.g., script. Only one of body or automaticColumns can be specified.
    "kind": "fusiontables#template", # Type name: a template for the info window contents. The template can either include an HTML body or a list of columns from which the template is computed automatically.
    "name": "A String", # Optional name assigned to a template.
    "automaticColumnNames": [ # List of columns from which the template is to be automatically constructed. Only one of body or automaticColumns can be specified.
      "A String",
    ],
    "tableId": "A String", # Identifier for the table for which the template is defined.
    "templateId": 42, # Identifier for the template, unique within the context of a particular table.
  }


Returns:
  An object of the form:

    { # Represents the contents of InfoWindow templates.
      "body": "A String", # Body of the template. It contains HTML with {column_name} to insert values from a particular column. The body is sanitized to remove certain tags, e.g., script. Only one of body or automaticColumns can be specified.
      "kind": "fusiontables#template", # Type name: a template for the info window contents. The template can either include an HTML body or a list of columns from which the template is computed automatically.
      "name": "A String", # Optional name assigned to a template.
      "automaticColumnNames": [ # List of columns from which the template is to be automatically constructed. Only one of body or automaticColumns can be specified.
        "A String",
      ],
      "tableId": "A String", # Identifier for the table for which the template is defined.
      "templateId": 42, # Identifier for the template, unique within the context of a particular table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(tableId, templateId, body)</code>
  <pre>Updates an existing template

Args:
  tableId: string, Table to which the updated template belongs (required)
  templateId: integer, Identifier for the template that is being updated (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents the contents of InfoWindow templates.
    "body": "A String", # Body of the template. It contains HTML with {column_name} to insert values from a particular column. The body is sanitized to remove certain tags, e.g., script. Only one of body or automaticColumns can be specified.
    "kind": "fusiontables#template", # Type name: a template for the info window contents. The template can either include an HTML body or a list of columns from which the template is computed automatically.
    "name": "A String", # Optional name assigned to a template.
    "automaticColumnNames": [ # List of columns from which the template is to be automatically constructed. Only one of body or automaticColumns can be specified.
      "A String",
    ],
    "tableId": "A String", # Identifier for the table for which the template is defined.
    "templateId": 42, # Identifier for the template, unique within the context of a particular table.
  }


Returns:
  An object of the form:

    { # Represents the contents of InfoWindow templates.
      "body": "A String", # Body of the template. It contains HTML with {column_name} to insert values from a particular column. The body is sanitized to remove certain tags, e.g., script. Only one of body or automaticColumns can be specified.
      "kind": "fusiontables#template", # Type name: a template for the info window contents. The template can either include an HTML body or a list of columns from which the template is computed automatically.
      "name": "A String", # Optional name assigned to a template.
      "automaticColumnNames": [ # List of columns from which the template is to be automatically constructed. Only one of body or automaticColumns can be specified.
        "A String",
      ],
      "tableId": "A String", # Identifier for the table for which the template is defined.
      "templateId": 42, # Identifier for the template, unique within the context of a particular table.
    }</pre>
</div>

</body></html>