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

# Submit a NetSuite REST source page

> Submit one REST page asynchronously.

The response contains a page id. Poll its GET operation until terminal. Each
poll is a separate Workato action, so the Summation-side task cost is one
submit action plus the number of status polls actually performed.



## OpenAPI

````yaml https://api.summation.com/openapi.json post /v1/data-syncs/{sync_id}/pages
openapi: 3.1.0
info:
  title: summation-api public API
  version: 0.1.0
servers: []
security: []
tags:
  - name: Auth
    description: Machine authentication for API clients.
  - name: Tenant
    description: Organization and tenant context resolved by summation-api.
  - name: Projects
    description: Project resources.
  - name: Conversations
    description: Conversation and message resources.
  - name: Reports
    description: Report resources and report operations.
  - name: Runs
    description: Project run history and execution status.
  - name: Playbooks
    description: Playbook resources.
  - name: Files
    description: Project file resources.
  - name: Catalog Entries
    description: Project-scoped data asset attachments.
  - name: Data Connectors
    description: Reusable external data source connections.
  - name: App Connectors
    description: External app connectors whose tools the agent can use during chat.
  - name: Tables
    description: Canonical table metadata and catalog.
  - name: Views
    description: Canonical Summation view metadata and catalog.
  - name: Query Executions
    description: Read-only SQL query execution.
  - name: Grid
    description: Materialized grid status, sync, and lineage.
  - name: Schedules
    description: Schedule and schedule run inspection.
paths:
  /v1/data-syncs/{sync_id}/pages:
    post:
      tags:
        - Tables
      summary: Submit a NetSuite REST source page
      description: >-
        Submit one REST page asynchronously.


        The response contains a page id. Poll its GET operation until terminal.
        Each

        poll is a separate Workato action, so the Summation-side task cost is
        one

        submit action plus the number of status polls actually performed.
      operationId: submit_source_page
      parameters:
        - name: sync_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            description: Configured source sync receiving the page.
            title: Sync Id
          description: Configured source sync receiving the page.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SourcePageSubmitRequest'
      responses:
        '200':
          description: >-
            Terminal result for an idempotent replay or a checkpoint-only
            transition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourcePageSubmitResponse'
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourcePageSubmitResponse'
        '400':
          description: Invalid request or unsupported option.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '401':
          description: Missing, invalid, or expired credentials.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '403':
          description: Authenticated but missing the required scope.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '404':
          description: Resource not found or not accessible.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '500':
          description: Internal server error.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
      security:
        - SummationMachineAuth:
            - tables:append
