curl --request POST \
--url https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"category": "template",
"questionTemplateId": "<string>",
"name": "<string>",
"description": "<string>",
"isRequired": true
}
'import requests
url = "https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions"
payload = {
"category": "template",
"questionTemplateId": "<string>",
"name": "<string>",
"description": "<string>",
"isRequired": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
category: 'template',
questionTemplateId: '<string>',
name: '<string>',
description: '<string>',
isRequired: true
})
};
fetch('https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions', 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.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions",
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([
'category' => 'template',
'questionTemplateId' => '<string>',
'name' => '<string>',
'description' => '<string>',
'isRequired' => 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.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions"
payload := strings.NewReader("{\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n}"
response = http.request(request)
puts response.read_body{
"category": "simple",
"type": "SHORT_FORM",
"name": "<string>",
"isRequired": true,
"id": "<string>",
"workspaceId": "<string>",
"description": "<string>",
"mappedToPropertyId": "<string>",
"questionTemplateId": "<string>"
}{
"errors": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}"Unauthorized""Forbidden""{Resource} not found""Study is not in draft status""Too Many Requests""Internal Server Error"Create a screener question
Append a question to the end of a draft study’s screener. Only Rally screeners can be managed via the API. Not available for survey studies.
curl --request POST \
--url https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"category": "template",
"questionTemplateId": "<string>",
"name": "<string>",
"description": "<string>",
"isRequired": true
}
'import requests
url = "https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions"
payload = {
"category": "template",
"questionTemplateId": "<string>",
"name": "<string>",
"description": "<string>",
"isRequired": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
category: 'template',
questionTemplateId: '<string>',
name: '<string>',
description: '<string>',
isRequired: true
})
};
fetch('https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions', 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.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions",
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([
'category' => 'template',
'questionTemplateId' => '<string>',
'name' => '<string>',
'description' => '<string>',
'isRequired' => 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.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions"
payload := strings.NewReader("{\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener/questions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n}"
response = http.request(request)
puts response.read_body{
"category": "simple",
"type": "SHORT_FORM",
"name": "<string>",
"isRequired": true,
"id": "<string>",
"workspaceId": "<string>",
"description": "<string>",
"mappedToPropertyId": "<string>",
"questionTemplateId": "<string>"
}{
"errors": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}"Unauthorized""Forbidden""{Resource} not found""Study is not in draft status""Too Many Requests""Internal Server Error"Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
A single question to append to the screener, discriminated by category
template The id of the workspace question template to instantiate
Overrides the template question prompt
Overrides the template question helper text
Overrides whether a response is required
Response
The created question
- Option 1
- Option 2
- Option 3
- Option 4
A screener question. Template-sourced questions are returned expanded into their concrete category.
simple Whether the question collects short text, long text, a date, or a number
SHORT_FORM, LONG_FORM, DATE, NUMBER The question prompt
Whether a response is required before the screener can be submitted
The question id
The workspace that owns the question
Optional helper text shown beneath the question prompt
Map the response to a person property
Present for questions created from a template