> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.glideapps.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overwrite Table

> Replaces the schema and/or data of a Big Table

Overwrite an existing Big Table by clearing all rows and (optionally) adding new data.

Row IDs for any added rows are returned in the response in the same order as the input row data is passed in the request. Row data may be passed in JSON, CSV, or TSV format.

If a column is not included in the passed row data, it will be empty in the added row. If a column is passed that does not exist in the updated table schema, or with a value that does not match the column's type, the default behavior is for no action to be taken and the API call to [return an error](/api-reference/v2/general/errors#invalid-row-data). However, you can control this behavior with the `onSchemaError` query parameter.

<Warning>
  There is currently no way to supply values for user-specific columns in the API. Those columns will be cleared when using this endpoint.
</Warning>

### Updating the Schema

You can optionally update the table schema at the same time by providing a new schema in the JSON request body. If you do not provide a schema, the existing schema will be used.

When using a CSV or TSV request body, you cannot pass a schema. If you need to update the schema, use the `onSchemaError=updateSchema` query parameter, or [stash](/api-reference/v2/stashing/introduction) the CSV/TSV data and pass a JSON request body referencing the stash ID.

## Examples

<AccordionGroup>
  <Accordion title="Clear table data">
    To clear all rows from a table, send a PUT request with an empty array in the `rows` field:

    ```json theme={null}
    {
        "rows": []
    }
    ```
  </Accordion>

  <Accordion title="Reset table data">
    If you want to reset a table's data with a small number of rows, you can do so by providing the data inline in the `rows` field (being sure that row object structure matches the table schema):

    ```json theme={null}
    [
        {
            "fullName": "Alex Bard",
            "ageInYears": 30,
            "hiredOn": "2021-07-03"
        }
    ]
    ```

    However, this is only appropriate for relatively small initial datasets (around a few hundred rows or less, depending on schema complexity). If you need to work with a larger dataset you should utilize stashing.
  </Accordion>

  <Accordion title="Reset table data from Stash">
    [Stashing](/api-reference/v2/stashing/introduction) is our process for handling the upload of large datasets. Break down your dataset into smaller, more manageable, pieces and [upload them to a single stash ID](/api-reference/v2/stashing/put-stashes-serial).

    Then, to reset a table's data from the stash, use the `$stashID` reference in the `rows` field instead of providing the data inline:

    ```json theme={null}
    {
        "rows": { "$stashID": "20240215-job32" }
    }
    ```
  </Accordion>

  <Accordion title="Batch update table rows">
    This endpoint can be combined with the [Get Rows](/api-reference/v2/tables/get-table-rows) endpoint and [stashing](/api-reference/v2/stashing/introduction) to fetch the current table data, modify it, and then overwrite the table with the updated data:

    1. Call the [Get Rows](/api-reference/v2/tables/get-table-rows) endpoint to fetch the current table data. Pass a reasonably high `limit` query parameter because you want to fetch all rows in as few requests as possible.
    2. Modify the data as desired, and then stash the modified rows using the [Stash Data](/api-reference/v2/stashing/put-stashes-serial) endpoint.
    3. If a `continuation` was returned in step 1, repeat steps 1-3, passing the `continuation` query parameter to [Get Rows](/api-reference/v2/tables/get-table-rows) until all rows have been fetched, modified, and stashed.
    4. Finally, call this endpoint with same stash ID used in step 2. This will overwrite the table with the updated data:

    ```json theme={null}
    {
        "rows": { "$stashID": "20240215-job32" }
    }
    ```

    <Warning>
      **Risk of Data Loss**

      We strongly recommend you use the `If-Match` header to ensure the table is not modified between steps 1 and 4. See the [Data Versioning](/api-reference/v2/tables/versioning) guide for more information.
    </Warning>
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml put /tables/{tableID}
openapi: 3.0.0
info:
  title: ''
  version: 0.0.1
servers:
  - description: Production
    url: https://api.glideapps.com
security:
  - BearerAuth: []
