MemberPro API Docs

← Zpět na portál

MemberPro API — Kompletní dokumentace

Base URL: http://62.109.132.9:9296
Auth: Basic Auth (jméno + heslo přiděleny na vyžádání, test: test/test)
Formát: JSON (podporuje i XML)
Datum testování: 20.03.2026

Obsah


Přehled

API předpokládá komunikaci pomocí HTTPS a povolení komunikace z určených IP adres.

Pro autorizaci se používá Basic Auth (HTTP hlavička Authorization: Basic base64(jmeno:heslo)).

Všechny endpointy vrací JSON (application/json) nebo XML (application/xml).

POST/PUT endpointy přijímají application/json, application/xml a application/x-www-form-urlencoded.

Důležité konvence:


Resorty

GET api/Resorts

Seznam poboček/resortů.

Parametry: žádné

Response: 200 OK — Array of Resort_data

PoleTypPopis
idintegerID resortu
nazevstringNázev pobočky

Příklad odpovědi:

[{"id": 1, "nazev": "Premier fitness"}]

Stav: Funguje


Kategorie

GET api/Categories?lang={lang}

Seznam kategorií služeb.

ParametrTypPovinnýDefaultPopis
langstringNeczJazyk

Response: Array of Categories_data

PoleTypPopis
idintegerID kategorie
nazevstringNázev
povolene_resortystringPovolené resorty (čárkou oddělené)
pocet_osobintegerPočet osob
povolena_clenstvistringID povolených členství (středníkem; prázdné = všechna)
id_souhlasuintegerID požadovaného souhlasu (10 = kryokomora)
doplneni_nazvustringDoplnění názvu
typeintegerTyp: 1=časové rezervace, 2=lekce, 5=ubytování, 99=ostatní
imgstringNázev obrázku

Stav: Funguje (v testovacím prostředí 1 kategorie: 10001 "Prodej členství")


Služby

GET api/Services?resort={resort}&id_kategorie={id_kategorie}&user_id={user_id}&id_resource={id_resource}&lang={lang}

Seznam služeb s cenami.

ParametrTypPovinnýDefaultPopis
resortintegerAnoID resortu
id_kategorieintegerAnoID kategorie
user_idintegerAnoID uživatele (0 pro anonymní)
id_resourceintegerNe0Filtr na resource (trenér apod.)
langstringNeczJazyk

Důležité: Ceny se liší podle user_id — člen dostává členskou cenu (např. 50% sleva pro typ "Majitel").

Response: Array of Services_data

PoleTypPopis
idintegerID služby
nazevstringNázev
kategoriestringID kategorie
id_typ_sportovisteintegerTyp sportoviště
resortintegerResort
descriptionstringPopis
service_detailarrayDetail služby (viz níže)

service_detail:

PoleTypPopis
idintegerID detailu
delkaintegerDélka (minuty)
cenadecimalCena (Kč)
posibleinteger1=dostupné
descriptionstringPopis
primy_prodejinteger1=přímý prodej
stav_skladuintegerStav skladu
voucherintegerVoucher

Příklad odpovědi:

[
  {"id":900004011,"nazev":"Roční členství NAJEDNOU","kategorie":"10001","resort":1,
   "service_detail":[{"id":900004011,"delka":0,"cena":15990.0,"posible":1,"primy_prodej":1,"stav_skladu":999,"voucher":0}]},
  {"id":900004007,"nazev":"10 vstupů","kategorie":"10001","resort":1,
   "service_detail":[{"id":900004007,"delka":0,"cena":1600.0,"posible":1}]},
  {"id":900004008,"nazev":"20 vstupů","kategorie":"10001","resort":1,
   "service_detail":[{"id":900004008,"delka":0,"cena":3000.0,"posible":1}]},
  {"id":900004005,"nazev":"Měsíční členství","kategorie":"10001","resort":1,
   "service_detail":[{"id":900004005,"delka":0,"cena":1790.0,"posible":1}]}
]

