Paragon · Arazzo Workflow

Paragon Permissioned Synced Record Retrieval

Version 1.0.0

Pull a synced record, check the requester's access, and download its file content only if allowed.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub Embedded IntegrationsIntegration InfrastructureiPaaSAI AgentsMCPIntegrationArazzoWorkflows

Provider

paragon

Workflows

permissioned-record-retrieval
Resolve a synced record, enforce source-system permissions, then download content.
Pulls synced records, retrieves the chosen record, performs an access check for the requesting subject, and downloads the file content only when the check returns allowed.
4 steps inputs: integration, object, projectId, recordId, relation, subject, syncType outputs: allowed, content, permissions
1
pullSyncedRecords
Pull the first page of normalized records for the integration and sync type to establish the working set.
2
getSyncedRecord
Retrieve the full normalized record, including its captured source-system permissions, for the chosen record ID.
3
checkAccess
Run a ReBAC-style access check to confirm the requesting subject has the required relation to the object before any content is read.
4
downloadContent
Download the binary content of the file-type record now that access has been confirmed for the requesting subject.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Paragon Permissioned Synced Record Retrieval
  summary: Pull a synced record, check the requester's access, and download its file content only if allowed.
  description: >-
    The permission-enforcing retrieval pattern for RAG over Managed Sync. The
    workflow pulls a page of synced records, fetches the full normalized record
    for a chosen ID, runs a ReBAC-style access check for the requesting subject,
    and branches: only when access is allowed does it download the file's binary
    content. Every step spells out its request inline so the flow can be read
    and executed without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: permissionsApi
  url: ../openapi/paragon-permissions-api-openapi.yml
  type: openapi
- name: syncApi
  url: ../openapi/paragon-sync-api-openapi.yml
  type: openapi
workflows:
- workflowId: permissioned-record-retrieval
  summary: Resolve a synced record, enforce source-system permissions, then download content.
  description: >-
    Pulls synced records, retrieves the chosen record, performs an access check
    for the requesting subject, and downloads the file content only when the
    check returns allowed.
  inputs:
    type: object
    required:
    - projectId
    - integration
    - syncType
    - recordId
    - subject
    - relation
    - object
    properties:
      projectId:
        type: string
        description: Your Paragon Project ID.
      integration:
        type: string
        description: Integration identifier (e.g. googleDrive).
      syncType:
        type: string
        description: The sync pipeline type (e.g. files).
      recordId:
        type: string
        description: The synced record ID to retrieve and download.
      subject:
        type: string
        description: The requesting actor (e.g. user@example.com).
      relation:
        type: string
        description: The relation to check (e.g. viewer, editor, owner).
      object:
        type: string
        description: The object identifier to check access against (e.g. file:abc123).
  steps:
  - stepId: pullSyncedRecords
    description: >-
      Pull the first page of normalized records for the integration and sync
      type to establish the working set.
    operationId: pullSyncedRecords
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    - name: integration
      in: query
      value: $inputs.integration
    - name: syncType
      in: query
      value: $inputs.syncType
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      records: $response.body#/records
  - stepId: getSyncedRecord
    description: >-
      Retrieve the full normalized record, including its captured source-system
      permissions, for the chosen record ID.
    operationId: getSyncedRecord
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    - name: recordId
      in: path
      value: $inputs.recordId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      sourceId: $response.body#/sourceId
      permissions: $response.body#/permissions
  - stepId: checkAccess
    description: >-
      Run a ReBAC-style access check to confirm the requesting subject has the
      required relation to the object before any content is read.
    operationId: checkAccess
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    requestBody:
      contentType: application/json
      payload:
        subject: $inputs.subject
        relation: $inputs.relation
        object: $inputs.object
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      allowed: $response.body#/allowed
    onSuccess:
    - name: accessGranted
      type: goto
      stepId: downloadContent
      criteria:
      - context: $response.body
        condition: $.allowed == true
        type: jsonpath
  - stepId: downloadContent
    description: >-
      Download the binary content of the file-type record now that access has
      been confirmed for the requesting subject.
    operationId: downloadContent
    parameters:
    - name: projectId
      in: path
      value: $inputs.projectId
    - name: recordId
      in: path
      value: $inputs.recordId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      content: $response.body
  outputs:
    permissions: $steps.getSyncedRecord.outputs.permissions
    allowed: $steps.checkAccess.outputs.allowed
    content: $steps.downloadContent.outputs.content

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/paragon-permissioned-record-retrieval-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.