Configure waivers
curl --request PUT \
--url https://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"docuseal_waiver_template_id": "<string>",
"docuseal_freedom_waiver_template_id": "<string>"
}
'import requests
url = "https://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers"
payload = {
"docuseal_waiver_template_id": "<string>",
"docuseal_freedom_waiver_template_id": "<string>"
}
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({
docuseal_waiver_template_id: '<string>',
docuseal_freedom_waiver_template_id: '<string>'
})
};
fetch('https://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers', 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://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers",
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([
'docuseal_waiver_template_id' => '<string>',
'docuseal_freedom_waiver_template_id' => '<string>'
]),
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://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers"
payload := strings.NewReader("{\n \"docuseal_waiver_template_id\": \"<string>\",\n \"docuseal_freedom_waiver_template_id\": \"<string>\"\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://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"docuseal_waiver_template_id\": \"<string>\",\n \"docuseal_freedom_waiver_template_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers")
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 \"docuseal_waiver_template_id\": \"<string>\",\n \"docuseal_freedom_waiver_template_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"waivers": {
"docuseal_waiver_template_id": "<string>",
"docuseal_freedom_waiver_template_id": "<string>",
"freedom_waivers_enabled": true
},
"created": [
"waiver"
],
"warning": "<string>"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "<string>",
"created": [
"<string>"
],
"waivers": {
"docuseal_waiver_template_id": "<string>",
"docuseal_freedom_waiver_template_id": "<string>",
"freedom_waivers_enabled": true
}
}Event Setup
Configure waivers
Points the event at its DocuSeal waiver templates.
mode=autoclones Hack Club’s blueprint templates and wires up the default field mappings — nothing else to do. The freedom waiver is only set up when that module is enabled on the event.mode=manualstores template ids you created yourself. Field mappings are not configured, so set them from the event’s integrations page before opening registration (the response says so too). Only the ids you send are written, so setting one never clears the other; send an empty string to detach one.
PUT
/
events
/
{event_id}
/
setup
/
waivers
Configure waivers
curl --request PUT \
--url https://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"docuseal_waiver_template_id": "<string>",
"docuseal_freedom_waiver_template_id": "<string>"
}
'import requests
url = "https://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers"
payload = {
"docuseal_waiver_template_id": "<string>",
"docuseal_freedom_waiver_template_id": "<string>"
}
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({
docuseal_waiver_template_id: '<string>',
docuseal_freedom_waiver_template_id: '<string>'
})
};
fetch('https://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers', 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://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers",
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([
'docuseal_waiver_template_id' => '<string>',
'docuseal_freedom_waiver_template_id' => '<string>'
]),
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://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers"
payload := strings.NewReader("{\n \"docuseal_waiver_template_id\": \"<string>\",\n \"docuseal_freedom_waiver_template_id\": \"<string>\"\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://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"docuseal_waiver_template_id\": \"<string>\",\n \"docuseal_freedom_waiver_template_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://attend.hackclub.com/api/v1/events/{event_id}/setup/waivers")
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 \"docuseal_waiver_template_id\": \"<string>\",\n \"docuseal_freedom_waiver_template_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"waivers": {
"docuseal_waiver_template_id": "<string>",
"docuseal_freedom_waiver_template_id": "<string>",
"freedom_waivers_enabled": true
},
"created": [
"waiver"
],
"warning": "<string>"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "Unauthorized"
}{
"error": "<string>",
"created": [
"<string>"
],
"waivers": {
"docuseal_waiver_template_id": "<string>",
"docuseal_freedom_waiver_template_id": "<string>",
"freedom_waivers_enabled": true
}
}Authorizations
Mobile token, global API token, series API key, or event API key. See Authentication above for which endpoints each one reaches.
Path Parameters
Event id or slug.
Body
application/json
Was this page helpful?