openapi: 3.0.3
info:
  title: 'Courses Plus Api Documentation'
  description: ''
  version: 1.0.0
servers:
  -
    url: 'https://courses-plus-api.architechpro.cc'
tags:
  -
    name: Courses
    description: ''
  -
    name: Lessons
    description: "\nEndpoints to work with course lessons"
  -
    name: Quizes
    description: "\nEndpoints to work with quizes"
  -
    name: Students
    description: "\nEndpoints to work with student access to courses"
  -
    name: 'Membership / Bundles'
    description: "\nEndpoints to work with bundles"
  -
    name: Shop
    description: "\nEndpoints to get information by shop"
  -
    name: 'Courses extensions'
    description: "\nAPIs for extensions requests"
components:
  securitySchemes:
    default:
      type: apiKey
      name: Authorization
      in: header
      description: 'You can retrieve your token by contacting our support team at support@architechpro.com'
security:
  -
    default: []
paths:
  '/api/v1/courses/{courseId}/sections':
    get:
      summary: 'Course sections'
      operationId: courseSections
      description: 'Display a list of sections for a course'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"sections\": [\n     {\n         \"id\": 123456789,\n          \"title\": \"Test preparation\",\n          \"course_id\": 123456789,\n          \"order\": 1,\n          \"created_at\": \"2024-01-01T06:30:10+00:00\",\n          \"updated_at\": \"2024-01-01T06:30:10+00:00\",\n          \"removed\": false,\n          \"visible\": true,\n      }\n ]\n}"
      tags:
        - Courses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                course_type:
                  type: string
                  description: 'Course type (`public`|`private`|`regular`|`connected`)'
                  example: regular
              required:
                - shop
                - course_type
    post:
      summary: ''
      operationId: postApiV1CoursesCourseIdSections
      description: ''
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses: {  }
      tags:
        - Courses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Must match the regex /^[a-zA-Z0-9\-]+.myshopify.com$/. Must not be greater than 255 characters.'
                  example: pif
                title:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: eeomfe
                course_type:
                  type: string
                  description: "'course_type'                   => 'required|string|in:open,free,private,regular,connected',."
                  example: regular
                  enum:
                    - open
                    - free
                    - private
                    - regular
                status:
                  type: boolean
                  description: ''
                  example: true
                removed:
                  type: boolean
                  description: ''
                  example: false
                visible:
                  type: boolean
                  description: ''
                  example: true
              required:
                - shop
                - title
                - course_type
    parameters:
      -
        in: path
        name: courseId
        description: 'ID of the course'
        example: 123456789
        required: true
        schema:
          type: integer
  '/api/v1/courses/{courseId}/sections/{sectionId}':
    get:
      summary: 'Course section'
      operationId: courseSection
      description: 'Display a section for selected course'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"section\":\n     {\n         \"id\": 123456789,\n         \"title\": \"Test preparation\",\n         \"course_id\": 123456789,\n         \"order\": 1,\n         \"created_at\": \"2024-01-01T06:30:10+00:00\",\n         \"updated_at\": \"2024-01-01T06:30:10+00:00\",\n         \"removed\": false,\n         \"visible\": true,\n     }\n}"
      tags:
        - Courses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                course_type:
                  type: string
                  description: 'Course type (`public`|`private`|`regular`|`connected`)'
                  example: regular
              required:
                - shop
                - course_type
    delete:
      summary: ''
      operationId: deleteApiV1CoursesCourseIdSectionsSectionId
      description: ''
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses: {  }
      tags:
        - Courses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Must match the regex /^[a-zA-Z0-9\-]+.myshopify.com$/. Must not be greater than 255 characters.'
                  example: iwjfoemcyueivl
                course_type:
                  type: string
                  description: ''
                  example: open
                  enum:
                    - open
                    - free
                    - private
                    - regular
              required:
                - shop
                - course_type
    parameters:
      -
        in: path
        name: courseId
        description: 'ID of the course'
        example: 123456789
        required: true
        schema:
          type: integer
      -
        in: path
        name: sectionId
        description: 'ID of the section'
        example: 123456789
        required: true
        schema:
          type: integer
  /api/v1/student-courses:
    get:
      summary: "Student's courses"
      operationId: studentsCourses
      description: 'Display a list of all available courses for a student.'
      parameters:
        -
          in: query
          name: shop
          description: 'Shopify shop'
          example: example-shop.myshopify.com
          required: true
          schema:
            type: string
            description: 'Shopify shop'
            example: example-shop.myshopify.com
        -
          in: query
          name: student_id
          description: 'ID of the student (Shopify customer)'
          example: 123456789
          required: true
          schema:
            type: integer
            description: 'ID of the student (Shopify customer)'
            example: 123456789
        -
          in: query
          name: liquid_product_ids
          description: "If you already have the list of course products\n                                                         purchased by a customer in your Liquid code (or in any other code you're creating)\n                                                         you may specify them here in order to improve response speed"
          example: '12345678,21345678,32145678'
          required: false
          schema:
            type: string
            description: "If you already have the list of course products\n                                                         purchased by a customer in your Liquid code (or in any other code you're creating)\n                                                         you may specify them here in order to improve response speed"
            example: '12345678,21345678,32145678'
            nullable: true
        -
          in: query
          name: variants_ids
          description: "Comma seperated list of purchased products' variants ids"
          example: '12345678,21345678,32145678'
          required: false
          schema:
            type: string
            description: "Comma seperated list of purchased products' variants ids"
            example: '12345678,21345678,32145678'
            nullable: true
        -
          in: query
          name: tags
          description: "Comma seperated list of customer's tags"
          example: 'access_tag,my tag,Multiple words tag'
          required: false
          schema:
            type: string
            description: "Comma seperated list of customer's tags"
            example: 'access_tag,my tag,Multiple words tag'
            nullable: true
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"courses\": [\n     {\n         \"id\": 123456789,\n         \"type\": \"regular\",\n         \"title\": \"Paid course\",\n         \"handle\": \"paid-course\",\n         \"short_description\": \"Paid course\",\n         \"description\": \"This is paid course\",\n         \"image\": \"https://cdn.shopify.com/s/files/1/0504/5829/6488/products/no_image.png\"\n         \"completionMinutes\": 15\n         \"completionHours\": 20,\n         \"tags\": ['first', 'second', 'third', 'vip']\n         \"link\": \"https://cdn.shopify.com/s/files/1/0504/5829/6488/products/no_image.png\",\n         \"total_lessons\": 10,\n         \"finished_lessons\": 2,\n         \"is_free\": false,\n         \"enrolled_date\": 1703548800,\n         \"prerequisite_json\": \"[\\\"8042275799318\\\", \\\"8002744353046\\\", \\\"8438703227158\\\"]\",\n         \"instructor\": {\n             \"id\": 42,\n             \"shop\": \"example-shop.myshopify.com\",\n             \"customer_id\": 7012569871234,\n             \"email\": \"david.chen@summityoga.com\",\n             \"title\": \"Senior Yoga Instructor\",\n             \"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.\",\n             \"settings\": \"{\\\"show_phone\\\": false, \\\"contact_form_enabled\\\": true}\",\n             \"twitter\": \"davidchen_yoga\",\n             \"facebook\": \"DavidChenYoga\",\n             \"linkedin\": \"in/david-chen-yoga\",\n             \"instagram\": \"davidchen.mindfulmovement\",\n             \"youtube\": \"https://www.youtube.com/c/DavidChenYoga\",\n             \"website\": \"https://www.davidchenyoga.com\",\n             \"created_at\": \"2023-05-15 14:22:05\",\n             \"updated_at\": \"2024-10-28 09:15:33\",\n             \"customer\": {\n              \"id\": 7012569871234,\n              \"lastName\": \"Chen\",\n              \"firstName\": \"David\",\n              \"email\": \"david.chen@summityoga.com\",\n              \"state\": \"ENABLED\",\n              \"displayName\": \"David Chen\",\n              \"tags\": [\n                  \"vip_customer\",\n                  \"workshop_attendee_2023\",\n                  \"yoga_pro_subscription\",\n                  \"instructor\",\n                  \"newsletter_subscriber\"\n              ],\n              \"gid\": \"gid://shopify/Customer/7012569871234\"\n             }\n         }\n     }\n ]\n}"
      tags:
        - Courses
  /api/v1/student-courses/private:
    get:
      summary: "Student's private courses"
      operationId: studentsPrivateCourses
      description: 'Display a list of all available private courses for a student.'
      parameters:
        -
          in: query
          name: shop
          description: 'Shopify shop'
          example: example-shop.myshopify.com
          required: true
          schema:
            type: string
            description: 'Shopify shop'
            example: example-shop.myshopify.com
        -
          in: query
          name: student_id
          description: 'Id of the student to get private courses info'
          example: 123456789
          required: true
          schema:
            type: integer
            description: 'Id of the student to get private courses info'
            example: 123456789
        -
          in: query
          name: liquid_product_ids
          description: ''
          example:
            - 16
          required: false
          schema:
            type: array
            description: ''
            example:
              - 16
            items:
              type: integer
              nullable: true
        -
          in: query
          name: variants_ids
          description: ''
          example:
            - 13
          required: false
          schema:
            type: array
            description: ''
            example:
              - 13
            items:
              type: integer
              nullable: true
        -
          in: query
          name: tags
          description: 'Must not be greater than 255 characters.'
          example:
            - dxbtyn
          required: false
          schema:
            type: array
            description: 'Must not be greater than 255 characters.'
            example:
              - dxbtyn
            items:
              type: string
              nullable: true
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  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'
                properties:
                  data:
                    type: object
                    properties:
                      private_courses:
                        type: array
                        example:
                          -
                            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'
                        items:
                          type: object
                          properties:
                            private_course_id:
                              type: integer
                              example: 1
                            shop:
                              type: string
                              example: example-shop.myshopify.com
                            title:
                              type: string
                              example: 'test private course'
                            description:
                              type: string
                              example: 'long course description'
                            short_description:
                              type: string
                              example: 'short description for private course'
                            handle:
                              type: string
                              example: test_private_course
                            certificate:
                              type: integer
                              example: 0
                            completion_hours:
                              type: integer
                              example: 0
                            completion_minutes:
                              type: integer
                              example: 0
                            hidden:
                              type: integer
                              example: 0
                            buttontext:
                              type: string
                              example: 'private course download link'
                            settings:
                              type: string
                              example: null
                              nullable: true
                            customer_tag_value:
                              type: string
                              example: null
                              nullable: true
                            customer_tag_enabled:
                              type: integer
                              example: 0
                            order:
                              type: integer
                              example: 0
                            image:
                              type: string
                              example: 'https://cdn.shopify.com/s/files/1/0504/5829/6488/products/no_image.png'
                            category:
                              type: string
                              example: 'my private courses'
                            created_at:
                              type: string
                              example: '2023-10-12 07:25:52'
                            updated_at:
                              type: string
                              example: '2023-10-12 07:25:52'
      tags:
        - Courses
  '/api/v1/courses/{courseId}/lessons':
    get:
      summary: 'Course lessons'
      operationId: courseLessons
      description: 'Provides course lessons'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"lessons\": [\n     {\n          \"id\": 123456789,\n          \"type\": \"regular\",\n          \"course_id\": 123456789,\n          \"course_type\": \"private\",\n          \"title\": \"Getting stared with revision\",\n          \"order\": 1,\n          \"html\": '<div>Hello world</div>',\n          \"removed\": false,\n          \"created_at\": \"2024-01-01T06:30:10+00:00\",\n          \"updated_at\": \"2024-01-01T06:30:10+00:00\",\n      }\n ]\n}"
      tags:
        - Courses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                course_type:
                  type: string
                  description: 'Course type (`public`|`private`|`regular`|`connected`)'
                  example: regular
              required:
                - shop
                - course_type
    parameters:
      -
        in: path
        name: courseId
        description: 'ID of the course'
        example: 123456789
        required: true
        schema:
          type: integer
  '/api/v1/courses/{courseId}/quizes':
    get:
      summary: 'Course quizes'
      operationId: courseQuizes
      description: 'Provides course quizes'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"quizes\" => [\n     {\n         \"id\": 123456789,\n          \"title\": \"Revision test\"\",\n           \"course_id\": 123456789,\n           \"course_type\": \"regular\",\n           \"section_id\": 123456789,\n           \"min_correct_answers_amount\": 100,\n           \"questions_data\": {\n               \"questions\": {\n                   \"1\": [\n                       \"Two plus two equals:\"\n                   ],\n                   \"2\": [\n                       \"Ten times ten equals:\"\n                   ],\n               },\n               \"question_files\": {\n                   \"1\": [\n                       null\n                   ],\n                   \"2\": [\n                       \"https://cdn.shopify.com/s/files/1/0675/8377/0902/files/download.jpg?v=1670491061\"\n                   ],\n               },\n               \"question_options\": {\n                   \"1\": {\n                       \"1\": [\n                           \"2\"\n                       ],\n                       \"2\": [\n                           \"4\"\n                       ]\n                   },\n                   \"2\": {\n                       \"1\": [\n                           \"50\"\n                       ],\n                       \"2\": [\n                           \"0\"\n                       ],\n                       \"3\": [\n                           \"100\"\n                       ]\n                   },\n               },\n               \"question_answers\": {\n                   \"1\": [\n                       \"2\"\n                   ],\n                   \"2\": [\n                       \"3\"\n                   ],\n               }\n           },\n           \"quiz_tag\": \"revision_complete\",\n           \"require_correct_answers\": 10,\n           \"active\": true,\n     }\n ]\n}"
      tags:
        - Courses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                course_type:
                  type: string
                  description: 'Course type (`public`|`private`|`regular`|`connected`)'
                  example: regular
              required:
                - shop
                - course_type
    parameters:
      -
        in: path
        name: courseId
        description: 'ID of the course'
        example: 123456789
        required: true
        schema:
          type: integer
  /api/v1/shop-courses:
    get:
      summary: 'Shop courses'
      operationId: shopCourses
      description: 'Display all courses for a shop.'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"courses\": [\n     {\n         \"id\": 123456789,\n         \"type\": \"regular\",\n         \"title\": \"Paid course\",\n         \"handle\": \"paid-course\",\n      }\n ]\n}"
      tags:
        - Courses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
              required:
                - shop
  /api/v1/instructors/get-course-instructor:
    get:
      summary: 'Course instructors'
      operationId: courseInstructors
      description: 'Get information about course instructor.'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n     \"id\": 37,\n     \"shop\": \"example-shop.myshopify.com\"\n     \"customer_id\": 6675927990550,\n     \"email\": \"johnsmith@mail.com\",\n     \"title\": \"Specialist\"\n     \"bio\":\"John Smith, expert in yoga field\",\n     \"twitter\": \"\",\n     \"facebook\": \"\",\n     \"linkedin\": \"\",\n     \"instagram\": \"\",\n     \"youtube\": \"\",\n     \"website\": \"john-smith.com\",\n     \"created_at\": \"2023-12-01 09:30:00\",\n     \"updated_at\": \"2023-12-02 10:20:00\",\n     \"customer\": {\n         \"id\": 6675927990550,\n         \"lastName\": \"Doe\"\n         \"firstName\": \"John\"\n         \"email\": \"johndoe@test.com\"\n         \"state\": \"ENABLED\"\n         \"displayName\": \"John Doe\"\n         \"tags\": [\"vip\", \"instructor\"],\n         \"gid\": \"gid:\\/\\/shopify\\/Customer\\/6675927990550\"\n     }\n }"
      tags:
        - Courses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                product_id:
                  type: integer
                  description: 'ID of the product to get the course info'
                  example: 123456789
                type:
                  type: string
                  description: 'Course type (`public`|`private`|`regular`|`connected`)'
                  example: regular
              required:
                - shop
                - product_id
                - type
  '/api/v1/sections/{sectionId}/lessons':
    get:
      summary: 'Section lessons'
      operationId: sectionLessons
      description: 'Display a list of lessons for a section'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"lessons\": [\n     {\n         \"id\": 123456789,\n         \"type\": \"regular\",\n         \"course_id\": 123456789,\n         \"course_type\": \"private\",\n         \"title\": \"Getting stared with revision\",\n         \"order\": 1,\n         \"html\": '<div>Hello world</div>',\n         \"removed\": false,\n         \"created_at\": \"2024-01-01T06:30:10+00:00\",\n         \"updated_at\": \"2024-01-01T06:30:10+00:00\",\n     }\n ]\n}"
      tags:
        - Lessons
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
              required:
                - shop
    parameters:
      -
        in: path
        name: sectionId
        description: 'ID of the course section'
        example: 123456789
        required: true
        schema:
          type: integer
  '/api/v1/sections/{sectionId}/lessons/{lessonId}':
    get:
      summary: 'Section lesson'
      operationId: sectionLesson
      description: 'Display a lesson for a section'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"lesson\": {\n     \"id\": 123456789,\n     \"type\": \"regular\",\n     \"course_id\": 123456789,\n     \"course_type\": \"private\",\n     \"title\": \"Getting stared with revision\",\n     \"order\": 1,\n     \"html\": '<div>Hello world</div>',\n     \"removed\": false,\n     \"created_at\": \"2024-01-01T06:30:10+00:00\",\n     \"updated_at\": \"2024-01-01T06:30:10+00:00\",\n  }\n}"
      tags:
        - Lessons
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
              required:
                - shop
    parameters:
      -
        in: path
        name: sectionId
        description: 'ID of the course section'
        example: 123456789
        required: true
        schema:
          type: integer
      -
        in: path
        name: lessonId
        description: 'ID of the section lesson'
        example: 123456789
        required: true
        schema:
          type: integer
  '/api/v1/sections/{sectionId}/quiz':
    get:
      summary: 'Course section quiz'
      operationId: courseSectionQuiz
      description: 'Display a quiz for a course section'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            text/plain:
              schema:
                type: string
                example: "{\n \"quizes\" => [\n     {\n         \"id\": 123456789,\n         \"title\": \"Revision test\"\",\n         \"course_id\": 123456789,\n         \"course_type\": \"regular\",\n         \"section_id\": 123456789,\n         \"min_correct_answers_amount\": 100,\n         \"questions_data\": {\n             \"questions\": {\n                 \"1\": [\n                     \"Two plus two equals:\"\n                 ],\n                 \"2\": [\n                     \"Ten times ten equals:\"\n                 ],\n               },\n               \"question_files\": {\n                   \"1\": [\n                       null\n                   ],\n                   \"2\": [\n                       \"https://cdn.shopify.com/s/files/1/0675/8377/0902/files/download.jpg?v=1670491061\"\n                   ],\n               },\n               \"question_options\": {\n                   \"1\": {\n                       \"1\": [\n                           \"2\"\n                       ],\n                       \"2\": [\n                           \"4\"\n                       ]\n                   },\n                   \"2\": {\n                       \"1\": [\n                           \"50\"\n                       ],\n                       \"2\": [\n                           \"0\"\n                       ],\n                       \"3\": [\n                           \"100\"\n                       ]\n                   },\n               },\n               \"question_answers\": {\n                   \"1\": [\n                       \"2\"\n                   ],\n                   \"2\": [\n                       \"3\"\n                   ],\n               }\n           },\n           \"quiz_tag\": \"revision_complete\",\n           \"require_correct_answers\": 10,\n           \"active\": true,\n     }\n ]\n}"
      tags:
        - Quizes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
              required:
                - shop
    parameters:
      -
        in: path
        name: sectionId
        description: 'ID of the course section'
        example: 123456789
        required: true
        schema:
          type: integer
  '/api/v1/attendees/{studentId}':
    post:
      summary: 'Provide course access to a specific student (customer)'
      operationId: provideCourseAccessToASpecificStudentcustomer
      description: 'Allows to provide access to a course (or membership) for a customer (student)'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  provided: true
                properties:
                  provided:
                    type: boolean
                    example: true
                    description: 'boolen If the access to a course was provided'
      tags:
        - Students
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                product_id:
                  type: string
                  description: 'Shopify product ID'
                  example: '12345678'
              required:
                - shop
                - product_id
    delete:
      summary: 'Revoke course access to a specific student (customer)'
      operationId: revokeCourseAccessToASpecificStudentcustomer
      description: 'Allows to revoke access to a course (or membership) for a customer (student)'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  revoked: true
                properties:
                  revoked:
                    type: boolean
                    example: true
      tags:
        - Students
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                product_id:
                  type: string
                  description: 'Shopify product ID'
                  example: '12345678'
              required:
                - shop
                - product_id
    parameters:
      -
        in: path
        name: studentId
        description: 'ID of the student (Shopify customer)'
        example: 123456789
        required: true
        schema:
          type: integer
  '/api/v1/membership-courses/{membershipId}':
    get:
      summary: 'Display list of courses connected with a product (could be a bundle (membership) or just a product)'
      operationId: displayListOfCoursesConnectedWithAProductcouldBeABundlemembershipOrJustAProduct
      description: ''
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  product_ids:
                    - 12345678
                    - 12345679
                    - 12345679
                properties:
                  product_ids:
                    type: array
                    example:
                      - 12345678
                      - 12345679
                      - 12345679
                    description: 'Array if courses ids that are connected with a product'
                    items:
                      type: integer
      tags:
        - 'Membership / Bundles'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
              required:
                - shop
    put:
      summary: 'Add a course (by providing product_id) to a bundle (membership)'
      operationId: addACoursebyProvidingProductIdToABundlemembership
      description: ''
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  updated: true
                properties:
                  updated:
                    type: boolean
                    example: true
                    description: 'boolen If a course was added to a bundle'
      tags:
        - 'Membership / Bundles'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                product_id:
                  type: string
                  description: 'Shopify product ID'
                  example: '12345678'
              required:
                - shop
                - product_id
    delete:
      summary: 'Delete a course (by providing product_id) from a bundle (membership)'
      operationId: deleteACoursebyProvidingProductIdFromABundlemembership
      description: ''
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  deleted: 'true'
                properties:
                  deleted:
                    type: string
                    example: 'true'
                    description: 'boolen If a course was deleted from a bundle'
      tags:
        - 'Membership / Bundles'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                product_id:
                  type: string
                  description: 'Shopify product ID'
                  example: '12345678'
              required:
                - shop
                - product_id
    parameters:
      -
        in: path
        name: membershipId
        description: 'The ID of the bundle (membership)'
        example: 123456789
        required: true
        schema:
          type: integer
  /api/v1/installed:
    get:
      summary: 'Endpoints to get information about shop'
      operationId: endpointsToGetInformationAboutShop
      description: 'Check if Courses Plus app is installed on the shop'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  installed: true
                properties:
                  installed:
                    type: boolean
                    example: true
                    description: 'boolen If the app is installed on the shop'
      tags:
        - Shop
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
              required:
                - shop
  /api/v1/extensions/check-courses-data:
    get:
      summary: 'Courses extensions'
      operationId: coursesExtensions
      description: 'Check if order items contains course data'
      parameters:
        -
          in: header
          name: Access-Control-Allow-Origin
          description: ''
          example: '*'
          schema:
            type: string
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  status: 'true'
                properties:
                  status:
                    type: string
                    example: 'true'
      tags:
        - 'Courses extensions'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                shop:
                  type: string
                  description: 'Shopify shop'
                  example: example-shop.myshopify.com
                orderId:
                  type: string
                  description: 'order ID'
                  example: '5904502620480'
              required:
                - shop
                - orderId
