curl --request GET \
--url https://api.ctrl-hub.com/v3/form-schemas/{schema_id}/x-sources/{field_id}/options \
--header 'X-Session-Token: <api-key>'import requests
url = "https://api.ctrl-hub.com/v3/form-schemas/{schema_id}/x-sources/{field_id}/options"
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/form-schemas/{schema_id}/x-sources/{field_id}/options', 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/form-schemas/{schema_id}/x-sources/{field_id}/options",
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/form-schemas/{schema_id}/x-sources/{field_id}/options"
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/form-schemas/{schema_id}/x-sources/{field_id}/options")
.header("X-Session-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/form-schemas/{schema_id}/x-sources/{field_id}/options")
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": "x-source-options",
"attributes": {
"label": "<string>"
}
}
],
"meta": {
"stats": {
"truncated": true
}
},
"jsonapi": {
"version": "1.0"
}
}{
"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": "7b4c8f12-3e9a-4d5b-8c6f-1a2b3c4d5e6f",
"status": "404",
"title": "Resource not found",
"detail": "The requested resource could not be found or does not exist.",
"code": "NOT_FOUND.001"
}{
"errors": [
{
"id": "d26cc34a-ceb2-45fb-aba2-c61782f9ec39",
"status": "422",
"title": "submitting organisation has no scheme share with the form's owning organisation",
"detail": "The request was understood but names something the server cannot act on.",
"code": "CH.001.054"
}
]
}{
"id": "fe9d9a69-f0a7-4fdc-bb2c-176027f316c5",
"status": "500",
"title": "Internal Server Error",
"detail": "An unexpected error occurred on the server."
}List x-source options
List the options of one x-source field in a form schema, searched and bounded, for a picker that does not
have them inlined (see defer_x_sources on GET /v3/form-schemas/{schema_id}).
The options are the ones hydration would write into the schema for the same caller, with the same scoping
and labels: the owner organisation’s, narrowed to the shared schemes for a contractor, or the bridged
organisations the field names. Only operations fields are supported.
curl --request GET \
--url https://api.ctrl-hub.com/v3/form-schemas/{schema_id}/x-sources/{field_id}/options \
--header 'X-Session-Token: <api-key>'import requests
url = "https://api.ctrl-hub.com/v3/form-schemas/{schema_id}/x-sources/{field_id}/options"
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/form-schemas/{schema_id}/x-sources/{field_id}/options', 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/form-schemas/{schema_id}/x-sources/{field_id}/options",
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/form-schemas/{schema_id}/x-sources/{field_id}/options"
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/form-schemas/{schema_id}/x-sources/{field_id}/options")
.header("X-Session-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ctrl-hub.com/v3/form-schemas/{schema_id}/x-sources/{field_id}/options")
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": "x-source-options",
"attributes": {
"label": "<string>"
}
}
],
"meta": {
"stats": {
"truncated": true
}
},
"jsonapi": {
"version": "1.0"
}
}{
"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": "7b4c8f12-3e9a-4d5b-8c6f-1a2b3c4d5e6f",
"status": "404",
"title": "Resource not found",
"detail": "The requested resource could not be found or does not exist.",
"code": "NOT_FOUND.001"
}{
"errors": [
{
"id": "d26cc34a-ceb2-45fb-aba2-c61782f9ec39",
"status": "422",
"title": "submitting organisation has no scheme share with the form's owning organisation",
"detail": "The request was understood but names something the server cannot act on.",
"code": "CH.001.054"
}
]
}{
"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 schema.
The id of a field in the form schema's model, as it appears under model.properties.
1Query Parameters
Words to match, split on whitespace and /. An option matches when every word appears, case-insensitively,
in some segment of its label: the operation's, work order's or scheme's name or code, or the organisation
name when options span organisations. Order does not matter. The first five distinct words are searched in the
database and any further ones are applied to the returned labels, which sets meta.stats.truncated when it
removes options.
Restrict the options to these ids, for showing the labels of values already held. An id the caller can no longer pick is simply absent. The limit is raised to cover every id asked for.
100The most options to return. When more match, meta.stats.truncated is true.
1 <= x <= 100