Stav: Funguje (pouze kategorie 10001 má data)


GET api/Services/free?resort={resort}&id_kategorie={id_kategorie}&user_id={user_id}&datum_start={datum_start}&pohlavi_maser={pohlavi_maser}

Dostupné služby k danému datu.

ParametrTypPovinnýPopis
resortintegerAno
id_kategorieintegerAno
user_idintegerAno
datum_startstringAnoDatum
pohlavi_maserintegerNe (def: -1)Pohlaví maséra

Response: Stejná struktura jako Services.

Stav: 500 Error — chybí stored procedure API_HUMANIT_II_GET_SLUZBY_FRE_G


Freetime

GET api/Freetime?resort={resort}&date_start={date_start}&id_kategorie={id_kategorie}&user_id={user_id}&id_maser={id_maser}&id_sluzby_1={id_sluzby_1}&id_sluzby_2={id_sluzby_2}&pocet_dni_dopredu={pocet_dni_dopredu}&lang={lang}

Volné termíny pro rezervaci.

ParametrTypPovinnýDefaultPopis
resortintegerAno
date_startstringAnoFormát: DD.MM.YYYY
id_kategorieintegerAno
user_idintegerNe0
id_maserintegerNe0
id_sluzby_1integerNe0
id_sluzby_2integerNe0
pocet_dni_dopreduintegerNe0
langstringNecz

Response: Array of Freetime_data

PoleTypPopis
id_kategorieinteger
povolena_clenstvistring
id_souhlasuinteger
freetimedateVolný termín
resources_infoobject{available_resources, available_resources_male, available_resources_female}
service_availablearrayDostupné služby s detaily a resources

Stav: ⚠️ Endpoint existuje, ale padá s "numeric overflow" pro kategorii 10001. Pro ostatní kategorie vrací prázdné pole.


Lekce

GET api/Lesson/variants?lang={lang}

Varianty/typy lekcí.

ParametrTypPovinnýDefault
langstringNecz

Response: Array of Lesson_variants_data

PoleTypPopis
varianta_lekceintegerID varianty
nazevstringNázev (max 40 znaků)
popisstringPopis (max 3000 znaků)

Příklad:

[
  {"varianta_lekce":1,"nazev":"skupinove","popis":"skupinove"},
  {"varianta_lekce":11,"nazev":"aerobik","popis":"aerobik"},
  {"varianta_lekce":13,"nazev":"yoga","popis":"yoga"},
  {"varianta_lekce":17,"nazev":"spinning","popis":"spinning"},
  {"varianta_lekce":23,"nazev":"zumba","popis":"zumba"}
]

19 typů: skupinove, vacu, photon, aerobik, pilates, yoga, trx, gravity, kruhovy, spinning, bodystyling, hit4fit, expander, tehulky, bosu, zumba, trampolinky, deti, bojove_sporty

Stav: Funguje


GET api/Lesson?resort={resort}&date_start={date_start}&id_kategorie={id_kategorie}&user_id={user_id}&pocet_dni_dopredu={pocet_dni_dopredu}&id_service={id_service}&lang={lang}

Rozvrh lekcí.

ParametrTypPovinnýDefault
resortintegerAno
date_startstringAno
id_kategorieintegerNe0
user_idintegerNe0
pocet_dni_dopreduintegerNe0
id_serviceintegerNe0
langstringNecz

Formát data: DD.MM.YYYY (ne ISO formát!)

Response: Array of Lesson_data

PoleTypPopis
resortinteger
kategorieinteger
date_timedateStart lekce
id_staffintegerID instruktora
pohlavistringPohlaví
oslovenistringPřezdívka instruktora
id_serviceintegerID lekce (pro rezervaci)
delkaintegerDélka v minutách
cenadecimalCena
nazevstringNázev (20 znaků)
popisstringPopis (400 znaků)
kapacitaintegerCelková kapacita
obsazenointegerObsazených míst
volnointegerVolných míst
cislo_saluintegerČíslo sálu
id_staff_originalintegerPůvodní instruktor (detekce zástupů)
varianta_lekceintegerID varianty lekce
typ_lekceintegerID typu lekce
kapacita_membersintegerKapacita pro členy
kapacita_nonmembersintegerKapacita pro nečleny
volno_membersintegerVolno pro členy
volno_nonmembersintegerVolno pro nečleny
user_posibleintegerMůže konkrétní klient?
povolena_clenstvistringPovolená členství
id_souhlasuintegerPožadovaný souhlas

