Al-Farabi Kazakh National University Courses API

The courses API from Al-Farabi Kazakh National University — 9 operation(s) for courses.

Operations 9

GET /courses/v1/block_metadata/{usage_key_string} **Use Case** #
GET /courses/v1/blocks/ **Use Case** #
GET /courses/v1/blocks/{usage_key_string} **Use Case** #
GET /courses/v1/course_ids/ **Use Cases** #
GET /courses/v1/courses/ **Use Cases** #
GET /courses/v1/courses/{course_key_string} **Use Cases** #
GET /courses/v2/block_metadata/{usage_key_string} **Use Case** #
GET /courses/v2/blocks/ **Use Case** #
GET /courses/v2/blocks/{usage_key_string} **Use Case** #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/al-farabi-kazakh-national-university-courses-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

al-farabi-kazakh-national-university-courses-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Open edX Courses API
  description: APIs for access to Open edX information
  contact:
    email: dl@kaznu.kz
  version: v1
servers:
- url: https://open.kaznu.kz/api
security:
- Basic: []
tags:
- name: Courses
paths:
  /courses/v1/block_metadata/{usage_key_string}:
    get:
      operationId: courses_v1_block_metadata_read
      summary: '**Use Case**'
      description: 'Returns the block metadata. Data like index_dictionary related to a

        block should be fetched using this API, because they are too large for

        the cache used by the course blocks/transformers API.


        **Example requests**:


        GET /api/courses/v1/block_metadata//?

        &include=index_dictionary


        **Parameters**:


        * "include": a comma-separated list of keys to include.

        Valid keys are "index_dictionary".


        **Response Values**


        A dictionary containing:

        * id (string): Block usage_key_str.

        * type (string) Block type.

        * index_dictionary: (dict) The index_dictionary JSON data

        (usually this is the text content of the block, for search

        indexing or other purposes) for this block. Returned only if

        the "index_dictionary" is included in the "include"

        parameter.'
      tags:
      - Courses
      parameters:
      - name: usage_key_string
        in: path
        required: true
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        description: Number of results to return per page.
        schema:
          type: integer
      responses:
        '200':
          description: ''
  /courses/v1/blocks/:
    get:
      operationId: courses_v1_blocks_list
      summary: '**Use Case**'
      description: 'Returns the blocks in the course according to the requesting user''s

        access level.


        **Example requests**:


        GET /api/courses/v1/blocks/?course_id=

        GET /api/courses/v1/blocks/?course_id=

        &username=anjali

        &depth=all

        &requested_fields=graded,format,student_view_multi_device,lti_url

        &block_counts=video

        &student_view_data=video

        &block_types_filter=problem,html


        **Parameters**:


        This view redirects to /api/courses/v1/blocks// for the

        root usage key of the course specified by course_id. The view accepts

        all parameters accepted by :class:`BlocksView`, plus the following

        required parameter


        * course_id: (string, required) The ID of the course whose block data

        we want to return


        **Response Values**


        Responses are identical to those returned by :class:`BlocksView` when

        passed the root_usage_key of the requested course.


        If the course_id is not supplied, a 400: Bad Request is returned, with

        a message indicating that course_id is required.


        If an invalid course_id is supplied, a 400: Bad Request is returned,

        with a message indicating that the course_id is not valid.'
      tags:
      - Courses
      parameters:
      - name: page
        in: query
        required: false
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        description: Number of results to return per page.
        schema:
          type: integer
      responses:
        '200':
          description: ''
  /courses/v1/blocks/{usage_key_string}:
    get:
      operationId: courses_v1_blocks_read
      summary: '**Use Case**'
      description: 'Returns the blocks within the requested block tree according to the

        requesting user''s access level.'
      tags:
      - Courses
      parameters:
      - name: usage_key_string
        in: path
        required: true
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        description: Number of results to return per page.
        schema:
          type: integer
      responses:
        '200':
          description: ''
  /courses/v1/course_ids/:
    get:
      operationId: courses_v1_course_ids_list
      summary: '**Use Cases**'
      description: 'Request a list of course IDs for all courses the specified user can

        access based on the provided parameters.


        **Example Requests**


        GET /api/courses/v1/courses_ids/


        **Response Values**


        Body comprises a list of course ids and pagination details.


        **Parameters**


        username (optional):

        The username of the specified user whose visible courses we

        want to see.


        role (required):

        Course ids are filtered such that only those for which the

        user has the specified role are returned. Role can be "staff"

        or "instructor".

        Case-insensitive.


        **Returns**


        * 200 on success, with a list of course ids and pagination details

        * 400 if an invalid parameter was sent or the username was not provided

        for an authenticated request.

        * 403 if a user who does not have permission to masquerade as

        another user who specifies a username other than their own.

        * 404 if the specified user does not exist, or the requesting user does

        not have permission to view their courses.


        Example response:


        {

        "results":

        [

        "course-v1:edX+DemoX+Demo_Course"

        ],

        "pagination": {

        "previous": null,

        "num_pages": 1,

        "next": null,

        "count": 1

        }

        }'
      tags:
      - Courses
      parameters:
      - name: page
        in: query
        required: false
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        description: Number of results to return per page.
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type:
                    - string
                    - 'null'
                    format: uri
                  previous:
                    type:
                    - string
                    - 'null'
                    format: uri
                  results:
                    type: array
                    items:
                      type: string
  /courses/v1/courses/:
    get:
      operationId: courses_v1_courses_list
      summary: '**Use Cases**'
      description: 'Request information on all courses visible to the specified user.


        **Example Requests**


        GET /api/courses/v1/courses/


        **Response Values**


        Body comprises a list of objects as returned by `CourseDetailView`.


        **Parameters**


        search_term (optional):

        Search term to filter courses (used by ElasticSearch).


        username (optional):

        The username of the specified user whose visible courses we

        want to see. The username is not required only if the API is

        requested by an Anonymous user.


        org (optional):

        If specified, visible `CourseOverview` objects are filtered

        such that only those belonging to the organization with the

        provided org code (e.g., "HarvardX") are returned.

        Case-insensitive.


        permissions (optional):

        If specified, it filters visible `CourseOverview` objects by

        checking if each permission specified is granted for the username.

        Notice that Staff users are always granted permission to list any

        course.


        active_only (optional):

        If this boolean is specified, only the courses that have not ended or do not have any end

        date are returned. This is different from search_term because this filtering is done on

        CourseOverview and not ElasticSearch.


        course_keys (optional):

        If specified, it fetches the `CourseOverview` objects for the

        the specified course keys


        mobile_search (bool):

        Optional parameter that limits the number of returned courses

        to MOBILE_SEARCH_COURSE_LIMIT.


        **Returns**


        * 200 on success, with a list of course discovery objects as returned

        by `CourseDetailView`.

        * 400 if an invalid parameter was sent or the username was not provided

        for an authenticated request.

        * 403 if a user who does not have permission to masquerade as

        another user specifies a username other than their own.

        * 404 if the specified user does not exist, or the requesting user does

        not have permission to view their courses.


        Example response:


        [

        {

        "blocks_url": "/api/courses/v1/blocks/?course_id=edX%2Fexample%2F2012_Fall",

        "media": {

        "course_image": {

        "uri": "/c4x/edX/example/asset/just_a_test.jpg",

        "name": "Course Image"

        }

        },

        "description": "An example course.",

        "end": "2015-09-19T18:00:00Z",

        "enrollment_end": "2015-07-15T00:00:00Z",

        "enrollment_start": "2015-06-15T00:00:00Z",

        "course_id": "edX/example/2012_Fall",

        "name": "Example Course",

        "number": "example",

        "org": "edX",

        "start": "2015-07-17T12:00:00Z",

        "start_display": "July 17, 2015",

        "start_type": "timestamp"

        }

        ]'
      tags:
      - Courses
      parameters:
      - name: page
        in: query
        required: false
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        description: Number of results to return per page.
        schema:
          type: integer
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                required:
                - count
                - results
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type:
                    - string
                    - 'null'
                    format: uri
                  previous:
                    type:
                    - string
                    - 'null'
                    format: uri
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/Course'
  /courses/v1/courses/{course_key_string}:
    get:
      operationId: courses_v1_courses_read
      summary: '**Use Cases**'
      description: 'Request details for a course


        **Example Requests**


        GET /api/courses/v1/courses/{course_key}/


        **Response Values**


        Body consists of the following fields:


        * effort: A textual description of the weekly hours of effort expected

        in the course.

        * end: Date the course ends, in ISO 8601 notation

        * enrollment_end: Date enrollment ends, in ISO 8601 notation

        * enrollment_start: Date enrollment begins, in ISO 8601 notation

        * id: A unique identifier of the course; a serialized representation

        of the opaque key identifying the course.

        * media: An object that contains named media items. Included here:

        * course_image: An image to show for the course. Represented

        as an object with the following fields:

        * uri: The location of the image

        * name: Name of the course

        * number: Catalog number of the course

        * org: Name of the organization that owns the course

        * overview: A possibly verbose HTML textual description of the course.

        Note: this field is only included in the Course Detail view, not

        the Course List view.

        * short_description: A textual description of the course

        * start: Date the course begins, in ISO 8601 notation

        * start_display: Readably formatted start of the course

        * start_type: Hint describing how `start_display` is set. One of:

        * `"string"`: manually set by the course author

        * `"timestamp"`: generated from the `start` timestamp

        * `"empty"`: no start date is specified

        * pacing: Course pacing. Possible values: instructor, self

        * certificate_available_date (optional): Date the certificate will be available,

        in ISO 8601 notation if the `certificates.auto_certificate_generation`

        waffle switch is enabled


        Deprecated fields:


        * blocks_url: Used to fetch the course blocks

        * course_id: Course key (use ''id'' instead)


        **Parameters:**


        username (optional):

        The username of the specified user for whom the course data

        is being accessed. The username is not only required if the API is

        requested by an Anonymous user.


        **Returns**


        * 200 on success with above fields.

        * 400 if an invalid parameter was sent or the username was not provided

        for an authenticated request.

        * 403 if a user who does not have permission to masquerade as

        another user specifies a username other than their own.

        * 404 if the course is not available or cannot be seen.


        Example response:


        {

        "blocks_url": "/api/courses/v1/blocks/?course_id=edX%2Fexample%2F2012_Fall",

        "media": {

        "course_image": {

        "uri": "/c4x/edX/example/asset/just_a_test.jpg",

        "name": "Course Image"

        }

        },

        "description": "An example course.",

        "end": "2015-09-19T18:00:00Z",

        "enrollment_end": "2015-07-15T00:00:00Z",

        "enrollment_start": "2015-06-15T00:00:00Z",

        "course_id": "edX/example/2012_Fall",

        "name": "Example Course",

        "number": "example",

        "org": "edX",

        "overview: "

        A verbose description of the course.

        "

        "start": "2015-07-17T12:00:00Z",

        "start_display": "July 17, 2015",

        "start_type": "timestamp",

        "pacing": "instructor",

        "certificate_available_date": "2015-08-14T00:00:00Z"

        }'
      tags:
      - Courses
      parameters:
      - name: course_key_string
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CourseDetail'
  /courses/v2/block_metadata/{usage_key_string}:
    get:
      operationId: courses_v2_block_metadata_read
      summary: '**Use Case**'
      description: 'Returns the block metadata. Data like index_dictionary related to a

        block should be fetched using this API, because they are too large for

        the cache used by the course blocks/transformers API.


        **Example requests**:


        GET /api/courses/v1/block_metadata//?

        &include=index_dictionary


        **Parameters**:


        * "include": a comma-separated list of keys to include.

        Valid keys are "index_dictionary".


        **Response Values**


        A dictionary containing:

        * id (string): Block usage_key_str.

        * type (string) Block type.

        * index_dictionary: (dict) The index_dictionary JSON data

        (usually this is the text content of the block, for search

        indexing or other purposes) for this block. Returned only if

        the "index_dictionary" is included in the "include"

        parameter.'
      tags:
      - Courses
      parameters:
      - name: usage_key_string
        in: path
        required: true
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        description: Number of results to return per page.
        schema:
          type: integer
      responses:
        '200':
          description: ''
  /courses/v2/blocks/:
    get:
      operationId: courses_v2_blocks_list
      summary: '**Use Case**'
      description: 'Returns the blocks in the course according to the requesting user''s

        access level.


        **Example requests**:


        GET /api/courses/v1/blocks/?course_id=

        GET /api/courses/v1/blocks/?course_id=

        &username=anjali

        &depth=all

        &requested_fields=graded,format,student_view_multi_device,lti_url

        &block_counts=video

        &student_view_data=video

        &block_types_filter=problem,html


        **Parameters**:


        This view redirects to /api/courses/v1/blocks// for the

        root usage key of the course specified by course_id. The view accepts

        all parameters accepted by :class:`BlocksView`, plus the following

        required parameter


        * course_id: (string, required) The ID of the course whose block data

        we want to return


        **Response Values**


        Responses are identical to those returned by :class:`BlocksView` when

        passed the root_usage_key of the requested course.


        If the course_id is not supplied, a 400: Bad Request is returned, with

        a message indicating that course_id is required.


        If an invalid course_id is supplied, a 400: Bad Request is returned,

        with a message indicating that the course_id is not valid.'
      tags:
      - Courses
      parameters:
      - name: page
        in: query
        required: false
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        description: Number of results to return per page.
        schema:
          type: integer
      responses:
        '200':
          description: ''
  /courses/v2/blocks/{usage_key_string}:
    get:
      operationId: courses_v2_blocks_read
      summary: '**Use Case**'
      description: 'Returns the blocks within the requested block tree according to the

        requesting user''s access level.'
      tags:
      - Courses
      parameters:
      - name: usage_key_string
        in: path
        required: true
        schema:
          type: string
      - name: page
        in: query
        required: false
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        in: query
        required: false
        description: Number of results to return per page.
        schema:
          type: integer
      responses:
        '200':
          description: ''
