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

# Update Collection

> You can update the schema and other properties of a collection. To see their current value, use the List Collections endpoint.

<Danger>
**Update Manifest Instead Of Collection**

If you manually override the properties of a Collection that exists in your manifest, then any time an app Card is saved, the Card will revert back to the manifest definition of that Collection. It is best practice to only update Collections that you have created manually. Otherwise, to update a Collection, simply update the manifest.
</Danger>

<Note>
After updating the manifest and re-publishing your app design, you must **edit the installed app and re-save it** for manifest changes to take effect.
</Note>

If the collection has `syncEnabled`, updating the `schema` changes which fields are synced to the linked Domo DataSet. Note the following when modifying a synced collection's schema:

<Note>
**Date formatting:** Documents containing `DATE` or `DATETIME` data must use the format `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ` to sync correctly.
</Note>

<Warning>
**Only top-level fields can be synced.** Column names must be **top-level keys** in the document's `content` object; dot notation does not traverse nested objects during sync. To include a nested object, use the top-level key name (e.g., `wand`) — the synced value will be the JSON string representation of that object (e.g., `{"wood":"holly","core":"phoenix feather","length":11}`).
</Warning>

<Warning>
**Incorrect schema types prevent DataSet creation.** The accepted column types are `STRING` · `LONG` · `DECIMAL` · `DOUBLE` · `DATE` · `DATETIME`. If your AppDB DataSet doesn't appear after 15 minutes, verify your schema uses only these values — common mistakes include `NUMBER` or `INTEGER`.
</Warning>




## OpenAPI

````yaml /openapi/framework/appdb.yaml put /domo/datastores/v1/collections/{collectionName}
openapi: 3.0.0
info:
  title: Domo AppDB API
  version: v1
  description: >
    AppDB API for storing arbitrary JSON documents similar to a NoSQL database.
    This enables storing state within your DomoApp

    with optional syncing to Domo DataSets.


    Three layers provide data storage:

    - **Datastores**: Analogous to a database. A CustomApp has a single
    datastore created automatically.

    - **Collections**: Analogous to a collection in NoSQL or table in relational
    databases.

    - **Documents**: Analogous to documents in NoSQL or table rows in relational
    databases.
servers:
  - url: https://{instance}.domo.com
    description: Domo Instance
    variables:
      instance:
        default: example
        description: Your Domo instance name
