MENU navbar-image

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,
      }
 ]
}
 

Request   

GET api/v1/courses/{courseId}/sections

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

courseId   integer   

ID of the course Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

course_type   string   

Course type (public|private|regular|connected) Example: regular

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,
     }
}
 

Request   

GET api/v1/courses/{courseId}/sections/{sectionId}

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

courseId   integer   

ID of the course Example: 123456789

sectionId   integer   

ID of the section Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

course_type   string   

Course type (public|private|regular|connected) Example: regular

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:

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&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",
    "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"
             }
         }
     }
 ]
}
 

Request   

GET api/v1/student-courses

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

Query Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

student_id   integer   

ID of the student (Shopify customer) Example: 123456789

liquid_product_ids   string  optional  

If you already have the list of course products purchased by a customer in your Liquid code (or in any other code you're creating) you may specify them here in order to improve response speed Example: 12345678,21345678,32145678

tags   string  optional  

Comma seperated list of customer's tags Example: access_tag,my tag,Multiple words tag

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[]=18&tags[]=mrqh" \
    --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]": "18",
    "tags[0]": "mrqh",
};
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"
            }
        ]
    }
}
 

Request   

GET api/v1/student-courses/private

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

Query Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

student_id   integer   

Id of the student to get private courses info Example: 123456789

liquid_product_ids   integer[]  optional  
tags   string[]  optional  

Must not be greater than 255 characters.

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",
      }
 ]
}
 

Request   

GET api/v1/shop-courses

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

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"
     }
 }
 

Request   

GET api/v1/instructors/get-course-instructor

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

product_id   integer   

ID of the product to get the course info Example: 123456789

type   string   

Course type (public|private|regular|connected) Example: regular

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",
      }
 ]
}
 

Request   

GET api/v1/courses/{courseId}/lessons

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

courseId   integer   

ID of the course Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

course_type   string   

Course type (public|private|regular|connected) Example: regular

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,
     }
 ]
}
 

Request   

GET api/v1/courses/{courseId}/quizes

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

courseId   integer   

ID of the course Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

course_type   string   

Course type (public|private|regular|connected) Example: regular

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",
     }
 ]
}
 

Request   

GET api/v1/sections/{sectionId}/lessons

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

sectionId   integer   

ID of the course section Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

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",
  }
}
 

Request   

GET api/v1/sections/{sectionId}/lessons/{lessonId}

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

sectionId   integer   

ID of the course section Example: 123456789

lessonId   integer   

ID of the section lesson Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

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,
     }
 ]
}
 

Request   

GET api/v1/sections/{sectionId}/quiz

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

sectionId   integer   

ID of the course section Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

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
}
 

Request   

POST api/v1/attendees/{studentId}

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

studentId   integer   

ID of the student (Shopify customer) Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

product_id   string   

Shopify product ID Example: 12345678

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
}
 

Request   

DELETE api/v1/attendees/{studentId}

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

studentId   integer   

ID of the student (Shopify customer) Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

product_id   string   

Shopify product ID Example: 12345678

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
    ]
}
 

Request   

GET api/v1/membership-courses/{membershipId}

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

membershipId   integer   

The ID of the bundle (membership) Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

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
}
 

Request   

PUT api/v1/membership-courses/{membershipId}

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

membershipId   integer   

The ID of the bundle (membership) Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

product_id   string   

Shopify product ID Example: 12345678

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"
}
 

Request   

DELETE api/v1/membership-courses/{membershipId}

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

URL Parameters

membershipId   integer   

The ID of the bundle (membership) Example: 123456789

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

product_id   string   

Shopify product ID Example: 12345678

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
}
 

Request   

GET api/v1/installed

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

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"
}
 

Request   

GET api/v1/extensions/check-courses-data

Headers

Authorization      

Example: {YOUR_ACCESS_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Access-Control-Allow-Origin      

Example: *

Body Parameters

shop   string   

Shopify shop Example: example-shop.myshopify.com

orderId   string   

order ID Example: 5904502620480