MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

To authenticate requests, include an Authorization header in the form "Basic {credentials}". The value of {credentials} should be your login(email) and your password, joined with a colon (:), and then base64-encoded.

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Endpoints

GET api/v1/news

requires authentication

Example request:
curl --request GET \
    --get "https://mu.edu.ua/api/v1/news?page=1&per_page=10&sort=10&filter%5Bsearch%5D=Article%2520title&filter%5Bcategories%5D=3%2C5" \
    --header "Authorization: Basic {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://mu.edu.ua/api/v1/news"
);

const params = {
    "page": "1",
    "per_page": "10",
    "sort": "10",
    "filter[search]": "Article%20title",
    "filter[categories]": "3,5",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Basic {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://mu.edu.ua/api/v1/news'
params = {
  'page': '1',
  'per_page': '10',
  'sort': '10',
  'filter[search]': 'Article%20title',
  'filter[categories]': '3,5',
}
headers = {
  'Authorization': 'Basic {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://mu.edu.ua/api/v1/news';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Basic {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '10',
            'sort' => '10',
            'filter[search]' => 'Article%20title',
            'filter[categories]' => '3,5',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "current_page": 1,
    "data": [
        {
            "id": 874,
            "title": {
                "uk": "Координаційні збори за проєктом REDU"
            },
            "excerpt": {
                "uk": "18-20 серпня 2020 року члени робочої групи з реалізації проєкту «Відродження переміщених університетів: посилення конкурентоспроможності, підтримка громад» (REDU) долучились до перших координаційних зборів консорціуму проєкту та тренінгу з управління проєктом."
            },
            "date": "2024-03-31 08:58:09",
            "created_at": "2020-08-21T07:54:40.000000Z",
            "image": "http://localhost/storage/media/8520/article_preview_874.jpeg",
            "categories": [
                {
                    "id": 3,
                    "name": {
                        "en": "international",
                        "uk": "міжнародні"
                    },
                    "slug": {
                        "en": "international",
                        "uk": "nihil-expedita-labore"
                    },
                    "pivot": {
                        "article_id": 874,
                        "article_category_id": 3
                    }
                },
                {
                    "id": 12,
                    "name": {
                        "en": "all news",
                        "uk": "всі новини"
                    },
                    "slug": {
                        "uk": "vsi-novini",
                        "en": "all-news"
                    },
                    "pivot": {
                        "article_id": 874,
                        "article_category_id": 12
                    }
                }
            ]
        }
    ],
    "first_page_url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=1",
    "from": 1,
    "last_page": 360,
    "last_page_url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=360",
    "links": [
        {
            "url": null,
            "label": "&laquo; Попередній",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=1",
            "label": "1",
            "active": true
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=2",
            "label": "2",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=3",
            "label": "3",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=4",
            "label": "4",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=5",
            "label": "5",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=6",
            "label": "6",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=7",
            "label": "7",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=8",
            "label": "8",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=9",
            "label": "9",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=10",
            "label": "10",
            "active": false
        },
        {
            "url": null,
            "label": "...",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=359",
            "label": "359",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=360",
            "label": "360",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=2",
            "label": "Наступні &raquo;",
            "active": false
        }
    ],
    "next_page_url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=2",
    "path": "http://localhost/api/v1/news",
    "per_page": 1,
    "prev_page_url": null,
    "to": 1,
    "total": 360
}
 

Request      

GET api/v1/news

Headers

Authorization        

Example: Basic {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer     

Page number. Example: 1

per_page   integer     

Number of items per page. Example: 10

sort   string     

Sort by date field ?sort=date -> ASC ?sort=-date->DESC Example: 10

filter[search]   string     

Search by title and descriptions Example: Article%20title

filter[categories]   string     

Articles where has categories Example: 3,5

GET api/v1/news/{article_id}

requires authentication

Example request:
curl --request GET \
    --get "https://mu.edu.ua/api/v1/news/1" \
    --header "Authorization: Basic {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://mu.edu.ua/api/v1/news/1"
);

const headers = {
    "Authorization": "Basic {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://mu.edu.ua/api/v1/news/1'
headers = {
  'Authorization': 'Basic {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://mu.edu.ua/api/v1/news/1';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Basic {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 874,
        "title": {
            "uk": "Координаційні збори за проєктом REDU"
        },
        "slug": {
            "en": "koordinaciyni-zbori-za-proyektom-redu",
            "uk": "koordinaciyni-zbori-za-proyektom-redu"
        },
        "excerpt": {
            "uk": "18-20 серпня 2020 року члени робочої групи з ..."
        },
        "content": {
            "uk": "<p>18-20 серпня 2020 року члени робочої групи .... </p>"
        },
        "date": "2024-03-31 08:58:09",
        "created_at": "2020-08-21T07:54:40.000000Z",
        "image": "http://localhost/storage/media/8520/article_preview_874.jpeg",
        "categories": [
            {
                "id": 3,
                "name": {
                    "en": "international",
                    "uk": "міжнародні"
                },
                "slug": {
                    "en": "international",
                    "uk": "nihil-expedita-labore"
                },
                "pivot": {
                    "article_id": 874,
                    "article_category_id": 3
                }
            },
            {
                "id": 12,
                "name": {
                    "en": "all news",
                    "uk": "всі новини"
                },
                "slug": {
                    "uk": "vsi-novini",
                    "en": "all-news"
                },
                "pivot": {
                    "article_id": 874,
                    "article_category_id": 12
                }
            }
        ],
        "url": {
            "uk": "http://localhost/news/koordinaciyni-zbori-za-proyektom-redu",
            "en": "http://localhost/en/news/koordinaciyni-zbori-za-proyektom-redu"
        },
        "gallery": [
            {
                "full": "http://localhost/storage/media/6554/conversions/redu-1-full.jpg",
                "full@2x": "http://localhost/storage/media/6554/conversions/[email protected]",
                "thumbnail": "http://localhost/storage/media/6554/conversions/redu-1-thumbnail.jpg",
                "thumbnail@2x": "http://localhost/storage/media/6554/conversions/[email protected]"
            },
            {
                "full": "http://localhost/storage/media/6556/conversions/redu-2-full.jpg",
                "full@2x": "http://localhost/storage/media/6556/conversions/[email protected]",
                "thumbnail": "http://localhost/storage/media/6556/conversions/redu-2-thumbnail.jpg",
                "thumbnail@2x": "http://localhost/storage/media/6556/conversions/[email protected]"
            }
        ]
    }
}
 

Request      

GET api/v1/news/{article_id}

Headers

Authorization        

Example: Basic {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

article_id   integer     

Article id. Example: 1

GET api/v1/faq

requires authentication

Example request:
curl --request GET \
    --get "https://mu.edu.ua/api/v1/faq?page=1&per_page=10&sort=10&filter%5Btype%5D=student" \
    --header "Authorization: Basic {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://mu.edu.ua/api/v1/faq"
);

const params = {
    "page": "1",
    "per_page": "10",
    "sort": "10",
    "filter[type]": "student",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Basic {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://mu.edu.ua/api/v1/faq'
params = {
  'page': '1',
  'per_page': '10',
  'sort': '10',
  'filter[type]': 'student',
}
headers = {
  'Authorization': 'Basic {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://mu.edu.ua/api/v1/faq';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Basic {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'page' => '1',
            'per_page' => '10',
            'sort' => '10',
            'filter[type]' => 'student',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "current_page": 1,
    "data": [
        {
            "id": 874,
            "title": {
                "uk": "Координаційні збори за проєктом REDU"
            },
            "excerpt": {
                "uk": "18-20 серпня 2020 року члени робочої групи з реалізації проєкту «Відродження переміщених університетів: посилення конкурентоспроможності, підтримка громад» (REDU) долучились до перших координаційних зборів консорціуму проєкту та тренінгу з управління проєктом."
            },
            "date": "2024-03-31 08:58:09",
            "created_at": "2020-08-21T07:54:40.000000Z",
            "image": "http://localhost/storage/media/8520/article_preview_874.jpeg",
            "categories": [
                {
                    "id": 3,
                    "name": {
                        "en": "international",
                        "uk": "міжнародні"
                    },
                    "slug": {
                        "en": "international",
                        "uk": "nihil-expedita-labore"
                    },
                    "pivot": {
                        "article_id": 874,
                        "article_category_id": 3
                    }
                },
                {
                    "id": 12,
                    "name": {
                        "en": "all news",
                        "uk": "всі новини"
                    },
                    "slug": {
                        "uk": "vsi-novini",
                        "en": "all-news"
                    },
                    "pivot": {
                        "article_id": 874,
                        "article_category_id": 12
                    }
                }
            ]
        }
    ],
    "first_page_url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=1",
    "from": 1,
    "last_page": 360,
    "last_page_url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=360",
    "links": [
        {
            "url": null,
            "label": "&laquo; Попередній",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=1",
            "label": "1",
            "active": true
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=2",
            "label": "2",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=3",
            "label": "3",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=4",
            "label": "4",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=5",
            "label": "5",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=6",
            "label": "6",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=7",
            "label": "7",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=8",
            "label": "8",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=9",
            "label": "9",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=10",
            "label": "10",
            "active": false
        },
        {
            "url": null,
            "label": "...",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=359",
            "label": "359",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=360",
            "label": "360",
            "active": false
        },
        {
            "url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=2",
            "label": "Наступні &raquo;",
            "active": false
        }
    ],
    "next_page_url": "http://localhost/api/v1/news?filters%5Bcategories%5D=1&filters%5Bsearch%5D=%D0%94%D0%B5%D0%B1%D1%8E%D1%82%D0%BD%D0%B0&per_page=1&page=2",
    "path": "http://localhost/api/v1/news",
    "per_page": 1,
    "prev_page_url": null,
    "to": 1,
    "total": 360
}
 

Request      

GET api/v1/faq

Headers

Authorization        

Example: Basic {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer     

Page number. Example: 1

per_page   integer     

Number of items per page. Example: 10

sort   string     

Sort by created_at field ?sort=created_at -> ASC ?sort=-created_at->DESC Example: 10

filter[type]   string     

Filter FAQ by type(student,teacher) Example: student

GET api/v1/students/{email}/balance

requires authentication

Example request:
curl --request GET \
    --get "https://mu.edu.ua/api/v1/students/[email protected]/balance" \
    --header "Authorization: Basic {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://mu.edu.ua/api/v1/students/[email protected]/balance"
);

const headers = {
    "Authorization": "Basic {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://mu.edu.ua/api/v1/students/[email protected]/balance'
headers = {
  'Authorization': 'Basic {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://mu.edu.ua/api/v1/students/[email protected]/balance';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Basic {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": 15,
    "student_id": 20837,
    "docnum": "11889673",
    "accrued": 21500,
    "penalted": 0,
    "payment": 21501,
    "balance_status": -100,
    "created_at": "2025-01-10T12:02:36.000000Z",
    "updated_at": "2025-03-12T22:00:00.000000Z",
    "payments": [
        {
            "id": 14392,
            "student_balance_id": 15,
            "payment_date": "2023-09-07T21:00:00.000000Z",
            "amount": 110000,
            "created_at": "2025-03-13T14:37:45.000000Z",
            "updated_at": "2025-03-13T14:37:45.000000Z",
            "date": "2023-09-08"
        },
        {
            "id": 14393,
            "student_balance_id": 15,
            "payment_date": "2023-10-02T21:00:00.000000Z",
            "amount": 110000,
            "created_at": "2025-03-13T14:37:45.000000Z",
            "updated_at": "2025-03-13T14:37:45.000000Z",
            "date": "2023-10-03"
        }
    ],
    "penalteds": [
        {
            "id": 14392,
            "student_balance_id": 15,
            "penalted_date": "2023-09-07T21:00:00.000000Z",
            "amount": 110000,
            "created_at": "2025-03-13T14:37:45.000000Z",
            "updated_at": "2025-03-13T14:37:45.000000Z",
            "date": "2023-09-08"
        },
        {
            "id": 14393,
            "student_balance_id": 15,
            "penalted_date": "2023-10-02T21:00:00.000000Z",
            "amount": 110000,
            "created_at": "2025-03-13T14:37:45.000000Z",
            "updated_at": "2025-03-13T14:37:45.000000Z",
            "date": "2023-10-03"
        }
    ],
    "accureds": [
        {
            "id": 56793,
            "student_balance_id": 15,
            "accrued_date": "2023-09-10T21:00:00.000000Z",
            "amount": 107500,
            "created_at": "2025-03-13T14:37:45.000000Z",
            "updated_at": "2025-03-13T14:37:45.000000Z",
            "date": "2023-09-11"
        },
        {
            "id": 56794,
            "student_balance_id": 15,
            "accrued_date": "2023-09-10T21:00:00.000000Z",
            "amount": 107500,
            "created_at": "2025-03-13T14:37:45.000000Z",
            "updated_at": "2025-03-13T14:37:45.000000Z",
            "date": "2023-09-11"
        }
    ]
}
 

Request      

GET api/v1/students/{email}/balance

Headers

Authorization        

Example: Basic {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

email   string     

Student email. (@mu.edu.ua domain) Example: [email protected]

GET api/v1/students/{email}/contacts

requires authentication

Example request:
curl --request GET \
    --get "https://mu.edu.ua/api/v1/students/[email protected]/contacts" \
    --header "Authorization: Basic {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://mu.edu.ua/api/v1/students/[email protected]/contacts"
);

const headers = {
    "Authorization": "Basic {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
import requests
import json

url = 'https://mu.edu.ua/api/v1/students/[email protected]/contacts'
headers = {
  'Authorization': 'Basic {YOUR_AUTH_KEY}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
$client = new \GuzzleHttp\Client();
$url = 'https://mu.edu.ua/api/v1/students/[email protected]/contacts';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Basic {YOUR_AUTH_KEY}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "programGuarantor": {
            "name": "Владислав Шахов",
            "phone": null,
            "email": "[email protected]"
        },
        "faculty": {
            "phone": null,
            "email": "[email protected]",
            "address": "Київ, вул. Преображенська, 6"
        },
        "department": {
            "phone": null,
            "email": "[email protected]",
            "address": "вул. Преображенська, 6, Київ, 03037"
        },
        "additionalContacts": [
            {
                "name": "Студентська рада",
                "phone": "+380951112233",
                "email": "[email protected]",
                "address": "some addres"
            },
            {
                "name": "Бухгалтерія",
                "phone": "+380951112234",
                "email": "[email protected]",
                "address": null
            }
        ]
    }
}
 

Request      

GET api/v1/students/{email}/contacts

Headers

Authorization        

Example: Basic {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

email   string     

Student email. (@mu.edu.ua domain) Example: [email protected]