Strait Docs
API Reference

Job management and triggering

List jobs

GET
/v1/jobs

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Query Parameters

project_id*string
tag_key?string
tag_value?string

Response Body

application/json

curl -X GET "http://localhost:8080/v1/jobs?project_id=string"
[
  {
    "id": "string",
    "project_id": "string",
    "group_id": "string",
    "name": "string",
    "slug": "string",
    "description": "string",
    "cron": "string",
    "payload_schema": {},
    "tags": {
      "property1": "string",
      "property2": "string"
    },
    "endpoint_url": "string",
    "fallback_endpoint_url": "string",
    "max_attempts": 0,
    "timeout_secs": 0,
    "max_concurrency": 0,
    "execution_window_cron": "string",
    "timezone": "string",
    "rate_limit_max": 0,
    "rate_limit_window_secs": 0,
    "max_concurrency_per_key": 0,
    "rate_limit_keys": [
      {
        "name": "string",
        "max": 0,
        "window_secs": 0
      }
    ],
    "default_run_metadata": {
      "property1": "string",
      "property2": "string"
    },
    "dedup_window_secs": 0,
    "enabled": true,
    "webhook_url": "string",
    "webhook_secret": "string",
    "run_ttl_secs": 0,
    "retry_strategy": "string",
    "retry_delays_secs": [
      0
    ],
    "environment_id": "string",
    "version": 0,
    "version_id": "string",
    "version_policy": "pin",
    "backwards_compatible": true,
    "created_by": "string",
    "updated_by": "string",
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z"
  }
]

Create a job

POST
/v1/jobs

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "http://localhost:8080/v1/jobs" \  -H "Content-Type: application/json" \  -d '{    "project_id": "string",    "name": "string",    "slug": "string",    "endpoint_url": "string"  }'
{
  "id": "string",
  "project_id": "string",
  "group_id": "string",
  "name": "string",
  "slug": "string",
  "description": "string",
  "cron": "string",
  "payload_schema": {},
  "tags": {
    "property1": "string",
    "property2": "string"
  },
  "endpoint_url": "string",
  "fallback_endpoint_url": "string",
  "max_attempts": 0,
  "timeout_secs": 0,
  "max_concurrency": 0,
  "execution_window_cron": "string",
  "timezone": "string",
  "rate_limit_max": 0,
  "rate_limit_window_secs": 0,
  "max_concurrency_per_key": 0,
  "rate_limit_keys": [
    {
      "name": "string",
      "max": 0,
      "window_secs": 0
    }
  ],
  "default_run_metadata": {
    "property1": "string",
    "property2": "string"
  },
  "dedup_window_secs": 0,
  "enabled": true,
  "webhook_url": "string",
  "webhook_secret": "string",
  "run_ttl_secs": 0,
  "retry_strategy": "string",
  "retry_delays_secs": [
    0
  ],
  "environment_id": "string",
  "version": 0,
  "version_id": "string",
  "version_policy": "pin",
  "backwards_compatible": true,
  "created_by": "string",
  "updated_by": "string",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z"
}

Batch create jobs

POST
/v1/jobs/batch

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "http://localhost:8080/v1/jobs/batch" \  -H "Content-Type: application/json" \  -d '[    {      "project_id": "string",      "name": "string",      "slug": "string",      "endpoint_url": "string"    }  ]'
[
  {
    "id": "string",
    "project_id": "string",
    "group_id": "string",
    "name": "string",
    "slug": "string",
    "description": "string",
    "cron": "string",
    "payload_schema": {},
    "tags": {
      "property1": "string",
      "property2": "string"
    },
    "endpoint_url": "string",
    "fallback_endpoint_url": "string",
    "max_attempts": 0,
    "timeout_secs": 0,
    "max_concurrency": 0,
    "execution_window_cron": "string",
    "timezone": "string",
    "rate_limit_max": 0,
    "rate_limit_window_secs": 0,
    "max_concurrency_per_key": 0,
    "rate_limit_keys": [
      {
        "name": "string",
        "max": 0,
        "window_secs": 0
      }
    ],
    "default_run_metadata": {
      "property1": "string",
      "property2": "string"
    },
    "dedup_window_secs": 0,
    "enabled": true,
    "webhook_url": "string",
    "webhook_secret": "string",
    "run_ttl_secs": 0,
    "retry_strategy": "string",
    "retry_delays_secs": [
      0
    ],
    "environment_id": "string",
    "version": 0,
    "version_id": "string",
    "version_policy": "pin",
    "backwards_compatible": true,
    "created_by": "string",
    "updated_by": "string",
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z"
  }
]

Batch enable jobs

POST
/v1/jobs/batch-enable

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X POST "http://localhost:8080/v1/jobs/batch-enable" \  -H "Content-Type: application/json" \  -d '{}'
Empty

Batch disable jobs

POST
/v1/jobs/batch-disable

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X POST "http://localhost:8080/v1/jobs/batch-disable" \  -H "Content-Type: application/json" \  -d '{}'
Empty

