📘 Standardy API

Kompletna dokumentacja REST API dla aplikacji mobilnej | v2.0

Ostatnia aktualizacja: 2 listopada 2025

🏠 Przegląd API

47
Endpointów API
9
Modułów
13
Metod płatności
1,893
Artykułów

Informacje ogólne

Base URL: https://api-app.standardy.pl/api

Format: JSON

Enkodowanie: UTF-8

Wersja API: v2.0 (2025-11-02)

ℹ️ Ważne: API używa niestandardowego nagłówka X-API-Token zamiast standardowego Authorization.

Autentykacja

Większość endpointów wymaga autoryzacji przez token API.

curl -H "X-API-Token: YOUR_TOKEN" https://api-app.standardy.pl/api/me

Format odpowiedzi

Sukces:

{
  "status": "success",
  "data": { ... },
  "message": "Optional message"
}

Błąd:

{
  "status": "error",
  "message": "Error description",
  "errors": { ... }
}

🔐 Autentykacja

POST /register Publiczny

Opis: Rejestracja nowego użytkownika

Body:

{
  "name": "Jan",
  "nazwisko": "Kowalski",
  "email": "jan@example.com",
  "password": "haslo123",
  "telefon": "+48123456789",
  "nr_pwz": "1234567",
  "specialization": "Kardiologia",
  "title": "dr"
}

Odpowiedź:

{
  "status": "success",
  "message": "Użytkownik został zarejestrowany",
  "data": {
    "user": { ... },
    "token": "xxx..."
  }
}
POST /login Publiczny

Opis: Logowanie użytkownika

Body:

{
  "email": "jan@example.com",
  "password": "haslo123"
}

Odpowiedź:

{
  "status": "success",
  "message": "Zalogowano pomyślnie",
  "data": {
    "user": { ... },
    "token": "xxx..."
  }
}
POST /logout Auth Required

Opis: Wylogowanie użytkownika (invalidacja tokenu)

GET /me Auth Required

Opis: Pobiera dane zalogowanego użytkownika

📚 Books API (Legacy)

⚠️ Uwaga: To API jest przestarzałe. Używaj Mobile Books API dla nowych implementacji.
GET /books Publiczny

Opis: Lista książek z katalogu

Parametry query:

  • per_page - Liczba wyników na stronę (domyślnie: 20)
  • search - Wyszukiwanie po nazwie
GET /books/{id} Publiczny

Opis: Szczegóły pojedynczej książki

GET /my-books Auth Required

Opis: Książki kupione przez użytkownika

GET /my-purchases Auth Required

Opis: Historia zakupów użytkownika

📱 Mobile Books API

✅ Rekomendowane: To jest główne API dla aplikacji mobilnej z rozdziałami i płatnościami PayU.

Katalog książek

GET /mobile-books Publiczny

Opis: Lista książek mobilnych z rozdziałami

Parametry query:

  • per_page - Liczba wyników (domyślnie: 20)
  • search - Wyszukiwanie

Odpowiedź zawiera:

  • Metadane książki
  • Lista wszystkich rozdziałów
  • Ceny rozdziałów
  • Informacja o darmowych preview
GET /mobile-books/{id} Publiczny

Opis: Szczegóły pojedynczej książki z rozdziałami

Moja biblioteka

GET /mobile/my-books Auth Required

Opis: Książki i rozdziały kupione przez użytkownika

Odpowiedź zawiera:

  • Lista kupionych książek
  • Kupione rozdziały dla każdej książki
  • Darmowe preview rozdziały
  • Status zakupu (active/pending)

Pobieranie PDF

GET /mobile/book/{bookId}/download Auth Required

Opis: Pobiera pełną książkę PDF

Weryfikacja: Sprawdza czy użytkownik kupił książkę

Zwraca: Plik PDF do pobrania

🔒 Bezpieczeństwo: PDF jest serwowany przez kontroler Laravel, nie jako publiczny plik. System weryfikuje zakup przed każdym pobraniem.
GET /mobile/chapter/{chapterId}/download Auth Required

