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

# Bulk rows

> Apply a field patch, duplicate records with regenerated automatic IDs, or delete 1–200 selected records atomically. Recheck source revisions and schema, enforce native constraints, and replay an unchanged idempotent request without duplicating records.



## OpenAPI

````yaml api-reference/openapi.json POST /v1/orgs/{orgId}/databases/{databaseId}/tables/{tableId}/rows/bulk
openapi: 3.1.2
info:
  title: Rootset public API
  version: 0.2.2
  description: >-
    Typed MDM storage. Temporal values are UTC only; IDs are opaque ULIDs.
    Runtime table definitions are discovered through the schema endpoint.
servers:
  - url: http://localhost:4310
security: []
paths:
  /v1/orgs/{orgId}/databases/{databaseId}/tables/{tableId}/rows/bulk:
    post:
      tags:
        - data
      summary: >-
        Apply a field patch, duplicate records with regenerated automatic IDs,
        or delete 1–200 selected records atomically. Recheck source revisions
        and schema, enforce native constraints, and replay an unchanged
        idempotent request without duplicating records.
      operationId: bulkRows
      parameters:
        - name: orgId
          in: path
          required: true
          schema:
            type: string
            pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
          example: 01J00000000000000000000000
        - name: databaseId
          in: path
          required: true
          schema:
            type: string
            pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
          example: 01J00000000000000000000001
        - name: tableId
          in: path
          required: true
          schema:
            type: string
            pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
          example: 01J00000000000000000000002
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
            minLength: 8
            maxLength: 255
          description: >-
            Bound to actor, operation, target, schema version and canonical
            payload; changed input returns 409.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                expectedSchemaVersion:
                  type: integer
                  minimum: 1
                  maximum: 2147483647
                rows:
                  minItems: 1
                  maxItems: 200
                  type: array
                  items:
                    type: object
                    properties:
                      rowId:
                        type: string
                        pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
                      expectedVersion:
                        type: string
                        pattern: ^[1-9][0-9]{0,18}$
                    required:
                      - rowId
                      - expectedVersion
                    additionalProperties: false
                action:
                  oneOf:
                    - type: object
                      properties:
                        type:
                          type: string
                          const: set
                        values:
                          type: object
                          propertyNames:
                            type: string
                            minLength: 1
                            maxLength: 64
                          additionalProperties:
                            description: >-
                              Any finite JSON value. Cell size/depth and typed
                              numeric policies are enforced by the domain
                              validator.
                            anyOf:
                              - type: 'null'
                              - type: boolean
                              - type: number
                              - type: string
                              - type: array
                                items: {}
                              - type: object
                                additionalProperties: {}
                      required:
                        - type
                        - values
                      additionalProperties: false
                    - type: object
                      properties:
                        type:
                          type: string
                          const: duplicate
                      required:
                        - type
                      additionalProperties: false
                    - type: object
                      properties:
                        type:
                          type: string
                          const: delete
                      required:
                        - type
                      additionalProperties: false
              required:
                - expectedSchemaVersion
                - rows
                - action
              additionalProperties: false
            example:
              expectedSchemaVersion: 1
              rows:
                - rowId: 01J00000000000000000000003
                  expectedVersion: '1'
              action:
                type: set
                values:
                  NAME: Updated name
      responses:
        '201':
          description: Authorised operation result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulkRowsOutput'
        '400':
          description: Malformed request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Missing, expired, revoked or wrong-audience credential.
          headers:
            WWW-Authenticate:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '403':
          description: Insufficient current authority.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Unknown or undisclosed target.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '408':
          description: >-
            Ordinary JSON request body did not finish within its bounded read
            deadline.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '409':
          description: Revision, schema, uniqueness or idempotency conflict.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '413':
          description: Payload or output budget exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '422':
          description: Typed validation failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate, concurrency or admission limit.
          headers:
            Retry-After:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '500':
          description: Redacted internal failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '502':
          description: A required upstream service is unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '503':
          description: >-
            A required service is unavailable. Check service configuration
            before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
      security:
        - apiKey: []
        - oauth:
            - rows:write
