Replace a study's screener
curl --request PUT \
--url https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"questions": [
{
"category": "template",
"questionTemplateId": "<string>",
"name": "<string>",
"description": "<string>",
"isRequired": true
}
],
"showSchedulerToQualified": false,
"qualifyByDefault": false
}
'import requests
url = "https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener"
payload = {
"questions": [
{
"category": "template",
"questionTemplateId": "<string>",
"name": "<string>",
"description": "<string>",
"isRequired": True
}
],
"showSchedulerToQualified": False,
"qualifyByDefault": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
questions: [
{
category: 'template',
questionTemplateId: '<string>',
name: '<string>',
description: '<string>',
isRequired: true
}
],
showSchedulerToQualified: false,
qualifyByDefault: false
})
};
fetch('https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'questions' => [
[
'category' => 'template',
'questionTemplateId' => '<string>',
'name' => '<string>',
'description' => '<string>',
'isRequired' => true
]
],
'showSchedulerToQualified' => false,
'qualifyByDefault' => false
]),
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"
payload := strings.NewReader("{\n \"questions\": [\n {\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n }\n ],\n \"showSchedulerToQualified\": false,\n \"qualifyByDefault\": false\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"questions\": [\n {\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n }\n ],\n \"showSchedulerToQualified\": false,\n \"qualifyByDefault\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"questions\": [\n {\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n }\n ],\n \"showSchedulerToQualified\": false,\n \"qualifyByDefault\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"workspaceId": "<string>",
"studyId": "<string>",
"type": "RALLY",
"showSchedulerToQualified": true,
"qualifyByDefault": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"questions": [
{
"category": "simple",
"type": "SHORT_FORM",
"name": "<string>",
"isRequired": true,
"id": "<string>",
"workspaceId": "<string>",
"description": "<string>",
"mappedToPropertyId": "<string>",
"questionTemplateId": "<string>"
}
],
"externalSurveyId": "<string>",
"surveyMonkeyCollectorId": "<string>",
"externalSurveySetupStatus": "IN_PROGRESS",
"externalSurveySetupErrorCode": "<string>",
"externalSurveySetupUpdatedAt": "2023-11-07T05:31:56Z",
"customLinkUrl": "<string>",
"customLinkTokensJson": "<string>"
}{
"errors": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}UnauthorizedForbidden{Resource} not foundStudy is not in draft statusToo Many RequestsInternal Server ErrorScreener
Replace a study's screener
Completely replace (upsert) the screener for a draft study. The entire screener configuration must be sent: question ids are regenerated on every call and omitted top-level properties reset to their defaults. Creates the screener (and enables the study’s includeScreener flag) when the study has none. Only Rally screeners can be managed via the API. Not available for survey studies.
PUT
/
studies
/
{studyId}
/
screener
Replace a study's screener
curl --request PUT \
--url https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"questions": [
{
"category": "template",
"questionTemplateId": "<string>",
"name": "<string>",
"description": "<string>",
"isRequired": true
}
],
"showSchedulerToQualified": false,
"qualifyByDefault": false
}
'import requests
url = "https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener"
payload = {
"questions": [
{
"category": "template",
"questionTemplateId": "<string>",
"name": "<string>",
"description": "<string>",
"isRequired": True
}
],
"showSchedulerToQualified": False,
"qualifyByDefault": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
questions: [
{
category: 'template',
questionTemplateId: '<string>',
name: '<string>',
description: '<string>',
isRequired: true
}
],
showSchedulerToQualified: false,
qualifyByDefault: false
})
};
fetch('https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'questions' => [
[
'category' => 'template',
'questionTemplateId' => '<string>',
'name' => '<string>',
'description' => '<string>',
'isRequired' => true
]
],
'showSchedulerToQualified' => false,
'qualifyByDefault' => false
]),
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"
payload := strings.NewReader("{\n \"questions\": [\n {\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n }\n ],\n \"showSchedulerToQualified\": false,\n \"qualifyByDefault\": false\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"questions\": [\n {\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n }\n ],\n \"showSchedulerToQualified\": false,\n \"qualifyByDefault\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rallyuxr.com/api/public/v1/studies/{studyId}/screener")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"questions\": [\n {\n \"category\": \"template\",\n \"questionTemplateId\": \"<string>\",\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"isRequired\": true\n }\n ],\n \"showSchedulerToQualified\": false,\n \"qualifyByDefault\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"workspaceId": "<string>",
"studyId": "<string>",
"type": "RALLY",
"showSchedulerToQualified": true,
"qualifyByDefault": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"questions": [
{
"category": "simple",
"type": "SHORT_FORM",
"name": "<string>",
"isRequired": true,
"id": "<string>",
"workspaceId": "<string>",
"description": "<string>",
"mappedToPropertyId": "<string>",
"questionTemplateId": "<string>"
}
],
"externalSurveyId": "<string>",
"surveyMonkeyCollectorId": "<string>",
"externalSurveySetupStatus": "IN_PROGRESS",
"externalSurveySetupErrorCode": "<string>",
"externalSurveySetupUpdatedAt": "2023-11-07T05:31:56Z",
"customLinkUrl": "<string>",
"customLinkTokensJson": "<string>"
}{
"errors": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}UnauthorizedForbidden{Resource} not foundStudy is not in draft statusToo Many RequestsInternal Server ErrorAuthorizations
Body
application/json
The complete screener configuration. PUT fully replaces the existing screener: question ids are regenerated and omitted top-level properties reset to their defaults.
Response
The replaced screener
A screener with its top-level properties and all questions