Introduction
This documentation aims to provide all the information you need to work with Courses Plus API.
Authenticating requests
To authenticate requests, include a X-Api-Access-Token
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 visiting your dashboard and clicking Generate API token.
Attendees
Endpoints to work with studen access to courses
Endpoints to get information about shop
requires authentication
Allows to provide access to stated course (or membership) for stated shopify customer
Example request:
curl --request POST \
"https://courses-plus-api.architechpro.cc/api/v1/attendees/sint?shop=example-shop.myshopify.com&product_id=12345678" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"gdmcdbbidtrgtcgmsyvlrws\",
\"product_id\": 11
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/attendees/sint"
);
const params = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "gdmcdbbidtrgtcgmsyvlrws",
"product_id": 11
};
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.
Allows to revoke access from stated course (or membership) for stated shopify customer
requires authentication
Example request:
curl --request DELETE \
"https://courses-plus-api.architechpro.cc/api/v1/attendees/iure?shop=example-shop.myshopify.com&product_id=12345678" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"hawk\",
\"product_id\": 17
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/attendees/iure"
);
const params = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "hawk",
"product_id": 17
};
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.
Courses
Student courses
The student 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 course - 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.
Student courses
requires authentication
Display a list of all available courses for student.
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/student-courses?shop=example-shop.myshopify.com&student_id=1&liquid_product_ids=12345678%2C+21345678%2C+32145678&tags=access_tag%2C+my+tag%2C+Multiple+words+tag&client_id=1" \
--header "X-Api-Access-Token: {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": "1",
"liquid_product_ids": "12345678, 21345678, 32145678",
"tags": "access_tag, my tag, Multiple words tag",
"client_id": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{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",
"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']
}
]
}
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
).
title
string
Course title.
handle
string
Course handle.
description
string
Course description.
image
string
Course image.
completionHours
string
Hours taken to complete the course.
completionMinutes
string
Minutes taken to complete the course.
tags
string[]
Either associated product tags or course category (for private and public courses).
Student private courses
requires authentication
Display a list of all available private courses for 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=1&liquid_product_ids[]=13&tags[]=acvogqdwyxy" \
--header "X-Api-Access-Token: {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": "1",
"liquid_product_ids[0]": "13",
"tags[0]": "acvogqdwyxy",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{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 course created
title
string
Course title.
description
string
Course description.
short_description
string
Course short description.
handle
string
Course handle.
certificate
integer
Whether certificate send is enabled (0
|1
).
completion_hours
integer
Estimated number of hours to complete the course (set in course settings by admin).
completion_minutes
integer
Estimated number of minutes to complete the course (set in course settings by admin).
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
integer
Course order both in admin and on the storefront
category
integer
Course order both in admin and on the storefront
create_at
integer
Course creation datetime
updated_at
integer
Course updation datetime
Shop courses
The shop courses resource allows you to to retrieve information about all available courses for shop.
Shop courses
requires authentication
Display a list of all available courses for stated shop.
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/shop-courses?shop=example-shop.myshopify.com" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"tcditkewi\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/shop-courses"
);
const params = {
"shop": "example-shop.myshopify.com",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "tcditkewi"
};
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
).
title
string
Course title.
handle
string
Course handle.
Courses extensions
APIs for extebsions 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?orderId=gid%3A%2F%2Fshopify%2FOrder%2F5904502620480&shop=example-shop.myshopify.com" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"hwajplrtikmtbasynmjpjkm\",
\"orderId\": 13
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/extensions/check-courses-data"
);
const params = {
"orderId": "gid://shopify/Order/5904502620480",
"shop": "example-shop.myshopify.com",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "hwajplrtikmtbasynmjpjkm",
"orderId": 13
};
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.
Courses instructors
APIs for retreiving available instructors for courses
Courses 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?product_id=1&shop=example-shop.myshopify.com&type=%28regular%2Copen%2Cprivate%29" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"pxubsrqsrjuxdrqxwxcv\",
\"product_id\": 1,
\"type\": \"suscipit\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/instructors/get-course-instructor"
);
const params = {
"product_id": "1",
"shop": "example-shop.myshopify.com",
"type": "(regular,open,private)",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "pxubsrqsrjuxdrqxwxcv",
"product_id": 1,
"type": "suscipit"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
Example response (200):
{
"first_name": "John",
"last_name": "Smith",
"image": "https://cdn.shopify.com/proxy/564c6b8525aa273977411fcf65ffc73b3dd0c615a10da1d7d465f43775c8e853/www.gravatar.com/avatar/cb6a8718747fa482212f1eb32eb67c76.jpg?s=2048&d=https%3A%2F%2Fcdn.shopify.com%2Fshopifycloud%2Fshopify%2Fassets%2Fadmin%2Fcustomers%2Fpolaris%2Favatar-1-fce0242e4d66279157b1e260c9163a31bf734548f4d570485a3f543cee0e6664.png",
"email": "johnsmith@mail.com",
"twitter": "",
"title": "John Smith, yuor instructor for this course",
"facebook": "",
"bio": "John Smith, expert in yoga field",
"linkedin": "",
"settings": "",
"instagram": "",
"youtube": "",
"website": "john-smith.com"
}
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
type
string
Course type (public
|private
|regular
).
title
string
Course title.
handle
string
Course handle.
description
string
Course description.
image
string
Course image.
Membership courses
Endpoints to work with membership courses
Endpoints to get information about shop
requires authentication
Display list of courses connected with stated product (could be a bundle (membership) or just a product)
Example request:
curl --request GET \
--get "https://courses-plus-api.architechpro.cc/api/v1/membership-courses/repellat?shop=example-shop.myshopify.com&product_id=12345678" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"ygipyhwsgqcizzhhqarbnc\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/membership-courses/repellat"
);
const params = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "ygipyhwsgqcizzhhqarbnc"
};
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.
Allows to add 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/omnis?shop=example-shop.myshopify.com&product_id=12345678" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"zujj\",
\"product_id\": 6
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/membership-courses/omnis"
);
const params = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "zujj",
"product_id": 6
};
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.
Allows to delete 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/iusto?shop=example-shop.myshopify.com&product_id=12345678" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"lhxmsmwczdpk\",
\"product_id\": 18
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/membership-courses/iusto"
);
const params = {
"shop": "example-shop.myshopify.com",
"product_id": "12345678",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "lhxmsmwczdpk",
"product_id": 18
};
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.
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?shop=example-shop.myshopify.com" \
--header "X-Api-Access-Token: {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--header "Access-Control-Allow-Origin: *" \
--data "{
\"shop\": \"kxscqqsthnahymwgo\"
}"
const url = new URL(
"https://courses-plus-api.architechpro.cc/api/v1/installed"
);
const params = {
"shop": "example-shop.myshopify.com",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"X-Api-Access-Token": "{YOUR_ACCESS_TOKEN}",
"Content-Type": "application/json",
"Accept": "application/json",
"Access-Control-Allow-Origin": "*",
};
let body = {
"shop": "kxscqqsthnahymwgo"
};
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.