curl --request GET \
--url https://api.ctrl-hub.com/v3/schemes \
--header 'X-Session-Token: <api-key>'import requests
url = "https://api.ctrl-hub.com/v3/schemes"
headers = {"X-Session-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Session-Token': '<api-key>'}};
fetch('https://api.ctrl-hub.com/v3/schemes', 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://api.ctrl-hub.com/v3/schemes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Session-Token: <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"
"net/http"
"io"
)
func main() {
url := "https://api.ctrl-hub.com/v3/schemes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Session-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ctrl-hub.com/v3/schemes")
.header("X-Session-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/schemes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Session-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "schemes",
"attributes": {
"name": "<string>",
"status": "in_planning",
"code": "<string>",
"description": "<string>",
"dates": {
"anticipated": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
}
},
"labels": [
{
"key": "Your label key",
"value": "Your label value"
}
]
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z",
"from_template": true,
"dates": {
"scheduled": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
}
},
"counts": {
"operations": 0,
"permits": 0,
"properties": 0,
"locations": 0,
"streets": 0,
"work_orders": 0
},
"completeness": {
"percentage": {
"completed": 0,
"aborted": 0,
"unknown": 100,
"cancelled": 0
},
"counts": {
"completed": 0,
"aborted": 0,
"unknown": 1,
"cancelled": 0
},
"statuses": {
"counts": {
"done": 0,
"in_progress": 0,
"todo": 0
},
"percentages": {
"done": 0,
"in_progress": 0,
"todo": 0
}
},
"done_reasons": {
"counts": {
"aborted": 0,
"cancelled": 0,
"completed": 0
},
"percentages": {
"aborted": 0,
"cancelled": 0,
"completed": 0
}
}
},
"is_default": false,
"imported_at": "2023-11-07T05:31:56Z"
},
"relationships": {
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "organisations"
}
},
"scheme_template": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "scheme-templates"
}
},
"work_orders": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "work-orders"
}
]
},
"template": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "scheme-templates"
}
},
"site_managers": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "users"
}
]
},
"assignees": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "users"
}
]
},
"teams": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "teams"
}
]
},
"folder": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "folders"
}
},
"contracts": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "scheme-contracts"
}
]
},
"locations": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "locations"
}
]
},
"created_by_user": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "users"
}
},
"created_by_service_account": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "service-accounts"
}
}
}
}
],
"meta": {
"pagination": {
"counts": {
"pages": 1,
"resources": 1
},
"current_page": 1,
"offsets": {
"next": null,
"previous": null
},
"requested": {
"limit": 10,
"offset": 0
}
},
"features": {
"include": {
"options": [
"related.resource"
]
}
}
},
"jsonapi": {
"version": "1.0"
},
"included": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "appointments",
"attributes": {
"start_time": "2023-11-07T05:31:56Z",
"end_time": "2023-11-07T05:31:56Z",
"medical_dependency": true,
"on_ecr": true,
"animals": true,
"notes": "<string>",
"on_ecr_notes": "<string>",
"status": "scheduled",
"cancelled_at": "2023-11-07T05:31:56Z",
"cancelled_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cancellation_reason": "<string>"
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z"
},
"relationships": {
"author": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "authors"
}
},
"interaction": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "customer-interactions"
}
},
"operation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "operations"
}
},
"time_band": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "time-bands"
}
},
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "organisations"
}
}
}
}
]
}{
"id": "98ca4a78-b66f-4234-9719-aaf832ee6669",
"status": "400",
"title": "A validation error was encountered",
"source": {
"parameter": "include"
},
"meta": {
"resource": "wrong_value"
}
}{
"id": "05fc9c8d-73b9-4697-9337-57f7a567a48f",
"status": "401",
"title": "You are not authorised to access this resource",
"detail": "In order to access this resource, you need the 'admin' role.",
"code": "AUTH.001"
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}List schemes
List all of the schemes in an organisation.
curl --request GET \
--url https://api.ctrl-hub.com/v3/schemes \
--header 'X-Session-Token: <api-key>'import requests
url = "https://api.ctrl-hub.com/v3/schemes"
headers = {"X-Session-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Session-Token': '<api-key>'}};
fetch('https://api.ctrl-hub.com/v3/schemes', 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://api.ctrl-hub.com/v3/schemes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Session-Token: <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"
"net/http"
"io"
)
func main() {
url := "https://api.ctrl-hub.com/v3/schemes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Session-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ctrl-hub.com/v3/schemes")
.header("X-Session-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/schemes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Session-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "schemes",
"attributes": {
"name": "<string>",
"status": "in_planning",
"code": "<string>",
"description": "<string>",
"dates": {
"anticipated": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
}
},
"labels": [
{
"key": "Your label key",
"value": "Your label value"
}
]
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z",
"from_template": true,
"dates": {
"scheduled": {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z"
}
},
"counts": {
"operations": 0,
"permits": 0,
"properties": 0,
"locations": 0,
"streets": 0,
"work_orders": 0
},
"completeness": {
"percentage": {
"completed": 0,
"aborted": 0,
"unknown": 100,
"cancelled": 0
},
"counts": {
"completed": 0,
"aborted": 0,
"unknown": 1,
"cancelled": 0
},
"statuses": {
"counts": {
"done": 0,
"in_progress": 0,
"todo": 0
},
"percentages": {
"done": 0,
"in_progress": 0,
"todo": 0
}
},
"done_reasons": {
"counts": {
"aborted": 0,
"cancelled": 0,
"completed": 0
},
"percentages": {
"aborted": 0,
"cancelled": 0,
"completed": 0
}
}
},
"is_default": false,
"imported_at": "2023-11-07T05:31:56Z"
},
"relationships": {
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "organisations"
}
},
"scheme_template": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "scheme-templates"
}
},
"work_orders": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "work-orders"
}
]
},
"template": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "scheme-templates"
}
},
"site_managers": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "users"
}
]
},
"assignees": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "users"
}
]
},
"teams": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "teams"
}
]
},
"folder": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "folders"
}
},
"contracts": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "scheme-contracts"
}
]
},
"locations": {
"data": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "locations"
}
]
},
"created_by_user": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "users"
}
},
"created_by_service_account": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "service-accounts"
}
}
}
}
],
"meta": {
"pagination": {
"counts": {
"pages": 1,
"resources": 1
},
"current_page": 1,
"offsets": {
"next": null,
"previous": null
},
"requested": {
"limit": 10,
"offset": 0
}
},
"features": {
"include": {
"options": [
"related.resource"
]
}
}
},
"jsonapi": {
"version": "1.0"
},
"included": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "appointments",
"attributes": {
"start_time": "2023-11-07T05:31:56Z",
"end_time": "2023-11-07T05:31:56Z",
"medical_dependency": true,
"on_ecr": true,
"animals": true,
"notes": "<string>",
"on_ecr_notes": "<string>",
"status": "scheduled",
"cancelled_at": "2023-11-07T05:31:56Z",
"cancelled_by": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cancellation_reason": "<string>"
},
"meta": {
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z"
},
"relationships": {
"author": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "authors"
}
},
"interaction": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "customer-interactions"
}
},
"operation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "operations"
}
},
"time_band": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "time-bands"
}
},
"organisation": {
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "organisations"
}
}
}
}
]
}{
"id": "98ca4a78-b66f-4234-9719-aaf832ee6669",
"status": "400",
"title": "A validation error was encountered",
"source": {
"parameter": "include"
},
"meta": {
"resource": "wrong_value"
}
}{
"id": "05fc9c8d-73b9-4697-9337-57f7a567a48f",
"status": "401",
"title": "You are not authorised to access this resource",
"detail": "In order to access this resource, you need the 'admin' role.",
"code": "AUTH.001"
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}Authorizations
Session token for authentication.
Path Parameters
The unique identifier for the organisation.
Query Parameters
A comma separated list of related resources to include.
appointments, assignees, contracts, operations, locations, organisation, permits, properties, site_managers, streets, teams, template, work_orders, folder Filters the response data based on the value provided.
Available filters:
id_in: Filter by scheme ID(s)organisation_in: Filter schemes by organisation ID(s)eq(contract,xxx): Filter schemes that are assigned to the given scheme contract ID.eq(status,xxx): Filter schemes by lifecycle status. One ofin_planning,in_progress,on_hold,complete.
Project-role filters (cross-resource lookups against project role assignments):
has_role(<project_role_id>): Filter for schemes that have at least one active assignment for the given project role. Example:has_role(11111111-1111-1111-1111-111111111111).held_by(<user_id>): Filter for schemes where the given user holds at least one role (any role). Example:held_by(22222222-2222-2222-2222-222222222222).has_role_assignment(<project_role_id>,<user_id>): Filter for schemes where the given user holds the given role specifically. Example:has_role_assignment(11111111-1111-1111-1111-111111111111,22222222-2222-2222-2222-222222222222).
For more information on using named filters, see the docs
Limit the number of resources returned by the API
x >= 1Offset the resources returned by the API
x >= 0JSON:API pagination, as page[limit] and page[offset]. The same as the top-level limit and offset parameters; when both forms are sent, page[...] wins.
Show child attributes
Show child attributes
Response
Get a list of schemes.
JSON API response object
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Related resources that can be included when a scheme is returned
An appointment
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
- Option 13
Show child attributes
Show child attributes