Vytvořit log
POST https://api.mcnavody.eu/1/log application/json
Odesílání obsahu s typem application/x-www-form-urlencoded je stále
podporováno z důvodu zpětné kompatibility, ale nepodporuje nastavení metadat.
| Pole |
Povinné |
Typ |
Popis |
| content |
|
string |
Hrubý obsah souboru logu jako řetězec.
Omezeno na 10.00 MiB
a 25,000 řádků.
Pokud to bude nutné, obsah bude zkrácen, ale doporučuje se zkracování provádět na straně klienta.
|
| source |
|
string |
Název zdroje, např. doména nebo název softwaru. |
| metadata |
|
array |
Pole položek metadat. |
Příklad těla požadavku application/json
{
"content": "[obsah log souboru...]",
"source": "example.org"
}
Metadata
Společně s obsahem logu můžete odeslat metadata, která se zobrazí na stránce logu a/nebo budou čitelná pro
jiné aplikace prostřednictvím tohoto API.
To je zcela volitelné, ale může to pomoci poskytnout další kontext, např. interní ID serveru, verze softwaru
atd.
Položka metadat je objekt s následujícími poli:
| Pole |
Povinné |
Typ |
Popis |
| key |
|
string |
Klíč metadat. Lze použít k pozdější identifikaci položky ve vašem kódu. |
| value |
|
string|int|float|bool|null |
Hodnota metadat. |
| label |
|
string |
Zobrazovaný popisek. Pokud není uveden, použije se jako popisek klíč. |
| visible |
|
bool |
Zda mají být tato metadata viditelná na stránce logu, nebo dostupná pouze
přes API. Výchozí je true.
|
Příklad těla s metadaty application/json
{
"content": "[obsah log souboru...]",
"source": "example.org",
"metadata": [
{
"key": "server_id",
"value": 12345,
"visible": false
},
{
"key": "software_version",
"value": "1.2.3",
"label": "Verze Softwaru",
"visible": true
}
]
}
Odpovědi
Úspěch application/json
Token poskytnutý v této odpovědi lze později použít ke smazání tohoto logu. Uložte jej bezpečně nebo jej
zahoďte, znovu se již nezobrazí.
{
"success":true,
"id":"WnMMikq",
"source":null,
"created":1769597979,
"expires":1777373979,
"size":157369,
"lines":1201,
"errors":8,
"url": "https://log.mcnavody.eu/WnMMikq",
"raw": "https://api.mcnavody.eu/1/raw/WnMMikq",
"token":"78351fafe495398163fff847f9a26dda440435dcf7b5f92e8e36308f3683d771",
"metadata": [
{
"key": "server_id",
"value": 12345,
"visible": false
},
{
"key": "software_version",
"value": "1.2.3",
"label": "Verze Softwaru",
"visible": true
}
]
}
Chyba application/json
{
"success": false,
"error": "Required field 'content' not found."
}
Získat informace a obsah logu
GET https://api.mcnavody.eu/1/log/[id]
Tento koncový bod (endpoint) ve výchozím nastavení vrací pouze informace o logu a metadata (stejná odpověď
jako při vytvoření logu).
V rámci stejného požadavku můžete získat i obsah v různých formátech povolením příslušných GET parametrů.
Můžete kombinovat více parametrů a získat tak více formátů obsahu najednou, mějte ale na paměti, že to
zvětší velikost odpovědi.
| GET Parametr |
Pole v odpovědi |
Popis |
| raw |
content.raw |
Zahrne do odpovědi hrubý obsah logu jako řetězec. |
| parsed |
content.parsed |
Zahrne do odpovědi zpracovaný obsah logu jako pole/objekty. |
| insights |
content.insights |
Zahrne do odpovědi automaticky detekovanou analýzu (problémy/informace).
|
Odpovědi
Úspěch application/json
Všechna pole obsahu jsou zahrnuta pouze v případě, že je zadán odpovídající parametr GET.
Pokud není zadán žádný parametr obsahu, celý objekt obsahu je z odpovědi vynechán.
{
"success":true,
"id":"WnMMikq",
"source":null,
"created":1769597979,
"expires":1777373979,
"size":157369,
"lines":1201,
"errors":8,
"url": "https://log.mcnavody.eu/WnMMikq",
"raw": "https://api.mcnavody.eu/1/raw/WnMMikq",
"metadata": [
{
"key": "server_id",
"value": 12345,
"visible": false
},
{
"key": "software_version",
"value": "1.2.3",
"label": "Verze Softwaru",
"visible": true
}
],
"content": {
"raw": "[obsah log souboru...]",
"parsed": [ /* zpracované položky logu */ ],
"insights": { "problems": [ /* detekované problémy */ ], "information": [ /* detekované informace */ ] }
}
}
Chyba application/json
{
"success": false,
"error": "Log not found."
}
Smazat log
Smazání logu vyžaduje token, který byl poskytnut při jeho vytvoření.
DELETE https://api.mcnavody.eu/1/log/[id]
Hlavičky (Headers)
| Hlavička |
Příklad |
Popis |
| Authorization |
Authorization: Bearer 78351fafe495398163f... |
Typ (vždy "Bearer") a token logu obdržený při jeho vytvoření. |
Odpovědi
Úspěch application/json
{
"success": true
}
Chyba application/json
{
"success": false,
"error": "Invalid token."
}
Hromadně smazat více logů
Tato metoda umožňuje smazat až 256 logů najednou.
Smazání logů vyžaduje tokeny, které byly poskytnuty při jejich vytvoření.
POST https://api.mcnavody.eu/1/bulk/log/delete
Příklad těla požadavku application/json
[
{
"id": "6wexMDE",
"token": "78351fafe495398163fff847f9a26dda440435dcf7b5f92e8e36308f3683d771"
},
{
"id": "OahzhMG",
"token": "6520dd42ec3d5fd0e83f28220974fb83d3bdc0746853f5022373f8e5b062651b"
}
]
Odpovědi
Úspěch application/json
Požadavek na hromadné smazání vrátí úspěšný výsledek a stavový kód 207,
což znamená, že požadavek byl zpracován.
Výsledky jednotlivých operací jsou zahrnuty v těle odpovědi.
{
"success": true,
"results": [
{
"success": true,
"id": "6wexMDE",
"status": 200
},
{
"success": true,
"id": "OahzhMG",
"status": 200
}
]
}
Částečný úspěch application/json
Pokud je požadavek na hromadné smazání platný, ale nelze smazat všechny logy (např. kvůli neplatným tokenům
nebo neexistujícím logům),
bude celkově stále považován za úspěšný, ale tělo odpovědi bude obsahovat chybové výsledky pro logy, které
se nepodařilo smazat.
{
"success": true,
"results": [
{
"success": true,
"id": "6wexMDE",
"status": 200
},
{
"success": false,
"error": "Log not found.",
"id": "OahzhMG",
"status": 404
}
]
}
Chyba application/json
Pokud je požadavek na hromadné smazání nesprávně naformátován nebo je neplatný, celý požadavek bude
zamítnut s chybovou odpovědí a žádné logy nebudou smazány.
{
"success": false,
"error": "No logs provided."
}
Získat hrubý obsah logu
Tento koncový bod použijte pouze v případě, že opravdu potřebujete jen hrubý obsah logu. Pro většinu případů
se doporučuje získat informace a obsah společně z endpointu pro log.
GET https://api.mcnavody.eu/1/raw/[id]
| Pole |
Typ |
Popis |
| [id] |
string |
ID log souboru, získané z endpointu pro vložení nebo z URL
(https://log.mcnavody.eu/[id]).
|
Úspěch text/plain
[18:25:33] [Server thread/INFO]: Starting minecraft server version 1.16.2
[18:25:33] [Server thread/INFO]: Loading properties
[18:25:34] [Server thread/INFO]: Default game type: SURVIVAL
...
Chyba application/json
{
"success": false,
"error": "Log not found."
}
Získat analýzu (Insights)
Tento koncový bod je ponechán hlavně kvůli zpětné kompatibilitě. U nových aplikací se doporučuje získávat
analýzu společně s informacemi o logu z hlavního endpointu.
GET https://api.mcnavody.eu/1/insights/[id]
| Pole |
Typ |
Popis |
| [id] |
string |
ID log souboru, získané z endpointu pro vložení nebo z URL
(https://log.mcnavody.eu/[id]).
|
Úspěch application/json
{
"id": "name/type",
"name": "Název softwaru, např. Vanilla",
"type": "Název typu, např. Server Log",
"version": "Verze, např. 1.12.2",
"title": "Kombinovaný název, např. Vanilla 1.12.2 Server Log",
"analysis": {
"problems": [
{
"message": "Zpráva vysvětlující problém.",
"counter": 1,
"entry": {
"level": 6,
"time": null,
"prefix": "Prefix tohoto záznamu, obvykle část obsahující čas a úroveň logu.",
"lines": [
{
"number": 1,
"content": "Celý obsah řádku."
}
]
},
"solutions": [
{
"message": "Zpráva vysvětlující možné řešení."
}
]
}
],
"information": [
{
"message": "Popisek: hodnota",
"counter": 1,
"label": "Popisek této informace, např. Verze Minecraftu",
"value": "Hodnota této informace, např. 1.12.2",
"entry": {
"level": 6,
"time": null,
"prefix": "Prefix tohoto záznamu, obvykle část obsahující čas a úroveň logu.",
"lines": [
{
"number": 6,
"content": "Celý obsah řádku."
}
]
}
}
]
}
}
Chyba application/json
{
"success": false,
"error": "Log not found."
}
Analyzovat log bez uložení
Pokud chcete využít pouze funkce analýzy této služby bez uložení logu, můžete použít tento koncový bod.
Prosím, neukládejte logy, které chcete pouze analyzovat, protože to plýtvá úložným prostorem a zdroji.
POST https://api.mcnavody.eu/1/analyse
application/x-www-form-urlencoded application/json
| Pole |
Typ |
Popis |
| content |
string |
Hrubý obsah souboru logu jako řetězec. Maximální délka je 10MiB a 25 tisíc
řádků, v případě potřeby bude zkrácen.
|
Úspěch application/json
{
"id": "name/type",
"name": "Název softwaru, např. Vanilla",
"type": "Název typu, např. Server Log",
"version": "Verze, např. 1.12.2",
"title": "Kombinovaný název, např. Vanilla 1.12.2 Server Log",
"analysis": {
"problems": [
{
"message": "Zpráva vysvětlující problém.",
"counter": 1,
"entry": {
"level": 6,
"time": null,
"prefix": "Prefix tohoto záznamu, obvykle část obsahující čas a úroveň logu.",
"lines": [
{
"number": 1,
"content": "Celý obsah řádku."
}
]
},
"solutions": [
{
"message": "Zpráva vysvětlující možné řešení."
}
]
}
],
"information": [
{
"message": "Popisek: hodnota",
"counter": 1,
"label": "Popisek této informace, např. Verze Minecraftu",
"value": "Hodnota této informace, např. 1.12.2",
"entry": {
"level": 6,
"time": null,
"prefix": "Prefix tohoto záznamu, obvykle část obsahující čas a úroveň logu.",
"lines": [
{
"number": 6,
"content": "Celý obsah řádku."
}
]
}
}
]
}
}
Chyba application/json
{
"success": false,
"error": "Required field 'content' is empty."
}
Zkontrolovat limity úložiště
GET https://api.mcnavody.eu/1/limits
Úspěch application/json
{
"storageTime": 7776000,
"maxLength": 10485760,
"maxLines": 25000
}
| Pole |
Typ |
Popis |
| storageTime |
integer |
Doba v sekundách, po kterou je log uložen od posledního zobrazení. |
| maxLength |
integer |
Maximální délka souboru v bajtech. Logy přesahující tento limit budou
zkráceny.
|
| maxLines |
integer |
Maximální počet řádků. Řádky navíc budou odstraněny. |
Získat filtry
Filtry upravují obsah logu před jeho uložením. Aplikují se automaticky při vytváření nového logu na straně
serveru.
Z tohoto koncového bodu můžete získat seznam aktivních filtrů, pokud chcete aplikovat stejné filtry na
straně klienta před odesláním logu.
GET https://api.mcnavody.eu/1/filters
Úspěch application/json
[
{
"type": "trim",
"data": {}
},
{
"type": "limit-bytes",
"data": {
"limit": 10485760
}
},
{
"type": "limit-lines",
"data": {
"limit": 25000
}
},
{
"type": "regex",
"data": {
"patterns": [
{
"pattern": "(?<!version:? )(?<!([0-9]|-|\\w))([0-9]{1,3}\\.){3}[0-9]{1,3}(?![0-9])",
"modifiers": [
"i"
],
"replacement": "**.**.**.**"
}
],
"exemptions": [
{
"pattern": "^127\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$",
"modifiers": [
"i"
]
},
{
"pattern": "^0\\.0\\.0\\.0$",
"modifiers": [
"i"
]
},
{
"pattern": "^1\\.[01]\\.[01]\\.1$",
"modifiers": [
"i"
]
},
{
"pattern": "^8\\.8\\.[84]\\.[84]$",
"modifiers": [
"i"
]
}
]
}
},
{
"type": "regex",
"data": {
"patterns": [
{
"pattern": "(?<=^|\\W)((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?(?=$|\\W)",
"modifiers": [
"i"
],
"replacement": "****:****:****:****:****:****:****:****"
}
],
"exemptions": [
{
"pattern": "^[0:]+1?$",
"modifiers": [
"i"
]
}
]
}
},
{
"type": "regex",
"data": {
"patterns": [
{
"pattern": "C:\\\\Users\\\\([^\\\\]+)\\\\",
"modifiers": [
"i"
],
"replacement": "C:\\Users\\********\\"
},
{
"pattern": "C:\\\\\\\\Users\\\\\\\\([^\\\\]+)\\\\\\\\",
"modifiers": [
"i"
],
"replacement": "C:\\\\Users\\\\********\\\\"
},
{
"pattern": "C:\\\/Users\\\/([^\\\/]+)\\\/",
"modifiers": [
"i"
],
"replacement": "C:\/Users\/********\/"
},
{
"pattern": "(?<!\\w)\\\/home\\\/[^\\\/]+\\\/",
"modifiers": [
"i"
],
"replacement": "\/home\/********\/"
},
{
"pattern": "(?<!\\w)\\\/Users\\\/[^\\\/]+\\\/",
"modifiers": [
"i"
],
"replacement": "\/Users\/********\/"
},
{
"pattern": "USERNAME=\\w+",
"modifiers": [
"i"
],
"replacement": "USERNAME=********"
}
],
"exemptions": []
}
},
{
"type": "regex",
"data": {
"patterns": [
{
"pattern": "\\(Session ID is token:[^:]+\\:[^)]+\\)",
"modifiers": [
"i"
],
"replacement": "(Session ID is token:****************:****************)"
},
{
"pattern": "--accessToken [^ ]+",
"modifiers": [
"i"
],
"replacement": "--accessToken ****************:****************"
},
{
"pattern": "\"authToken\":\"[^\"]+\"",
"modifiers": [
"i"
],
"replacement": "\"authToken\":\"****************\""
},
{
"pattern": "\"refreshToken\":\"[^\"]+\"",
"modifiers": [
"i"
],
"replacement": "\"refreshToken\":\"****************\""
}
],
"exemptions": []
}
}
]
Typy filtrů
| Typ |
Popis |
| trim |
Odstraní bílé znaky ze začátku a konce obsahu logu.
|
| limit-bytes |
Omezí obsah logu na maximální počet bajtů (data.limit). Obsah přesahující tento limit bude zkrácen.
|
| limit-lines |
Omezí obsah logu na maximální počet řádků (data.limit). Řádky navíc budou odstraněny.
|
| regex |
Aplikuje nahrazení regulárních výrazů na obsah logu. Každý vzor v data.patterns bude aplikován v
pořadí a nahrazen poskytnutou náhradou, pokud shodný řetězec neodpovídá jednomu z výjimek v
data.exemptions.
|
Ujistěte se, že chyby filtrů (např. neznámé typy filtrů) zpracováváte elegantně, protože v budoucnu mohou
být přidány nové typy filtrů.