Stav: Funguje (v testu prázdný — žádné lekce naplánovány)


Kurty

GET api/Courts?resort={resort}&id_kategorie={id_kategorie}&datum={datum}

Seznam kurtů/sportovišť.

ParametrTypPovinnýPopis
resortintegerAno
id_kategorieintegerAno
datumdateAnoFormát: YYYY-MM-DD

Response: Array of Courts_data

PoleTypPopis
id_resourceintegerID
nazevstringNázev
resortintegerResort
kategorieintegerKategorie
platnost_dodatePlatnost do

Příklad: [{"id_resource":100,"nazev":"Posilovna","resort":1,"kategorie":100,"platnost_do":"2099-12-31T00:00:00"}]

Stav: Funguje (kategorie 100)


Místnosti

GET api/Room?lang={lang}

Seznam cvičebních sálů.

Response: Array of Room_data

PoleTyp
cislo_saluinteger
nazevstring

Data: 6 sálů — Aerobik (1), Funkční tr. (4), Cross GYM (5), Fighting arena 1 (6), Fighting arena 2 (7), Outdoor (8)

Stav: Funguje


Personál

GET api/Masseurs

Seznam masérů.

Response: Array of Masseur_data — { resort, id, jmeno, prijmeni, pohlavi }

Stav: ⚠️ 404 (žádní maséři v testovací DB)

GET api/Staff

Seznam personálu (maséři, trenéři...).

Response: Array of Staff_data — { resort, id, jmeno, prijmeni, pohlavi, id_typ_sportoviste, kategorie }

Stav: ⚠️ 404 (žádný personál v testovací DB)


Členství

GET api/Clenstvi?lang={lang}

Typy členství.

Response: Array of Clenstvi_data

PoleTypPopis
idintegerID členství
nazevstringNázev
minimum_kreditdecimalMinimální kredit

Stav: Funguje (51 typů členství)


Login

GET api/Login?login={login}

Lookup uživatele dle emailu.

ParametrTypPovinný
loginstringAno

Response: User_id_data

{"user_id": 4000012, "state": 0}

Stav: Funguje


GET/POST api/Login?login={login}&password={password}&member_card_number={member_card_number}

Plné přihlášení klienta.

ParametrTypPovinnýPopis
loginstringAnoEmail
passwordstringAnoMD5 hash hesla
member_card_numberstringNeČíslo věrnostní karty

Response: User_data (kompletní profil — viz sekce User)

HTTP kódy:

Stav: Funguje


User

GET api/User?user_id={user_id}

Kompletní data klienta.

Response: User_data

{
  "user_id": 4000012,
  "login": "info@premierfitness.cz",
  "email": "info@premierfitness.cz",
  "name": "Pavel",
  "surname": "Precek",
  "title_before": "",
  "title_after": "",
  "birthdate": "1981-02-01T00:00:00",
  "current_balance": 158.0,
  "currency": "CZK",
  "id_membership": 1001,
  "membership": "Majitel",
  "member_card": false,
  "member_card_number": null,
  "membership_exp": "2049-06-18T00:00:00",
  "gdpr_souhlasy": 0,
  "minimum_kredit": 0.0,
  "phone": "777123456",
  "street": "...",
  "zip": "...",
  "city": "...",
  "country": "CZ",
  "language": "cs",
  "state": 0,
  "qr": "...",
  "loyalty_program_level": 1,
  "souhlasy_podminky": {...},
  "zmeny_provozu": {"sms":false,"email":false,"push":false},
  "obchodni_sdeleni": {"sms":false,"email":false,"push":false}
}

