# Table

## Base definition

```javascript
{
  "kind": "table",
  "uri": string,
  "id": string,
  "url": string,	
  "qualifiedReference": string,
  "scopedReference": string,
  "referenceId": string,
  "name": string,
  "hash": string,
  "isSample": boolean,
  "isFileIndex": boolean
}
```

## List definition

In addition to the base definition, any dataset resource returned by a `list` request will contain the following properties:

```javascript
{
    "createdAt": integer,
    "updatedAt": integer,
    "description": string,
    "numRows": integer,
    "numBytes": integer,
    "uploadMergeStrategy": string("append"|"replace")
    "variableCount": integer
}

```

## Get definition

In addition to the list definition, any dataset resource returned by a `get` request will contain the following properties:

```javascript
{
  "canDownload": boolean,
  "entity": {
    "name": string,
  },
  "temporalRange": [integer, integer], 
  "temporalPrecision": string,
  "geoBBox": {
    "westLongitude": number,
    "eastLongitude": number,
    "northLatitude": number,
    "southLatitude": number
  },
  "publicAccessLevel": string("none"|"overview"|"metadata"|"data"),
  "accessLevel": string("overview"|"metadata"|"data"),
  "container": {
    ...(dataset.base | workflow.base)
  }
}

```

## Documentation

<table><thead><tr><th>Fields</th><th>Description</th></tr></thead><tbody><tr><td><p></p><p><strong>Base</strong><br></p></td><td></td></tr><tr><td>kind</td><td><p><strong>string</strong></p><p>The resource type. Will always be "table".</p></td></tr><tr><td>id</td><td><p><strong>integer</strong></p><p>A unique, persistent identifier for the table.</p></td></tr><tr><td>uri</td><td><p><strong>string</strong></p><p>The fully qualified URI of this table, for use in generating calls to this API. </p><p>For example, <code>/tables/imathews.ian_s_dataset:123:v1_0.test_table:3</code></p></td></tr><tr><td>qualifiedReference</td><td><p><strong>string</strong></p><p>The <a href="../referencing-resources">fully qualified reference</a> to this table, for use (e.g.) in a SQL query. </p><p>For example,</p><pre class="language-http"><code class="lang-http">demo.reddit:prpw:v1_0.posts:7q4m
</code></pre></td></tr><tr><td>scopedReference</td><td><strong>string</strong><br>The canonical reference for the table, without any qualifiers. E.g., <code>posts:7q4m</code></td></tr><tr><td>referenceId</td><td><strong>string</strong><br>A persistent, 4-character identifier for this table. Will always be unique across all tables within a dataset / workflow.</td></tr><tr><td>url</td><td><p><strong>string</strong></p><p>The table's discoverable url.</p></td></tr><tr><td>name</td><td><p><strong>string</strong></p><p>The table's user-provided name.</p></td></tr><tr><td>hash</td><td><strong>string</strong><br>A hex-encoded MD5 hash of the number of bytes, number of rows, variable names, and variable types in the table.<br><br><strong>Note that this is not a hash of the data in the table</strong>. It is possible for two tables to have identical hashes but different data if the schema, number of rows, and number of bytes remain unchanged.</td></tr><tr><td>isSample</td><td><p><strong>boolean</strong></p><p>Whether or not the table represents a sample of another table. Will always be false for tables that belong to a workflow.</p></td></tr><tr><td>isFileIndex</td><td><strong>boolean</strong><br>Whether or not the table represents a collection of non-tabular files, with each row representing <a href="../rest-api/files">a file</a>. Index tables are also referred to as "Folders" in some parts of the user interface.</td></tr><tr><td>uploadMergeStrategy</td><td><p><strong>string</strong></p><p>Only present on tables belonging to a dataset. Defines whether uploads in subsequent versions replace or append to the previous version's content.</p></td></tr><tr><td><br><strong>Get</strong><br></td><td></td></tr><tr><td>createdAt</td><td><p><strong>integer</strong></p><p>When the table was created. Stored as milliseconds since the epoch (1970-01-01).</p></td></tr><tr><td>updatedAt</td><td><p><strong>integer</strong></p><p>When the table was updated. Stored as milliseconds since the epoch (1970-01-01).</p></td></tr><tr><td>description</td><td><p><strong>string</strong></p><p>A user-provided description of the table. May be null.</p></td></tr><tr><td>numRows</td><td><p><strong>integer</strong></p><p>The number of rows in the table.</p></td></tr><tr><td>numBytes</td><td><p><strong>integer</strong></p><p>The number of bytes stored in the table.</p></td></tr><tr><td>variableCount</td><td><p><strong>integer</strong></p><p>The number of variables in the table.</p></td></tr><tr><td>canDownload</td><td><p><strong>boolean</strong></p><p>Whether or not the data in the table can be exported to the current client environment. Will be false if in violation of at least one export restriction.</p><p></p><p>If false, all calls that return <code>tableRows</code> or <code>exports</code> will fail with a 403 status code. </p></td></tr><tr><td>entity</td><td><p><strong>object</strong></p><p>The user provided "entity" of the table, defining what each row in the table represents. May be null.</p></td></tr><tr><td>entity.name</td><td><p><strong>object</strong></p><p>The name of the entity.</p></td></tr><tr><td>temporalRange</td><td><p><strong>array(integer, integer)</strong></p><p>Will be null if no range has been specified. A tuple representing the start and end values for the temporal range. Stored as milliseconds since the epoch (1970-01-01).</p><p></p><p>Note that in the case where <code>temporalPrecision</code> is "year" or "date", the upper bound of this value will store one millisecond before the next offset. For example:</p><p><code>[1980, 1982]</code>  </p><p>=> <code>[1980-01-01 00:00:00.000, 1982-12-31 23:59:59.999]</code></p><p><code>[1990-09-19, 1990-09-24]</code></p><p> => <code>[1990-09-19 00:00:00.000, 1990-09-24 23:59:59.999]</code></p></td></tr><tr><td>temporalPrecision</td><td><p><strong>string</strong></p><p>The precision of the temporal range. Will be one of <code>"year", "date", "dateTime"</code></p></td></tr><tr><td>geoBBox</td><td><strong>object</strong><br>An object describing the geographic bounding box of all geographic variables in the table. <br><br>Will only be present for tables containing "geography" variables, and if those variables' summary statistics have been computed (computation is performed automatically when a version of a dataset is released).</td></tr><tr><td>geoBBox<br>  .westLongitude<br>  .eastLongitude<br>  .northLatitude</td><td><strong>number</strong><br>Each property represents one side of the bounding box, expressed in numeric degrees.</td></tr><tr><td>publicAccessLevel</td><td><p><strong>string</strong></p><p>The accessLevel of the table to unauthenticated users. Will be one of: <code>"none", "overview", "metadata", "data"</code></p></td></tr><tr><td>accessLevel</td><td><p><strong>string</strong></p><p>The accessLevel of the table for the current user, ignoring the access token being used. Will be one of: <code>"none", "overview", "metadata", "data"</code></p></td></tr><tr><td>container</td><td><p><strong>object</strong></p><p>Either the workflow or dataset within which this table is contained. Will be the base definition of either a <a href="workflow">workflow</a> or <a href="dataset">dataset</a> resource.</p></td></tr></tbody></table>
