🔔
MyFancyNotifier

API Dokumentace

bot.gamelab.cz/v1  ·  REST API pro odesílání notifikací do mobilní aplikace

Beta · v1

Token zařízení

Každé zařízení s nainstalovanou aplikací má unikátní token. Token slouží jako identifikátor – zpráva odeslaná s daným tokenem se zobrazí právě na tom zařízení.

⚠️
Token je citlivý údaj. Chovejte se k němu jako k heslu. Nikdy ho nezveřejňujte, neposílejte e-mailem a neukládejte do veřejného repozitáře.
📱
Token najdete ve spodní části mobilní aplikace. Lze ho zkopírovat dlouhým kliknutím nebo tlačítkem „Kopírovat".

Token má formát UUID nebo alfanumerického řetězce délky 8–64 znaků, například:

příklad
776452ea-b3c1-4d2e-9f01-7w1e92d626ca

Endpointy

POST
/v2/sendMessage.php
Hlavní endpoint – příjem zprávy (JSON, form-data, nebo plain text)
GET
/v2/send.php
Zjednodušený GET endpoint – zpráva a token přímo v URL
GET
/v2/fetchMessage.php
Načtení všech zpráv pro daný token
POST
/v2/markAsRead.php
Označení zpráv jako přečtené
POST
/v2/markAsDelivered.php
Označení zpráv jako doručené
POST
/v2/registerDevice.php
Registrace zařízení (voláno automaticky aplikací)

Odeslání přes URL (GET)

Nejjednodušší metoda – vše je přímo v URL. Vhodné pro browserové záložky, webhook URL v jednoduchých službách nebo rychlé testování.

URL
https://bot.gamelab.cz/v2/send.php?msg=Zpráva&t=VÁŠ_TOKEN

Parametry

ParametrTypPopis
msgpovinnýText zprávy
tpovinnýToken zařízení
💡
Mezery a speciální znaky v msg je potřeba URL-enkódovat. Většina prohlížečů a nástrojů to udělá automaticky.

Odeslání přes HTTP REST (POST)

Hlavní endpoint podporuje tři různé formáty těla požadavku.

HTTP
POST /v2/sendMessage.php?token=VÁŠ_TOKEN
Host: bot.gamelab.cz
Content-Type: application/json

{
  "msg": "Server je přetížen!"
}
HTTP
POST /v2/sendMessage.php?token=VÁŠ_TOKEN
Host: bot.gamelab.cz
Content-Type: application/x-www-form-urlencoded

msg=Server+je+p%C5%99et%C3%AD%C5%BEen%21
HTTP
POST /v2/sendMessage.php?token=VÁŠ_TOKEN
Host: bot.gamelab.cz
Content-Type: text/plain

Server je přetížen!

Parametry

ParametrKdePopis
tokenGET querypovinný — token zařízení
msgtělo / JSONpovinný — text notifikace

Odeslání přes e-mail

Alternativní kanál – stačí odeslat e-mail na dedikovanou adresu. Vhodné pro systémy, které umí odesílat e-maily, ale nemají přímý přístup na HTTP API.

📧
Adresa: notification@gamelab.cz
Předmět: váš token (celý, nic jiného)
Tělo: text notifikace
příklad e-mailu
To:      notification@gamelab.cz
Subject: 776452ea-b3c1-4d2e-9f01-7w1e92d626ca
Body:    Záloha databáze proběhla úspěšně.
⚠️
Předmět = přesně token. Žádné další slova. Server přijme celý subject jako token a ověří ho. Zpráva s neplatným tokenem bude ignorována.

E-maily jsou zpracovávány periodicky (cron). Doručení může trvat až 1 minutu od odeslání.

Odeslání přes cURL

Ideální pro bash skripty, cron joby a serverový monitoring.

Jednoduchá zpráva

bash
curl -X POST \
  "https://bot.gamelab.cz/v2/sendMessage.php?token=VÁŠ_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"msg":"Disk je plný na 95%!"}'

Jako součást bash skriptu (monitoring disku)

bash
#!/bin/bash
TOKEN="VÁŠ_TOKEN"
USAGE=$(df / | awk 'END{print $5}' | tr -d '%')