Get a job

GET
/v1/jobs/{jobID}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Response Body

application/json

curl -X GET "http://localhost:8080/v1/jobs/string"
{
  "id": "string",
  "project_id": "string",
  "group_id": "string",
  "name": "string",
  "slug": "string",
  "description": "string",
  "cron": "string",
  "payload_schema": {},
  "tags": {
    "property1": "string",
    "property2": "string"
  },
  "endpoint_url": "string",
  "fallback_endpoint_url": "string",
  "max_attempts": 0,
  "timeout_secs": 0,
  "max_concurrency": 0,
  "execution_window_cron": "string",
  "timezone": "string",
  "rate_limit_max": 0,
  "rate_limit_window_secs": 0,
  "max_concurrency_per_key": 0,
  "rate_limit_keys": [
    {
      "name": "string",
      "max": 0,
      "window_secs": 0
    }
  ],
  "default_run_metadata": {
    "property1": "string",
    "property2": "string"
  },
  "dedup_window_secs": 0,
  "enabled": true,
  "webhook_url": "string",
  "webhook_secret": "string",
  "run_ttl_secs": 0,
  "retry_strategy": "string",
  "retry_delays_secs": [
    0
  ],
  "environment_id": "string",
  "version": 0,
  "version_id": "string",
  "version_policy": "pin",
  "backwards_compatible": true,
  "created_by": "string",
  "updated_by": "string",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z"
}

Update a job

PATCH
/v1/jobs/{jobID}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "http://localhost:8080/v1/jobs/string" \  -H "Content-Type: application/json" \  -d '{}'
{
  "id": "string",
  "project_id": "string",
  "group_id": "string",
  "name": "string",
  "slug": "string",
  "description": "string",
  "cron": "string",
  "payload_schema": {},
  "tags": {
    "property1": "string",
    "property2": "string"
  },
  "endpoint_url": "string",
  "fallback_endpoint_url": "string",
  "max_attempts": 0,
  "timeout_secs": 0,
  "max_concurrency": 0,
  "execution_window_cron": "string",
  "timezone": "string",
  "rate_limit_max": 0,
  "rate_limit_window_secs": 0,
  "max_concurrency_per_key": 0,
  "rate_limit_keys": [
    {
      "name": "string",
      "max": 0,
      "window_secs": 0
    }
  ],
  "default_run_metadata": {
    "property1": "string",
    "property2": "string"
  },
  "dedup_window_secs": 0,
  "enabled": true,
  "webhook_url": "string",
  "webhook_secret": "string",
  "run_ttl_secs": 0,
  "retry_strategy": "string",
  "retry_delays_secs": [
    0
  ],
  "environment_id": "string",
  "version": 0,
  "version_id": "string",
  "version_policy": "pin",
  "backwards_compatible": true,
  "created_by": "string",
  "updated_by": "string",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z"
}

Delete a job

DELETE
/v1/jobs/{jobID}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Response Body

curl -X DELETE "http://localhost:8080/v1/jobs/string"
Empty

Trigger a job run

POST
/v1/jobs/{jobID}/trigger

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "http://localhost:8080/v1/jobs/string/trigger" \  -H "Content-Type: application/json" \  -d '{}'
{
  "id": "string",
  "job_id": "string",
  "project_id": "string",
  "status": "delayed",
  "attempt": 0,
  "payload": {},
  "result": {},
  "metadata": {
    "property1": "string",
    "property2": "string"
  },
  "error": "string",
  "triggered_by": "string",
  "scheduled_at": "2019-08-24T14:15:22Z",
  "started_at": "2019-08-24T14:15:22Z",
  "finished_at": "2019-08-24T14:15:22Z",
  "heartbeat_at": "2019-08-24T14:15:22Z",
  "next_retry_at": "2019-08-24T14:15:22Z",
  "expires_at": "2019-08-24T14:15:22Z",
  "parent_run_id": "string",
  "priority": 0,
  "idempotency_key": "string",
  "job_version": 0,
  "workflow_step_run_id": "string",
  "max_attempts_override": 0,
  "timeout_secs_override": 0,
  "retry_backoff": "string",
  "retry_initial_delay_secs": 0,
  "retry_max_delay_secs": 0,
  "execution_trace": {
    "queue_wait_ms": 0,
    "dequeue_ms": 0,
    "connect_ms": 0,
    "ttfb_ms": 0,
    "transfer_ms": 0,
    "total_ms": 0,
    "dispatch_ms": 0
  },
  "debug_mode": true,
  "continuation_of": "string",
  "lineage_depth": 0,
  "tags": {
    "property1": "string",
    "property2": "string"
  },
  "job_version_id": "string",
  "created_by": "string",
  "batch_id": "string",
  "concurrency_key": "string",
  "created_at": "2019-08-24T14:15:22Z"
}

Trigger multiple runs

