curl --request POST \
--url https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"config": {
"method": "POST",
"path": "/score-transaction"
},
"mappedTargets": [
"accountId"
]
}
'import requests
url = "https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate"
payload = {
"config": {
"method": "POST",
"path": "/score-transaction"
},
"mappedTargets": ["accountId"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
config: {method: 'POST', path: '/score-transaction'},
mappedTargets: ['accountId']
})
};
fetch('https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'config' => [
'method' => 'POST',
'path' => '/score-transaction'
],
'mappedTargets' => [
'accountId'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate"
payload := strings.NewReader("{\n \"config\": {\n \"method\": \"POST\",\n \"path\": \"/score-transaction\"\n },\n \"mappedTargets\": [\n \"accountId\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"config\": {\n \"method\": \"POST\",\n \"path\": \"/score-transaction\"\n },\n \"mappedTargets\": [\n \"accountId\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"config\": {\n \"method\": \"POST\",\n \"path\": \"/score-transaction\"\n },\n \"mappedTargets\": [\n \"accountId\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"error": "",
"valid": true
}{
"code": "FLK-0001",
"detail": "name is a required field",
"errors": [
{
"location": "body.nodes",
"message": "expected array length >= 1",
"value": "<unknown>"
}
],
"instance": "/v1/workflows",
"status": 400,
"title": "Bad Request",
"type": "https://errors.lerian.studio/v1/FLK-0001"
}{
"code": "FLK-0001",
"detail": "name is a required field",
"errors": [
{
"location": "body.nodes",
"message": "expected array length >= 1",
"value": "<unknown>"
}
],
"instance": "/v1/workflows",
"status": 400,
"title": "Bad Request",
"type": "https://errors.lerian.studio/v1/FLK-0001"
}Validate a Node Configuration
Use this endpoint to check a workflow node’s configuration against the JSON Schema of the catalog executor it invokes. The check is structural — it never calls the external service.
curl --request POST \
--url https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"config": {
"method": "POST",
"path": "/score-transaction"
},
"mappedTargets": [
"accountId"
]
}
'import requests
url = "https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate"
payload = {
"config": {
"method": "POST",
"path": "/score-transaction"
},
"mappedTargets": ["accountId"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
config: {method: 'POST', path: '/score-transaction'},
mappedTargets: ['accountId']
})
};
fetch('https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'config' => [
'method' => 'POST',
'path' => '/score-transaction'
],
'mappedTargets' => [
'accountId'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate"
payload := strings.NewReader("{\n \"config\": {\n \"method\": \"POST\",\n \"path\": \"/score-transaction\"\n },\n \"mappedTargets\": [\n \"accountId\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"config\": {\n \"method\": \"POST\",\n \"path\": \"/score-transaction\"\n },\n \"mappedTargets\": [\n \"accountId\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flowker.sandbox.lerian.net/v1/catalog/executors/{id}/validate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"config\": {\n \"method\": \"POST\",\n \"path\": \"/score-transaction\"\n },\n \"mappedTargets\": [\n \"accountId\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"error": "",
"valid": true
}{
"code": "FLK-0001",
"detail": "name is a required field",
"errors": [
{
"location": "body.nodes",
"message": "expected array length >= 1",
"value": "<unknown>"
}
],
"instance": "/v1/workflows",
"status": 400,
"title": "Bad Request",
"type": "https://errors.lerian.studio/v1/FLK-0001"
}{
"code": "FLK-0001",
"detail": "name is a required field",
"errors": [
{
"location": "body.nodes",
"message": "expected array length >= 1",
"value": "<unknown>"
}
],
"instance": "/v1/workflows",
"status": 400,
"title": "Bad Request",
"type": "https://errors.lerian.studio/v1/FLK-0001"
}Authorizations
JWT bearer token issued by the identity provider. Send it in the Authorization header as Bearer <token>.
Path Parameters
Unique identifier of the catalog executor.
Body
Request body containing the configuration to validate.
The node configuration to check against the catalog executor's JSON Schema.
Show child attributes
Show child attributes
{
"method": "POST",
"path": "/score-transaction"
}
Field paths the node supplies through an inputMapping instead of a fixed value in config. Flowker counts them as satisfied, so a node that maps a required field from the trigger or from an earlier step passes the check. Omit the field to check config on its own.
["accountId"]
Was this page helpful?

