POST
/
v1
/
automations
/
validate
Check an automation package
curl --request POST \
  --url https://platform.jobbit.uk/v1/automations/validate \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/gzip' \
  --data '"<string>"'
import requests

url = "https://platform.jobbit.uk/v1/automations/validate"

payload = "<string>"
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/gzip"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/gzip'},
body: JSON.stringify('<string>')
};

fetch('https://platform.jobbit.uk/v1/automations/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://platform.jobbit.uk/v1/automations/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('<string>'),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/gzip"
],
]);

$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://platform.jobbit.uk/v1/automations/validate"

payload := strings.NewReader("\"<string>\"")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/gzip")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://platform.jobbit.uk/v1/automations/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/gzip")
.body("\"<string>\"")
.asString();
require 'uri'
require 'net/http'

url = URI("https://platform.jobbit.uk/v1/automations/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/gzip'
request.body = "\"<string>\""

response = http.request(request)
puts response.read_body
{
  "valid": true,
  "unchanged": false,
  "errors": [],
  "consent_risks": [
    "network_egress"
  ],
  "summary": null,
  "existing_tables": []
}
{
"error": {
"code": "bad_request",
"message": "automation.yaml is not in the archive",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "invalid_key",
"message": "the API key is missing or invalid",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "insufficient_scope",
"message": "this key does not have the deploy:write permission",
"details": {
"required": "deploy:write"
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "rate_limited",
"message": "too many read requests, retry in 4 s",
"details": {
"group": "read",
"limit": 120,
"window_seconds": 60
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}

Authorizations

Authorization
string
header
required

An API key from Settings → API keys, sent as Authorization: Bearer jb_live_…

Query Parameters

automation_id
string

Check the package against this automation.

Maximum string length: 64

Body

application/gzip

The package as a gzip-compressed tar archive.

The body is of type file.

Response

The result of the check.

valid
boolean
required

Whether the package can be published.

unchanged
boolean

Whether it is identical to the live version.

errors
object[]

Problems found.

Risks the person must allow before publishing.

summary
object | null

What the package does, for the consent screen.

existing_tables
object[]

Tables the package declares that already hold rows or serve other automations.