Introduction
This documentation aims to provide all the information you need to work with Courses Plus API.
Authenticating requests
To authenticate requests, include a Authorization header with the value "{YOUR_ACCESS_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can retrieve your token by contacting our support team at support@architechpro.com
Courses
Sections (modules)
Endpoints to work with course sections (modules)
Course sections
requires authentication
Display a list of sections for a course
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/courses/123456789/sections" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"course_type\": \"regular\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/courses/123456789/sections"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"course_type": "regular"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"sections": [
{
"id": 123456789,
"title": "Test preparation",
"course_id": 123456789,
"order": 1,
"created_at": "2024-01-01T06:30:10+00:00",
"updated_at": "2024-01-01T06:30:10+00:00",
"removed": false,
"visible": true,
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Section ID
title
string
Section title.
course_id
integer
Course ID.
course_type
string
Course type (public|private|regular|connected).
order
integer
Section order.
created_at
string
Section creation date.
updated_at
string
Section update date.
removed
boolean
If section removed.
visible
boolean
If section visible.
Course section
requires authentication
Display a section for selected course
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/courses/123456789/sections/123456789" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"course_type\": \"regular\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/courses/123456789/sections/123456789"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"course_type": "regular"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"section":
{
"id": 123456789,
"title": "Test preparation",
"course_id": 123456789,
"order": 1,
"created_at": "2024-01-01T06:30:10+00:00",
"updated_at": "2024-01-01T06:30:10+00:00",
"removed": false,
"visible": true,
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Section ID
title
string
Section title.
course_id
integer
Course ID.
course_type
string
Course type (public|private|regular|connected).
order
integer
Section order.
created_at
string
Section creation date.
updated_at
string
Section update date.
removed
boolean
If section removed.
visible
boolean
If section visible.
Student's courses
The student's courses resource allows you to to retrieve information about all available courses for student. This includes:
- Public courses - available for all customers without logging in.
- Free courses - requires either purchase of 0.00 price product or making course free in its' settings.
- Purchased (regular) courses - students will be able to access this course after purchasing a paid product or via tag-based access or via manuall enroll.
- Private courses - courses that are available via manuall enroll or via tag-based access.
- Connected courses - the same as for purchased, but this course type should be connected to a product(s) or product variant(s) and requires its' purchase
Student's courses
requires authentication
Display a list of all available courses for a student.
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/student-courses?shop=example-shop.myshopify.com&student_id=123456789&liquid_product_ids=12345678%2C21345678%2C32145678&variants_ids=12345678%2C21345678%2C32145678&tags=access_tag%2Cmy+tag%2CMultiple+words+tag" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *"const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/student-courses"
);
const params = {
"shop": "example-shop.myshopify.com",
"student_id": "123456789",
"liquid_product_ids": "12345678,21345678,32145678",
"variants_ids": "12345678,21345678,32145678",
"tags": "access_tag,my tag,Multiple words tag",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"courses": [
{
"id": 123456789,
"type": "regular",
"title": "Paid course",
"handle": "paid-course",
"short_description": "Paid course",
"description": "This is paid course",
"image": "https://cdn.shopify.com/s/files/1/0504/5829/6488/products/no_image.png"
"completionMinutes": 15
"completionHours": 20,
"tags": ['first', 'second', 'third', 'vip']
"link": "https://cdn.shopify.com/s/files/1/0504/5829/6488/products/no_image.png",
"total_lessons": 10,
"finished_lessons": 2,
"is_free": false,
"enrolled_date": 1703548800,
"prerequisite_json": "[\"8042275799318\", \"8002744353046\", \"8438703227158\"]",
"instructor": {
"id": 42,
"shop": "example-shop.myshopify.com",
"customer_id": 7012569871234,
"email": "david.chen@summityoga.com",
"title": "Senior Yoga Instructor",
"bio": "David is a certified E-RYT 500 instructor with over a decade of experience in Vinyasa and Hatha yoga. His passion is making the principles of mindfulness and alignment accessible to everyone, from complete beginners to advanced practitioners. When he's not on the mat, David enjoys trail running and writing about holistic wellness.",
"settings": "{\"show_phone\": false, \"contact_form_enabled\": true}",
"twitter": "davidchen_yoga",
"facebook": "DavidChenYoga",
"linkedin": "in/david-chen-yoga",
"instagram": "davidchen.mindfulmovement",
"youtube": "https://www.youtube.com/c/DavidChenYoga",
"website": "https://www.davidchenyoga.com",
"created_at": "2023-05-15 14:22:05",
"updated_at": "2024-10-28 09:15:33",
"customer": {
"id": 7012569871234,
"lastName": "Chen",
"firstName": "David",
"email": "david.chen@summityoga.com",
"state": "ENABLED",
"displayName": "David Chen",
"tags": [
"vip_customer",
"workshop_attendee_2023",
"yoga_pro_subscription",
"instructor",
"newsletter_subscriber"
],
"gid": "gid://shopify/Customer/7012569871234"
}
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Course ID.
type
string
Course type (public|private|regular|connected).
title
string
Course title.
handle
string
Course handle.
description
string
Course description.
short_description
string
Course short discription that could be used instead of description on course cards (if provided).
image
string
Course image URL.
completionHours
string
Estimated amount of hours (specified by admin) to complete the course.
completionMinutes
string
Estimated amount of minutes (specified by admin) to complete the course.
tags
string[]
Either associated product tags or course category (for private and public courses).
link
string
Link to course download.
total_lessons
integer
Number of lessons in a course.
finished_lessons
integer
Number of finished lessons in a course.
is_free
boolean
If the course is free.
enrolled_date
integer
Date when student enrolled to a course (in Unix timestamp format).
prerequisite_json
string
Json representation of an array of course ids that are required to complete before student starts this course.
instructor
object
Course instructor.
Student's private courses
requires authentication
Display a list of all available private courses for a student.
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/student-courses/private?shop=example-shop.myshopify.com&student_id=123456789&liquid_product_ids[]=15&variants_ids[]=17&tags[]=ienawalbfxvkrikkkyoqr" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *"const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/student-courses/private"
);
const params = {
"shop": "example-shop.myshopify.com",
"student_id": "123456789",
"liquid_product_ids[0]": "15",
"variants_ids[0]": "17",
"tags[0]": "ienawalbfxvkrikkkyoqr",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"private_courses": [
{
"private_course_id": 1,
"shop": "example-shop.myshopify.com",
"title": "test private course",
"description": "long course description",
"short_description": "short description for private course",
"handle": "test_private_course",
"certificate": 0,
"completion_hours": 0,
"completion_minutes": 0,
"hidden": 0,
"buttontext": "private course download link",
"settings": null,
"customer_tag_value": null,
"customer_tag_enabled": 0,
"order": 0,
"image": "https://cdn.shopify.com/s/files/1/0504/5829/6488/products/no_image.png",
"category": "my private courses",
"created_at": "2023-10-12 07:25:52",
"updated_at": "2023-10-12 07:25:52"
}
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
private_course_id
integer
Private course ID.
shop
string
Shop where a course was created.
title
string
Course title.
description
string
Course description.
short_description
string
Course short discription that could be used instead of description on course cards (if provided).
handle
string
Course handle.
certificate
integer
Whether certificate send is enabled (0|1).
completion_hours
integer
Estimated amount of hours (specified by admin) to complete the course.
completion_minutes
integer
Estimated amount of minutes (specified by admin) to complete the course.
hidden
integer
If the course is hidden (0 or 1) (set in course settings by admin).
buttontext
string
Text displayed on button that allows to download course materials (set in course settings by admin).
settings
string
Course settings in json format.
customer_tag_value
string
Shopify customer tag that will be assigned to the customer after course completion (set in course settings by admin).
customer_tag_enabled
integer
If the course allows access by tag (set in course settings by admin) (0|1).
order
integer
Course order both in admin and on the storefront.
image
string
Course image URL.
category
string
Course category (set in course settings by admin).
create_at
string
Course creation datetime.
updated_at
string
Course updation datetime.
Shop courses
The shop courses resource allows you to retrieve information about all available courses for a shop.
Shop courses
requires authentication
Display all courses for a shop.
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/shop-courses" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/shop-courses"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"courses": [
{
"id": 123456789,
"type": "regular",
"title": "Paid course",
"handle": "paid-course",
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Course ID
type
string
Course type (public|private|regular|connected).
title
string
Course title.
handle
string
Course handle.
Course instructors
Course instructors
requires authentication
Get information about course instructor.
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/instructors/get-course-instructor" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"product_id\": 123456789,
\"type\": \"regular\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/instructors/get-course-instructor"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"product_id": 123456789,
"type": "regular"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"id": 37,
"shop": "example-shop.myshopify.com"
"customer_id": 6675927990550,
"email": "johnsmith@mail.com",
"title": "Specialist"
"bio":"John Smith, expert in yoga field",
"twitter": "",
"facebook": "",
"linkedin": "",
"instagram": "",
"youtube": "",
"website": "john-smith.com",
"created_at": "2023-12-01 09:30:00",
"updated_at": "2023-12-02 10:20:00",
"customer": {
"id": 6675927990550,
"lastName": "Doe"
"firstName": "John"
"email": "johndoe@test.com"
"state": "ENABLED"
"displayName": "John Doe"
"tags": ["vip", "instructor"],
"gid": "gid:\/\/shopify\/Customer\/6675927990550"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Instructor's ID.
shop
string
Shopify shop.
customer_id
integer
Associated customer ID.
email
string
Associated customer email.
title
string
Instructor's title.
bio
string
Instructor's bio.
twitter
string
Instructor's twitter link.
facebook
string
Instructor's facebook link.
linkedin
string
Instructor's linkedin link.
instagram
string
Instructor's instagram link.
youtube
string
Instructor's youtube link.
website
string
Instructor's website link.
created_at
string
Datetime when instructor was created.
updated_at
string
Datetime when instructor was updated.
customer
object
Associated customer.
Course structure
Course lessons
requires authentication
Provides course lessons
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/courses/123456789/lessons" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"course_type\": \"regular\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/courses/123456789/lessons"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"course_type": "regular"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"lessons": [
{
"id": 123456789,
"type": "regular",
"course_id": 123456789,
"course_type": "private",
"title": "Getting stared with revision",
"order": 1,
"html": '<div>Hello world</div>',
"removed": false,
"created_at": "2024-01-01T06:30:10+00:00",
"updated_at": "2024-01-01T06:30:10+00:00",
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Lesson ID.
type
string
Lesson type.
course_id
integer
Course ID.
course_type
string
Course type (public|private|regular|connected).
title
string
Lesson title.
order
integer
Lesson order.
html
string
Lesson markup.
removed
boolean
If lesson is removed.
created_at
string
Creation date.
updated_at
string
Updation date.
Course quizes
requires authentication
Provides course quizes
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/courses/123456789/quizes" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"course_type\": \"regular\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/courses/123456789/quizes"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"course_type": "regular"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"quizes" => [
{
"id": 123456789,
"title": "Revision test"",
"course_id": 123456789,
"course_type": "regular",
"section_id": 123456789,
"min_correct_answers_amount": 100,
"questions_data": {
"questions": {
"1": [
"Two plus two equals:"
],
"2": [
"Ten times ten equals:"
],
},
"question_files": {
"1": [
null
],
"2": [
"https://cdn.shopify.com/s/files/1/0675/8377/0902/files/download.jpg?v=1670491061"
],
},
"question_options": {
"1": {
"1": [
"2"
],
"2": [
"4"
]
},
"2": {
"1": [
"50"
],
"2": [
"0"
],
"3": [
"100"
]
},
},
"question_answers": {
"1": [
"2"
],
"2": [
"3"
],
}
},
"quiz_tag": "revision_complete",
"require_correct_answers": 10,
"active": true,
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Quiz ID.
title
string
Quiz title.
course_id
integer
Course ID.
course_type
string
Course type (public|private|regular|connected).
section_id
integer
Section ID.
min_correct_answers_amount
integer
Minimum number of correct answers to complete the quiz.
questions_data
object
Questions data: questions itself, question options, questions files, questions answers.
quiz_tag
string
Tag to be assign to customer after quiz comleteion.
require_correct_answers
boolean
If each quiz answer is requied to be correct before advancing to the next question.
active
boolean
If quiz is available (active).
Lessons
Endpoints to work with course lessons
Section lessons
requires authentication
Display a list of lessons for a section
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/sections/123456789/lessons" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/sections/123456789/lessons"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"lessons": [
{
"id": 123456789,
"type": "regular",
"course_id": 123456789,
"course_type": "private",
"title": "Getting stared with revision",
"order": 1,
"html": '<div>Hello world</div>',
"removed": false,
"created_at": "2024-01-01T06:30:10+00:00",
"updated_at": "2024-01-01T06:30:10+00:00",
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Lesson ID
type
string
Lesson type.
course_id
integer
Course ID.
course_type
string
Course type (public|private|regular|connected).
title
string
Lesson title.
order
integer
Lesson order.
html
string
Lesson markup.
removed
boolean
If lesson is removed.
created_at
string
Creation date.
updated_at
string
Updation date.
Section lesson
requires authentication
Display a lesson for a section
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/sections/123456789/lessons/123456789" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/sections/123456789/lessons/123456789"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"lesson": {
"id": 123456789,
"type": "regular",
"course_id": 123456789,
"course_type": "private",
"title": "Getting stared with revision",
"order": 1,
"html": '<div>Hello world</div>',
"removed": false,
"created_at": "2024-01-01T06:30:10+00:00",
"updated_at": "2024-01-01T06:30:10+00:00",
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Lesson ID
type
string
Lesson type.
course_id
integer
Course ID.
course_type
string
Course type (public|private|regular|connected).
title
string
Lesson title.
order
integer
Lesson order.
html
string
Lesson markup.
removed
boolean
If lesson is removed.
created_at
string
Creation date.
updated_at
string
Updation date.
Quizes
Endpoints to work with quizes
Course section quiz
requires authentication
Display a quiz for a course section
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/sections/123456789/quiz" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/sections/123456789/quiz"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"quizes" => [
{
"id": 123456789,
"title": "Revision test"",
"course_id": 123456789,
"course_type": "regular",
"section_id": 123456789,
"min_correct_answers_amount": 100,
"questions_data": {
"questions": {
"1": [
"Two plus two equals:"
],
"2": [
"Ten times ten equals:"
],
},
"question_files": {
"1": [
null
],
"2": [
"https://cdn.shopify.com/s/files/1/0675/8377/0902/files/download.jpg?v=1670491061"
],
},
"question_options": {
"1": {
"1": [
"2"
],
"2": [
"4"
]
},
"2": {
"1": [
"50"
],
"2": [
"0"
],
"3": [
"100"
]
},
},
"question_answers": {
"1": [
"2"
],
"2": [
"3"
],
}
},
"quiz_tag": "revision_complete",
"require_correct_answers": 10,
"active": true,
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
id
integer
Quiz ID
title
string
Quiz title.
course_id
integer
Course ID.
course_type
string
Course type (public|private|regular|connected).
section_id
integer
Section ID.
min_correct_answers_amount
integer
Minimum number of correct answers to complete the quiz.
questions_data
object
Questions data: questions itself, question options, questions files, questions answers.
quiz_tag
string
Tag to be assign to customer after quiz comleteion.
require_correct_answers
boolean
If each quiz answer is requied to be correct before advancing to the next question.
active
boolean
If quiz is available (active).
Students
Endpoints to work with student access to courses
Provide course access to a specific student (customer)
requires authentication
Allows to provide access to a course (or membership) for a customer (student)
Example request:
curl --request POST \
"https://courses-plus-api.architechpro.cc/api/v1/attendees/123456789" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"product_id\": \"12345678\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/attendees/123456789"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"provided": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
provided
boolean
boolen If the access to a course was provided
Revoke course access to a specific student (customer)
requires authentication
Allows to revoke access to a course (or membership) for a customer (student)
Example request:
curl --request DELETE \
"https://courses-plus-api.architechpro.cc/api/v1/attendees/123456789" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"product_id\": \"12345678\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/attendees/123456789"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678"
};
fetch(url, {
method: "DELETE",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"revoked": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
provided
boolen If the access to a course was revoked
Membership / Bundles
Endpoints to work with bundles
Display list of courses connected with a product (could be a bundle (membership) or just a product)
requires authentication
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/membership-courses/123456789" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/membership-courses/123456789"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"product_ids": [
12345678,
12345679,
12345679
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
product_ids
string[]
Array if courses ids that are connected with a product
Add a course (by providing product_id) to a bundle (membership)
requires authentication
Example request:
curl --request PUT \
"https://courses-plus-api.architechpro.cc/api/v1/membership-courses/123456789" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"product_id\": \"12345678\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/membership-courses/123456789"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"updated": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
updated
boolean
boolen If a course was added to a bundle
Delete a course (by providing product_id) from a bundle (membership)
requires authentication
Example request:
curl --request DELETE \
"https://courses-plus-api.architechpro.cc/api/v1/membership-courses/123456789" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"product_id\": \"12345678\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/membership-courses/123456789"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678"
};
fetch(url, {
method: "DELETE",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"deleted": "true"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
deleted
string
boolen If a course was deleted from a bundle
Shop
Endpoints to get information by shop
Endpoints to get information about shop
requires authentication
Check if Courses Plus app is installed on the shop
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/installed" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/installed"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"installed": true
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Response
Response Fields
installed
boolean
boolen If the app is installed on the shop
Courses extensions
APIs for extensions requests
Courses extensions
requires authentication
Check if order items contains course data
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/extensions/check-courses-data" \
--header "Authorization: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"example-shop.myshopify.com\",
\"orderId\": \"5904502620480\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/extensions/check-courses-data"
);
const headers = {
"Authorization": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "example-shop.myshopify.com",
"orderId": "5904502620480"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"status": "true"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.