Managed Sync API

"Managed Sync provides pipelines to sync data from your users' integration sources to your app or RAG pipeline." Covers File Storage (Google Drive, Box, OneDrive, S3, Dropbox, SharePoint), CRM, and Ticketing sources, with normalized schemas and a ReBAC-style permissions graph (check-access, batch-check, list-users, list-objects, expand) so applications can enforce source-system permissions when retrieving content for retrieval-augmented generation.

OpenAPI Specification

paragon-managed-sync-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Paragon Managed Sync API
  description: >-
    Managed Sync provides pipelines to sync data from your users' integration
    sources (File Storage, CRM, Ticketing) into your app or RAG pipeline. The
    service handles sync scheduling, normalization to standardized schemas, and
    enforcement of source-system permissions. Managed Sync exposes a Sync API
    for record ingestion and a Permissions API for ReBAC-style access checks
    over synced objects.
  version: 1.0.0
  contact:
    name: Paragon
    url: https://www.useparagon.com
  license:
    name: Proprietary
    url: https://www.useparagon.com/terms-of-service
servers:
  - url: https://managed-sync.useparagon.com
    description: Paragon Managed Sync API (Cloud)
security:
  - bearerAuth: []
paths:
  /projects/{projectId}/sync/enable:
    post:
      operationId: enableSync
      summary: Paragon Enable A Sync
      description: >-
        Enables a sync pipeline for a Connected User and integration. Paragon
        begins fetching records on a configurable schedule.
      tags:
        - Sync
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - integration
                - syncType
              properties:
                integration:
                  type: string
                  description: Integration identifier (e.g., googleDrive, salesforce).
                syncType:
                  type: string
                  description: The sync pipeline type (e.g., files, contacts, deals, tickets).
                frequency:
                  type: string
                  description: Sync frequency (e.g., 1m, 15m, 1h, 1d).
      responses:
        '201':
          description: Sync enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncStatus'
  /projects/{projectId}/sync/status:
    get:
      operationId: getSyncStatus
      summary: Paragon Get Sync Status
      description: Returns the state of a sync pipeline for the Connected User.
      tags:
        - Sync
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
        - name: integration
          in: query
          required: true
          schema:
            type: string
        - name: syncType
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Sync status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncStatus'
  /projects/{projectId}/sync/records:
    get:
      operationId: pullSyncedRecords
      summary: Paragon Pull Synced Records
      description: >-
        Returns a paginated list of normalized records for a given integration
        and sync type (e.g., Files, Contacts, Deals, Tickets).
      tags:
        - Sync
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
        - name: integration
          in: query
          required: true
          schema:
            type: string
        - name: syncType
          in: query
          required: true
          schema:
            type: string
        - name: cursor
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: List of synced records.
          content:
            application/json:
              schema:
                type: object
                properties:
                  records:
                    type: array
                    items:
                      $ref: '#/components/schemas/SyncedRecord'
                  nextCursor:
                    type: string
  /projects/{projectId}/sync/records/{recordId}:
    get:
      operationId: getSyncedRecord
      summary: Paragon Get Synced Record
      description: Returns a single normalized synced record by ID.
      tags:
        - Sync
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
        - name: recordId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The synced record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncedRecord'
  /projects/{projectId}/sync/records/{recordId}/content:
    get:
      operationId: downloadContent
      summary: Paragon Download File Content
      description: >-
        Downloads the binary content of a file-type synced record. Returns the
        raw file bytes with the appropriate Content-Type for the source file.
      tags:
        - Sync
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
        - name: recordId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: File content.
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
  /projects/{projectId}/permissions/check-access:
    post:
      operationId: checkAccess
      summary: Paragon Check Access
      description: >-
        Checks whether a subject (user, group) has a given relation to a
        synced object (file, contact, ticket). Useful for enforcing
        source-system permissions in RAG retrieval.
      tags:
        - Permissions
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessCheck'
      responses:
        '200':
          description: Access decision.
          content:
            application/json:
              schema:
                type: object
                properties:
                  allowed:
                    type: boolean
  /projects/{projectId}/permissions/batch-check-access:
    post:
      operationId: batchCheckAccess
      summary: Paragon Batch Check Access
      description: Performs multiple access checks in a single call.
      tags:
        - Permissions
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                checks:
                  type: array
                  items:
                    $ref: '#/components/schemas/AccessCheck'
      responses:
        '200':
          description: Per-check access decisions.
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        allowed:
                          type: boolean
  /projects/{projectId}/permissions/list-users:
    post:
      operationId: listUsers
      summary: Paragon List Users With Access
      description: Returns the subjects that have access to a given object.
      tags:
        - Permissions
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                object:
                  type: string
                relation:
                  type: string
      responses:
        '200':
          description: Subjects with the requested relation.
  /projects/{projectId}/permissions/list-objects:
    post:
      operationId: listObjects
      summary: Paragon List Objects With Access
      description: Returns the objects a subject has the requested relation to.
      tags:
        - Permissions
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                subject:
                  type: string
                relation:
                  type: string
      responses:
        '200':
          description: Objects with the requested relation.
  /projects/{projectId}/permissions/expand:
    post:
      operationId: expandRelationships
      summary: Paragon Expand Permission Relationships
      description: Expands the relationship tree for a (subject, relation, object) tuple.
      tags:
        - Permissions
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessCheck'
      responses:
        '200':
          description: Expanded relationship graph.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Paragon User Token (JWT) Bearer.
  schemas:
    SyncStatus:
      type: object
      properties:
        integration:
          type: string
        syncType:
          type: string
        status:
          type: string
          enum:
            - SYNCING
            - IDLE
            - ERROR
            - DISABLED
        lastSyncedAt:
          type: string
          format: date-time
        recordCount:
          type: integer
    SyncedRecord:
      type: object
      description: A normalized record produced by a Managed Sync pipeline.
      properties:
        id:
          type: string
        integration:
          type: string
        syncType:
          type: string
        sourceId:
          type: string
        data:
          type: object
          additionalProperties: true
        permissions:
          type: object
          description: Source-system permissions captured for this record.
          additionalProperties: true
        updatedAt:
          type: string
          format: date-time
    AccessCheck:
      type: object
      required:
        - subject
        - relation
        - object
      properties:
        subject:
          type: string
          description: The actor (e.g., [email protected]).
        relation:
          type: string
          description: The relation to check (e.g., viewer, editor, owner).
        object:
          type: string
          description: The object identifier (e.g., file:abc123).
tags:
  - name: Sync
    description: Enable, monitor, and read records from Managed Sync pipelines.
  - name: Permissions
    description: ReBAC-style access checks over synced objects and subjects.