components:
  schemas:
    bulkRowsOutput:
      type: object
      properties:
        mutationId:
          type: string
          pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
        action:
          type: string
          enum:
            - set
            - duplicate
            - delete
        affected:
          type: integer
          exclusiveMinimum: 0
          maximum: 200
        createdIds:
          maxItems: 200
          type: array
          items:
            type: string
            pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
        deletedIds:
          maxItems: 200
          type: array
          items:
            type: string
            pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
      required:
        - mutationId
        - action
        - affected
        - createdIds
        - deletedIds
      additionalProperties: false
    ErrorEnvelope:
      type: object
      required:
        - error
      additionalProperties: false
      properties:
        error:
          type: object
          required:
            - code
            - message
            - requestId
          additionalProperties: false
          properties:
            code:
              type: string
              description: >-
                Known domain codes are published in ErrorCode; unknown future
                codes remain valid.
              x-rootset-known-error-codes:
                - VALIDATION_FAILED
                - UNAUTHENTICATED
                - ACCESS_DENIED
                - FORBIDDEN
                - LAST_ADMIN
                - INSUFFICIENT_SCOPE
                - PERSONAL_IDENTITY_REQUIRED
                - DELEGATION_EXCEEDS_AUTHORITY
                - RESOURCE_NOT_FOUND
                - ROW_VERSION_CONFLICT
                - SCHEMA_VERSION_CONFLICT
                - UNIQUE_CONFLICT
                - FOREIGN_KEY_CONFLICT
                - AUTO_INCREMENT_EXHAUSTED
                - ROW_SIZE_LIMIT
                - ROW_LIMIT_REACHED
                - PAYLOAD_TOO_LARGE
                - REQUEST_TIMEOUT
                - QUERY_TIMEOUT
                - CURSOR_INVALID
                - STEP_UP_REQUIRED
                - IDEMPOTENCY_CONFLICT
                - JOB_FAILED
                - RATE_LIMITED
                - CAPACITY_LIMIT
                - SCHEMA_MAINTENANCE
                - ARTIFACT_UNVERIFIED
                - ARTIFACT_EXPIRED
                - CONFIGURATION_INVALID
                - DEPENDENCY_UNAVAILABLE
                - INTERNAL_ERROR
            message:
              type: string
            requestId:
              type: string
            details: {}
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: Rootset personal API key
    oauth:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: http://localhost:4310/oauth/authorize
          tokenUrl: http://localhost:4310/oauth/token
          scopes:
            profile:manage: >-
              Current profile:manage authority; the live role ceiling still
              applies.
            account:security: >-
              Current account:security authority; the live role ceiling still
              applies.
            org:read: Current org:read authority; the live role ceiling still applies.
            org:manage: Current org:manage authority; the live role ceiling still applies.
            members:read: >-
              Current members:read authority; the live role ceiling still
              applies.
            members:manage: >-
              Current members:manage authority; the live role ceiling still
              applies.
            keys:manage: >-
              Current keys:manage authority; the live role ceiling still
              applies.
            team-keys:manage: >-
              Current team-keys:manage authority; the live role ceiling still
              applies.
            databases:read: >-
              Current databases:read authority; the live role ceiling still
              applies.
            databases:manage: >-
              Current databases:manage authority; the live role ceiling still
              applies.
            tables:read: >-
              Current tables:read authority; the live role ceiling still
              applies.
            tables:manage: >-
              Current tables:manage authority; the live role ceiling still
              applies.
            schema:manage: >-
              Current schema:manage authority; the live role ceiling still
              applies.
            rows:read: Current rows:read authority; the live role ceiling still applies.
            schema:read: >-
              Current schema:read authority; the live role ceiling still
              applies.
            rows:write: Current rows:write authority; the live role ceiling still applies.
            history:read: >-
              Current history:read authority; the live role ceiling still
              applies.
            exports:read: >-
              Current exports:read authority; the live role ceiling still
              applies.
            jobs:read: Current jobs:read authority; the live role ceiling still applies.
            jobs:cancel: >-
              Current jobs:cancel authority; the live role ceiling still
              applies.
            jobs:retry: Current jobs:retry authority; the live role ceiling still applies.
            backups:read: >-
              Current backups:read authority; the live role ceiling still
              applies.
            backups:manage: >-
              Current backups:manage authority; the live role ceiling still
              applies.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.