Opis: Pobiera PDF rozdziału

Weryfikacja: Sprawdza czy rozdział jest darmowy LUB czy użytkownik go kupił

Zwraca: Plik PDF rozdziału

Płatności

POST /mobile/purchase Auth Required

Opis: Zakup książki lub rozdziału (legacy, używaj /mobile/payment/payu/create)

GET /mobile/purchase/{orderId}/status Auth Required

Opis: Status płatności PayU

🛒 Koszyk zakupowy

GET /mobile/cart Auth Required

Opis: Pobiera koszyk użytkownika

Odpowiedź zawiera:

  • Lista produktów w koszyku
  • Suma cen (subtotal)
  • Zastosowany kupon (jeśli jest)
  • Końcowa cena (total)
POST /mobile/cart/add Auth Required

Opis: Dodaje produkt do koszyka

Body:

{
  "product_type": "chapter",
  "product_id": 123,
  "quantity": 1
}

Typy produktów: chapter, book, package

DELETE /mobile/cart/items/{itemId} Auth Required

Opis: Usuwa produkt z koszyka

DELETE /mobile/cart Auth Required

Opis: Czyści cały koszyk

Kupony rabatowe

POST /mobile/cart/apply-coupon Auth Required

Opis: Aplikuje kupon rabatowy

Body:

{
  "coupon_code": "PROMO2025"
}
POST /mobile/cart/validate-coupon Auth Required

Opis: Waliduje kupon bez aplikowania

DELETE /mobile/cart/coupon Auth Required

Opis: Usuwa zastosowany kupon

Checkout

POST /mobile/cart/checkout Auth Required

Opis: Finalizuje zakup koszyka przez PayU

Body:

{
  "payment_method": "blik"
}

Odpowiedź zawiera:

  • URL do płatności PayU
  • ID zamówienia
  • Status płatności

💳 PayU Payments (SDK)

ℹ️ Info: API używa PayU SDK (\OpenPayU_Retrieve::payMethods()) dla komunikacji z bramką płatniczą.
GET /mobile/payu/payment-methods Auth Required

Opis: Pobiera dostępne metody płatności z PayU

Parametry query:

  • lang - Język (pl/en, domyślnie: pl)

Zwraca 13 metod płatności:

  • BLIK, Karty płatnicze, Apple Pay, Google Pay
  • Przelewy bankowe (iPKO, mTransfer, Pekao)
  • Płatności odroczone (PayPo, Klarna, Twisto)
  • Raty PayU, PragmaPay

Przykład odpowiedzi:

{
  "status": "success",
  "data": {
    "pay_by_links": [
      {
        "value": "blik",
        "name": "BLIK",
        "brand_image_url": "https://static.payu.com/images/mobile/logos/pbl_blik.png",
        "status": "ENABLED",
        "min_amount": 1,
        "max_amount": 4999999
      }
    ],
    "card_tokens": [],
    "pbl_channels": []
  }
}
⚠️ Uwaga: Kwoty są w groszach (1 = 0.01 PLN). Podziel przez 100 aby dostać PLN.
POST /mobile/payment/payu/create Auth Required

Opis: Tworzy płatność PayU

Body:

{
  "book_id": 1,
  "cart_id": 4,
  "total_amount": 99.99,
  "payment_method": "blik"
}

Odpowiedź:

{
  "status": "success",
  "data": {
    "redirectUri": "https://secure.payu.com/...",
    "orderId": "ABC123",
    "extOrderId": "ORDER_123"
  }
}
GET /mobile/payu/oauth Auth Required

Opis: Generuje OAuth token PayU

SDK Method: \OpenPayU_OAuth::getAccessToken()

POST /mobile/payu-notification Publiczny (Webhook)

Opis: Webhook PayU - notyfikacje o zmianie statusu płatności

Uwaga: Ten endpoint jest wywoływany przez PayU, nie przez aplikację