tags: []
paths:
  /tables/{tableID}:
    put:
      description: Replaces the schema and/or data of a Big Table
      parameters:
        - name: x-glide-asynchronous
          in: header
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
            description: >-
              Allow asynchronous processing, which will return a job ID. Note
              that this does not force asynchronouys processing. The caller must
              handle both synchronous and asynchronous responses.
          required: false
        - name: if-match
          in: header
          schema:
            type: string
            pattern: ^"[0-9]+"$
            description: >-
              ETag of the current table version. If provided, the request will
              fail if the table has been updated since the given version. See
              [Data Versioning](/api-reference/v2/tables/versioning).
          required: false
        - name: tableID
          in: path
          schema:
            type: string
            description: ID of the table, e.g., `2a1bad8b-cf7c-44437-b8c1-e3782df6`
            example: 2a1bad8b-cf7c-44437-b8c1-e3782df6
          required: true
        - name: onSchemaError
          in: query
          schema:
            type: string
            enum:
              - abort
              - dropColumns
              - updateSchema
            description: >-
              The action to take when the passed data does not match the table
              schema:


              - `abort`: Abort the entire operation and return an error.

              - `dropColumns`: Ignore the data that caused the error, and do not
              import those columns in the affected rows.

              - `updateSchema`: Update the schema as needed to add any missing
              columns or widen the data types of existing columns, and then
              import the data from them.
            example: updateSchema
          required: false
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - type: object
                  properties:
                    schema:
                      type: object
                      properties:
                        columns:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                description: >-
                                  Internal ID of the column, e.g., `fullName`.
                                  This value cannot be changed once created.
                                example: fullName
                              displayName:
                                type: string
                                description: >-
                                  Human-readable display name of the column,
                                  e.g., `Full Name`. Can be modified once
                                  created.
                                example: Full Name
                              type:
                                anyOf:
                                  - type: string
                                    enum:
                                      - string
                                      - uri
                                      - imageURI
                                      - audioURI
                                      - markdown
                                      - phoneNumber
                                      - emailAddress
                                      - emoji
                                      - date
                                      - time
                                      - dateTime
                                      - duration
                                      - number
                                      - boolean
                                      - json
                                  - anyOf:
                                      - type: object
                                        properties:
                                          kind:
                                            type: string
                                            enum:
                                              - string
                                              - uri
                                              - imageURI
                                              - audioURI
                                              - markdown
                                              - phoneNumber
                                              - emailAddress
                                              - emoji
                                              - date
                                              - time
                                              - dateTime
                                              - duration
                                              - number
                                              - boolean
                                              - json
                                        required:
                                          - kind
                                        additionalProperties: false
                                      - type: object
                                        properties:
                                          kind:
                                            type: string
                                            enum:
                                              - array
                                          items:
                                            type: object
                                            properties:
                                              kind:
                                                type: string
                                                enum:
                                                  - string
                                                  - uri
                                                  - imageURI
                                                  - audioURI
                                                  - markdown
                                                  - phoneNumber
                                                  - emailAddress
                                                  - emoji
                                                  - date
                                                  - time
                                                  - dateTime
                                                  - duration
                                                  - number
                                                  - boolean
                                                  - json
                                            required:
                                              - kind
                                            additionalProperties: false
                                        required:
                                          - kind
                                          - items
                                        additionalProperties: false
                                description: The type of the column.
                            required:
                              - id
                              - type
                            additionalProperties: false
                          description: >-
                            A collection of column definitions, in the order
                            that they are to be displayed in the table.
                      required:
                        - columns
                      additionalProperties: false
                      description: >-
                        The schema of the table as a collection of column
                        definitions.
                      example:
                        columns:
                          - id: fullName
                            displayName: Full Name
                            type: string
                          - id: invoiceDate
                            displayName: Invoice Date
                            type: dateTime
                          - id: totalAmount
                            displayName: Total
                            type: number
                          - id: amountPaid
                            displayName: Paid
                            type: number
                    rows:
                      anyOf:
                        - $ref: '#/components/schemas/A_collection_of_row_objects'
                        - type: object
                          properties:
                            $stashID:
                              type: string
                              pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]{0,255}$
                              description: ID of the stash, e.g., `20240215-job32`
                              example: 20240215-job32
                          required:
                            - $stashID
                          additionalProperties: false
                          description: >-
                            A single reference to a
                            [stash](/api-reference/v2/stashing) whose data
                            should be used.
                  required:
                    - rows
                  additionalProperties: false
                - $ref: '#/components/schemas/A_collection_of_row_objects'
          text/csv:
            schema:
              type: string
              description: >-
                A CSV string. The first line is column IDs, and each subsequent
                line is a row of data.
              example: |-
                Name,Age,Birthday
                Alice,25,2024-08-29T09:46:16.722Z
                Bob,30,2020-01-15T09:00:16.722Z
          text/tab-separated-values:
            schema:
              type: string
              description: >-
                A TSV string. The first line is column IDs, and each subsequent
                line is a row of data.
              example: "Name\tAge\tBirthday\nAlice\t25\t2024-08-29T09:46:16.722Z\nBob\t30\t2020-01-15T09:00:16.722Z"
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      rowIDs:
                        type: array
                        items:
                          type: string
                          description: ID of the row, e.g., `zcJWnyI8Tbam21V34K8MNA`
                          example: zcJWnyI8Tbam21V34K8MNA
                        description: "Row IDs of added rows, returned in the same order as the input rows, e.g., \n\n```json\n[\n\t\"zcJWnyI8Tbam21V34K8MNA\",\n\t\"93a19-cf7c-44437-b8c1-e9acbbb\"\n]\n```"
                        example:
                          - zcJWnyI8Tbam21V34K8MNA
                          - 93a19-cf7c-44437-b8c1-e9acbbb
                    required:
                      - rowIDs
                    additionalProperties: false
                required:
                  - data
                additionalProperties: false
        '202':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      jobID:
                        type: string
                        description: The ID of the asynchronous job
                    required:
                      - jobID
                    additionalProperties: false
                required:
                  - data
                additionalProperties: false
        '400':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      message:
                        type: string
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '402':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - payment_required
                      message:
                        type: string
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '404':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - table_not_found
                          - table_not_big_table
                      message:
                        type: string
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '412':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - precondition_failed
                      message:
                        type: string
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '422':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - column_id_reserved
                          - column_id_not_unique
                          - column_has_invalid_value
                          - column_id_not_found
                      message:
                        type: string
                    required:
                      - type
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
components:
  schemas:
    A_collection_of_row_objects:
      type: array
      items:
        type: object
        additionalProperties: {}
        description: "A row object conforming to the schema of the table, where keys are the column IDs and values are the column values:\n\n```json\n{\n\t\"fullName\": \"Alex Bard\",\n\t\"invoiceDate\": \"2024-07-29T14:04:15.561Z\",\n\t\"totalAmount\": 34.50,\n\t\"amountPaid\": 0\n}\n```"
        example:
          fullName: Alex Bard
          invoiceDate: '2024-07-29T14:04:15.561Z'
          totalAmount: 34.5
          amountPaid: 0
      description: "A collection of row objects conforming to the schema of the table where keys are the column IDs and values are the column values:\n\n```json\n[\n\t{\n\t\t\"fullName\": \"Alex Bard\",\n\t\t\"invoiceDate\": \"2024-07-29T14:04:15.561Z\",\n\t\t\"totalAmount\": 34.50,\n\t\t\"amountPaid\": 0\n\t},\n\t{\n\t\t\"fullName\": \"Alicia Hines\",\n\t\t\"invoiceDate\": \"2023-06-15T10:30:00.000Z\",\n\t\t\"totalAmount\": 50.75,\n\t\t\"amountPaid\": 20\n\t}\n]\n```"
      example:
        - fullName: Alex Bard
          invoiceDate: '2024-07-29T14:04:15.561Z'
          totalAmount: 34.5
          amountPaid: 0
        - fullName: Alicia Hines
          invoiceDate: '2023-06-15T10:30:00.000Z'
          totalAmount: 50.75
          amountPaid: 20
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer authentication header of the form Bearer `<token>`, where
        `<token>` is your [auth
        token](/api-reference/v2/general/authentication).

````