components:
  schemas:
    CourseDetail:
      required:
      - effort
      - end
      - enrollment_start
      - enrollment_end
      - id
      - media
      - name
      - number
      - org
      - short_description
      - start
      - start_display
      - start_type
      - pacing
      - mobile_available
      - invitation_only
      type: object
      properties:
        blocks_url:
          title: Blocks url
          type: string
          readOnly: true
        effort:
          title: Effort
          type: string
          minLength: 1
        end:
          title: End
          type: string
          format: date-time
        enrollment_start:
          title: Enrollment start
          type: string
          format: date-time
        enrollment_end:
          title: Enrollment end
          type: string
          format: date-time
        id:
          title: Id
          type: string
          minLength: 1
        media:
          $ref: '#/components/schemas/_CourseApiMediaCollection'
        name:
          title: Name
          type: string
          minLength: 1
        number:
          title: Number
          type: string
          minLength: 1
        org:
          title: Org
          type: string
          minLength: 1
        short_description:
          title: Short description
          type: string
          minLength: 1
        start:
          title: Start
          type: string
          format: date-time
        start_display:
          title: Start display
          type: string
          minLength: 1
        start_type:
          title: Start type
          type: string
          minLength: 1
        pacing:
          title: Pacing
          type: string
          minLength: 1
        mobile_available:
          title: Mobile available
          type: boolean
        hidden:
          title: Hidden
          type: string
          readOnly: true
        invitation_only:
          title: Invitation only
          type: boolean
        course_id:
          title: Course id
          type: string
          readOnly: true
          minLength: 1
        overview:
          title: Overview
          type: string
          readOnly: true
    Image:
      required:
      - raw
      - small
      - large
      type: object
      properties:
        raw:
          title: Raw
          type: string
          format: uri
          minLength: 1
        small:
          title: Small
          type: string
          format: uri
          minLength: 1
        large:
          title: Large
          type: string
          format: uri
          minLength: 1
    Course:
      required:
      - effort
      - end
      - enrollment_start
      - enrollment_end
      - id
      - media
      - name
      - number
      - org
      - short_description
      - start
      - start_display
      - start_type
      - pacing
      - mobile_available
      - invitation_only
      type: object
      properties:
        blocks_url:
          title: Blocks url
          type: string
          readOnly: true
        effort:
          title: Effort
          type: string
          minLength: 1
        end:
          title: End
          type: string
          format: date-time
        enrollment_start:
          title: Enrollment start
          type: string
          format: date-time
        enrollment_end:
          title: Enrollment end
          type: string
          format: date-time
        id:
          title: Id
          type: string
          minLength: 1
        media:
          $ref: '#/components/schemas/_CourseApiMediaCollection'
        name:
          title: Name
          type: string
          minLength: 1
        number:
          title: Number
          type: string
          minLength: 1
        org:
          title: Org
          type: string
          minLength: 1
        short_description:
          title: Short description
          type: string
          minLength: 1
        start:
          title: Start
          type: string
          format: date-time
        start_display:
          title: Start display
          type: string
          minLength: 1
        start_type:
          title: Start type
          type: string
          minLength: 1
        pacing:
          title: Pacing
          type: string
          minLength: 1
        mobile_available:
          title: Mobile available
          type: boolean
        hidden:
          title: Hidden
          type: string
          readOnly: true
        invitation_only:
          title: Invitation only
          type: boolean
        course_id:
          title: Course id
          type: string
          readOnly: true
          minLength: 1
    _AbsolutMedia:
      type: object
      properties:
        uri:
          title: Uri
          type: string
          readOnly: true
        uri_absolute:
          title: Uri absolute
          type: string
          readOnly: true
    _CourseApiMediaCollection:
      required:
      - banner_image
      - course_image
      - course_video
      - image
      type: object
      properties:
        banner_image:
          $ref: '#/components/schemas/_AbsolutMedia'
        course_image:
          $ref: '#/components/schemas/_Media'
        course_video:
          $ref: '#/components/schemas/_Media'
        image:
          $ref: '#/components/schemas/Image'
    _Media:
      type: object
      properties:
        uri:
          title: Uri
          type: string
          readOnly: true
  securitySchemes:
    Basic:
      type: http
      scheme: basic