TypeScript SDK
import assert from "node:assert/strict";
import { createClient } from "@toloka-platform/sdk";
const client = createClient({
baseUrl: "https://platform.toloka.ai",
apiKey: process.env.TOLOKA_API_KEY!,
});
const snapshot = await client.pipelines.getGraph({ pipelineId: "pl.019a0000-0000-7000-8000-000000000001" });
const graph = structuredClone(snapshot.graph);
const root = graph.nodes.find((node) => node.type === "root");
assert(root, "The pipeline has no Start node.");
root.settings.itemLimit = 100;
const validation = await client.pipelines.validateGraph({
pipelineId: "pl.019a0000-0000-7000-8000-000000000001",
graph: graph
});
console.log(validation);curl --request POST \
--url https://platform.toloka.ai/api/v2-beta/pipelines/{pipelineId}/graph/validate \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"graph": {
"connections": [
{
"from": {
"handle": "<string>",
"node": "<string>"
},
"settings": {},
"to": {
"handle": "<string>",
"node": "<string>"
}
}
],
"fields": [
{
"id": "<string>",
"jsonSchema": {
"additionalProperties": true,
"allOf": [
"<unknown>"
],
"anyOf": [
"<unknown>"
],
"const": "<string>",
"default": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"examples": [
"<string>"
],
"exclusiveMaximum": 123,
"exclusiveMinimum": 123,
"format": "<string>",
"items": "<unknown>",
"maxItems": 4503599627370495,
"maxLength": 4503599627370495,
"maximum": 123,
"minItems": 4503599627370495,
"minLength": 4503599627370495,
"minimum": 123,
"oneOf": [
"<unknown>"
],
"pattern": "<string>",
"properties": {},
"required": [
"<string>"
],
"title": "<string>",
"uniqueItems": true
},
"name": "<string>"
}
],
"nodes": [
{
"id": "<string>",
"settings": {
"completedFieldProxies": {
"input": [
{
"id": "<string>",
"optional": true
}
]
},
"startedFieldProxies": {
"output": [
{
"id": "<string>",
"optional": true
}
]
},
"datasetId": "<string>",
"itemFilter": {
"createdBefore": "2023-11-07T05:31:56Z",
"excludeParts": [
{
"fieldId": "<string>",
"names": [
"<string>"
]
}
],
"fieldSources": [
{
"fieldId": "<string>",
"sources": [
{
"type": "user",
"userId": "<string>"
}
]
}
],
"fieldValues": [
{
"fieldId": "<string>",
"jsonPath": "<string>",
"value": "<string>",
"latestOnly": true,
"sources": []
}
],
"missingRevisionFields": [
"<string>"
]
},
"itemLimit": 123
},
"type": "root"
}
],
"version": 1,
"layout": {}
}
}
'import requests
url = "https://platform.toloka.ai/api/v2-beta/pipelines/{pipelineId}/graph/validate"
payload = { "graph": {
"connections": [
{
"from": {
"handle": "<string>",
"node": "<string>"
},
"settings": {},
"to": {
"handle": "<string>",
"node": "<string>"
}
}
],
"fields": [
{
"id": "<string>",
"jsonSchema": {
"additionalProperties": True,
"allOf": ["<unknown>"],
"anyOf": ["<unknown>"],
"const": "<string>",
"default": "<string>",
"description": "<string>",
"enum": ["<string>"],
"examples": ["<string>"],
"exclusiveMaximum": 123,
"exclusiveMinimum": 123,
"format": "<string>",
"items": "<unknown>",
"maxItems": 4503599627370495,
"maxLength": 4503599627370495,
"maximum": 123,
"minItems": 4503599627370495,
"minLength": 4503599627370495,
"minimum": 123,
"oneOf": ["<unknown>"],
"pattern": "<string>",
"properties": {},
"required": ["<string>"],
"title": "<string>",
"uniqueItems": True
},
"name": "<string>"
}
],
"nodes": [
{
"id": "<string>",
"settings": {
"completedFieldProxies": { "input": [
{
"id": "<string>",
"optional": True
}
] },
"startedFieldProxies": { "output": [
{
"id": "<string>",
"optional": True
}
] },
"datasetId": "<string>",
"itemFilter": {
"createdBefore": "2023-11-07T05:31:56Z",
"excludeParts": [
{
"fieldId": "<string>",
"names": ["<string>"]
}
],
"fieldSources": [
{
"fieldId": "<string>",
"sources": [
{
"type": "user",
"userId": "<string>"
}
]
}
],
"fieldValues": [
{
"fieldId": "<string>",
"jsonPath": "<string>",
"value": "<string>",
"latestOnly": True,
"sources": []
}
],
"missingRevisionFields": ["<string>"]
},
"itemLimit": 123
},
"type": "root"
}
],
"version": 1,
"layout": {}
} }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"checks": [
{
"checkId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"nodeId": "<string>",
"pipelineId": "<string>",
"result": {
"output": "<string>",
"report": {
"checkedItemCount": 4503599627370495,
"findings": [
{
"explanation": "<string>",
"fieldName": "<string>",
"fieldProxyId": "<string>",
"itemCount": 123,
"sampleItemIds": [
"<string>"
],
"type": "missing_required_values"
}
]
}
},
"status": "pending",
"error": "<string>"
}
],
"issues": [
{
"code": "<string>",
"message": "<string>",
"severity": "error",
"checkId": "<string>",
"nodeId": "<string>"
}
],
"valid": true
}Pipeline graph
Validate a pipeline graph
Send a graph to receive configuration findings and matching check results without saving it. Pending or running lints produce running_node_check warnings. A lint with no matching run produces the same warning during the first 60 seconds after graph activation, then not_ran_node_check afterward. Start lints with POST /api/v2-beta/pipelines/{pipelineId}/lints.
POST
/
pipelines
/
{pipelineId}
/
graph
/
validate
TypeScript SDK
import assert from "node:assert/strict";
import { createClient } from "@toloka-platform/sdk";
const client = createClient({
baseUrl: "https://platform.toloka.ai",
apiKey: process.env.TOLOKA_API_KEY!,
});
const snapshot = await client.pipelines.getGraph({ pipelineId: "pl.019a0000-0000-7000-8000-000000000001" });
const graph = structuredClone(snapshot.graph);
const root = graph.nodes.find((node) => node.type === "root");
assert(root, "The pipeline has no Start node.");
root.settings.itemLimit = 100;
const validation = await client.pipelines.validateGraph({
pipelineId: "pl.019a0000-0000-7000-8000-000000000001",
graph: graph
});
console.log(validation);curl --request POST \
--url https://platform.toloka.ai/api/v2-beta/pipelines/{pipelineId}/graph/validate \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"graph": {
"connections": [
{
"from": {
"handle": "<string>",
"node": "<string>"
},
"settings": {},
"to": {
"handle": "<string>",
"node": "<string>"
}
}
],
"fields": [
{
"id": "<string>",
"jsonSchema": {
"additionalProperties": true,
"allOf": [
"<unknown>"
],
"anyOf": [
"<unknown>"
],
"const": "<string>",
"default": "<string>",
"description": "<string>",
"enum": [
"<string>"
],
"examples": [
"<string>"
],
"exclusiveMaximum": 123,
"exclusiveMinimum": 123,
"format": "<string>",
"items": "<unknown>",
"maxItems": 4503599627370495,
"maxLength": 4503599627370495,
"maximum": 123,
"minItems": 4503599627370495,
"minLength": 4503599627370495,
"minimum": 123,
"oneOf": [
"<unknown>"
],
"pattern": "<string>",
"properties": {},
"required": [
"<string>"
],
"title": "<string>",
"uniqueItems": true
},
"name": "<string>"
}
],
"nodes": [
{
"id": "<string>",
"settings": {
"completedFieldProxies": {
"input": [
{
"id": "<string>",
"optional": true
}
]
},
"startedFieldProxies": {
"output": [
{
"id": "<string>",
"optional": true
}
]
},
"datasetId": "<string>",
"itemFilter": {
"createdBefore": "2023-11-07T05:31:56Z",
"excludeParts": [
{
"fieldId": "<string>",
"names": [
"<string>"
]
}
],
"fieldSources": [
{
"fieldId": "<string>",
"sources": [
{
"type": "user",
"userId": "<string>"
}
]
}
],
"fieldValues": [
{
"fieldId": "<string>",
"jsonPath": "<string>",
"value": "<string>",
"latestOnly": true,
"sources": []
}
],
"missingRevisionFields": [
"<string>"
]
},
"itemLimit": 123
},
"type": "root"
}
],
"version": 1,
"layout": {}
}
}
'import requests
url = "https://platform.toloka.ai/api/v2-beta/pipelines/{pipelineId}/graph/validate"
payload = { "graph": {
"connections": [
{
"from": {
"handle": "<string>",
"node": "<string>"
},
"settings": {},
"to": {
"handle": "<string>",
"node": "<string>"
}
}
],
"fields": [
{
"id": "<string>",
"jsonSchema": {
"additionalProperties": True,
"allOf": ["<unknown>"],
"anyOf": ["<unknown>"],
"const": "<string>",
"default": "<string>",
"description": "<string>",
"enum": ["<string>"],
"examples": ["<string>"],
"exclusiveMaximum": 123,
"exclusiveMinimum": 123,
"format": "<string>",
"items": "<unknown>",
"maxItems": 4503599627370495,
"maxLength": 4503599627370495,
"maximum": 123,
"minItems": 4503599627370495,
"minLength": 4503599627370495,
"minimum": 123,
"oneOf": ["<unknown>"],
"pattern": "<string>",
"properties": {},
"required": ["<string>"],
"title": "<string>",
"uniqueItems": True
},
"name": "<string>"
}
],
"nodes": [
{
"id": "<string>",
"settings": {
"completedFieldProxies": { "input": [
{
"id": "<string>",
"optional": True
}
] },
"startedFieldProxies": { "output": [
{
"id": "<string>",
"optional": True
}
] },
"datasetId": "<string>",
"itemFilter": {
"createdBefore": "2023-11-07T05:31:56Z",
"excludeParts": [
{
"fieldId": "<string>",
"names": ["<string>"]
}
],
"fieldSources": [
{
"fieldId": "<string>",
"sources": [
{
"type": "user",
"userId": "<string>"
}
]
}
],
"fieldValues": [
{
"fieldId": "<string>",
"jsonPath": "<string>",
"value": "<string>",
"latestOnly": True,
"sources": []
}
],
"missingRevisionFields": ["<string>"]
},
"itemLimit": 123
},
"type": "root"
}
],
"version": 1,
"layout": {}
} }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"checks": [
{
"checkId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"id": "<string>",
"nodeId": "<string>",
"pipelineId": "<string>",
"result": {
"output": "<string>",
"report": {
"checkedItemCount": 4503599627370495,
"findings": [
{
"explanation": "<string>",
"fieldName": "<string>",
"fieldProxyId": "<string>",
"itemCount": 123,
"sampleItemIds": [
"<string>"
],
"type": "missing_required_values"
}
]
}
},
"status": "pending",
"error": "<string>"
}
],
"issues": [
{
"code": "<string>",
"message": "<string>",
"severity": "error",
"checkId": "<string>",
"nodeId": "<string>"
}
],
"valid": true
}Authorizations
apiKeyAuthscopedTokenAuth
Path Parameters
Body
application/json
Response
Validation report
Configuration errors, check status, and matching checks for a submitted pipeline graph.
Was this page helpful?