<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="bigquery_v2.html">BigQuery API</a> . <a href="bigquery_v2.datasets.html">datasets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, datasetId, deleteContents=None)</a></code></p>
<p class="firstline">Deletes the dataset specified by datasetId value. Before you can delete a dataset, you must delete all its tables, either manually or by specifying deleteContents. Immediately after deletion, you can create another dataset with the same name.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, datasetId)</a></code></p>
<p class="firstline">Returns the dataset specified by datasetID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(projectId, body)</a></code></p>
<p class="firstline">Creates a new empty dataset.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Lists all the datasets in the specified project to which the caller has read access; however, a project owner can list (but not necessarily get) all datasets in his project.</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(projectId, datasetId, body)</a></code></p>
<p class="firstline">Updates information in an existing dataset, specified by datasetId. Properties not included in the submitted resource will not be changed. If you include the access property without any values assigned, the request will fail as you must specify at least one owner for a dataset. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(projectId, datasetId, body)</a></code></p>
<p class="firstline">Updates information in an existing dataset, specified by datasetId. Properties not included in the submitted resource will not be changed. If you include the access property without any values assigned, the request will fail as you must specify at least one owner for a dataset.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(projectId, datasetId, deleteContents=None)</code>
  <pre>Deletes the dataset specified by datasetId value. Before you can delete a dataset, you must delete all its tables, either manually or by specifying deleteContents. Immediately after deletion, you can create another dataset with the same name.

Args:
  projectId: string, Project ID of the dataset being deleted (required)
  datasetId: string, Dataset ID of dataset being deleted (required)
  deleteContents: boolean, If True, delete all the tables in the dataset. If False and the dataset contains tables, the request will fail. Default is False
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, datasetId)</code>
  <pre>Returns the dataset specified by datasetID.

Args:
  projectId: string, Project ID of the requested dataset (required)
  datasetId: string, Dataset ID of the requested dataset (required)

Returns:
  An object of the form:

    {
      "kind": "bigquery#dataset", # [Output-only] The resource type.
      "description": "A String", # [Optional] A user-friendly string description for the dataset. This might be shown in BigQuery UI for browsing the dataset.
      "datasetReference": { # [Required] Reference identifying dataset.
        "projectId": "A String", # [Optional] The ID of the container project.
        "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
      },
      "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
      "access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
          # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
          # See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
          # To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
          # Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
        {
          "specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
          "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
          "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
          "groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
          "userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
        },
      ],
      "etag": "A String", # [Output-only] A hash of this resource.
      "friendlyName": "A String", # [Optional] A descriptive name for this dataset, which might be shown in any BigQuery user interfaces for browsing the dataset. Use datasetId for making API calls.
      "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
      "id": "A String", # [Output-only] The fully-qualified unique name of this dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
      "selfLink": "A String", # [Output-only] An URL that can be used to access this resource again. You can use this URL in Get or Update requests to this resource.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(projectId, body)</code>
  <pre>Creates a new empty dataset.

Args:
  projectId: string, Project ID of the new dataset (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "kind": "bigquery#dataset", # [Output-only] The resource type.
    "description": "A String", # [Optional] A user-friendly string description for the dataset. This might be shown in BigQuery UI for browsing the dataset.
    "datasetReference": { # [Required] Reference identifying dataset.
      "projectId": "A String", # [Optional] The ID of the container project.
      "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
    },
    "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
    "access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
        # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
        # See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
        # To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
        # Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
      {
        "specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
        "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
        "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
        "groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
        "userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
      },
    ],
    "etag": "A String", # [Output-only] A hash of this resource.
    "friendlyName": "A String", # [Optional] A descriptive name for this dataset, which might be shown in any BigQuery user interfaces for browsing the dataset. Use datasetId for making API calls.
    "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
    "id": "A String", # [Output-only] The fully-qualified unique name of this dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
    "selfLink": "A String", # [Output-only] An URL that can be used to access this resource again. You can use this URL in Get or Update requests to this resource.
  }


Returns:
  An object of the form:

    {
      "kind": "bigquery#dataset", # [Output-only] The resource type.
      "description": "A String", # [Optional] A user-friendly string description for the dataset. This might be shown in BigQuery UI for browsing the dataset.
      "datasetReference": { # [Required] Reference identifying dataset.
        "projectId": "A String", # [Optional] The ID of the container project.
        "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
      },
      "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
      "access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
          # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
          # See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
          # To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
          # Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
        {
          "specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
          "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
          "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
          "groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
          "userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
        },
      ],
      "etag": "A String", # [Output-only] A hash of this resource.
      "friendlyName": "A String", # [Optional] A descriptive name for this dataset, which might be shown in any BigQuery user interfaces for browsing the dataset. Use datasetId for making API calls.
      "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
      "id": "A String", # [Output-only] The fully-qualified unique name of this dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
      "selfLink": "A String", # [Output-only] An URL that can be used to access this resource again. You can use this URL in Get or Update requests to this resource.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, pageToken=None, maxResults=None)</code>
  <pre>Lists all the datasets in the specified project to which the caller has read access; however, a project owner can list (but not necessarily get) all datasets in his project.

Args:
  projectId: string, Project ID of the datasets to be listed (required)
  pageToken: string, Page token, returned by a previous call, to request the next page of results
  maxResults: integer, The maximum number of results to return

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # A token to request the next page of results. Present only when there is more than one page of results.* See Paging Through Results in the developer's guide.
    "kind": "bigquery#datasetList", # The type of list.
    "datasets": [ # An array of one or more summarized dataset resources. Absent when there are no datasets in the specified project.
      {
        "friendlyName": "A String", # A descriptive name for this dataset, if one exists.
        "kind": "bigquery#dataset", # The resource type.
        "id": "A String", # The fully-qualified unique name of this dataset in the format projectId:datasetId.
        "datasetReference": { # Reference identifying dataset.
          "projectId": "A String", # [Optional] The ID of the container project.
          "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
        },
      },
    ],
    "etag": "A String", # A hash of this page of results. See Paging Through Results in the developer's guide.
  }</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(projectId, datasetId, body)</code>
  <pre>Updates information in an existing dataset, specified by datasetId. Properties not included in the submitted resource will not be changed. If you include the access property without any values assigned, the request will fail as you must specify at least one owner for a dataset. This method supports patch semantics.

Args:
  projectId: string, Project ID of the dataset being updated (required)
  datasetId: string, Dataset ID of the dataset being updated (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "kind": "bigquery#dataset", # [Output-only] The resource type.
    "description": "A String", # [Optional] A user-friendly string description for the dataset. This might be shown in BigQuery UI for browsing the dataset.
    "datasetReference": { # [Required] Reference identifying dataset.
      "projectId": "A String", # [Optional] The ID of the container project.
      "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
    },
    "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
    "access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
        # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
        # See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
        # To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
        # Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
      {
        "specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
        "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
        "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
        "groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
        "userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
      },
    ],
    "etag": "A String", # [Output-only] A hash of this resource.
    "friendlyName": "A String", # [Optional] A descriptive name for this dataset, which might be shown in any BigQuery user interfaces for browsing the dataset. Use datasetId for making API calls.
    "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
    "id": "A String", # [Output-only] The fully-qualified unique name of this dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
    "selfLink": "A String", # [Output-only] An URL that can be used to access this resource again. You can use this URL in Get or Update requests to this resource.
  }


Returns:
  An object of the form:

    {
      "kind": "bigquery#dataset", # [Output-only] The resource type.
      "description": "A String", # [Optional] A user-friendly string description for the dataset. This might be shown in BigQuery UI for browsing the dataset.
      "datasetReference": { # [Required] Reference identifying dataset.
        "projectId": "A String", # [Optional] The ID of the container project.
        "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
      },
      "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
      "access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
          # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
          # See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
          # To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
          # Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
        {
          "specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
          "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
          "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
          "groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
          "userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
        },
      ],
      "etag": "A String", # [Output-only] A hash of this resource.
      "friendlyName": "A String", # [Optional] A descriptive name for this dataset, which might be shown in any BigQuery user interfaces for browsing the dataset. Use datasetId for making API calls.
      "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
      "id": "A String", # [Output-only] The fully-qualified unique name of this dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
      "selfLink": "A String", # [Output-only] An URL that can be used to access this resource again. You can use this URL in Get or Update requests to this resource.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(projectId, datasetId, body)</code>
  <pre>Updates information in an existing dataset, specified by datasetId. Properties not included in the submitted resource will not be changed. If you include the access property without any values assigned, the request will fail as you must specify at least one owner for a dataset.

Args:
  projectId: string, Project ID of the dataset being updated (required)
  datasetId: string, Dataset ID of the dataset being updated (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "kind": "bigquery#dataset", # [Output-only] The resource type.
    "description": "A String", # [Optional] A user-friendly string description for the dataset. This might be shown in BigQuery UI for browsing the dataset.
    "datasetReference": { # [Required] Reference identifying dataset.
      "projectId": "A String", # [Optional] The ID of the container project.
      "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
    },
    "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
    "access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
        # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
        # See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
        # To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
        # Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
      {
        "specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
        "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
        "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
        "groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
        "userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
      },
    ],
    "etag": "A String", # [Output-only] A hash of this resource.
    "friendlyName": "A String", # [Optional] A descriptive name for this dataset, which might be shown in any BigQuery user interfaces for browsing the dataset. Use datasetId for making API calls.
    "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
    "id": "A String", # [Output-only] The fully-qualified unique name of this dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
    "selfLink": "A String", # [Output-only] An URL that can be used to access this resource again. You can use this URL in Get or Update requests to this resource.
  }


Returns:
  An object of the form:

    {
      "kind": "bigquery#dataset", # [Output-only] The resource type.
      "description": "A String", # [Optional] A user-friendly string description for the dataset. This might be shown in BigQuery UI for browsing the dataset.
      "datasetReference": { # [Required] Reference identifying dataset.
        "projectId": "A String", # [Optional] The ID of the container project.
        "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
      },
      "creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
      "access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
          # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
          # See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
          # To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
          # Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
        {
          "specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
          "domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
          "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
          "groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
          "userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
        },
      ],
      "etag": "A String", # [Output-only] A hash of this resource.
      "friendlyName": "A String", # [Optional] A descriptive name for this dataset, which might be shown in any BigQuery user interfaces for browsing the dataset. Use datasetId for making API calls.
      "lastModifiedTime": "A String", # [Output-only] The date when this dataset or any of its tables was last modified, in milliseconds since the epoch.
      "id": "A String", # [Output-only] The fully-qualified unique name of this dataset in the format projectId:datasetId. The dataset name without the project name is given in the datasetId field. When creating a new dataset, leave this field blank, and instead specify the datasetId field.
      "selfLink": "A String", # [Output-only] An URL that can be used to access this resource again. You can use this URL in Get or Update requests to this resource.
    }</pre>
</div>

</body></html>