POST
/v1/jobs/{jobID}/trigger/bulk

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "http://localhost:8080/v1/jobs/string/trigger/bulk" \  -H "Content-Type: application/json" \  -d '{    "items": [      {}    ]  }'
{
  "results": [
    {
      "id": "string",
      "status": "string",
      "run_token": "string",
      "idempotency_hit": true
    }
  ],
  "total": 0,
  "created": 0
}

List job versions

GET
/v1/jobs/{jobID}/versions

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Response Body

application/json

curl -X GET "http://localhost:8080/v1/jobs/string/versions"
[
  {
    "id": "string",
    "job_id": "string",
    "version": 0,
    "name": "string",
    "slug": "string",
    "description": "string",
    "cron": "string",
    "payload_schema": {},
    "tags": {
      "property1": "string",
      "property2": "string"
    },
    "endpoint_url": "string",
    "fallback_endpoint_url": "string",
    "max_attempts": 0,
    "timeout_secs": 0,
    "webhook_url": "string",
    "webhook_secret": "string",
    "run_ttl_secs": 0,
    "created_at": "2019-08-24T14:15:22Z"
  }
]

Clone a job

POST
/v1/jobs/{jobID}/clone

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "http://localhost:8080/v1/jobs/string/clone" \  -H "Content-Type: application/json" \  -d '{}'
{
  "id": "string",
  "project_id": "string",
  "group_id": "string",
  "name": "string",
  "slug": "string",
  "description": "string",
  "cron": "string",
  "payload_schema": {},
  "tags": {
    "property1": "string",
    "property2": "string"
  },
  "endpoint_url": "string",
  "fallback_endpoint_url": "string",
  "max_attempts": 0,
  "timeout_secs": 0,
  "max_concurrency": 0,
  "execution_window_cron": "string",
  "timezone": "string",
  "rate_limit_max": 0,
  "rate_limit_window_secs": 0,
  "max_concurrency_per_key": 0,
  "rate_limit_keys": [
    {
      "name": "string",
      "max": 0,
      "window_secs": 0
    }
  ],
  "default_run_metadata": {
    "property1": "string",
    "property2": "string"
  },
  "dedup_window_secs": 0,
  "enabled": true,
  "webhook_url": "string",
  "webhook_secret": "string",
  "run_ttl_secs": 0,
  "retry_strategy": "string",
  "retry_delays_secs": [
    0
  ],
  "environment_id": "string",
  "version": 0,
  "version_id": "string",
  "version_policy": "pin",
  "backwards_compatible": true,
  "created_by": "string",
  "updated_by": "string",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z"
}

Get job health score

GET
/v1/jobs/{jobID}/health

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Query Parameters

window?string
Default"7d"

Response Body

application/json

curl -X GET "http://localhost:8080/v1/jobs/string/health"
{
  "total_runs": 0,
  "completed_runs": 0,
  "failed_runs": 0,
  "timed_out_runs": 0,
  "crashed_runs": 0,
  "canceled_runs": 0,
  "expired_runs": 0,
  "success_rate": 0,
  "avg_duration_secs": 0,
  "p95_duration_secs": 0,
  "health_score": 0
}

List job dependencies

GET
/v1/jobs/{jobID}/dependencies

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Response Body

application/json

curl -X GET "http://localhost:8080/v1/jobs/string/dependencies"
[
  {
    "id": "string",
    "job_id": "string",
    "depends_on_job_id": "string",
    "condition": "string",
    "created_at": "2019-08-24T14:15:22Z"
  }
]

Create a job dependency

POST
/v1/jobs/{jobID}/dependencies

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "http://localhost:8080/v1/jobs/string/dependencies" \  -H "Content-Type: application/json" \  -d '{}'
{
  "id": "string",
  "job_id": "string",
  "depends_on_job_id": "string",
  "condition": "string",
  "created_at": "2019-08-24T14:15:22Z"
}

Delete a job dependency

DELETE
/v1/jobs/{jobID}/dependencies/{depID}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

jobID*string
depID*string

Response Body

curl -X DELETE "http://localhost:8080/v1/jobs/string/dependencies/string"
Empty

Get job version by version ID

GET
/v1/jobs/{jobID}/versions/{versionID}

Path Parameters

jobID*string
versionID*string

Response Body

application/json

curl -X GET "http://localhost:8080/v1/jobs/string/versions/string"
{
  "id": "string",
  "job_id": "string",
  "version": 0,
  "name": "string",
  "slug": "string",
  "description": "string",
  "cron": "string",
  "payload_schema": {},
  "tags": {
    "property1": "string",
    "property2": "string"
  },
  "endpoint_url": "string",
  "fallback_endpoint_url": "string",
  "max_attempts": 0,
  "timeout_secs": 0,
  "webhook_url": "string",
  "webhook_secret": "string",
  "run_ttl_secs": 0,
  "created_at": "2019-08-24T14:15:22Z"
}
Was this page helpful?