curl --request PATCH \
--url https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"copy": {},
"option_labels": {},
"options": [
"<string>"
],
"required": true
}
'import requests
url = "https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}"
payload = {
"copy": {},
"option_labels": {},
"options": ["<string>"],
"required": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({copy: {}, option_labels: {}, options: ['<string>'], required: true})
};
fetch('https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}', 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.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'copy' => [
],
'option_labels' => [
],
'options' => [
'<string>'
],
'required' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}"
payload := strings.NewReader("{\n \"copy\": {},\n \"option_labels\": {},\n \"options\": [\n \"<string>\"\n ],\n \"required\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"copy\": {},\n \"option_labels\": {},\n \"options\": [\n \"<string>\"\n ],\n \"required\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"copy\": {},\n \"option_labels\": {},\n \"options\": [\n \"<string>\"\n ],\n \"required\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"control": "single_select_cards",
"fact": "<string>",
"id": "<string>",
"copy": {},
"option_labels": {},
"options": [
"<string>"
],
"required": true,
"when": {
"kind": "compare"
}
},
"warnings": [
{
"code": "DUPLICATE_FACT",
"fact": "<string>",
"message": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"issues": [
{
"code": "<string>",
"message": "<string>",
"where": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"issues": [
{
"code": "<string>",
"message": "<string>",
"where": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"issues": [
{
"code": "<string>",
"message": "<string>",
"where": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"issues": [
{
"code": "<string>",
"message": "<string>",
"where": "<string>"
}
]
}Edit a qualification library question
Updates a library question’s wording, options, requiredness, or condition. Omitted fields are unchanged; the bound fact and control are fixed at creation (delete and recreate to change them).
curl --request PATCH \
--url https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"copy": {},
"option_labels": {},
"options": [
"<string>"
],
"required": true
}
'import requests
url = "https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}"
payload = {
"copy": {},
"option_labels": {},
"options": ["<string>"],
"required": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({copy: {}, option_labels: {}, options: ['<string>'], required: true})
};
fetch('https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}', 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.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'copy' => [
],
'option_labels' => [
],
'options' => [
'<string>'
],
'required' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}"
payload := strings.NewReader("{\n \"copy\": {},\n \"option_labels\": {},\n \"options\": [\n \"<string>\"\n ],\n \"required\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"copy\": {},\n \"option_labels\": {},\n \"options\": [\n \"<string>\"\n ],\n \"required\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.purplelabelmd.com/v1/account/question-library/questions/{question_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"copy\": {},\n \"option_labels\": {},\n \"options\": [\n \"<string>\"\n ],\n \"required\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"control": "single_select_cards",
"fact": "<string>",
"id": "<string>",
"copy": {},
"option_labels": {},
"options": [
"<string>"
],
"required": true,
"when": {
"kind": "compare"
}
},
"warnings": [
{
"code": "DUPLICATE_FACT",
"fact": "<string>",
"message": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"issues": [
{
"code": "<string>",
"message": "<string>",
"where": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"issues": [
{
"code": "<string>",
"message": "<string>",
"where": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"issues": [
{
"code": "<string>",
"message": "<string>",
"where": "<string>"
}
]
}{
"status": 123,
"title": "<string>",
"issues": [
{
"code": "<string>",
"message": "<string>",
"where": "<string>"
}
]
}Authorizations
Per-client API key (M2M). Presented as Authorization: Bearer <key>.
Path Parameters
Body
edit body for an existing qualification question — every field optional; omitted fields are unchanged. The bound fact and control are fixed at creation (delete and recreate to change them).
Response
the updated library question
the saved question under data, plus non-blocking duplicate notices when another question already collects the same fact (the write still succeeds — warnings never block)
A client-authored screening question — a library definition or an offering-local copy. It binds a fact by its stable code (the code must resolve in your authoring fact catalog) and a display control, and carries your own wording. Copy and option labels are yours to author.
Show child attributes
Show child attributes
Show child attributes
Show child attributes