components:
  schemas:
    SourcePageSubmitRequest:
      properties:
        idempotency_key:
          type: string
          maxLength: 255
          minLength: 1
          title: Idempotency Key
          description: >-
            Stable caller-generated key for this exact source page; reuse it
            after timeouts.
        expected_checkpoint:
          $ref: '#/components/schemas/SourceCheckpoint'
          description: Checkpoint that must currently be committed for this sync.
        next_checkpoint:
          $ref: '#/components/schemas/SourceCheckpoint'
          description: >-
            Checkpoint committed only after every record in this page applies
            successfully.
        records:
          items:
            additionalProperties:
              anyOf:
                - type: string
                - type: integer
                - type: boolean
                - type: 'null'
            type: object
          type: array
          maxItems: 1000
          title: Records
          description: >-
            Up to 1,000 homogeneous JSON objects containing strings, integers,
            booleans, or null. Decimal values must be encoded as strings. An
            empty list is reserved for the checkpoint-only transition from an
            empty bounded backfill to incremental mode.
        record_cursors:
          items:
            $ref: '#/components/schemas/SourceRecordCursor'
          type: array
          maxItems: 1000
          title: Record Cursors
          description: >-
            One ordered NetSuite (lastmodifieddate, id) tuple for each record.
            The service verifies that the terminal tuple exactly equals
            next_checkpoint before it can advance the durable cursor.
      additionalProperties: false
      type: object
      required:
        - idempotency_key
        - expected_checkpoint
        - next_checkpoint
        - records
        - record_cursors
      title: SourcePageSubmitRequest
      description: >-
        One bounded NetSuite REST page and its authoritative check-and-set
        cursor.
    SourcePageSubmitResponse:
      properties:
        data:
          $ref: '#/components/schemas/SourcePageSubmitResponseData'
      type: object
      required:
        - data
      title: SourcePageSubmitResponse
    ProblemError:
      description: >-
        Public error envelope (RFC 7807 ``application/problem+json``).


        Mirrors the body produced by :func:`api_error`. Declaring it in the
        contract

        lets generated clients type error handling instead of guessing.
      properties:
        type:
          description: URI reference identifying the problem type.
          title: Type
          type: string
        title:
          description: Short, human-readable summary of the problem type.
          title: Title
          type: string
        status:
          description: HTTP status code.
          title: Status
          type: integer
        detail:
          description: Human-readable explanation specific to this occurrence.
          title: Detail
          type: string
        code:
          description: Stable, machine-readable error code.
          title: Code
          type: string
        request_id:
          description: Correlation id, echoed in the x-request-id header.
          title: Request Id
          type: string
      required:
        - type
        - title
        - status
        - detail
        - code
        - request_id
      title: ProblemError
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SourceCheckpoint:
      properties:
        phase:
          type: string
          enum:
            - BACKFILL
            - INCREMENTAL
          title: Phase
          description: 'Current extraction phase: BACKFILL or INCREMENTAL.'
        backfillUpperBound:
          type: string
          maxLength: 128
          minLength: 1
          title: Backfillupperbound
          description: Fixed source timestamp ceiling captured before backfill.
        lastmodifieddate:
          type: string
          maxLength: 128
          title: Lastmodifieddate
          description: >-
            Last fully committed source lastmodifieddate, empty only at initial
            backfill.
        id:
          type: string
          maxLength: 255
          title: Id
          description: Stable source id tie-breaker, empty only at initial backfill.
      additionalProperties: false
      type: object
      required:
        - phase
        - backfillUpperBound
        - lastmodifieddate
        - id
      title: SourceCheckpoint
      description: >-
        Authoritative NetSuite SuiteQL cursor whose fixed upper bound never
        changes.
    SourceRecordCursor:
      properties:
        lastmodifieddate:
          type: string
          maxLength: 128
          minLength: 1
          title: Lastmodifieddate
          description: >-
            NetSuite last-modified timestamp used for the record's SuiteQL
            ordering tuple.
        id:
          type: string
          maxLength: 255
          minLength: 1
          title: Id
          description: >-
            NetSuite record identifier used as the deterministic tie-breaker in
            the SuiteQL ordering tuple.
      additionalProperties: false
      type: object
      required:
        - lastmodifieddate
        - id
      title: SourceRecordCursor
      description: The SuiteQL ordering tuple for one destination record in a source page.
    SourcePageSubmitResponseData:
      properties:
        page:
          $ref: '#/components/schemas/SourcePagePublic'
        replayed:
          type: boolean
          title: Replayed
      type: object
      required:
        - page
        - replayed
      title: SourcePageSubmitResponseData
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    SourcePagePublic:
      properties:
        id:
          type: string
          title: Id
        sync_id:
          type: string
          title: Sync Id
        status:
          type: string
          enum:
            - CREATING
            - COMMITTING
            - RUNNING
            - SUCCEEDED
            - FAILED
          title: Status
          description: >-
            CREATING, COMMITTING, and RUNNING are non-terminal; SUCCEEDED and
            FAILED are terminal.
        committed_checkpoint:
          $ref: '#/components/schemas/SourceCheckpoint'
        row_count:
          type: integer
          title: Row Count
        rows_inserted:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rows Inserted
        rows_updated:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rows Updated
        rows_skipped:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rows Skipped
        error_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Code
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
        created_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Created At
        updated_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Updated At
        completed_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Completed At
      type: object
      required:
        - id
        - sync_id
        - status
        - committed_checkpoint
        - row_count
      title: SourcePagePublic
  securitySchemes:
    SummationMachineAuth:
      type: oauth2
      flows:
        clientCredentials:
          scopes:
            agent:read: agent:read
            agent:write: agent:write
          tokenUrl: /v1/auth/m2m/token

````