Klíčová pole:

Stav: Funguje (reálná user ID od ~4000000)


PUT api/User?user_id={user_id}

Aktualizace uživatelských údajů. Body = User_data objekt.

Response: {"success": 1, "messaget": "text"}


GET api/user/fu?user_id={user_id}

Fakturační údaje.

Response: Fakturacni_udaje

{"company_id":"","vat_id":"","name":"","surname":"","company_name":"","street":"","zip":"","city":"","country":"","typ_osoby":""}

Stav: Funguje

PUT api/user/fu?user_id={user_id}

Zápis fakturačních údajů. Body = Fakturacni_udaje.

Response: {"success": 1, "messaget": "text"}


GET api/user/membership?user_id={user_id}&lang={lang}

Členství klienta.

Response:

{
  "id_membership": 1001,
  "membership": "Majitel",
  "membership_od": "2022-02-01T00:00:00",
  "membership_do": "2049-06-18T00:00:00",
  "dluzne_clenstvi": 0.0,
  "mesicni_clenstvi": 0.0,
  "stav": 0,
  "stav_text": ""
}

stav (bitmask): 0=OK, 1=dluží další měsíc, 10=prošlé, 200=přerušené, 1000=dluh za členství, 2000=dluh za 1. platbu, 4000=dluh za zápisné

Stav: Funguje


GET api/user/credit_history?user_id={user_id}&lang={lang}&datum_od={datum_od}&datum_do={datum_do}

Historie pohybů na účtu.

Response: Array of Payment_history — { resort, datum, castka, cdd, text, uhrada, typ_uhrady, sportoviste }

Stav: ⚠️ 404 (žádná historie v testu)


GET api/user/balicky?user_id={user_id}&lang={lang}

Balíčky klienta.

Response: Array of Balicek — { nazev, zdarma, zbyva, jednotka, od_kdy, do_kdy, id_balicku, id_typ_clenstvi, sleva_prc, kategorie }

Stav: ⚠️ 404


GET api/user/payment_order?user_id={user_id}&lang={lang}

Předpisy plateb za členství.

Response: Array of Payment_order — { rokmm, datum, predpis, uhrada, zbyva, text, membership }

Stav: ⚠️ 404


GET api/user/receipt?cdd={cdd}&resort={resort}&send_email={send_email}

Účtenka dle čísla dokladu.

ParametrTypPovinnýPopis
cddintegerAnoČíslo daňového dokladu
resortintegerAno
send_emailintegerNe (def: 0)1 = odeslat doklad emailem

Response: {"uctenka": "string"}


Registrace

POST api/Register

Registrace nového klienta.

Body:

{
  "login": "email@example.com",
  "password": "md5hash",
  "name": "Jan",
  "surname": "Novák",
  "email": "secondary@email.cz",
  "phone": "+420123456789",
  "member_card": "Ano",
  "agree_to_conditions": true,
  "company_name": "",
  "company_id": "",
  "language": "cs",
  "state": 2
}

Response: Register_result_data

{"user_id": 4021141, "success": 1, "messaget": "OK"}

Stav: Funguje (reálně vytváří uživatele!)


POST api/Registerfinish

Dokončení registrace. Body: string (potvrzovací kód).

Response: {"ok": 1, "result_text": "text"}


Reset hesla

GET api/Resetpass?email={email}&phone={phone}

Odeslání kódu pro reset hesla (emailem i SMS).

Minimálně jeden parametr (email nebo phone) je povinný.

Response: {"ok": 1, "result_text": "text"}

Stav: ⚠️ Funguje ale odesílá skutečné emaily/SMS


POST api/Resetpassfinish

Dokončení resetu hesla.

Body:

{"login": "email", "password": "md5hash", "uuid": "kód-z-emailu"}

Validate

GET/POST api/Validate?login={login}&password={password}

Ověření přihlašovacích údajů (počet záznamů v DB).

Response:

