curl --request POST \
--url https://schoolmaker.co/api/v1/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"is_published": true,
"description": "<string>",
"is_default_granularity_access_enabled": true,
"settings_store_url": "<string>",
"settings_show_member_count": true,
"settings_is_certificate_enabled": true,
"settings_is_milestone_display_enabled": true,
"settings_is_coaching_disabled": true,
"settings_is_section_groups_enabled": true,
"is_secret": true,
"questions_category_id": "<string>",
"questions_category_type": "<string>",
"settings_is_inline_questions_category": true,
"settings_is_questions_disabled": true,
"default_reviewer_ids": [
"<string>"
]
}
'import requests
url = "https://schoolmaker.co/api/v1/products"
payload = {
"name": "<string>",
"is_published": True,
"description": "<string>",
"is_default_granularity_access_enabled": True,
"settings_store_url": "<string>",
"settings_show_member_count": True,
"settings_is_certificate_enabled": True,
"settings_is_milestone_display_enabled": True,
"settings_is_coaching_disabled": True,
"settings_is_section_groups_enabled": True,
"is_secret": True,
"questions_category_id": "<string>",
"questions_category_type": "<string>",
"settings_is_inline_questions_category": True,
"settings_is_questions_disabled": True,
"default_reviewer_ids": ["<string>"]
}
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({
name: '<string>',
is_published: true,
description: '<string>',
is_default_granularity_access_enabled: true,
settings_store_url: '<string>',
settings_show_member_count: true,
settings_is_certificate_enabled: true,
settings_is_milestone_display_enabled: true,
settings_is_coaching_disabled: true,
settings_is_section_groups_enabled: true,
is_secret: true,
questions_category_id: '<string>',
questions_category_type: '<string>',
settings_is_inline_questions_category: true,
settings_is_questions_disabled: true,
default_reviewer_ids: ['<string>']
})
};
fetch('https://schoolmaker.co/api/v1/products', 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://schoolmaker.co/api/v1/products",
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([
'name' => '<string>',
'is_published' => true,
'description' => '<string>',
'is_default_granularity_access_enabled' => true,
'settings_store_url' => '<string>',
'settings_show_member_count' => true,
'settings_is_certificate_enabled' => true,
'settings_is_milestone_display_enabled' => true,
'settings_is_coaching_disabled' => true,
'settings_is_section_groups_enabled' => true,
'is_secret' => true,
'questions_category_id' => '<string>',
'questions_category_type' => '<string>',
'settings_is_inline_questions_category' => true,
'settings_is_questions_disabled' => true,
'default_reviewer_ids' => [
'<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://schoolmaker.co/api/v1/products"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"is_published\": true,\n \"description\": \"<string>\",\n \"is_default_granularity_access_enabled\": true,\n \"settings_store_url\": \"<string>\",\n \"settings_show_member_count\": true,\n \"settings_is_certificate_enabled\": true,\n \"settings_is_milestone_display_enabled\": true,\n \"settings_is_coaching_disabled\": true,\n \"settings_is_section_groups_enabled\": true,\n \"is_secret\": true,\n \"questions_category_id\": \"<string>\",\n \"questions_category_type\": \"<string>\",\n \"settings_is_inline_questions_category\": true,\n \"settings_is_questions_disabled\": true,\n \"default_reviewer_ids\": [\n \"<string>\"\n ]\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://schoolmaker.co/api/v1/products")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"is_published\": true,\n \"description\": \"<string>\",\n \"is_default_granularity_access_enabled\": true,\n \"settings_store_url\": \"<string>\",\n \"settings_show_member_count\": true,\n \"settings_is_certificate_enabled\": true,\n \"settings_is_milestone_display_enabled\": true,\n \"settings_is_coaching_disabled\": true,\n \"settings_is_section_groups_enabled\": true,\n \"is_secret\": true,\n \"questions_category_id\": \"<string>\",\n \"questions_category_type\": \"<string>\",\n \"settings_is_inline_questions_category\": true,\n \"settings_is_questions_disabled\": true,\n \"default_reviewer_ids\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://schoolmaker.co/api/v1/products")
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 \"name\": \"<string>\",\n \"is_published\": true,\n \"description\": \"<string>\",\n \"is_default_granularity_access_enabled\": true,\n \"settings_store_url\": \"<string>\",\n \"settings_show_member_count\": true,\n \"settings_is_certificate_enabled\": true,\n \"settings_is_milestone_display_enabled\": true,\n \"settings_is_coaching_disabled\": true,\n \"settings_is_section_groups_enabled\": true,\n \"is_secret\": true,\n \"questions_category_id\": \"<string>\",\n \"questions_category_type\": \"<string>\",\n \"settings_is_inline_questions_category\": true,\n \"settings_is_questions_disabled\": true,\n \"default_reviewer_ids\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"description": "<string>",
"is_published": true,
"is_default_granularity_access_enabled": true,
"settings_store_url": "<string>",
"settings_show_member_count": true,
"settings_is_certificate_enabled": true,
"settings_is_milestone_display_enabled": true,
"settings_is_coaching_disabled": true,
"settings_is_section_groups_enabled": true,
"is_secret": true,
"questions_category_id": "<string>",
"questions_category_type": "<string>",
"settings_is_inline_questions_category": true,
"settings_is_questions_disabled": true,
"default_reviewer_ids": [
"<string>"
],
"id": "<string>",
"section_groups": [
{
"id": "<string>",
"name": "<string>",
"position": 123
}
],
"image_logo_url": "<string>",
"image_cover_url": "<string>"
}{
"error": "Access denied"
}{
"error": "Forbidden"
}{
"error": "Record not found"
}{
"error": "Validation failed"
}Create a Program
Creates a program in your school.
curl --request POST \
--url https://schoolmaker.co/api/v1/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"is_published": true,
"description": "<string>",
"is_default_granularity_access_enabled": true,
"settings_store_url": "<string>",
"settings_show_member_count": true,
"settings_is_certificate_enabled": true,
"settings_is_milestone_display_enabled": true,
"settings_is_coaching_disabled": true,
"settings_is_section_groups_enabled": true,
"is_secret": true,
"questions_category_id": "<string>",
"questions_category_type": "<string>",
"settings_is_inline_questions_category": true,
"settings_is_questions_disabled": true,
"default_reviewer_ids": [
"<string>"
]
}
'import requests
url = "https://schoolmaker.co/api/v1/products"
payload = {
"name": "<string>",
"is_published": True,
"description": "<string>",
"is_default_granularity_access_enabled": True,
"settings_store_url": "<string>",
"settings_show_member_count": True,
"settings_is_certificate_enabled": True,
"settings_is_milestone_display_enabled": True,
"settings_is_coaching_disabled": True,
"settings_is_section_groups_enabled": True,
"is_secret": True,
"questions_category_id": "<string>",
"questions_category_type": "<string>",
"settings_is_inline_questions_category": True,
"settings_is_questions_disabled": True,
"default_reviewer_ids": ["<string>"]
}
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({
name: '<string>',
is_published: true,
description: '<string>',
is_default_granularity_access_enabled: true,
settings_store_url: '<string>',
settings_show_member_count: true,
settings_is_certificate_enabled: true,
settings_is_milestone_display_enabled: true,
settings_is_coaching_disabled: true,
settings_is_section_groups_enabled: true,
is_secret: true,
questions_category_id: '<string>',
questions_category_type: '<string>',
settings_is_inline_questions_category: true,
settings_is_questions_disabled: true,
default_reviewer_ids: ['<string>']
})
};
fetch('https://schoolmaker.co/api/v1/products', 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://schoolmaker.co/api/v1/products",
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([
'name' => '<string>',
'is_published' => true,
'description' => '<string>',
'is_default_granularity_access_enabled' => true,
'settings_store_url' => '<string>',
'settings_show_member_count' => true,
'settings_is_certificate_enabled' => true,
'settings_is_milestone_display_enabled' => true,
'settings_is_coaching_disabled' => true,
'settings_is_section_groups_enabled' => true,
'is_secret' => true,
'questions_category_id' => '<string>',
'questions_category_type' => '<string>',
'settings_is_inline_questions_category' => true,
'settings_is_questions_disabled' => true,
'default_reviewer_ids' => [
'<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://schoolmaker.co/api/v1/products"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"is_published\": true,\n \"description\": \"<string>\",\n \"is_default_granularity_access_enabled\": true,\n \"settings_store_url\": \"<string>\",\n \"settings_show_member_count\": true,\n \"settings_is_certificate_enabled\": true,\n \"settings_is_milestone_display_enabled\": true,\n \"settings_is_coaching_disabled\": true,\n \"settings_is_section_groups_enabled\": true,\n \"is_secret\": true,\n \"questions_category_id\": \"<string>\",\n \"questions_category_type\": \"<string>\",\n \"settings_is_inline_questions_category\": true,\n \"settings_is_questions_disabled\": true,\n \"default_reviewer_ids\": [\n \"<string>\"\n ]\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://schoolmaker.co/api/v1/products")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"is_published\": true,\n \"description\": \"<string>\",\n \"is_default_granularity_access_enabled\": true,\n \"settings_store_url\": \"<string>\",\n \"settings_show_member_count\": true,\n \"settings_is_certificate_enabled\": true,\n \"settings_is_milestone_display_enabled\": true,\n \"settings_is_coaching_disabled\": true,\n \"settings_is_section_groups_enabled\": true,\n \"is_secret\": true,\n \"questions_category_id\": \"<string>\",\n \"questions_category_type\": \"<string>\",\n \"settings_is_inline_questions_category\": true,\n \"settings_is_questions_disabled\": true,\n \"default_reviewer_ids\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://schoolmaker.co/api/v1/products")
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 \"name\": \"<string>\",\n \"is_published\": true,\n \"description\": \"<string>\",\n \"is_default_granularity_access_enabled\": true,\n \"settings_store_url\": \"<string>\",\n \"settings_show_member_count\": true,\n \"settings_is_certificate_enabled\": true,\n \"settings_is_milestone_display_enabled\": true,\n \"settings_is_coaching_disabled\": true,\n \"settings_is_section_groups_enabled\": true,\n \"is_secret\": true,\n \"questions_category_id\": \"<string>\",\n \"questions_category_type\": \"<string>\",\n \"settings_is_inline_questions_category\": true,\n \"settings_is_questions_disabled\": true,\n \"default_reviewer_ids\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"description": "<string>",
"is_published": true,
"is_default_granularity_access_enabled": true,
"settings_store_url": "<string>",
"settings_show_member_count": true,
"settings_is_certificate_enabled": true,
"settings_is_milestone_display_enabled": true,
"settings_is_coaching_disabled": true,
"settings_is_section_groups_enabled": true,
"is_secret": true,
"questions_category_id": "<string>",
"questions_category_type": "<string>",
"settings_is_inline_questions_category": true,
"settings_is_questions_disabled": true,
"default_reviewer_ids": [
"<string>"
],
"id": "<string>",
"section_groups": [
{
"id": "<string>",
"name": "<string>",
"position": 123
}
],
"image_logo_url": "<string>",
"image_cover_url": "<string>"
}{
"error": "Access denied"
}{
"error": "Forbidden"
}{
"error": "Record not found"
}{
"error": "Validation failed"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
- Option 1
- Option 2
Fields may be sent directly or inside attributes. Omitted fields remain unchanged on update.
Program title. Required on creation and cannot be blank. Maximum 255 characters.
1 - 255Whether the program is published. Required on creation. Published programs count toward your plan limit. Drafts do not.
Short program summary. Maximum 210 characters.
210Adds an Unlock button for members without access to the program. Use the URL of an offer that grants access. Send null or an empty string to clear it.
200000Show the number of members in this program. Off by default. Send true or false to update it. An existing value cannot be cleared with null.
Give members a certificate when they complete all steps in the program. Off by default. Send true or false to update it. An existing value cannot be cleared with null.
Show the milestones in the program plan. Defaults to true. Send null to restore the default.
Allow sections to be organized into groups. Off by default. Send null to turn it off.
Only members with access to a "secret program" can see it on the home page.
ID of an accessible question category in this school. Pair with questions_category_type.
200000Use Forums::Category for a community space or Meetings::Category for a consultation category. Must match questions_category_id.
200000Staff user IDs assigned to review new steps, up to 100. Defaults to an empty list. Send [] to clear these defaults without changing reviewers assigned directly to existing steps. Null is not accepted.
1001 - 255Choose where members ask questions. Existing community or consultation destinations must be published and use questions_category_id. Members need access to those destinations. new_community and new_consultation are available only when creating a program and create a published destination named after it. Do not combine this with conflicting question settings.
inline, disabled, community, consultation, new_community, new_consultation Response
Successful operation
Program description. Returns an empty string when no description is set.
Link for the "Unlock" button shown to members without access to this program. We recommend linking to an offer that grants access. Omitted or null on creation leaves it empty. Send null or an empty string to clear it on update.
200000Show or hide the number of members in this program. Omitted or null on creation leaves it off and returns null. Send false to turn it off on update. An existing true or false value cannot be changed to null.
Give members a certificate when they complete all steps in this program. Omitted or null on creation leaves it off and returns null. Send false to turn it off on update. An existing true or false value cannot be changed to null.
Show or hide milestones in the program plan. Defaults to true when omitted or null on creation. Send null on update to restore this default.
Allow section groups. You may need to reorder sections after enabling this setting. Omitted or null on creation leaves it off and returns null. Send false to disable it or null to clear it.
Only members with access to a "secret program" can see it on the home page.
ID of an accessible question category in this school. Pair with questions_category_type.
200000Use Forums::Category for a community space or Meetings::Category for a consultation category. Must match questions_category_id.
200000Up to 100 staff user IDs to assign as reviewers for new steps. Defaults to an empty list on creation. Omit on update to keep the current list or send [] to clear it. Null is not accepted. Reviewers already assigned to existing steps are kept.
1001 - 255Show child attributes
Show child attributes
Was this page helpful?