Skip to content

The project implements the REST proxy to the Register of subjects of educational activity of EDEBO (https://registry.edbo.gov.ua)

Notifications You must be signed in to change notification settings

myroslav-b/olimp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Про проєкт

Проєкт реалізує REST проксі до Реєстру суб'єктів освітньої діяльності ЄДЕБО (registry.edbo.gov.ua)

Обґрунтування

Реєстр ЄДЕБО пропонує REST API для доступу до даних. Однак, форма запиту і формат отримуваних даних відрізняються для закладів загальної середньої освіти та інших категорій навчальних закладів (вищої, фахової передвищої та професійної освіти).

Проєкт:

  • уніфікує формат запиту і результатів, що повертаються;
  • кешує дані отримані з первинного реєстру;
  • архітектурно дозволяє легко підключати інші (додаткові) реєстри та змінювати формат даних, що повертаються.

Методи API

Довідники

GET /api/v1/catalog/{name}

name - довідник

  • fi - перелік полів, що повертаються запитом до реєстру;
  • it - коди категорій навчальних закладів (установ) для яких можна отримати дані;
  • rc - коди регіонів (областей, міст обласного підпорядкування);
  • tr - дозволені типи запитів.
Отримання даних з реєстру

GET /api/v1/register/{inst}/{reg}

  • inst - код категорії навчальних закладів (установ);
  • reg - код регіону.

Для уточнення запиту використовуються два види параметрів:

  • r.{fi} - значенням параметра є один із дозволених типів запитів (tr);
  • v.{fi} - значення параметра конкретизує умову запиту.

Як правило, параметри r.{fi} та v.{fi} використовуються парами, однак запити типу "empty/notempty" параметра v.{fi} не потребують.

Наприклад:

/api/v1/register/3/26

Повертає перелік (масив JSON об'єктів) закладів загальної середньої освіти Івано-Франківської області.

/api/v1/register/3/26?r.website=notempty

Повертає перелік (масив JSON об'єктів) закладів загальної середньої освіти Івано-Франківської області для яких вказані адреси веб-сайтів.

/api/v1/register/3/26?r.website=notempty&r.name=contains&v.name=ліцей

Повертає перелік (масив JSON об'єктів) закладів загальної середньої освіти Івано-Франківської області назви яких містять рядок "ліцей" і для яких вказані адреси веб-сайтів.

Якщо у "парних" параметрах відсутній один із елементів, то такі параметри будуть проігноровані. Наприклад, запити

/api/v1/register/3/26?r.website=notempty&r.name=contains

або

/api/v1/register/3/26?r.website=notempty&v.name=ліцей

повернуть перелік закладів загальної середньої освіти Івано-Франківської області для яких вказані адреси веб-сайтів.

Параметри запуску

  • short:"a" long:"address" env:"OLIMP_ADDRESS" default:":8080" description:"server address";
  • short:"s" long:"source" env:"OLIMP_SOURCE_REGISTRY" choice:"edbo" default:"edbo" description:"source of institution registry";
  • short:"t" long:"templife" env:"OLIMP_TEMP_LIFE" default:"86400" description:"lifetime of batches".

Docker

docker-compose.yml

version: '3.1'

services:
  olimp:
    image: docker.pkg.github.com/myroslav-b/olimp/olimp:latest
    restart: always
    networks:
      - "traefik_default"
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik_default"
      - "traefik.http.routers.olimp-router.rule=Host(`olimp.oippo.if.ua`)"
      - "traefik.http.routers.olimp-router.tls=true"
      - "traefik.http.routers.olimp-router.tls.certresolver=letsEncrypt"
      - "traefik.http.routers.olimp-router.entrypoints=websecure"
      - "traefik.http.routers.olimp-router.service=olimp-web-srv"
      - "traefik.http.services.olimp-web-srv.loadbalancer.server.port=8080"
networks:
  traefik_default:
    external: true

traefik.yml

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entrypoint:
          to: websecure
          scheme: https

  websecure:
    address: ":443"

providers:
  docker:
    network: "traefik_default"
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false

certificatesResolvers:
  letsEncrypt:
    acme:
      email: "mymail@mail.net"
      storage: "acme.json"
      httpChallenge:
        entryPoint: web

api:
  dashboard: true

About

The project implements the REST proxy to the Register of subjects of educational activity of EDEBO (https://registry.edbo.gov.ua)

Resources

Stars

Watchers

Forks