security: []
paths:
  /domo/datastores/v1/collections/{collectionName}:
    put:
      tags:
        - AppDB API
      summary: Update Collection
      description: >
        You can update the schema and other properties of a collection. To see
        their current value, use the List Collections endpoint.


        <Danger>

        **Update Manifest Instead Of Collection**


        If you manually override the properties of a Collection that exists in
        your manifest, then any time an app Card is saved, the Card will revert
        back to the manifest definition of that Collection. It is best practice
        to only update Collections that you have created manually. Otherwise, to
        update a Collection, simply update the manifest.

        </Danger>


        <Note>

        After updating the manifest and re-publishing your app design, you must
        **edit the installed app and re-save it** for manifest changes to take
        effect.

        </Note>


        If the collection has `syncEnabled`, updating the `schema` changes which
        fields are synced to the linked Domo DataSet. Note the following when
        modifying a synced collection's schema:


        <Note>

        **Date formatting:** Documents containing `DATE` or `DATETIME` data must
        use the format `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SSZ` to sync correctly.

        </Note>


        <Warning>

        **Only top-level fields can be synced.** Column names must be
        **top-level keys** in the document's `content` object; dot notation does
        not traverse nested objects during sync. To include a nested object, use
        the top-level key name (e.g., `wand`) — the synced value will be the
        JSON string representation of that object (e.g.,
        `{"wood":"holly","core":"phoenix feather","length":11}`).

        </Warning>


        <Warning>

        **Incorrect schema types prevent DataSet creation.** The accepted column
        types are `STRING` · `LONG` · `DECIMAL` · `DOUBLE` · `DATE` ·
        `DATETIME`. If your AppDB DataSet doesn't appear after 15 minutes,
        verify your schema uses only these values — common mistakes include
        `NUMBER` or `INTEGER`.

        </Warning>
      parameters:
        - $ref: '#/components/parameters/CollectionName'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: >-
                    Rename the collection. Note: renaming only changes the
                    stored name — your app's `collectionsMapping` still routes
                    calls using the original name from the manifest. The app
                    will continue to work, but the name shown in AppDB Admin and
                    returned by List Collections will reflect the new name.
                schema:
                  $ref: '#/components/schemas/Schema'
                syncEnabled:
                  type: boolean
            example:
              schema:
                columns:
                  - type: STRING
                    name: name
                  - type: STRING
                    name: house
                  - type: DATE
                    name: enrolledOn
                  - type: DATETIME
                    name: lastDetention
              syncEnabled: true
      responses:
        '200':
          description: >-
            Collection updated successfully. Returns the full updated
            collection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Collection'
              example:
                id: 277f0d9f-355d-4905-8fb8-0dc87e496159
                datastoreId: fcd8baba-9524-4fb5-b94b-b3d3b588e740
                defaultPermissions: null
                requiredAuthorities: null
                owner: 330281426
                name: Teachers
                datasourceId: null
                schema:
                  columns:
                    - type: STRING
                      name: name
                    - type: STRING
                      name: house
                    - type: STRING
                      name: subjects
                filters: null
                syncEnabled: false
                syncRequired: true
                cdcEnabled: false
                fullReplaceRequired: false
                lastSync: null
                createdOn: '2026-08-04T19:14:26.862Z'
                updatedOn: '2026-08-04T19:33:49.586128905Z'
                updatedBy: 330281426
        '403':
          description: >-
            You are not the collection owner and do not have the Admin
            permission on this app. Only the collection owner or a user with
            Admin permission can update a collection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                status: 403
                statusReason: >-
                  status 403 reading
                  CollectionsResourceClient#updateCollection(UUID,Map,Boolean);
                  content:

                  {"message":"User does not have permission to update the
                  collection.","status":403,"statusReason":"Forbidden","toe":"SPRKYZVRC6-P1HPE-ZQPOD"}
                toe: SPRKYZVRC6-P1HPE-ZQPOD
        '404':
          description: >-
            Collection not found. Verify the collection name is correct (it is
            case-sensitive) and that the collection has been created or
            correctly wired in this app's datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                status: 404
                statusReason: >-
                  DA0088: Collection 'students' was not found in datastore
                  fcd8baba-9524-4fb5-b94b-b3d3b588e740 - it may not exist on
                  this instance or may not be accessible
                toe: SPRBHMOV31-SSMDK-4TTZJ
      x-codeSamples:
        - lang: JavaScript
          label: domo.js
          source: |-
            const collectionName = 'YourCollection';

            domo.put(`/domo/datastores/v1/collections/${collectionName}`, {
              schema: {
                columns: [
                  { name: 'name', type: 'STRING' },
                  { name: 'house', type: 'STRING' },
                  { name: 'enrolledOn', type: 'DATE' },
                  { name: 'lastDetention', type: 'DATETIME' }
                ]
              },
              syncEnabled: true
            }).then(collection => console.log(collection));
        - lang: JavaScript
          label: domo.js v6
          source: >-
            // domo.js v6

            const collectionName = 'Students';


            const collection = await domo.appdb.updateCollection(collectionName,
            {
              schema: {
                columns: [
                  { name: 'name', type: 'STRING' },
                  { name: 'house', type: 'STRING' },
                  { name: 'enrolledOn', type: 'DATE' },
                  { name: 'lastDetention', type: 'DATETIME' }
                ]
              },
              syncEnabled: true
            });

            console.log(collection);
        - lang: cURL
          label: cURL
          source: |-
            # This API is only available inside a Domo app.
            # Use the JavaScript (domo.js) tab for the correct usage.
        - lang: Python
          label: Python
          source: |-
            # This API is only available inside a Domo app.
            # Use the JavaScript (domo.js) tab for the correct usage.
        - lang: PHP
          label: PHP
          source: |-
            // This API is only available inside a Domo app.
            // Use the JavaScript (domo.js) tab for the correct usage.
        - lang: Go
          label: Go
          source: |-
            // This API is only available inside a Domo app.
            // Use the JavaScript (domo.js) tab for the correct usage.
        - lang: Java
          label: Java
          source: |-
            // This API is only available inside a Domo app.
            // Use the JavaScript (domo.js) tab for the correct usage.
        - lang: Ruby
          label: Ruby
          source: |-
            # This API is only available inside a Domo app.
            # Use the JavaScript (domo.js) tab for the correct usage.
components:
  parameters:
    CollectionName:
      name: collectionName
      in: path
      required: true
      description: The name given to the collection in the manifest. Case-sensitive.
      schema:
        type: string
  schemas:
    Schema:
      type: object
      properties:
        columns:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              type:
                type: string
                enum:
                  - STRING
                  - LONG
                  - DECIMAL
                  - DOUBLE
                  - DATE
                  - DATETIME
                description: >-
                  The type of value. Dates must be formatted as `YYYY-MM-DD`.
                  DateTimes must be formatted as `YYYY-MM-DDTHH:MM:SSZ`.
    Collection:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the collection.
        owner:
          type: integer
          format: int64
          description: User ID of the collection owner.
        datastoreId:
          type: string
          format: uuid
          description: ID of the datastore this collection belongs to.
        name:
          type: string
          description: Name of the collection.
        datasourceId:
          type: string
          format: uuid
          nullable: true
          description: ID of the linked Domo DataSet, or null if not yet linked.
        defaultPermissions:
          nullable: true
          description: >-
            Comma-separated default permission set for new app grants on this
            collection, or null if not set.
        requiredAuthorities:
          nullable: true
          description: >-
            Maps CollectionOperation names to required authority strings, or
            null if not set.
        filters:
          nullable: true
          description: >-
            Array of document-level filter predicates applied to read
            operations, or null if not set.
        schema:
          $ref: '#/components/schemas/Schema'
        syncEnabled:
          type: boolean
          description: Whether documents are periodically synced to the linked DataSet.
        syncRequired:
          type: boolean
          description: Whether a sync is pending.
        cdcEnabled:
          type: boolean
          description: Whether change data capture is enabled for this collection.
        fullReplaceRequired:
          type: boolean
        lastSync:
          type: string
          format: date-time
          nullable: true
        createdOn:
          type: string
          format: date-time
        updatedOn:
          type: string
          format: date-time
        updatedBy:
          type: integer
          format: int64
      example:
        id: a3aaeeed-5210-4048-9ff0-d88fa0de4eda
        datastoreId: 5565fecc-a852-4799-83bf-f9423c0f7687
        defaultPermissions: null
        requiredAuthorities: null
        owner: 870010733
        name: Students
        datasourceId: null
        schema:
          columns:
            - type: STRING
              name: name
            - type: STRING
              name: house
        filters: null
        syncEnabled: false
        syncRequired: false
        cdcEnabled: false
        fullReplaceRequired: false
        lastSync: null
        createdOn: '2026-06-25T01:26:34.744Z'
        updatedOn: '2026-06-25T01:26:34.744Z'
        updatedBy: 870010733
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: >-
            A plain-English explanation of the error. Present on some errors but
            not all.
        status:
          type: integer
          description: The HTTP error code
        statusReason:
          type: string
          description: >-
            A human-readable error message, sometimes including nested error
            detail
        toe:
          type: string
          description: >-
            Thread of Execution; a unique identifier that Support can use to
            find more info about your problem
      example:
        status: 404
        statusReason: 'DA0088: Invalid collection name: Students'
        toe: FTYRJMBLKD-5HB2Z-H6W8A

````