vendure-data-hub-plugin

GraphQL API

Important: Use GraphQL introspection ({ __schema { ... } }) or the Vendure Admin UI’s API playground for the definitive, up-to-date API reference. The examples below show common usage patterns but field names and signatures may differ from the current implementation.

The Data Hub plugin extends the Vendure Admin API with queries and mutations for pipeline management.

Queries

dataHubPipelines

List all pipelines:

query {
    dataHubPipelines(options: { take: 20, skip: 0 }) {
        items {
            id
            code
            name
            enabled
            createdAt
            updatedAt
        }
        totalItems
    }
}

dataHubPipeline

Get a single pipeline:

query GetPipeline($id: ID!) {
    dataHubPipeline(id: $id) {
        id
        code
        name
        enabled
        definition
        createdAt
        updatedAt
    }
}

dataHubConnections

List connections:

query {
    dataHubConnections {
        items {
            id
            code
            type
            createdAt
        }
        totalItems
    }
}

dataHubSecrets

List secrets (values hidden):

query {
    dataHubSecrets {
        items {
            id
            code
            provider
            createdAt
        }
        totalItems
    }
}

dataHubAdapters

List available adapters:

query {
    dataHubAdapters {
        code
        name
        type
        category
        description
        schema {
            fields {
                key
                type
                required
                label
                defaultValue
                options { value label }
            }
        }
    }
}

dataHubPipelineRuns

Query pipeline runs:

query GetRuns($pipelineId: ID!) {
    dataHubPipelineRuns(pipelineId: $pipelineId, options: { take: 10 }) {
        items {
            id
            status
            startedAt
            finishedAt
            triggeredBy
        }
        totalItems
    }
}

dataHubPipelineRun

Get a single run:

query GetRun($id: ID!) {
    dataHubPipelineRun(id: $id) {
        id
        status
        startedAt
        completedAt
        metrics
        triggeredBy
    }
}

dataHubLogs

Query execution logs:

query GetLogs {
    dataHubLogs(options: { take: 100 }) {
        items {
            id
            level
            message
            stepKey
            createdAt
            metadata
        }
        totalItems
    }
}

dataHubRunErrors

Query failed records for a specific run:

query RunErrors($runId: ID!) {
    dataHubRunErrors(runId: $runId) {
        id
        stepKey
        message
        payload
        stackTrace
        createdAt
    }
}

dataHubSettings

Get plugin settings:

query {
    dataHubSettings {
        retentionDaysRuns
        retentionDaysErrors
        retentionDaysLogs
        logPersistenceLevel
    }
}

Mutations

createDataHubPipeline

Create a pipeline:

mutation CreatePipeline($input: CreateDataHubPipelineInput!) {
    createDataHubPipeline(input: $input) {
        id
        code
        name
    }
}

Variables:

{
    "input": {
        "code": "my-pipeline",
        "name": "My Pipeline",
        "definition": {
            "version": 1,
            "steps": [],
            "edges": []
        }
    }
}

updateDataHubPipeline

Update a pipeline:

mutation UpdatePipeline($input: UpdateDataHubPipelineInput!) {
    updateDataHubPipeline(input: $input) {
        id
        name
        enabled
    }
}

Variables:

{
    "input": {
        "id": "1",
        "name": "Updated Name",
        "enabled": true
    }
}

deleteDataHubPipeline

Delete a pipeline:

mutation DeletePipeline($id: ID!) {
    deleteDataHubPipeline(id: $id) {
        result
        message
    }
}

startDataHubPipelineRun

Execute a pipeline:

mutation RunPipeline($pipelineId: ID!) {
    startDataHubPipelineRun(pipelineId: $pipelineId) {
        id
        status
    }
}

cancelDataHubPipelineRun

Cancel a running pipeline:

mutation CancelRun($id: ID!) {
    cancelDataHubPipelineRun(id: $id) {
        id
        status
    }
}

validateDataHubPipelineDefinition

Validate a pipeline definition:

query Validate($definition: JSON!) {
    validateDataHubPipelineDefinition(definition: $definition) {
        isValid
        issues {
            stepKey
            message
            reason
        }
    }
}

createDataHubConnection

Create a connection:

mutation CreateConnection($input: CreateDataHubConnectionInput!) {
    createDataHubConnection(input: $input) {
        id
        code
        type
    }
}

updateDataHubConnection

Update a connection:

mutation UpdateConnection($input: UpdateDataHubConnectionInput!) {
    updateDataHubConnection(input: $input) {
        id
        code
    }
}

deleteDataHubConnection

Delete a connection:

mutation DeleteConnection($id: ID!) {
    deleteDataHubConnection(id: $id) {
        result
    }
}

createDataHubSecret

Create a secret:

mutation CreateSecret($input: CreateDataHubSecretInput!) {
    createDataHubSecret(input: $input) {
        id
        code
        provider
    }
}

Variables:

{
    "input": {
        "code": "api-key",
        "provider": "env",
        "value": "MY_API_KEY"
    }
}

updateDataHubSecret

Update a secret:

mutation UpdateSecret($input: UpdateDataHubSecretInput!) {
    updateDataHubSecret(input: $input) {
        id
        code
    }
}

deleteDataHubSecret

Delete a secret:

mutation DeleteSecret($id: ID!) {
    deleteDataHubSecret(id: $id) {
        result
    }
}

retryDataHubRecord

Retry a single failed record with optional JSON patch:

mutation RetryRecord($errorId: ID!, $patch: JSON) {
    retryDataHubRecord(errorId: $errorId, patch: $patch)
}

updateDataHubSettings

Update plugin settings:

mutation UpdateSettings($input: DataHubSettingsInput!) {
    updateDataHubSettings(input: $input) {
        retentionDaysRuns
        retentionDaysErrors
    }
}

TypeScript Client

Using with @vendure/admin-ui-plugin or custom clients:

import { gql } from 'graphql-tag';

const RUN_PIPELINE = gql`
    mutation RunPipeline($pipelineId: ID!) {
        startDataHubPipelineRun(pipelineId: $pipelineId) {
            id
            status
        }
    }
`;

// Execute
const result = await adminClient.mutate({
    mutation: RUN_PIPELINE,
    variables: { pipelineId: '1' },
});

Error Handling

GraphQL errors follow Vendure patterns:

try {
    const result = await adminClient.mutate({ ... });
} catch (error) {
    if (error.graphQLErrors) {
        for (const gqlError of error.graphQLErrors) {
            console.log(gqlError.message);
            console.log(gqlError.extensions?.code);
        }
    }
}

Common error codes: