01_okoeditor_probe.php
INITEnvironment loaded — running: 01_okoeditor_probe.php

1. API — help action
HTTP
HELP RESPONSE
{
    "code": 120,
    "message": "OKO Editor API help.",
    "status": "success",
    "command": "help",
    "description": "Available commands and request syntax for okoeditor API.",
    "commands": [
        {
            "action": "help",
            "syntax": {
                "apikey": "YOUR_API_KEY",
                "task": "okoeditor",
                "answer": {
                    "action": "help"
                }
            },
            "notes": [
                "Returns this help message.",
                "No additional fields are required."
            ]
        },
        {
            "action": "update",
            "syntax": {
                "apikey": "YOUR_API_KEY",
                "task": "okoeditor",
                "answer": {
                    "page": "incydenty|notatki|zadania",
                    "id": "32-char-hex-id",
                    "action": "update",
                    "content": "new description text (optional)",
                    "title": "new title (optional)",
                    "done": "YES|NO (only for page zadania, optional)"
                }
            },
            "required_fields": [
                "page",
                "id",
                "action"
            ],
            "optional_fields": [
                "content",
                "title",
                "done"
            ],
            "rules": [
                "At least one of \"content\" or \"title\" must be provided.",
                "\"done\" is allowed only for page \"zadania\".",
                "Page \"uzytkownicy\" is read-only and cannot be updated."
            ]
        },
        {
            "action": "done",
            "syntax": {
                "apikey": "YOUR_API_KEY",
                "task": "okoeditor",
                "answer": {
                    "action": "done"
                }
            },
            "notes": [
                "Verifies if all required data edits are completed.",
                "Returns a flag only when every condition is satisfied."
            ]
        }
    ]
}
2. Web panel — login & scrape (read-only)
LOGIN PAGEHTTP 200 — 19188 bytes
LOGIN POSTHTTP 200 — 19188 bytes
RAW HTML (first 8000 chars)<!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>OKO | Ostatnie incydenty</title> <link rel="icon" type="image/svg+xml" href="/favicon-eye.svg"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@400;600;700&family=DM+Mono:wght@400;500&display=swap" rel="stylesheet"> <style> :root { --bg-primary: #f6f7fb; --bg-surface: rgba(255, 255, 255, 0.82); --bg-surface-strong: rgba(255, 255, 255, 0.94); --border: rgba(15, 23, 42, 0.14); --border-strong: rgba(15, 23, 42, 0.22); --text-primary: #050505; --text-muted: #5f6470; --accent: #111111; --accent-soft: rgba(15, 23, 42, 0.07); --shadow: 0 24px 80px rgba(15, 23, 42, 0.08); --danger: #a61b1b; --danger-soft: rgba(166, 27, 27, 0.08); } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; font-family: 'Lexend Deca', system-ui, sans-serif; color: var(--text-primary); background: radial-gradient(circle at top left, rgba(15, 23, 42, 0.06), transparent 26%), radial-gradient(circle at bottom right, rgba(15, 23, 42, 0.05), transparent 28%), radial-gradient(rgba(15, 23, 42, 0.055) 1px, transparent 1px), var(--bg-primary); background-size: auto, auto, 24px 24px, auto; } a { color: inherit; text-decoration: none; } button, input { font: inherit; } .shell { width: min(1184px, calc(100% - 48px)); margin: 24px auto; } .topbar { position: sticky; top: 16px; z-index: 10; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 24px; padding: 16px 24px; border: 1px solid var(--border); border-radius: 24px; background: rgba(255, 255, 255, 0.72); backdrop-filter: blur(22px); box-shadow: var(--shadow); } .brand { display: flex; align-items: center; gap: 16px; } .brand-mark { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border: 1px solid var(--border-strong); border-radius: 16px; background: linear-gradient(135deg, #ffffff, #eceff5); font-family: 'DM Mono', monospace; font-size: 14px; letter-spacing: 0.12em; text-transform: uppercase; } .brand-mark img { width: 30px; height: 30px; display: block; } .eyebrow { margin: 0 0 4px; font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--text-muted); } .brand-title { margin: 0; font-size: 18px; font-weight: 700; } .brand-subtitle { margin: 4px 0 0; font-size: 13px; color: var(--text-muted); } .topbar-right { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; justify-content: flex-end; } .apikey-chip, .nav-link, .logout-button { display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg-surface-strong); } .apikey-chip { gap: 12px; max-width: min(100%, 380px); padding-right: 20px; } .apikey-label { flex: 0 0 auto; font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-muted); } .apikey-value { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: 'DM Mono', monospace; font-size: 12px; filter: blur(5px); transition: filter 0.16s ease; } .apikey-chip:hover .apikey-value, .apikey-chip:focus-within .apikey-value { filter: blur(0); } .nav { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; } .nav-link, .logout-button { transition: transform 0.16s ease, border-color 0.16s ease, background 0.16s ease; } .nav-link:hover, .nav-link:focus-visible, .nav-link.active, .logout-button:hover, .logout-button:focus-visible { transform: translateY(-1px); border-color: var(--border-strong); background: #ffffff; } .logout-button { cursor: pointer; color: var(--danger); background: #fff7f7; } .hero { display: flex; flex-direction: column; gap: 20px; padding: 48px 0 24px; } .hero-title { margin: 0; max-width: 920px; font-size: clamp(28px, 4.8vw, 52px); line-height: 0.98; letter-spacing: -0.06em; } .hero-text { margin: 0; max-width: 760px; font-size: 16px; line-height: 1.7; color: var(--text-muted); } .panel-grid { display: flex; flex-direction: column; gap: 24px; padding-bottom: 48px; } .panel { border: 1px solid var(--border); border-radius: 32px; background: var(--bg-surface); backdrop-filter: blur(22px); box-shadow: var(--shadow); padding: 32px; } .section-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 24px; } .section-title { margin: 0; font-size: 24px; font-weight: 700; } .section-copy { margin: 8px 0 0; max-width: 720px; color: var(--text-muted); line-height: 1.65; font-size: 14px; } .pill { display: inline-flex; align-items: center; padding: 8px 12px; border: 1px solid var(--border); border-radius: 999px; background: #ffffff; font-family: 'DM Mono', monospace; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); } .list { display: flex; flex-direction: column; gap: 16px; } .entry-link { display: block; color: inherit; } .list-item { display: flex; align-items: center; justify-content: space-between;
KEYWORDS FOUNDincydent

DONEFinished.