if [ "$USAGE" -gt 90 ]; then
  curl -s -X POST \
    "https://bot.gamelab.cz/v2/sendMessage.php?token=$TOKEN" \
    -H "Content-Type: application/json" \
    -d "{\"msg\":\"⚠️ Disk ${USAGE}% plný na $(hostname)\"}"
fi

Z GitHub Actions (CI/CD notifikace)

yaml
- name: Notify on deploy
  run: |
    curl -s -X POST \
      "https://bot.gamelab.cz/v2/sendMessage.php?token=${{ secrets.NOTIFY_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d "{\"msg\":\"✅ Deploy dokončen: $GITHUB_REF_NAME\"}"

Odeslání z PHP

Pomocí cURL (doporučeno)

php
function sendNotification(string $token, string $msg): bool {
    $ch = curl_init("https://bot.gamelab.cz/v2/sendMessage.php?token=" . urlencode($token));
    curl_setopt_array($ch, [
        CURLOPT_POST           => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 5,
        CURLOPT_HTTPHEADER     => ['Content-Type: application/json'],
        CURLOPT_POSTFIELDS     => json_encode(['msg' => $msg]),
    ]);
    $response = curl_exec($ch);
    $code     = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $code === 200;
}

// Použití:
sendNotification("VÁŠ_TOKEN", "Nová objednávka #1042 přijata!");

Pomocí file_get_contents (bez cURL)

php
$token = "VÁŠ_TOKEN";
$msg   = "Platba přijata!";

file_get_contents(
    "https://bot.gamelab.cz/v2/sendMessage.php?token=" . urlencode($token),
    false,
    stream_context_create([
        'http' => [
            'method'  => 'POST',
            'header'  => 'Content-Type: application/json',
            'content' => json_encode(['msg' => $msg]),
        ]
    ])
);

Odeslání z Pythonu

python
import requests

def notify(token: str, msg: str) -> bool:
    r = requests.post(
        f"https://bot.gamelab.cz/v2/sendMessage.php",
        params={"token": token},
        json={"msg": msg},
        timeout=5
    )
    return r.status_code == 200

# Použití:
notify("VÁŠ_TOKEN", "Cena BTC klesla pod 50 000 USD!")

Jako součást cron jobu (apscheduler)

python
from apscheduler.schedulers.blocking import BlockingScheduler
import requests, psutil

TOKEN = "VÁŠ_TOKEN"

def check_cpu():
    usage = psutil.cpu_percent(interval=1)
    if usage > 80:
        requests.post(
            "https://bot.gamelab.cz/v2/sendMessage.php",
            params={"token": TOKEN},
            json={"msg": f"🔥 CPU vytížení: {usage}%"},
            timeout=5
        )

scheduler = BlockingScheduler()
scheduler.add_job(check_cpu, "interval", minutes=1)
scheduler.start()

Odpovědi serveru

Úspěch (HTTP 200)

json
{
  "status":  "done",
  "message": "Message saved",
  "msg":     "text vaší zprávy"
}

Stavové kódy

200 OK 400 Bad Request 403 Forbidden 500 Server Error
KódSituace
200Zpráva uložena a odeslána do aplikace
400Chybí parametr token nebo msg
403Token neexistuje nebo není zaregistrován
500Interní chyba serveru (DB)

Časté chyby

„Token is missing"

Token nebyl předán. Zkontrolujte, že je token v GET parametru URL nebo v těle požadavku.

„Unauthorized: Invalid token"

Token nebyl nalezen v databázi. Ověřte, že aplikace provedla registraci zařízení a token opisujete správně (case-sensitive).

„Message body is empty"

Tělo požadavku je prázdné. Ujistěte se, že posíláte neprázdný msg.

E-mail není doručen

Zkontrolujte, že předmět e-mailu obsahuje pouze token, bez dalšího textu. Zpracování probíhá přes cron – počkejte až 1 minutu.

🐛
Pro testování použijte endpoint /v2/sendDebug.php?token=VÁŠ_TOKEN – odešle testovací zprávu bez nutnosti zadávat tělo požadavku.