curl --request POST \
--url https://instance.prod.onboardapp.io/v1/cases \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"assigned_to": "<string>",
"external_reference": "<string>",
"metadata": {}
}
'import requests
url = "https://instance.prod.onboardapp.io/v1/cases"
payload = {
"assigned_to": "<string>",
"external_reference": "<string>",
"metadata": {}
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({assigned_to: '<string>', external_reference: '<string>', metadata: {}})
};
fetch('https://instance.prod.onboardapp.io/v1/cases', 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://instance.prod.onboardapp.io/v1/cases",
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([
'assigned_to' => '<string>',
'external_reference' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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://instance.prod.onboardapp.io/v1/cases"
payload := strings.NewReader("{\n \"assigned_to\": \"<string>\",\n \"external_reference\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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://instance.prod.onboardapp.io/v1/cases")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"assigned_to\": \"<string>\",\n \"external_reference\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://instance.prod.onboardapp.io/v1/cases")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"assigned_to\": \"<string>\",\n \"external_reference\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"data": {
"token": "cas_9k4m2n1p",
"name": "CAS-000142",
"type": "Onboarding",
"status": "New",
"entity_category": "Company",
"assigned_to": "<string>",
"sla_deadline": "2023-11-07T05:31:56Z",
"sla_status": "On Track",
"open_alerts_count": 123,
"total_entities_count": 123,
"risk_tier": "High",
"risk_score": 123,
"decision": "Approve",
"external_reference": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"closed_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "req_9k4m2n1p3q",
"page": {
"cursor": "<string>",
"has_more": true
}
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}Create case
Create a new investigation case. A case is the top-level container for a compliance investigation — it groups entities, checks, alerts, and risk assessments into a single tracked unit.
Cases are created with status New and can optionally include an initial
entity and assigned reviewer.
curl --request POST \
--url https://instance.prod.onboardapp.io/v1/cases \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"assigned_to": "<string>",
"external_reference": "<string>",
"metadata": {}
}
'import requests
url = "https://instance.prod.onboardapp.io/v1/cases"
payload = {
"assigned_to": "<string>",
"external_reference": "<string>",
"metadata": {}
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({assigned_to: '<string>', external_reference: '<string>', metadata: {}})
};
fetch('https://instance.prod.onboardapp.io/v1/cases', 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://instance.prod.onboardapp.io/v1/cases",
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([
'assigned_to' => '<string>',
'external_reference' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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://instance.prod.onboardapp.io/v1/cases"
payload := strings.NewReader("{\n \"assigned_to\": \"<string>\",\n \"external_reference\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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://instance.prod.onboardapp.io/v1/cases")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"assigned_to\": \"<string>\",\n \"external_reference\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://instance.prod.onboardapp.io/v1/cases")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"assigned_to\": \"<string>\",\n \"external_reference\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"data": {
"token": "cas_9k4m2n1p",
"name": "CAS-000142",
"type": "Onboarding",
"status": "New",
"entity_category": "Company",
"assigned_to": "<string>",
"sla_deadline": "2023-11-07T05:31:56Z",
"sla_status": "On Track",
"open_alerts_count": 123,
"total_entities_count": 123,
"risk_tier": "High",
"risk_score": 123,
"decision": "Approve",
"external_reference": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"closed_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "req_9k4m2n1p3q",
"page": {
"cursor": "<string>",
"has_more": true
}
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "<string>",
"request_id": "req_9k4m2n1p3q",
"details": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}
}Authorizations
Project-scoped API key for server-to-server authentication. Obtain keys from the Zenoo dashboard under Project Settings > API Keys. Staging and production environments use separate keys.
Headers
Unique key for idempotent request handling. If a request with the same key was already processed within the last 24 hours, the original response is returned.
Body
Request body for creating a new case.
Case type.
Onboarding, Review, Perpetual Primary entity category.
Company, Person User ID of the reviewer to assign.
Request body for creating a new entity.
Show child attributes
Show child attributes
Your internal reference ID.
255Show child attributes
Show child attributes
Response
Case created.
Standard response wrapper for all API endpoints. Contains the resource data and pagination metadata.