VirtuousAI
Reference

Syncs

List Syncs

GET
/api/v1/syncs

Query Parameters

q?|
status?array<>|
provider?array<>|
limit?integer
Default50
Range1 <= value <= 100
offset?integer
Default0
Range0 <= value

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Response Body

application/json

application/json

curl -X GET "https://loading/api/v1/syncs"
{
  "hasNext": true,
  "limit": 0,
  "offset": 0,
  "syncs": [
    {
      "connectionId": "string",
      "createdAt": "2019-08-24T14:15:22Z",
      "createdBy": "string",
      "destinationConfig": {},
      "entities": [
        "string"
      ],
      "executionBackend": "native",
      "executionConfig": {},
      "executionMode": "sequential",
      "freshnessSlaSeconds": 0,
      "id": "string",
      "lastError": "string",
      "lastSuccessAt": "2019-08-24T14:15:22Z",
      "name": "string",
      "providerKey": "shopify",
      "schedule": {},
      "slug": "string",
      "sourceConfig": {},
      "status": "draft",
      "tableBindings": [
        {
          "createdAt": "2019-08-24T14:15:22Z",
          "cursorField": "string",
          "entityKey": "string",
          "id": "string",
          "loadMode": "append_event",
          "logicalTableName": "string",
          "physicalTableName": "string",
          "primaryKeyColumns": [
            "string"
          ],
          "sourceInstanceKey": "string",
          "tableName": "string",
          "tableNamingVersion": "legacy",
          "updatedAt": "2019-08-24T14:15:22Z"
        }
      ],
      "taskSlug": "string",
      "triggerMode": "manual",
      "updatedAt": "2019-08-24T14:15:22Z",
      "updatedBy": "string"
    }
  ],
  "total": 0
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Create Sync

POST
/api/v1/syncs

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Request Body

application/json

connectionId*string
Formatuuid
destinationConfig?

Destination envelope; provider-specific shape is stored as extras.

entities?array<>
executionBackend?string
Default"native"
Value in"native" | "prefect" | "temporal" | "external"
executionConfig?

Execution tuning payload (backend-specific knobs).

executionMode?string
Default"sequential"
Value in"sequential" | "fan_out_entity" | "fan_out_window"
freshnessSlaSeconds?|
name*string
Length1 <= length <= 255
schedule?|
slug?|
sourceConfig?
status?string
Default"draft"
Value in"draft" | "active" | "paused" | "error" | "archived"
tableBindings?array<>
triggerMode?string
Default"manual"
Value in"manual" | "scheduled" | "on_create"

Response Body

application/json

application/json

curl -X POST "https://loading/api/v1/syncs" \  -H "Content-Type: application/json" \  -d '{    "connectionId": "84b500d7-71c8-4b1f-adf4-f1eb0000973d",    "name": "string"  }'
{
  "connectionId": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "destinationConfig": {},
  "entities": [
    "string"
  ],
  "executionBackend": "native",
  "executionConfig": {},
  "executionMode": "sequential",
  "freshnessSlaSeconds": 0,
  "id": "string",
  "lastError": "string",
  "lastSuccessAt": "2019-08-24T14:15:22Z",
  "name": "string",
  "providerKey": "shopify",
  "schedule": {},
  "slug": "string",
  "sourceConfig": {},
  "status": "draft",
  "tableBindings": [
    {
      "createdAt": "2019-08-24T14:15:22Z",
      "cursorField": "string",
      "entityKey": "string",
      "id": "string",
      "loadMode": "append_event",
      "logicalTableName": "string",
      "physicalTableName": "string",
      "primaryKeyColumns": [
        "string"
      ],
      "sourceInstanceKey": "string",
      "tableName": "string",
      "tableNamingVersion": "legacy",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "taskSlug": "string",
  "triggerMode": "manual",
  "updatedAt": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Get Sync Provider Catalog

GET
/api/v1/syncs/providers/{provider}/catalog

Path Parameters

provider*string

Supported external system providers.

Value in"shopify" | "http_api" | "flexiroam" | "starlink" | "s3" | "google_drive" | "msft_sharepoint" | "klaviyo" | "amazon_sp" | "salesforce" | "netsuite" | "sqlserver" | "postgres" | "mlflow" | "sftp" | "gmail_inbox" | "dropbox" | "rydership" | "gorgias" | "redo" | "bullhorn"

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Response Body

application/json

application/json

curl -X GET "https://loading/api/v1/syncs/providers/shopify/catalog"
{
  "availableResources": [
    "string"
  ],
  "configSchema": {},
  "defaultResources": [
    "string"
  ],
  "defaults": {},
  "displayName": "string",
  "dynamicResources": false,
  "name": "string",
  "provider": "shopify",
  "resources": [
    {
      "configSchema": {},
      "cursorField": "string",
      "defaultSelected": true,
      "dependsOn": [
        "string"
      ],
      "description": "string",
      "displayName": "string",
      "entityKey": "string",
      "loadMode": "append_event",
      "sizeClass": "xs",
      "slicing": {},
      "storageDescription": "string",
      "storageKind": "postgres"
    }
  ]
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Get Sync Run

GET
/api/v1/syncs/runs/{run_id}

Path Parameters

run_id*string
Formatuuid

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Response Body

application/json

application/json

curl -X GET "https://loading/api/v1/syncs/runs/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{
  "attemptNumber": 0,
  "attemptRootRunId": "string",
  "backendHeartbeatAt": "2019-08-24T14:15:22Z",
  "backendRunRef": "string",
  "backendRunUrl": "string",
  "backendStatus": {},
  "cancelReason": "string",
  "cancelRequestedAt": "2019-08-24T14:15:22Z",
  "cancelRequestedBy": "string",
  "completedAt": "2019-08-24T14:15:22Z",
  "createdAt": "2019-08-24T14:15:22Z",
  "error": "string",
  "executionBackend": "native",
  "executionMode": "sequential",
  "executorId": "string",
  "id": "string",
  "lastHeartbeatAt": "2019-08-24T14:15:22Z",
  "maxAutoResumeAttempts": 0,
  "nextAttemptRunId": "string",
  "previousAttemptRunId": "string",
  "resultClass": "success",
  "resultReasonCode": "heartbeat_timeout",
  "runMode": "incremental",
  "startedAt": "2019-08-24T14:15:22Z",
  "status": "pending",
  "summary": {},
  "syncId": "string",
  "triggerRef": "string",
  "triggeredBy": "manual",
  "updatedAt": "2019-08-24T14:15:22Z"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Cancel Sync Run

POST
/api/v1/syncs/runs/{run_id}/cancel

Path Parameters

run_id*string
Formatuuid

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Request Body

application/json

reason?|

Response Body

application/json

application/json

curl -X POST "https://loading/api/v1/syncs/runs/497f6eca-6276-4993-bfeb-53cbbbba6f08/cancel" \  -H "Content-Type: application/json" \  -d '{}'
{
  "attemptNumber": 0,
  "attemptRootRunId": "string",
  "backendHeartbeatAt": "2019-08-24T14:15:22Z",
  "backendRunRef": "string",
  "backendRunUrl": "string",
  "backendStatus": {},
  "cancelReason": "string",
  "cancelRequestedAt": "2019-08-24T14:15:22Z",
  "cancelRequestedBy": "string",
  "completedAt": "2019-08-24T14:15:22Z",
  "createdAt": "2019-08-24T14:15:22Z",
  "error": "string",
  "executionBackend": "native",
  "executionMode": "sequential",
  "executorId": "string",
  "id": "string",
  "lastHeartbeatAt": "2019-08-24T14:15:22Z",
  "maxAutoResumeAttempts": 0,
  "nextAttemptRunId": "string",
  "previousAttemptRunId": "string",
  "resultClass": "success",
  "resultReasonCode": "heartbeat_timeout",
  "runMode": "incremental",
  "startedAt": "2019-08-24T14:15:22Z",
  "status": "pending",
  "summary": {},
  "syncId": "string",
  "triggerRef": "string",
  "triggeredBy": "manual",
  "updatedAt": "2019-08-24T14:15:22Z"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Retry Sync Run

POST
/api/v1/syncs/runs/{run_id}/retry

Path Parameters

run_id*string
Formatuuid

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Request Body

application/json

runMode?|

Response Body

application/json

application/json

curl -X POST "https://loading/api/v1/syncs/runs/497f6eca-6276-4993-bfeb-53cbbbba6f08/retry" \  -H "Content-Type: application/json" \  -d '{}'
{
  "attemptNumber": 0,
  "attemptRootRunId": "string",
  "backendHeartbeatAt": "2019-08-24T14:15:22Z",
  "backendRunRef": "string",
  "backendRunUrl": "string",
  "backendStatus": {},
  "cancelReason": "string",
  "cancelRequestedAt": "2019-08-24T14:15:22Z",
  "cancelRequestedBy": "string",
  "completedAt": "2019-08-24T14:15:22Z",
  "createdAt": "2019-08-24T14:15:22Z",
  "error": "string",
  "executionBackend": "native",
  "executionMode": "sequential",
  "executorId": "string",
  "id": "string",
  "lastHeartbeatAt": "2019-08-24T14:15:22Z",
  "maxAutoResumeAttempts": 0,
  "nextAttemptRunId": "string",
  "previousAttemptRunId": "string",
  "resultClass": "success",
  "resultReasonCode": "heartbeat_timeout",
  "runMode": "incremental",
  "startedAt": "2019-08-24T14:15:22Z",
  "status": "pending",
  "summary": {},
  "syncId": "string",
  "triggerRef": "string",
  "triggeredBy": "manual",
  "updatedAt": "2019-08-24T14:15:22Z"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Get Sync

GET
/api/v1/syncs/{sync_id}

Path Parameters

sync_id*string
Formatuuid

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Response Body

application/json

application/json

curl -X GET "https://loading/api/v1/syncs/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{
  "connectionId": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "destinationConfig": {},
  "entities": [
    "string"
  ],
  "executionBackend": "native",
  "executionConfig": {},
  "executionMode": "sequential",
  "freshnessSlaSeconds": 0,
  "id": "string",
  "lastError": "string",
  "lastSuccessAt": "2019-08-24T14:15:22Z",
  "name": "string",
  "providerKey": "shopify",
  "schedule": {},
  "slug": "string",
  "sourceConfig": {},
  "status": "draft",
  "tableBindings": [
    {
      "createdAt": "2019-08-24T14:15:22Z",
      "cursorField": "string",
      "entityKey": "string",
      "id": "string",
      "loadMode": "append_event",
      "logicalTableName": "string",
      "physicalTableName": "string",
      "primaryKeyColumns": [
        "string"
      ],
      "sourceInstanceKey": "string",
      "tableName": "string",
      "tableNamingVersion": "legacy",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "taskSlug": "string",
  "triggerMode": "manual",
  "updatedAt": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Update Sync

PATCH
/api/v1/syncs/{sync_id}

Path Parameters

sync_id*string
Formatuuid

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Request Body

application/json

destinationConfig?|
entities?array<>|
executionBackend?|
executionConfig?|
executionMode?|
freshnessSlaSeconds?|
name?|
schedule?|
slug?|
sourceConfig?|
status?|
tableBindings?array<>|
triggerMode?|

Response Body

application/json

application/json

curl -X PATCH "https://loading/api/v1/syncs/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{}'
{
  "connectionId": "string",
  "createdAt": "2019-08-24T14:15:22Z",
  "createdBy": "string",
  "destinationConfig": {},
  "entities": [
    "string"
  ],
  "executionBackend": "native",
  "executionConfig": {},
  "executionMode": "sequential",
  "freshnessSlaSeconds": 0,
  "id": "string",
  "lastError": "string",
  "lastSuccessAt": "2019-08-24T14:15:22Z",
  "name": "string",
  "providerKey": "shopify",
  "schedule": {},
  "slug": "string",
  "sourceConfig": {},
  "status": "draft",
  "tableBindings": [
    {
      "createdAt": "2019-08-24T14:15:22Z",
      "cursorField": "string",
      "entityKey": "string",
      "id": "string",
      "loadMode": "append_event",
      "logicalTableName": "string",
      "physicalTableName": "string",
      "primaryKeyColumns": [
        "string"
      ],
      "sourceInstanceKey": "string",
      "tableName": "string",
      "tableNamingVersion": "legacy",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "taskSlug": "string",
  "triggerMode": "manual",
  "updatedAt": "2019-08-24T14:15:22Z",
  "updatedBy": "string"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Delete Sync

DELETE
/api/v1/syncs/{sync_id}

Path Parameters

sync_id*string
Formatuuid

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Response Body

application/json

curl -X DELETE "https://loading/api/v1/syncs/497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

List Sync Runs

GET
/api/v1/syncs/{sync_id}/runs

Path Parameters

sync_id*string
Formatuuid

Query Parameters

limit?integer
Default25
Range1 <= value <= 100
offset?integer
Default0
Range0 <= value

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Response Body

application/json

application/json

curl -X GET "https://loading/api/v1/syncs/497f6eca-6276-4993-bfeb-53cbbbba6f08/runs"
{
  "hasNext": true,
  "limit": 0,
  "offset": 0,
  "runs": [
    {
      "attemptNumber": 0,
      "attemptRootRunId": "string",
      "backendHeartbeatAt": "2019-08-24T14:15:22Z",
      "backendRunRef": "string",
      "backendRunUrl": "string",
      "backendStatus": {},
      "cancelReason": "string",
      "cancelRequestedAt": "2019-08-24T14:15:22Z",
      "cancelRequestedBy": "string",
      "completedAt": "2019-08-24T14:15:22Z",
      "createdAt": "2019-08-24T14:15:22Z",
      "error": "string",
      "executionBackend": "native",
      "executionMode": "sequential",
      "executorId": "string",
      "id": "string",
      "lastHeartbeatAt": "2019-08-24T14:15:22Z",
      "maxAutoResumeAttempts": 0,
      "nextAttemptRunId": "string",
      "previousAttemptRunId": "string",
      "resultClass": "success",
      "resultReasonCode": "heartbeat_timeout",
      "runMode": "incremental",
      "startedAt": "2019-08-24T14:15:22Z",
      "status": "pending",
      "summary": {},
      "syncId": "string",
      "triggerRef": "string",
      "triggeredBy": "manual",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "total": 0
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}

Trigger Sync

POST
/api/v1/syncs/{sync_id}/trigger

Path Parameters

sync_id*string
Formatuuid

Header Parameters

authorization?|
X-API-Key?|
vai_token?|

Request Body

application/json

runMode?|

Response Body

application/json

application/json

curl -X POST "https://loading/api/v1/syncs/497f6eca-6276-4993-bfeb-53cbbbba6f08/trigger" \  -H "Content-Type: application/json" \  -d '{}'
{
  "attemptNumber": 0,
  "attemptRootRunId": "string",
  "backendHeartbeatAt": "2019-08-24T14:15:22Z",
  "backendRunRef": "string",
  "backendRunUrl": "string",
  "backendStatus": {},
  "cancelReason": "string",
  "cancelRequestedAt": "2019-08-24T14:15:22Z",
  "cancelRequestedBy": "string",
  "completedAt": "2019-08-24T14:15:22Z",
  "createdAt": "2019-08-24T14:15:22Z",
  "error": "string",
  "executionBackend": "native",
  "executionMode": "sequential",
  "executorId": "string",
  "id": "string",
  "lastHeartbeatAt": "2019-08-24T14:15:22Z",
  "maxAutoResumeAttempts": 0,
  "nextAttemptRunId": "string",
  "previousAttemptRunId": "string",
  "resultClass": "success",
  "resultReasonCode": "heartbeat_timeout",
  "runMode": "incremental",
  "startedAt": "2019-08-24T14:15:22Z",
  "status": "pending",
  "summary": {},
  "syncId": "string",
  "triggerRef": "string",
  "triggeredBy": "manual",
  "updatedAt": "2019-08-24T14:15:22Z"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}