{
  "pz_username": 1,
  "pz_username_pass": 0,
  "pz_username_with_card": 0,
  "pz_username_without_card": 1
}

Stav: Funguje


Rezervace

GET api/Reservations?user_id={user_id}&historie={historie}&id_rezervace={id_rezervace}&lang={lang}

Seznam rezervací klienta.

ParametrTypPovinnýDefault
user_idintegerAno
historieintegerNe0
id_rezervaceintegerNe0
langstringNecz

Response: Array of Reservations_sel_result_data

PoleTypPopis
resortinteger
id_rezervaceinteger
id_kategorieinteger
datumdate
id_serviceinteger
delkainteger
id_resourceinteger
pricedecimal
statusinteger
datum_expiracedate
poznamkastring
zpusob_uhradyinteger
service_infoobjectVnořené info o službě
categorie_infoobjectVnořené info o kategorii
resource_infoobjectInfo o maséru/kurtu
uuidstring
datum_pro_smazanidateDeadline pro smazání

Stav: ⚠️ 404 (žádné rezervace v testu)


POST api/Reservations

Vytvoření nové rezervace.

Body:

{
  "resort": 1,
  "id_kategorie": 2,
  "user_id": 3,
  "datum": "2026-03-20T14:00:00Z",
  "id_service_1": 5,
  "delka_1": 60,
  "id_resource_1": 7,
  "pohlavi_1": "M",
  "id_service_2": 0,
  "delka_2": 0,
  "id_resource_2": 0,
  "pohlavi_2": "",
  "poznamka": "text",
  "zpusob_uhrady": 0,
  "name": "Jméno",
  "surname": "Příjmení",
  "email": "email@test.cz",
  "phone": "+420...",
  "language": "cs"
}

Response:

{"success": 1, "messaget": "OK", "uuid": "abc-def-123"}

DELETE api/Reservations/{id}?kategorie={kategorie}&resort={resort}

Smazání rezervace.

Response: {"success": 1, "messaget": "text", "storno_poplatek": 0.0}


Watchdog

GET api/Watchdog?user_id={user_id}

Aktivní hlídané termíny.

GET api/watchdog_II/user?user_id={user_id}

Rozšířené hlídané termíny.

GET api/watchdog_II/watchdog_id?watchdog_id={watchdog_id}

Hlídané termíny dle ID.

POST api/Reservations/watchdog

POST api/Reservations/watchdog_II

POST api/Reservations/watchdog_III

Vytvoření nového hlídání (základní, rozšířené, rozšířené+jazyk).

Body:

{
  "resort": 1, "id_kategorie": 2, "user_id": 3,
  "datum": "2026-03-20T00:00:00Z",
  "id_service_1": 5, "delka_1": 60,
  "poznamka": "text",
  "id_resource_1": 8, "pohlavi_1": "M",
  "id_watchdog": 0,
  "name": "", "surname": "", "email": "", "phone": "",
  "language": "cs"
}

DELETE api/Watchdog/{id}?resort={resort}

Smazání hlídaného termínu.

Response: {"success": 1, "messaget": "text"}

Stav: ⚠️ GET vrací 404 (žádná data), POST/DELETE netestováno


Vouchery

GET api/Voucher?id_voucher={id_voucher}&lang={lang}

Info o voucheru.

Response: Voucher_result_data

PoleTypPopis
datum_oddatePlatnost od
datum_dodatePlatnost do
por_cislointegerPořadové číslo
nazev_poukazustringNázev
popisstringPopis
cenadecimalCena
id_voucherintegerID
posibleinteger1/0
qr_kodstringQR kód

GET api/voucher/klient_parovane?id_klient={id_klient}&lang={lang}

Vouchery napárované na klienta.

POST api/voucher/klient_parovane

Spárování voucheru s klientem.

Body: {"id_voucher": 1, "user_id": 2, "id_payment_shop": "shop-id"}

POST api/Voucher

Uplatnění voucheru (stejné body).

Response: {"success": 1, "messaget": "text", "id_mp": 3}

