🔧 Science Portal API

Професійний API для інтеграції з Science Portal. Доступ до 1,000+ симуляцій, калькуляторів та освітнього контенту для ваших додатків.

🚀 RESTful API
📊 JSON Responses
🔐 Secure Authentication

🚀 Швидкий старт

1. Отримайте API ключ

Зареєструйтеся як розробник та отримайте безкоштовний API ключ:

Ваш API ключ:
sk_test_4eC39HqLyjWDarjtT1zdp7dc

2. Зробіть перший запит

curl -H "Authorization: Bearer YOUR_API_KEY" \
     https://api.scienceportal.ua/v1/simulations

📋 API Endpoints

🧪 Симуляції

GET /api/v1/simulations

Отримати список всіх симуляцій

{
  "simulations": [
    {
      "id": "physics_atom_simulation",
      "title": "Структура атома",
      "category": "physics",
      "difficulty": "intermediate",
      "description": "Інтерактивна симуляція атомної структури",
      "url": "/simulations/physics/atom_simulation.html",
      "languages": ["uk", "en", "es", "pl", "de", "fr"],
      "rating": 4.8,
      "views": 1250
    }
  ],
  "total": 1066,
  "page": 1,
  "per_page": 50
}
GET /api/v1/simulations/{id}

Отримати детальну інформацію про симуляцію

GET /api/v1/simulations/category/{category}

Симуляції за категорією

🧮 Калькулятори

GET /api/v1/calculators

Список всіх калькуляторів

POST /api/v1/calculators/{id}/calculate

Виконати розрахунок

POST /api/v1/calculators/quantum-wave-function/calculate
Content-Type: application/json

{
  "parameters": {
    "energy": 13.6,
    "mass": 9.109e-31,
    "length": 1e-10
  }
}
Відповідь:
{
  "result": {
    "waveFunction": "ψ(x) = A*sin(πx/L)",
    "probability": 0.85,
    "energyLevels": [13.6, 54.4, 122.4]
  },
  "calculationTime": 0.045,
  "status": "success"
}

📂 Категорії

GET /api/v1/categories

Список всіх категорій з статистикою

{
  "categories": [
    {
      "id": "physics",
      "name": "Фізика",
      "icon": "⚛️",
      "simulationCount": 365,
      "calculatorCount": 15,
      "subcategories": ["quantum", "mechanics", "optics"]
    }
  ]
}

🔍 Пошук

GET /api/v1/search?q={query}&category={category}&lang={lang}

Пошук симуляцій та калькуляторів

GET /api/v1/search?q=quantum&category=physics&lang=uk
Відповідь:
{
  "results": [
    {
      "type": "simulation",
      "id": "quantum_mechanics",
      "title": "Квантова механіка",
      "relevance": 0.95
    }
  ],
  "total": 15,
  "query": "quantum"
}

📊 Аналітика

GET /api/v1/analytics/popular

Популярні симуляції та статистика

GET /api/v1/analytics/stats

Загальна статистика платформи

POST /api/v1/analytics/track

Відстеження користувацьких подій

🔐 Аутентифікація

Всі API запити потребують аутентифікації через Bearer токен в заголовку Authorization.

Authorization: Bearer YOUR_API_KEY

Отримання токену

POST /api/v1/auth/token
{
  "email": "developer@example.com",
  "password": "your_password"
}
Відповідь:
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600
}

⚡ Ліміти та квоти

1,000
Запитів на годину
Безкоштовний план
10,000
Запитів на годину
Pro план
Необмежено
Enterprise план

📊 Заголовки відповіді:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200

❌ Обробка помилок

API використовує стандартні HTTP коди статусу для індикації успіху або невдачі запитів.

✅ Успішні коди:

  • 200 - OK (успішний запит)
  • 201 - Created (ресурс створено)
  • 204 - No Content (успішне видалення)

❌ Коди помилок:

  • 400 - Bad Request (неправильний запит)
  • 401 - Unauthorized (необхідна аутентифікація)
  • 403 - Forbidden (недостатньо прав)
  • 404 - Not Found (ресурс не знайдено)
  • 429 - Too Many Requests (перевищено ліміт)
  • 500 - Internal Server Error (серверна помилка)
Приклад помилки:
{
  "error": {
    "code": "SIMULATION_NOT_FOUND",
    "message": "Симуляція з ID 'invalid_id' не знайдена",
    "details": {
      "timestamp": "2025-09-21T10:30:00Z",
      "request_id": "req_1234567890"
    }
  }
}

💻 Приклади коду

JavaScript

// Отримання списку симуляцій
const response = await fetch('https://api.scienceportal.ua/v1/simulations', {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  }
});

const data = await response.json();
console.log(data.simulations);

Python

import requests

headers = {
  'Authorization': 'Bearer YOUR_API_KEY',
  'Content-Type': 'application/json'
}

response = requests.get(
  'https://api.scienceportal.ua/v1/simulations',
  headers=headers
)

data = response.json()
print(data['simulations'])

🧪 Інтерактивний тестер API

Налаштування запиту:

Відповідь:

Натисніть "Виконати запит" для тестування API

📚 SDK та бібліотеки

📜

JavaScript SDK

Офіційний SDK для веб-додатків

🐍

Python SDK

Для наукових обчислень

📱

Mobile SDK

Для мобільних додатків