curl --request POST \
--url https://api.dueflow.co/v1/organization/required-roster-fields \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '{
"fields": []
}'import requests
url = "https://api.dueflow.co/v1/organization/required-roster-fields"
payload = { "fields": [] }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({fields: []})
};
fetch('https://api.dueflow.co/v1/organization/required-roster-fields', 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.dueflow.co/v1/organization/required-roster-fields",
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([
'fields' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dueflow.co/v1/organization/required-roster-fields"
payload := strings.NewReader("{\n \"fields\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.dueflow.co/v1/organization/required-roster-fields")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fields\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dueflow.co/v1/organization/required-roster-fields")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": []\n}"
response = http.request(request)
puts response.read_body{
"requiredRosterFields": [
"<string>"
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}Set required roster fields
Requires scope
organization:write· Minimum role admin
Replaces the organization’s required roster fields. For nationals, picks which optional roster fields child chapters must supply on upload. Chapters pass all three of parentFirstName, parentLastName and parentEmail to require parent/guardian contact from members (they are asked for it in the member portal and before paying), or an empty array to make it optional; any other set is a 400.
curl --request POST \
--url https://api.dueflow.co/v1/organization/required-roster-fields \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '{
"fields": []
}'import requests
url = "https://api.dueflow.co/v1/organization/required-roster-fields"
payload = { "fields": [] }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({fields: []})
};
fetch('https://api.dueflow.co/v1/organization/required-roster-fields', 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.dueflow.co/v1/organization/required-roster-fields",
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([
'fields' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dueflow.co/v1/organization/required-roster-fields"
payload := strings.NewReader("{\n \"fields\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.dueflow.co/v1/organization/required-roster-fields")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fields\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dueflow.co/v1/organization/required-roster-fields")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": []\n}"
response = http.request(request)
puts response.read_body{
"requiredRosterFields": [
"<string>"
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>",
"docsUrl": "<string>",
"param": "<string>",
"requiredScopes": [
"<string>"
]
}
}Authorizations
A Dueflow access token: dfp_ (personal) or dfs_ (service). Permissions are the token's scopes intersected with the role ceiling, re-evaluated per request.
Scopes
Headers
A unique key per logical operation, e.g. a UUID. Keys are remembered for 24 hours per token: a retry within that window with the same key replays the original response (marked Idempotent-Replayed: true) instead of repeating the write; reusing a key with different parameters is a 409.
255Body
phone, parentFirstName, parentLastName, parentEmail Response
Success