Stav: ⚠️ GET vrací 404, POST netestováno


Platby

POST api/Payment

Zapsání přijaté platby.

POST api/Payment/Cancel

Oznámení o neúspěšné platbě.

Body (oba):

{
  "uuid": ["uuid-z-rezervace"],
  "user_id": 1,
  "amount": 500.00,
  "id_payment_shop": "shop-id",
  "id_payment_pp_1": "payment-id-1",
  "id_payment_pp_2": "payment-id-2",
  "zpusob_uhrady": 1,
  "zpusob_odeslani": 0
}

Response: {"success": 1, "messaget": "text", "id_mp": 123}


Feedback

GET api/Feedback?lang={lang}&id_feedback_form={id_feedback_form}

Definice dotazníků (id_feedback_form=0 = všechny).

Response: Array of Feedback_form

[{"id_form":1,"nazev":"text","poznamka":"text",
  "list_items":[{"id_item":1,"poradi":1,"typ":1,"povolen_vlastni_text":0,"nazev":"text","moznosti":["a","b"]}]}]

POST api/Feedback

Odeslání vyplněného dotazníku.

Body:

{
  "id_form": 1, "user_id": 2, "poznamka": "text",
  "id_1": 4, "id_2": 5, "id_3": 6,
  "list_items": [{"id_item": 1, "vlastni_text": "text", "hodnota": 3}]
}

Stav: ⚠️ GET vrací 404 (žádné formuláře)


Akce

GET api/Akce

Seznam platných akcí/promo.

Response: Array of Akce_data

PoleTyp
idinteger
nazev_obrazkustring
nadpisstring
popisstring
akcni_odkazstring
nazev_akcniho_tlacitkastring

Stav: ⚠️ 404 (žádné aktivní akce)


SMS

GET api/Send_SMS?phone={phone}&text={text}&id_sms={id_sms}

Odeslání SMS.

ParametrTypPovinnýPopis
phonestringAnoTelefonní číslo
textstringAnoText SMS
id_smsstringNe (def: 0)ID šablony SMS

⚠️ POZOR: Odesílá reálnou SMS! Netestovat bez důvodu.


Stav endpointů

Funguje (12 endpointů)

EndpointPoznámka
GET api/Resorts1 resort (Premier fitness)
GET api/Categories1 kategorie (10001)
GET api/Services4 služby (členství, vstupy)
GET api/Clenstvi51 typů členství
GET api/Room6 sálů
GET api/Lesson/variants19 variant
GET api/LessonFunguje (prázdná data)
GET api/Courts1 kurt (Posilovna, kat. 100)
GET/POST api/ValidateOK
GET api/LoginLookup i plné přihlášení
GET api/UserKompletní profil
GET api/user/fu, membershipFakturace, členství
POST api/RegisterVytváří reálné uživatele

Server error (3 endpointy)

EndpointChyba
GET api/Freetime"numeric overflow" v stored proceduře (kat. 10001), DateTime parsing pro jiné formáty
GET api/Lesson (ISO datum)"String was not recognized as a valid DateTime" pro formáty jiné než DD.MM.YYYY
GET api/Services/freeChybí stored procedure API_HUMANIT_II_GET_SLUZBY_FRE_G

⚠️ Prázdná data / 404 (13 endpointů)

Tyto endpointy vrací 404 s prázdným tělem — pravděpodobně žádná data v testovací DB:

Akce, Masseurs, Staff, Feedback, Reservations (GET), Watchdog, watchdog_II, Voucher (GET), voucher/klient_parovane, user/credit_history, user/balicky, user/payment_order

Netestováno (17 endpointů)

POST/PUT/DELETE endpointy: Register, Registerfinish, Resetpassfinish, Payment, Payment/Cancel, Reservations (POST/DELETE), Watchdog (POST/DELETE), Voucher (POST), voucher/klient_parovane (POST), Feedback (POST), User (PUT), user/fu (PUT), Send_SMS


Důležité poznámky