SDK Method: \OpenPayU_Signature::verifySignature()

📰 News/Aktualności

GET /news Publiczny

Opis: Lista aktualności

Parametry query:

  • per_page - Liczba wyników (domyślnie: 20)
  • search - Wyszukiwanie
  • category_id - Filtrowanie po kategorii
GET /news/{id} Publiczny

Opis: Szczegóły pojedynczej aktualności

GET /news/categories/all Publiczny

Opis: Lista wszystkich kategorii aktualności

📄 Artykuły naukowe i Autorzy

✨ Nowe! API dodane 2 listopada 2025. Zawiera 1,893 artykuły i 1,980 autorów.

Artykuły

GET /articles Publiczny

Opis: Lista artykułów naukowych

Parametry query:

  • per_page - Liczba wyników (domyślnie: 20)
  • search - Wyszukiwanie w tytule i streszczeniu
  • work_type - Typ pracy (pogladowa, oryginalna, etc.)
  • in_bookstore - Filtr księgarnia (true/false)

Dane: 1,351 aktywnych opublikowanych artykułów

GET /articles/{id} Publiczny

Opis: Szczegóły artykułu z autorami

Zawiera:

  • Tytuł (PL i EN)
  • Streszczenie (PL i EN)
  • Treść, bibliografia, informacje
  • PDF URL, zdjęcie
  • Lista autorów z afiliacjami
GET /articles/types/all Publiczny

Opis: Lista typów prac

Zwraca 6 typów:

  • Praca poglądowa
  • Praca oryginalna
  • Doniesienia ze świata
  • Opis przypadku
  • Standardy medyczne
  • Inne

Autorzy

GET /authors Publiczny

Opis: Lista autorów

Parametry query:

  • per_page - Liczba wyników (domyślnie: 20)
  • search - Wyszukiwanie po imieniu/nazwisku

Dane: 1,980 autorów

GET /authors/{id} Publiczny

Opis: Profil autora z artykułami

Zawiera:

  • Imię, nazwisko, tytuł naukowy
  • Opis, afiliacje, email
  • Zdjęcie
  • Lista opublikowanych artykułów

📬 Prenumerata

GET /prenumerata/opcje Publiczny

Opis: Lista dostępnych opcji prenumeraty

GET /prenumerata/moje Auth Required

Opis: Prenumeraty użytkownika

GET /prenumerata/{id} Auth Required

Opis: Szczegóły prenumeraty

POST /prenumerata/create Auth Required

Opis: Zakup nowej prenumeraty

👤 Panel Administratora

⚠️ Uwaga: Endpointy wymagają tokenu administratora.
GET /admin/coupons Admin Only

Opis: Lista kuponów rabatowych

GET /admin/purchases Admin Only

Opis: Lista wszystkich zakupów

PUT /admin/books/{id} Admin Only

Opis: Aktualizacja książki

🔧 Utility Endpoints

GET /test Publiczny

Opis: Health check endpoint

Odpowiedź:

{
  "message": "Standardy API działa!",
  "version": "2.0",
  "timestamp": "2025-11-02T15:30:00+00:00"
}
GET /images/{filename} Publiczny

Opis: Serwuje obrazy produktów z CORS

GET /logo Publiczny

Opis: Serwuje logo aplikacji

GET /debug/headers Publiczny (Debug)

Opis: Debug endpoint - pokazuje nagłówki HTTP

⚠️ Kody błędów HTTP

Kod Status Opis
200 OK Żądanie wykonane pomyślnie
201 Created Zasób utworzony pomyślnie
400 Bad Request Nieprawidłowe żądanie (błędne parametry)
401 Unauthorized Brak autoryzacji lub nieprawidłowy token
404 Not Found Zasób nie znaleziony
422 Unprocessable Entity Błąd walidacji danych
500 Internal Server Error Błąd serwera

📝 Changelog

v2.0 - 2 listopada 2025

v1.4 - Październik 2025