{
    "variable": [
        {
            "id": "baseUrl",
            "key": "baseUrl",
            "type": "string",
            "name": "string",
            "value": "https:\/\/crawler.deklaracja-dostepnosci.info\/\/api"
        }
    ],
    "info": {
        "name": "Crawler API - Deklaracje Dost\u0119pno\u015bci",
        "_postman_id": "3dce50da-cc21-4417-9ab7-c81a5236bbaa",
        "description": "API do wyszukiwania deklaracji dost\u0119pno\u015bci na stronach instytucji publicznych.",
        "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json",
        "version": "1.0.0"
    },
    "item": [
        {
            "name": "Crawler API",
            "description": "",
            "item": [
                {
                    "name": "Wyszukiwanie deklaracji dost\u0119pno\u015bci",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/find-declaration",
                            "query": [
                                {
                                    "key": "url",
                                    "value": "https%3A%2F%2Fexample.gov.pl",
                                    "description": "URL strony do przeszukania. Musi zaczyna\u0107 si\u0119 od http:\/\/ lub https:\/\/.",
                                    "disabled": false
                                },
                                {
                                    "key": "domain_id",
                                    "value": "123",
                                    "description": "ID domeny w systemie. U\u017cywane do archiwizacji wynik\u00f3w.",
                                    "disabled": false
                                },
                                {
                                    "key": "timeout",
                                    "value": "60",
                                    "description": "Timeout w sekundach dla pobierania stron (5-120). Default: 30.",
                                    "disabled": false
                                },
                                {
                                    "key": "max_depth",
                                    "value": "2",
                                    "description": "G\u0142\u0119boko\u015b\u0107 przeszukiwania podstron (1-2). Default: 2.",
                                    "disabled": false
                                },
                                {
                                    "key": "use[0]",
                                    "value": "ai",
                                    "description": "Metody do u\u017cycia podczas wyszukiwania. Mo\u017cliwe warto\u015bci: render_js (renderowanie JavaScript przez Playwright), ai (analiza przez AI), smart_fetch (inteligentne pobieranie z fallback).",
                                    "disabled": false
                                },
                                {
                                    "key": "use[1]",
                                    "value": "render_js",
                                    "description": "Metody do u\u017cycia podczas wyszukiwania. Mo\u017cliwe warto\u015bci: render_js (renderowanie JavaScript przez Playwright), ai (analiza przez AI), smart_fetch (inteligentne pobieranie z fallback).",
                                    "disabled": false
                                },
                                {
                                    "key": "follow_redirects",
                                    "value": "1",
                                    "description": "Czy \u015bledzi\u0107 przekierowania HTTP. Default: true.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/find-declaration?url=https%3A%2F%2Fexample.gov.pl&domain_id=123&timeout=60&max_depth=2&use[0]=ai&use[1]=render_js&follow_redirects=1"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"http:\\\/\\\/\",\"domain_id\":31,\"timeout\":14,\"follow_redirects\":true,\"use\":[\"render_js\"],\"_\":4,\"exclude\":[\"meta\"],\"save_to_temp_file\":true,\"type\":\"page\",\"max_depth\":1}"
                        },
                        "description": "Endpoint automatycznie wyszukuje deklaracj\u0119 dost\u0119pno\u015bci na podanej stronie internetowej.\nWykorzystuje wielopoziomow\u0105 strategi\u0119 wyszukiwania:\n1. Pattern matching - szukanie wed\u0142ug wzorcow tekstowych i link\u00f3w\n2. AI analysis - analiza tre\u015bci przez model j\u0119zykowy (opcjonalne)\n3. JavaScript rendering - renderowanie stron dynamicznych przez Playwright (opcjonalne)",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"success\",\"page\":{\"url\":\"https:\/\/example.gov.pl\",\"title\":\"Przyk\u0142adowa Instytucja\",\"links_count\":42,\"content_size\":15234},\"dd\":{\"found\":true,\"url\":\"https:\/\/example.gov.pl\/deklaracja-dostepnosci\",\"title\":\"Deklaracja dost\u0119pno\u015bci\",\"score\":85,\"method\":\"pattern\",\"search_level\":1,\"validation\":{\"is_valid\":true,\"has_required_elements\":true,\"wcag_version\":\"2.1\",\"conformance_level\":\"AA\"}}}",
                            "name": "Znaleziono deklaracj\u0119"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"success\",\"page\":{\"url\":\"https:\/\/example.gov.pl\",\"title\":\"Przyk\u0142adowa Instytucja\",\"links_count\":42,\"content_size\":15234},\"dd\":{\"found\":false,\"url\":null,\"search_level\":2,\"pages_checked\":5,\"method\":\"exhaustive\"}}",
                            "name": "Nie znaleziono deklaracji"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"success\",\n  \"page\": {\n    \"url\": \"https:\/\/example.gov.pl\",\n    \"final_url\": \"https:\/\/example.gov.pl\",\n    \"title\": \"Urz\u0105d Przyk\u0142adowy - Strona g\u0142\u00f3wna\",\n    \"links_count\": 47,\n    \"content_size\": 18432,\n    \"fetch_time\": 0.842,\n    \"rendered_with\": \"http\",\n    \"meta\": {\n      \"description\": \"Oficjalna strona Urz\u0119du Przyk\u0142adowego\",\n      \"keywords\": \"urz\u0105d, instytucja publiczna, administracja\"\n    }\n  },\n  \"dd\": {\n    \"found\": true,\n    \"url\": \"https:\/\/example.gov.pl\/deklaracja-dostepnosci\",\n    \"title\": \"Deklaracja dost\u0119pno\u015bci\",\n    \"score\": 92,\n    \"method\": \"pattern\",\n    \"search_level\": 1,\n    \"pages_checked\": 1,\n    \"validation\": {\n      \"is_valid\": true,\n      \"has_required_elements\": true,\n      \"wcag_version\": \"2.1\",\n      \"conformance_level\": \"AA\",\n      \"elements_found\": [\n        \"status zgodno\u015bci\",\n        \"data sporz\u0105dzenia\",\n        \"dane kontaktowe\",\n        \"procedura skargowa\"\n      ]\n    },\n    \"metadata\": {\n      \"publication_date\": \"2024-01-15\",\n      \"last_update\": \"2024-09-01\",\n      \"entity_name\": \"Urz\u0105d Przyk\u0142adowy\",\n      \"contact_email\": \"dostepnosc@example.gov.pl\"\n    }\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"success\",\n  \"page\": {\n    \"url\": \"https:\/\/example.com\",\n    \"final_url\": \"https:\/\/example.com\",\n    \"title\": \"Przyk\u0142adowa Firma - Strona g\u0142\u00f3wna\",\n    \"links_count\": 32,\n    \"content_size\": 12845,\n    \"fetch_time\": 0.523,\n    \"rendered_with\": \"http\",\n    \"meta\": {\n      \"description\": \"Strona firmowa Example\",\n      \"keywords\": \"firma, us\u0142ugi, przyk\u0142ad\"\n    }\n  },\n  \"dd\": {\n    \"found\": false,\n    \"url\": null,\n    \"search_level\": 2,\n    \"pages_checked\": 8,\n    \"method\": \"exhaustive\",\n    \"searched_urls\": [\n      \"https:\/\/example.com\",\n      \"https:\/\/example.com\/kontakt\",\n      \"https:\/\/example.com\/o-nas\",\n      \"https:\/\/example.com\/polityka-prywatnosci\",\n      \"https:\/\/example.com\/regulamin\",\n      \"https:\/\/example.com\/dostepnosc\",\n      \"https:\/\/example.com\/accessibility\",\n      \"https:\/\/example.com\/deklaracja\"\n    ],\n    \"potential_matches\": [],\n    \"reason\": \"Nie znaleziono strony zawieraj\u0105cej deklaracj\u0119 dost\u0119pno\u015bci ani link\u00f3w pasuj\u0105cych do wzorc\u00f3w\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"url\":[\"URL jest wymagany\",\"URL musi zaczyna\u0107 si\u0119 od http:\/\/ lub https:\/\/\"]}}",
                            "name": "B\u0142\u0105d walidacji"
                        },
                        {
                            "header": [],
                            "code": 500,
                            "body": "{\"code\":500,\"status\":\"error\",\"message\":\"Wyst\u0105pi\u0142 b\u0142\u0105d podczas przetwarzania \u017c\u0105dania\"}",
                            "name": "B\u0142\u0105d serwera"
                        }
                    ]
                },
                {
                    "name": "Pobieranie zawarto\u015bci strony",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/fetch-page",
                            "query": [
                                {
                                    "key": "url",
                                    "value": "https%3A%2F%2Fexample.gov.pl%2Fabout",
                                    "description": "URL strony do pobrania.",
                                    "disabled": false
                                },
                                {
                                    "key": "timeout",
                                    "value": "30",
                                    "description": "Timeout w sekundach dla pobierania strony (5-120). Default: 30.",
                                    "disabled": false
                                },
                                {
                                    "key": "use[0]",
                                    "value": "render_js",
                                    "description": "Metody renderowania strony. Mo\u017cliwe warto\u015bci: render_js (renderowanie JavaScript przez Playwright).",
                                    "disabled": false
                                },
                                {
                                    "key": "follow_redirects",
                                    "value": "1",
                                    "description": "Czy \u015bledzi\u0107 przekierowania HTTP. Default: true.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/fetch-page?url=https%3A%2F%2Fexample.gov.pl%2Fabout&timeout=30&use[0]=render_js&follow_redirects=1"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"https:\\\/\\\/\",\"domain_id\":42,\"timeout\":7,\"follow_redirects\":true,\"use\":[\"render_js\"],\"_\":10,\"exclude\":[\"links\"],\"save_to_temp_file\":false,\"type\":\"page\"}"
                        },
                        "description": "Pobiera i analizuje zawarto\u015b\u0107 strony internetowej z opcjonalnym renderowaniem JavaScript.\nZwraca pe\u0142n\u0105 tre\u015b\u0107 strony wraz z wyodr\u0119bnionymi linkami i metadanymi.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"success\",\"page\":{\"url\":\"https:\/\/example.gov.pl\/about\",\"final_url\":\"https:\/\/example.gov.pl\/o-nas\",\"title\":\"O nas - Przyk\u0142adowa Instytucja\",\"content\":\"<html>...<\/html>\",\"links\":[{\"url\":\"https:\/\/example.gov.pl\/kontakt\",\"text\":\"Kontakt\",\"title\":\"Skontaktuj si\u0119 z nami\"},{\"url\":\"https:\/\/example.gov.pl\/deklaracja-dostepnosci\",\"text\":\"Deklaracja dost\u0119pno\u015bci\"}],\"meta\":{\"description\":\"Informacje o naszej instytucji\",\"keywords\":\"instytucja publiczna, urz\u0105d\"},\"rendered_with\":\"playwright\",\"fetch_time\":1.234}}",
                            "name": "Sukces"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"success\",\n  \"page\": {\n    \"url\": \"https:\/\/example.gov.pl\/o-nas\",\n    \"final_url\": \"https:\/\/example.gov.pl\/o-nas\",\n    \"title\": \"O nas - Urz\u0105d Przyk\u0142adowy\",\n    \"content\": \"<!DOCTYPE html>\\n<html lang=\\\"pl\\\">\\n<head>\\n    <meta charset=\\\"UTF-8\\\">\\n    <title>O nas - Urz\u0105d Przyk\u0142adowy<\/title>\\n    <meta name=\\\"description\\\" content=\\\"Informacje o Urz\u0119dzie Przyk\u0142adowym\\\">\\n<\/head>\\n<body>\\n    <header>\\n        <h1>Urz\u0105d Przyk\u0142adowy<\/h1>\\n        <nav>\\n            <ul>\\n                <li><a href=\\\"\/\\\">Strona g\u0142\u00f3wna<\/a><\/li>\\n                <li><a href=\\\"\/o-nas\\\">O nas<\/a><\/li>\\n                <li><a href=\\\"\/kontakt\\\">Kontakt<\/a><\/li>\\n                <li><a href=\\\"\/deklaracja-dostepnosci\\\">Deklaracja dost\u0119pno\u015bci<\/a><\/li>\\n            <\/ul>\\n        <\/nav>\\n    <\/header>\\n    <main>\\n        <h2>O Urz\u0119dzie<\/h2>\\n        <p>Urz\u0105d Przyk\u0142adowy jest jednostk\u0105 administracji publicznej...<\/p>\\n    <\/main>\\n    <footer>\\n        <p>&copy; 2024 Urz\u0105d Przyk\u0142adowy<\/p>\\n    <\/footer>\\n<\/body>\\n<\/html>\",\n    \"links\": [\n      {\n        \"url\": \"https:\/\/example.gov.pl\/\",\n        \"text\": \"Strona g\u0142\u00f3wna\",\n        \"title\": null,\n        \"alt\": null\n      },\n      {\n        \"url\": \"https:\/\/example.gov.pl\/o-nas\",\n        \"text\": \"O nas\",\n        \"title\": null,\n        \"alt\": null\n      },\n      {\n        \"url\": \"https:\/\/example.gov.pl\/kontakt\",\n        \"text\": \"Kontakt\",\n        \"title\": null,\n        \"alt\": null\n      },\n      {\n        \"url\": \"https:\/\/example.gov.pl\/deklaracja-dostepnosci\",\n        \"text\": \"Deklaracja dost\u0119pno\u015bci\",\n        \"title\": null,\n        \"alt\": null\n      }\n    ],\n    \"meta\": {\n      \"description\": \"Informacje o Urz\u0119dzie Przyk\u0142adowym\",\n      \"charset\": \"UTF-8\",\n      \"viewport\": \"width=device-width, initial-scale=1.0\"\n    },\n    \"rendered_with\": \"playwright\",\n    \"fetch_time\": 2.156,\n    \"content_type\": \"text\/html; charset=UTF-8\",\n    \"status_code\": 200\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"code\":404,\"status\":\"error\",\"message\":\"Nie mo\u017cna pobra\u0107 strony: 404 Not Found\"}",
                            "name": "Strona nie istnieje"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"url\":[\"URL jest wymagany\"]}}",
                            "name": "B\u0142\u0105d walidacji"
                        },
                        {
                            "header": [],
                            "code": 500,
                            "body": "{\"code\":500,\"status\":\"error\",\"message\":\"Wyst\u0105pi\u0142 b\u0142\u0105d podczas pobierania strony\"}",
                            "name": "B\u0142\u0105d serwera"
                        }
                    ]
                },
                {
                    "name": "Analiza dost\u0119pno\u015bci (WCAG\/A11y) strony",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/scan-accessibility",
                            "query": [
                                {
                                    "key": "url",
                                    "value": "https%3A%2F%2Fexample.gov.pl",
                                    "description": "URL strony do analizy.",
                                    "disabled": false
                                },
                                {
                                    "key": "domain_id",
                                    "value": "123",
                                    "description": "ID domeny w systemie (opcjonalny).",
                                    "disabled": false
                                },
                                {
                                    "key": "use[0]",
                                    "value": "smart_fetch",
                                    "description": "Metody pobierania strony i analiz: smart_fetch (Playwright), ai (analiza AI narusze\u0144).",
                                    "disabled": false
                                },
                                {
                                    "key": "use[1]",
                                    "value": "ai",
                                    "description": "Metody pobierania strony i analiz: smart_fetch (Playwright), ai (analiza AI narusze\u0144).",
                                    "disabled": false
                                },
                                {
                                    "key": "timeout",
                                    "value": "30",
                                    "description": "Timeout w sekundach (5-120). Default: 30.",
                                    "disabled": false
                                },
                                {
                                    "key": "include[]",
                                    "value": "",
                                    "description": "Kt\u00f3re wyniki zwr\u00f3ci\u0107: violations, passes, incomplete, inapplicable. Default: violations.",
                                    "disabled": true
                                },
                                {
                                    "key": "tags[]",
                                    "value": "",
                                    "description": "Filtry WCAG: wcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa, best-practice.",
                                    "disabled": true
                                },
                                {
                                    "key": "save_to_temp_file",
                                    "value": "1",
                                    "description": "Zapisz content do pliku tymczasowego. Default: true.",
                                    "disabled": false
                                },
                                {
                                    "key": "type",
                                    "value": "page",
                                    "description": "Typ strony (page, hp, link). Default: page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/scan-accessibility?url=https%3A%2F%2Fexample.gov.pl&domain_id=123&use[0]=smart_fetch&use[1]=ai&timeout=30&include[]=&tags[]=&save_to_temp_file=1&type=page"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"http:\\\/\\\/\",\"domain_id\":17,\"timeout\":23,\"follow_redirects\":true,\"use\":[\"render_js\"],\"_\":18,\"exclude\":[\"content\"],\"save_to_temp_file\":true,\"type\":\"hp\",\"include\":[\"passes\"],\"tags\":[\"best-practice\"]}"
                        },
                        "description": "Endpoint analizuje dost\u0119pno\u015b\u0107 cyfrow\u0105 strony internetowej za pomoc\u0105 axe-core.\nZwraca naruszenia WCAG, testy kt\u00f3re przesz\u0142y oraz elementy wymagaj\u0105ce manualnej weryfikacji.\nAnaliza wykonywana jest zawsze w przegl\u0105darce (Playwright) dla maksymalnej dok\u0142adno\u015bci.\n\n## Metody HTTP\n- **GET** - dla prostych zapyta\u0144 z URL (query params)\n- **POST** - dla zaawansowanych zapyta\u0144 (body params)\n\n## Parametry array\n- Array syntax: `?tags[]=wcag2aa&tags[]=wcag21aa` lub `?tags=wcag2aa` (auto-normalizacja)\n- W POST: `{\"tags\": [\"wcag2aa\", \"wcag21aa\"]}`",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"success\",\"page\":{\"url\":\"https:\/\/example.gov.pl\",\"final_url\":\"https:\/\/example.gov.pl\",\"code\":200,\"content_type\":\"text\/html\",\"speed\":1.234,\"a11y\":{\"success\":true,\"results\":{\"violations\":[{\"id\":\"color-contrast\",\"impact\":\"serious\",\"description\":\"Elements must have sufficient color contrast\"}]},\"url\":\"https:\/\/example.gov.pl\",\"timestamp\":\"2025-09-30T12:00:00Z\"}}}",
                            "name": "Znaleziono naruszenia"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"success\",\"page\":{\"url\":\"https:\/\/example.gov.pl\",\"code\":200,\"a11y\":{\"success\":true,\"results\":{\"violations\":[]},\"url\":\"https:\/\/example.gov.pl\"}}}",
                            "name": "Brak narusze\u0144"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"success\",\n  \"page\": {\n    \"domain_id\": null,\n    \"url\": \"https:\/\/example.gov.pl\",\n    \"final_url\": \"https:\/\/example.gov.pl\",\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"content\": null,\n    \"content_type\": \"text\/html; charset=UTF-8\",\n    \"content_size\": 15234,\n    \"content_temp_file\": \"\/tmp\/crawler_html_abc123\",\n    \"content_archive_file\": null,\n    \"links\": [],\n    \"speed\": 1.234,\n    \"error\": null,\n    \"ip\": \"93.184.216.34\",\n    \"score\": null,\n    \"screenshot\": null,\n    \"client\": \"Laravel\/Http\",\n    \"type\": \"page\",\n    \"dd\": {\n      \"content\": null,\n      \"raport\": null\n    },\n    \"a11y\": {\n      \"success\": true,\n      \"results\": {\n        \"violations\": [\n          {\n            \"id\": \"html-has-lang\",\n            \"impact\": \"serious\",\n            \"tags\": [\n              \"cat.language\",\n              \"wcag2a\",\n              \"wcag311\",\n              \"ACT\"\n            ],\n            \"description\": \"Ensure every HTML document has a lang attribute\",\n            \"help\": \"<html> element must have a lang attribute\",\n            \"helpUrl\": \"https:\/\/dequeuniversity.com\/rules\/axe\/4.10\/html-has-lang?application=playwright\",\n            \"nodes\": [\n              {\n                \"html\": \"<html>\",\n                \"target\": [\n                  \"html\"\n                ],\n                \"failureSummary\": \"Fix any of the following:\\n  The <html> element does not have a lang attribute\"\n              }\n            ]\n          },\n          {\n            \"id\": \"image-alt\",\n            \"impact\": \"critical\",\n            \"tags\": [\n              \"cat.text-alternatives\",\n              \"wcag2a\",\n              \"wcag111\",\n              \"section508\",\n              \"ACT\"\n            ],\n            \"description\": \"Ensure <img> elements have alternative text or a role of none or presentation\",\n            \"help\": \"Images must have alternative text\",\n            \"helpUrl\": \"https:\/\/dequeuniversity.com\/rules\/axe\/4.10\/image-alt?application=playwright\",\n            \"nodes\": [\n              {\n                \"html\": \"<img src=\\\"logo.jpg\\\">\",\n                \"target\": [\n                  \"img\"\n                ],\n                \"failureSummary\": \"Fix any of the following:\\n  Element does not have an alt attribute\"\n              }\n            ]\n          },\n          {\n            \"id\": \"color-contrast\",\n            \"impact\": \"serious\",\n            \"tags\": [\n              \"cat.color\",\n              \"wcag2aa\",\n              \"wcag143\"\n            ],\n            \"description\": \"Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds\",\n            \"help\": \"Elements must meet minimum color contrast ratio thresholds\",\n            \"helpUrl\": \"https:\/\/dequeuniversity.com\/rules\/axe\/4.10\/color-contrast?application=playwright\",\n            \"nodes\": [\n              {\n                \"html\": \"<a href=\\\"\/contact\\\" style=\\\"color: #ccc; background: #fff;\\\">Kontakt<\/a>\",\n                \"target\": [\n                  \"a[href=\\\"\/contact\\\"]\"\n                ],\n                \"failureSummary\": \"Fix any of the following:\\n  Element has insufficient color contrast of 2.5 (foreground color: #cccccc, background color: #ffffff, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1\"\n              }\n            ]\n          }\n        ]\n      },\n      \"url\": \"https:\/\/example.gov.pl\",\n      \"timestamp\": \"2025-09-30T18:00:00.000Z\",\n      \"testEngine\": {\n        \"name\": \"axe-core\",\n        \"version\": \"4.10.3\"\n      },\n      \"ai_analysis\": {\n        \"analyzed_violations\": [\n          {\n            \"violation_id\": \"html-has-lang\",\n            \"human_description\": \"Strona nie posiada atrybutu 'lang' w elemencie <html>, kt\u00f3ry informuje przegl\u0105darki i technologie asystuj\u0105ce o j\u0119zyku strony. U\u017cytkownicy korzystaj\u0105cy z czytnik\u00f3w ekranu mog\u0105 mie\u0107 problem z poprawnym odczytaniem tre\u015bci.\",\n            \"severity\": \"powa\u017cny\",\n            \"affected_elements\": 1,\n            \"recommendation\": \"Dodaj atrybut lang do tagu <html>, np. <html lang='pl'> dla strony w j\u0119zyku polskim. To pomo\u017ce czytnikowi ekranu wybra\u0107 odpowiedni\u0105 wymow\u0119 i akcent.\"\n          },\n          {\n            \"violation_id\": \"color-contrast\",\n            \"human_description\": \"Link ma zbyt niski kontrast mi\u0119dzy tekstem a t\u0142em (2.5:1), podczas gdy minimum dla WCAG 2.0 AA to 4.5:1. U\u017cytkownicy z problemami ze wzrokiem mog\u0105 mie\u0107 trudno\u015b\u0107 z odczytaniem tego linku.\",\n            \"severity\": \"powa\u017cny\",\n            \"affected_elements\": 1,\n            \"recommendation\": \"Zmie\u0144 kolor tekstu z #ccc (jasnoszary) na ciemniejszy, aby osi\u0105gn\u0105\u0107 kontrast minimum 4.5:1. Mo\u017cesz u\u017cy\u0107 narz\u0119dzi online do sprawdzenia kontrastu kolor\u00f3w.\"\n          }\n        ],\n        \"total_analyzed\": 2,\n        \"analysis_timestamp\": \"2025-09-30T18:05:00.000Z\"\n      }\n    }\n  }\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"success\",\n  \"page\": {\n    \"domain_id\": null,\n    \"url\": \"https:\/\/example.gov.pl\",\n    \"final_url\": \"https:\/\/example.gov.pl\",\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"content\": null,\n    \"content_type\": \"text\/html; charset=UTF-8\",\n    \"content_size\": 12456,\n    \"content_temp_file\": \"\/tmp\/crawler_html_xyz789\",\n    \"content_archive_file\": null,\n    \"links\": [],\n    \"speed\": 0.987,\n    \"error\": null,\n    \"ip\": \"93.184.216.34\",\n    \"score\": null,\n    \"screenshot\": null,\n    \"client\": \"Laravel\/Http\",\n    \"type\": \"page\",\n    \"dd\": {\n      \"content\": null,\n      \"raport\": null\n    },\n    \"a11y\": {\n      \"success\": true,\n      \"results\": {\n        \"violations\": []\n      },\n      \"url\": \"https:\/\/example.gov.pl\",\n      \"timestamp\": \"2025-09-30T18:00:00.000Z\",\n      \"testEngine\": {\n        \"name\": \"axe-core\",\n        \"version\": \"4.10.3\"\n      }\n    }\n  }\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"success\":false,\"message\":\"Validation errors\",\"errors\":{\"url\":[\"URL jest wymagany\"]}}",
                            "name": "B\u0142\u0105d walidacji"
                        },
                        {
                            "header": [],
                            "code": 500,
                            "body": "{\"code\":500,\"status\":\"error\",\"message\":\"Failed to analyze accessibility\",\"error\":\"Playwright not available\"}",
                            "name": "B\u0142\u0105d serwera"
                        }
                    ]
                },
                {
                    "name": "Zbieranie link\u00f3w ze strony (asynchroniczne)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/collect-links",
                            "query": [
                                {
                                    "key": "url",
                                    "value": "https%3A%2F%2Fexample.gov.pl",
                                    "description": "URL strony do skanowania.",
                                    "disabled": false
                                },
                                {
                                    "key": "max_depth",
                                    "value": "3",
                                    "description": "G\u0142\u0119boko\u015b\u0107 skanowania (1-10). Default: 2.",
                                    "disabled": false
                                },
                                {
                                    "key": "collect",
                                    "value": "external",
                                    "description": "Zakres link\u00f3w do zebrania: internal (ta sama domena), external (inne domeny), all (wszystkie). Default: internal.",
                                    "disabled": false
                                },
                                {
                                    "key": "type",
                                    "value": "attachment",
                                    "description": "Typ zasob\u00f3w do zapisywania: html (tylko text\/*), attachment (tylko za\u0142\u0105czniki), all (wszystkie). Default: html.",
                                    "disabled": false
                                },
                                {
                                    "key": "max_execution_time",
                                    "value": "600",
                                    "description": "Maksymalny czas wykonania w sekundach (0 = brak limitu). Default: 300.",
                                    "disabled": false
                                },
                                {
                                    "key": "use[0]",
                                    "value": "render_js",
                                    "description": "Strategie pobierania: smart_fetch, render_js.",
                                    "disabled": false
                                },
                                {
                                    "key": "timeout",
                                    "value": "60",
                                    "description": "Timeout pojedynczego requesta w sekundach. Default: 30.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/collect-links?url=https%3A%2F%2Fexample.gov.pl&max_depth=3&collect=external&type=attachment&max_execution_time=600&use[0]=render_js&timeout=60"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"https:\\\/\\\/\",\"domain_id\":20,\"timeout\":12,\"follow_redirects\":false,\"use\":[\"ai\"],\"_\":8,\"exclude\":[\"content\"],\"save_to_temp_file\":false,\"type\":\"all\",\"max_depth\":2,\"collect\":\"external\",\"max_execution_time\":15}"
                        },
                        "description": "Endpoint inicjalizuje asynchroniczne zadanie zbierania link\u00f3w ze strony.\nZwraca job_id i URL do sprawdzania statusu zadania.\n\nCrawler zawsze przechodzi przez wszystkie linki, r\u00f3\u017cnica parametru 'type' polega tylko na tym,\nkt\u00f3re zasoby s\u0105 zapisywane do wynik\u00f3w (filtrowanie po Content-Type z HTTP response).",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"job_id\":\"abc123def456\",\"status\":\"pending\",\"params\":{\"url\":\"https:\/\/example.gov.pl\",\"max_depth\":3,\"collect\":\"external\",\"type\":\"html\",\"max_execution_time\":300,\"use\":[\"render_js\"],\"timeout\":30},\"status_url\":\"\/api\/collect-links\/status\/abc123def456\",\"created_at\":\"2025-10-01 10:00:00\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Sprawdzanie statusu zadania zbierania link\u00f3w",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/collect-links\/status\/:jobId",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/collect-links\/status\/:jobId",
                            "variable": [
                                {
                                    "id": "jobId",
                                    "key": "jobId",
                                    "value": "abc123def456",
                                    "description": "ID zadania."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"job_id\":\"abc123def456\",\"status\":\"pending\",\"params\":{\"url\":\"https:\/\/example.gov.pl\",\"max_depth\":3},\"created_at\":\"2025-10-01 10:00:00\"}",
                            "name": "Pending"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"job_id\":\"abc123def456\",\"status\":\"completed\",\"params\":{\"url\":\"https:\/\/example.gov.pl\",\"max_depth\":3},\"result\":{\"total_links\":234,\"links\":[\"https:\/\/external.com\",\"https:\/\/external2.com\"]},\"completed_at\":\"2025-10-01 10:02:15\",\"execution_time\":135.2}",
                            "name": "Completed"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"job_id\":\"abc123def456\",\"status\":\"failed\",\"params\":{\"url\":\"https:\/\/example.gov.pl\"},\"error\":\"Timeout exceeded\",\"failed_at\":\"2025-10-01 10:05:00\",\"execution_time\":300.0}",
                            "name": "Failed"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Job not found\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Lista wszystkich job\u00f3w asynchronicznych",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/jobs",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "completed",
                                    "description": "Filtr statusu: pending, completed, failed, all. Default: all.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/jobs?status=completed"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"pending\"}"
                        },
                        "description": "Endpoint zwraca list\u0119 wszystkich job\u00f3w (collect-links) z mo\u017cliwo\u015bci\u0105 filtrowania po statusie.\nJoby s\u0105 sortowane po dacie utworzenia (najnowsze pierwsze).",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"total\":156,\"jobs\":[{\"job_id\":\"abc123-def456\",\"status\":\"completed\",\"status_url\":\"\/api\/collect-links\/status\/abc123-def456\",\"params\":{\"url\":\"https:\/\/wolka.pl\",\"max_depth\":3,\"collect\":\"external\",\"max_execution_time\":300,\"use\":[\"render_js\"],\"timeout\":30,\"created_at\":\"2025-10-02 09:42:41\"},\"completed_at\":\"2025-10-02 09:42:55\",\"execution_time\":14.2}]}",
                            "name": "Lista wszystkich job\u00f3w"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"total\":3,\"jobs\":[{\"job_id\":\"xyz789\",\"status\":\"pending\",\"status_url\":\"\/api\/collect-links\/status\/xyz789\",\"params\":{\"url\":\"https:\/\/example.com\",\"max_depth\":2,\"collect\":\"internal\",\"max_execution_time\":300,\"use\":[],\"timeout\":30,\"created_at\":\"2025-10-02 12:30:15\"}}]}",
                            "name": "Tylko joby pending"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"status\":[\"Dozwolone warto\u015bci dla status to: pending, completed, failed, all\"]}}",
                            "name": "B\u0142\u0105d walidacji"
                        }
                    ]
                },
                {
                    "name": "Wyszukiwanie reprezentatywnych pr\u00f3bek stron dla audytu WCAG",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/find-samples",
                            "query": [
                                {
                                    "key": "url",
                                    "value": "https%3A%2F%2Fexample.gov.pl",
                                    "description": "URL strony g\u0142\u00f3wnej do przeszukania.",
                                    "disabled": false
                                },
                                {
                                    "key": "sample_types[0]",
                                    "value": "contact_form",
                                    "description": "Typy pr\u00f3bek do wyszukania. Je\u015bli nie podano, u\u017cywane s\u0105 domy\u015blne.",
                                    "disabled": false
                                },
                                {
                                    "key": "sample_types[1]",
                                    "value": "article",
                                    "description": "Typy pr\u00f3bek do wyszukania. Je\u015bli nie podano, u\u017cywane s\u0105 domy\u015blne.",
                                    "disabled": false
                                },
                                {
                                    "key": "sample_types[2]",
                                    "value": "gallery",
                                    "description": "Typy pr\u00f3bek do wyszukania. Je\u015bli nie podano, u\u017cywane s\u0105 domy\u015blne.",
                                    "disabled": false
                                },
                                {
                                    "key": "max_depth",
                                    "value": "3",
                                    "description": "G\u0142\u0119boko\u015b\u0107 przeszukiwania (1-10). Default: 2.",
                                    "disabled": false
                                },
                                {
                                    "key": "max_execution_time",
                                    "value": "600",
                                    "description": "Maksymalny czas wykonania w sekundach (0-1800). Default: 600.",
                                    "disabled": false
                                },
                                {
                                    "key": "timeout",
                                    "value": "30",
                                    "description": "Timeout w sekundach dla pobierania pojedynczej strony (5-120). Default: 30.",
                                    "disabled": false
                                },
                                {
                                    "key": "use[0]",
                                    "value": "ai",
                                    "description": "Strategie pobierania. Mo\u017cliwe warto\u015bci: render_js, smart_fetch, ai.",
                                    "disabled": false
                                },
                                {
                                    "key": "domain_id",
                                    "value": "123",
                                    "description": "ID domeny w systemie.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/find-samples?url=https%3A%2F%2Fexample.gov.pl&sample_types[0]=contact_form&sample_types[1]=article&sample_types[2]=gallery&max_depth=3&max_execution_time=600&timeout=30&use[0]=ai&domain_id=123"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"https:\\\/\\\/\",\"domain_id\":14,\"timeout\":13,\"follow_redirects\":true,\"use\":[\"ai\"],\"_\":17,\"exclude\":[\"links\"],\"save_to_temp_file\":true,\"type\":\"link\",\"sample_types\":[\"video_audio\"],\"max_depth\":2,\"max_execution_time\":600,\"use[]\":[\"ai\",\"render_js\"],\"sample_types[]\":[\"home\",\"contact_form\",\"search\"]}"
                        },
                        "description": "Automatycznie wyszukuje reprezentatywne pr\u00f3bki stron (samples) dla audytu dost\u0119pno\u015bci cyfrowej\nzgodnie z metodologi\u0105 WCAG-EM. Wykorzystuje AI do inteligentnej identyfikacji typ\u00f3w stron.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"success\",\"job_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"status_url\":\"https:\/\/api.example.com\/api\/find-samples\/status\/550e8400-e29b-41d4-a716-446655440000\",\"params\":{\"url\":\"https:\/\/example.gov.pl\",\"sample_types\":[\"homepage\",\"contact_form\",\"article\"],\"max_depth\":2,\"max_execution_time\":600}}",
                            "name": "Job zainicjalizowany"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"success\",\n  \"message\": \"Job find-samples zosta\u0142 utworzony i uruchomiony\",\n  \"job_id\": \"9d4e8c2a-1b3f-4d5e-8f9a-2c3d4e5f6a7b\",\n  \"status_url\": \"\/api\/find-samples\/status\/9d4e8c2a-1b3f-4d5e-8f9a-2c3d4e5f6a7b\",\n  \"data\": {\n    \"url\": \"https:\/\/example.gov.pl\",\n    \"sample_types\": [\n      \"home\",\n      \"contact_form\",\n      \"search\",\n      \"sitemap\",\n      \"login\"\n    ],\n    \"max_depth\": 2,\n    \"max_execution_time\": 600,\n    \"use\": [\n      \"ai\",\n      \"render_js\"\n    ]\n  }\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"sample_types\":[\"Nieznany typ pr\u00f3bki\"]}}",
                            "name": "B\u0142\u0105d walidacji"
                        }
                    ]
                },
                {
                    "name": "Status zadania find-samples",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/find-samples\/status\/:jobId",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/find-samples\/status\/:jobId",
                            "variable": [
                                {
                                    "id": "jobId",
                                    "key": "jobId",
                                    "value": "sed",
                                    "description": ""
                                },
                                {
                                    "id": "job_id",
                                    "key": "job_id",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "UUID zadania."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Sprawdza status zadania wyszukiwania pr\u00f3bek stron. Zwraca progress i znalezione pr\u00f3bki.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"processing\",\"job_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"progress\":{\"total\":10,\"found\":3,\"remaining\":7},\"samples\":{\"homepage\":{\"url\":\"https:\/\/example.gov.pl\",\"found\":true,\"confidence\":\"high\",\"reason\":\"Strona g\u0142\u00f3wna\"},\"contact_form\":{\"url\":\"https:\/\/example.gov.pl\/kontakt\",\"found\":true,\"confidence\":\"high\",\"reason\":\"Formularz kontaktowy\"},\"article\":{\"url\":null,\"found\":false}}}",
                            "name": "Job w trakcie"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"completed\",\"job_id\":\"550e8400-e29b-41d4-a716-446655440000\",\"progress\":{\"total\":10,\"found\":8,\"remaining\":2},\"samples\":{}}",
                            "name": "Job zako\u0144czony"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"success\",\n  \"job_id\": \"9d4e8c2a-1b3f-4d5e-8f9a-2c3d4e5f6a7b\",\n  \"job_status\": \"completed\",\n  \"progress\": {\n    \"current\": 12,\n    \"total\": 12,\n    \"percentage\": 100\n  },\n  \"samples\": {\n    \"home\": {\n      \"found\": true,\n      \"url\": \"https:\/\/example.gov.pl\",\n      \"title\": \"Urz\u0105d Przyk\u0142adowy - Strona g\u0142\u00f3wna\",\n      \"confidence\": \"high\",\n      \"screenshot\": \"\/api\/find-samples\/9d4e8c2a-1b3f-4d5e-8f9a-2c3d4e5f6a7b\/screenshot\/home\"\n    },\n    \"contact_form\": {\n      \"found\": true,\n      \"url\": \"https:\/\/example.gov.pl\/kontakt\",\n      \"title\": \"Kontakt - Urz\u0105d Przyk\u0142adowy\",\n      \"confidence\": \"high\",\n      \"screenshot\": \"\/api\/find-samples\/9d4e8c2a-1b3f-4d5e-8f9a-2c3d4e5f6a7b\/screenshot\/contact_form\"\n    },\n    \"search\": {\n      \"found\": true,\n      \"url\": \"https:\/\/example.gov.pl\/wyszukiwarka\",\n      \"title\": \"Wyszukiwarka - Urz\u0105d Przyk\u0142adowy\",\n      \"confidence\": \"high\",\n      \"screenshot\": \"\/api\/find-samples\/9d4e8c2a-1b3f-4d5e-8f9a-2c3d4e5f6a7b\/screenshot\/search\"\n    },\n    \"sitemap\": {\n      \"found\": true,\n      \"url\": \"https:\/\/example.gov.pl\/mapa-strony\",\n      \"title\": \"Mapa strony - Urz\u0105d Przyk\u0142adowy\",\n      \"confidence\": \"medium\",\n      \"screenshot\": \"\/api\/find-samples\/9d4e8c2a-1b3f-4d5e-8f9a-2c3d4e5f6a7b\/screenshot\/sitemap\"\n    },\n    \"login\": {\n      \"found\": false,\n      \"url\": null,\n      \"title\": null,\n      \"confidence\": null,\n      \"screenshot\": null\n    }\n  },\n  \"stats\": {\n    \"found_count\": 4,\n    \"not_found_count\": 1,\n    \"pages_analyzed\": 12,\n    \"execution_time\": 45.3\n  }\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"code\":404,\"status\":\"error\",\"message\":\"Job not found\"}",
                            "name": "Job nie znaleziony"
                        }
                    ]
                },
                {
                    "name": "Pobierz screenshot pr\u00f3bki",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/find-samples\/:jobId\/screenshot\/:sampleType",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/find-samples\/:jobId\/screenshot\/:sampleType",
                            "variable": [
                                {
                                    "id": "jobId",
                                    "key": "jobId",
                                    "value": "in",
                                    "description": ""
                                },
                                {
                                    "id": "sampleType",
                                    "key": "sampleType",
                                    "value": "consequatur",
                                    "description": ""
                                },
                                {
                                    "id": "job_id",
                                    "key": "job_id",
                                    "value": "9d4e8c72-1234-5678-9abc-def012345678",
                                    "description": "UUID joba."
                                },
                                {
                                    "id": "sample_type",
                                    "key": "sample_type",
                                    "value": "contact_form",
                                    "description": "Typ pr\u00f3bki (homepage, contact_form, etc.)."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Zwraca plik PNG ze screenshotem znalezionej pr\u00f3bki.\nEndpoint publiczny - nie wymaga autentykacji (job_id = UUID, trudny do zgadni\u0119cia).",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "[binary PNG file]",
                            "name": "Screenshot znaleziony"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"code\":404,\"status\":\"error\",\"message\":\"Screenshot not found\"}",
                            "name": "Screenshot nie istnieje"
                        }
                    ]
                },
                {
                    "name": "Pobierz dost\u0119pne typy pr\u00f3bek z konfiguracji",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/sample-types",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/sample-types"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 404,
                            "body": "{\n    \"message\": \"The route api\/sample-types could not be found.\"\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "A11Y FastScan",
            "description": "",
            "item": [
                {
                    "name": "A11Y FASTSCAN - Comprehensive accessibility audit",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/a11y-fastscan",
                            "query": [
                                {
                                    "key": "url",
                                    "value": "https%3A%2F%2Fwolka.pl",
                                    "description": "Starting URL (usually homepage).",
                                    "disabled": false
                                },
                                {
                                    "key": "use[][]",
                                    "value": "",
                                    "description": "Methods: render_js (Playwright + screenshots), ai (AI analysis).",
                                    "disabled": true
                                },
                                {
                                    "key": "sample_types[][]",
                                    "value": "",
                                    "description": "Sample types to scan (default: 8 key types).",
                                    "disabled": true
                                },
                                {
                                    "key": "max_depth",
                                    "value": "3",
                                    "description": "Crawling depth for find-samples (1-10).",
                                    "disabled": false
                                },
                                {
                                    "key": "max_execution_time",
                                    "value": "600",
                                    "description": "Max execution time in seconds (0-1800).",
                                    "disabled": false
                                },
                                {
                                    "key": "timeout",
                                    "value": "30",
                                    "description": "Timeout per page in seconds.",
                                    "disabled": false
                                },
                                {
                                    "key": "domain_id",
                                    "value": "1",
                                    "description": "Domain ID for archiving.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/a11y-fastscan?url=https%3A%2F%2Fwolka.pl&use[][]=&sample_types[][]=&max_depth=3&max_execution_time=600&timeout=30&domain_id=1"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"url\":\"https:\\\/\\\/wolka.pl\",\"domain_id\":1,\"timeout\":30,\"follow_redirects\":true,\"use\":[\"smart_fetch\"],\"_\":18,\"sample_types\":[\"article\"],\"max_depth\":3,\"max_execution_time\":600,\"use[]\":[\"ai\",\"render_js\"],\"sample_types[]\":[\"homepage\",\"contact_form\",\"article\"]}"
                        },
                        "description": "Comprehensive accessibility audit combining:\n1. find-samples - finding representative page samples\n2. scan-accessibility - axe-core analysis per sample\n3. AI aggregate - violations aggregation + change scale assessment",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\": 200, \"status\": \"success\", \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\", \"status_url\": \"https:\/\/crawler.deklaracja-dostepnosci.info\/api\/a11y-fastscan\/status\/550e8400-e29b-41d4-a716-446655440000\"}",
                            "name": "Job created"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"success\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"status_url\": \"https:\/\/crawler.deklaracja-dostepnosci.info\/api\/a11y-fastscan\/status\/550e8400-e29b-41d4-a716-446655440000\",\n  \"message\": \"Audyt dost\u0119pno\u015bci zosta\u0142 zainicjowany. U\u017cyj status_url aby monitorowa\u0107 post\u0119p.\"\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"code\": 422, \"status\": \"error\", \"message\": \"Invalid parameters\", \"errors\": {\"url\": [\"The url field is required.\"]}}",
                            "name": "Validation error"
                        }
                    ]
                },
                {
                    "name": "Get a11y-fastscan job status with partial\/full report",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/a11y-fastscan\/status\/:jobId",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/a11y-fastscan\/status\/:jobId",
                            "variable": [
                                {
                                    "id": "jobId",
                                    "key": "jobId",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "Job UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\": 200, \"status\": \"completed\", \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\", \"progress\": {\"phase\": \"completed\", \"current_step\": 4, \"total_steps\": 4, \"percentage\": 100}, \"report\": {\"summary\": {}, \"violations_by_type\": [], \"pages_analyzed\": []}}",
                            "name": "Job completed"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\": 200, \"status\": \"processing\", \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\", \"progress\": {\"phase\": \"scanning_samples\", \"current_step\": 2, \"total_steps\": 4, \"percentage\": 50, \"current_sample\": 3, \"total_samples\": 8}}",
                            "name": "Job processing"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"processing\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"progress\": {\n    \"phase\": \"scanning_samples\",\n    \"current_step\": 2,\n    \"total_steps\": 4,\n    \"percentage\": 50,\n    \"current_sample\": 3,\n    \"total_samples\": 8,\n    \"sample_type\": \"contact_form\",\n    \"sample_url\": \"https:\/\/example.com\/kontakt\"\n  },\n  \"message\": \"Audyt w trakcie realizacji. Aktualna faza: skanowanie pr\u00f3bek.\"\n}\n",
                            "name": "Job processing"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"code\": 200,\n  \"status\": \"completed\",\n  \"job_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"progress\": {\n    \"phase\": \"completed\",\n    \"current_step\": 4,\n    \"total_steps\": 4,\n    \"percentage\": 100\n  },\n  \"report\": {\n    \"summary\": {\n      \"total_pages_scanned\": 8,\n      \"pages_with_violations\": 7,\n      \"total_violations\": 45,\n      \"unique_violation_types\": 12,\n      \"severity_distribution\": {\n        \"critical\": 3,\n        \"serious\": 15,\n        \"moderate\": 20,\n        \"minor\": 7\n      },\n      \"change_scale\": \"moderate\",\n      \"estimated_effort\": \"Umiarkowany - wymagane zmiany w HTML i stylach CSS. Cz\u0119\u015b\u0107 problem\u00f3w mo\u017cna rozwi\u0105za\u0107 globalnie poprzez aktualizacj\u0119 styl\u00f3w, inne wymagaj\u0105 modyfikacji struktury formularzy i nawigacji.\"\n    },\n    \"violations_by_type\": [\n      {\n        \"violation_id\": \"color-contrast\",\n        \"priority\": \"HIGH\",\n        \"severity\": \"serious\",\n        \"total_occurrences\": 12,\n        \"pages_affected\": [\n          \"https:\/\/example.com\/\",\n          \"https:\/\/example.com\/kontakt\",\n          \"https:\/\/example.com\/aktualnosci\",\n          \"https:\/\/example.com\/uslugi\",\n          \"https:\/\/example.com\/o-nas\",\n          \"https:\/\/example.com\/galeria\"\n        ],\n        \"is_systemic\": true,\n        \"sample_types_affected\": [\n          \"homepage\",\n          \"contact_form\",\n          \"article\",\n          \"gallery\",\n          \"accessibility_statement\",\n          \"search_form\"\n        ],\n        \"description\": \"Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds\",\n        \"help\": \"Elements must meet minimum color contrast ratio thresholds\",\n        \"help_url\": \"https:\/\/dequeuniversity.com\/rules\/axe\/4.10\/color-contrast?application=playwright\",\n        \"human_description\": \"Zbyt niski kontrast mi\u0119dzy tekstem a t\u0142em utrudnia czytanie tre\u015bci, szczeg\u00f3lnie osobom z problemami ze wzrokiem. Problem wyst\u0119puje w wielu miejscach na stronie, g\u0142\u00f3wnie w nawigacji g\u0142\u00f3wnej i stopce.\",\n        \"recommendation\": \"Zmie\u0144 kolory w globalnych stylach CSS tak, aby kontrast mi\u0119dzy tekstem a t\u0142em wynosi\u0142 co najmniej 4.5:1 dla normalnego tekstu i 3:1 dla du\u017cego tekstu (18px bold lub 24px+). Sprawd\u017a kolory za pomoc\u0105 narz\u0119dzia kontrastu WCAG.\",\n        \"fix_effort\": \"minor\"\n      },\n      {\n        \"violation_id\": \"label\",\n        \"priority\": \"HIGH\",\n        \"severity\": \"serious\",\n        \"total_occurrences\": 8,\n        \"pages_affected\": [\n          \"https:\/\/example.com\/kontakt\",\n          \"https:\/\/example.com\/szukaj\"\n        ],\n        \"is_systemic\": false,\n        \"sample_types_affected\": [\n          \"contact_form\",\n          \"search_form\"\n        ],\n        \"description\": \"Ensure every form element has a label\",\n        \"help\": \"Form elements must have labels\",\n        \"help_url\": \"https:\/\/dequeuniversity.com\/rules\/axe\/4.10\/label?application=playwright\",\n        \"human_description\": \"Pola formularzy nie maj\u0105 etykiet <label> powi\u0105zanych z polami <input>. To uniemo\u017cliwia czytnikowi ekranu prawid\u0142owe og\u0142oszenie pola i utrudnia wype\u0142nienie formularza osobom niewidomym.\",\n        \"recommendation\": \"Dla ka\u017cdego pola <input>, <select>, <textarea> dodaj odpowiedni\u0105 etykiet\u0119 <label> z atrybutem 'for' wskazuj\u0105cym na 'id' pola. Alternatywnie u\u017cyj aria-label lub aria-labelledby dla p\u00f3l bez widocznej etykiety.\",\n        \"fix_effort\": \"moderate\"\n      },\n      {\n        \"violation_id\": \"landmark-one-main\",\n        \"priority\": \"MEDIUM\",\n        \"severity\": \"moderate\",\n        \"total_occurrences\": 8,\n        \"pages_affected\": [\n          \"https:\/\/example.com\/\",\n          \"https:\/\/example.com\/kontakt\",\n          \"https:\/\/example.com\/aktualnosci\",\n          \"https:\/\/example.com\/uslugi\",\n          \"https:\/\/example.com\/o-nas\",\n          \"https:\/\/example.com\/galeria\",\n          \"https:\/\/example.com\/deklaracja-dostepnosci\",\n          \"https:\/\/example.com\/szukaj\"\n        ],\n        \"is_systemic\": true,\n        \"sample_types_affected\": [\n          \"homepage\",\n          \"contact_form\",\n          \"article\",\n          \"gallery\",\n          \"accessibility_statement\",\n          \"search_form\",\n          \"data_table\",\n          \"interactive_elements\"\n        ],\n        \"description\": \"Ensure every page has a main landmark\",\n        \"help\": \"Document must have one main landmark\",\n        \"help_url\": \"https:\/\/dequeuniversity.com\/rules\/axe\/4.10\/landmark-one-main?application=playwright\",\n        \"human_description\": \"Strony nie maj\u0105 oznaczonego g\u0142\u00f3wnego obszaru tre\u015bci (landmark <main>). To utrudnia osobom u\u017cywaj\u0105cym czytnik\u00f3w ekranu szybk\u0105 nawigacj\u0119 do g\u0142\u00f3wnej tre\u015bci strony.\",\n        \"recommendation\": \"Obuduj g\u0142\u00f3wn\u0105 tre\u015b\u0107 ka\u017cdej strony w tag <main> lub dodaj role='main' do g\u0142\u00f3wnego kontenera. Upewnij si\u0119, \u017ce jest tylko jeden <main> na stronie i nie zawiera powtarzalnych element\u00f3w jak nawigacja czy stopka.\",\n        \"fix_effort\": \"minor\"\n      },\n      {\n        \"violation_id\": \"region\",\n        \"priority\": \"LOW\",\n        \"severity\": \"moderate\",\n        \"total_occurrences\": 5,\n        \"pages_affected\": [\n          \"https:\/\/example.com\/\",\n          \"https:\/\/example.com\/aktualnosci\",\n          \"https:\/\/example.com\/galeria\"\n        ],\n        \"is_systemic\": false,\n        \"sample_types_affected\": [\n          \"homepage\",\n          \"article\",\n          \"gallery\"\n        ],\n        \"description\": \"Ensure all page content is contained by landmarks\",\n        \"help\": \"All page content should be contained by landmarks\",\n        \"help_url\": \"https:\/\/dequeuniversity.com\/rules\/axe\/4.10\/region?application=playwright\",\n        \"human_description\": \"Cz\u0119\u015b\u0107 tre\u015bci strony znajduje si\u0119 poza semantycznymi obszarami (landmarks) jak <main>, <nav>, <aside>. To utrudnia nawigacj\u0119 czytnik\u00f3w ekranu.\",\n        \"recommendation\": \"Upewnij si\u0119, \u017ce ca\u0142a widoczna tre\u015b\u0107 jest zawarta w odpowiednich landmarkach HTML5: <header>, <nav>, <main>, <aside>, <footer> lub u\u017cyj odpowiednich r\u00f3l ARIA.\",\n        \"fix_effort\": \"minor\"\n      }\n    ],\n    \"pages_analyzed\": [\n      {\n        \"sample_type\": \"homepage\",\n        \"url\": \"https:\/\/example.com\/\",\n        \"violations_count\": 8,\n        \"screenshot\": \"\/api\/find-samples\/550e8400-e29b-41d4-a716-446655440000\/screenshot\/homepage\"\n      },\n      {\n        \"sample_type\": \"contact_form\",\n        \"url\": \"https:\/\/example.com\/kontakt\",\n        \"violations_count\": 12,\n        \"screenshot\": \"\/api\/find-samples\/550e8400-e29b-41d4-a716-446655440000\/screenshot\/contact_form\"\n      },\n      {\n        \"sample_type\": \"article\",\n        \"url\": \"https:\/\/example.com\/aktualnosci\/otwarcie-nowego-oddzialu\",\n        \"violations_count\": 5,\n        \"screenshot\": \"\/api\/find-samples\/550e8400-e29b-41d4-a716-446655440000\/screenshot\/article\"\n      },\n      {\n        \"sample_type\": \"gallery\",\n        \"url\": \"https:\/\/example.com\/galeria\",\n        \"violations_count\": 6,\n        \"screenshot\": \"\/api\/find-samples\/550e8400-e29b-41d4-a716-446655440000\/screenshot\/gallery\"\n      },\n      {\n        \"sample_type\": \"accessibility_statement\",\n        \"url\": \"https:\/\/example.com\/deklaracja-dostepnosci\",\n        \"violations_count\": 3,\n        \"screenshot\": \"\/api\/find-samples\/550e8400-e29b-41d4-a716-446655440000\/screenshot\/accessibility_statement\"\n      },\n      {\n        \"sample_type\": \"search_form\",\n        \"url\": \"https:\/\/example.com\/szukaj\",\n        \"violations_count\": 7,\n        \"screenshot\": \"\/api\/find-samples\/550e8400-e29b-41d4-a716-446655440000\/screenshot\/search_form\"\n      },\n      {\n        \"sample_type\": \"data_table\",\n        \"url\": \"https:\/\/example.com\/uslugi\",\n        \"violations_count\": 2,\n        \"screenshot\": null\n      },\n      {\n        \"sample_type\": \"interactive_elements\",\n        \"url\": \"https:\/\/example.com\/o-nas\",\n        \"violations_count\": 2,\n        \"screenshot\": null\n      }\n    ]\n  },\n  \"message\": \"Audyt zako\u0144czony pomy\u015blnie. Znaleziono 12 typ\u00f3w narusze\u0144 na 8 stronach.\"\n}\n",
                            "name": "Job completed"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"code\": 404, \"status\": \"error\", \"message\": \"Job not found\"}",
                            "name": "Job not found"
                        }
                    ]
                },
                {
                    "name": "Get full a11y-fastscan report (completed jobs only)",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/a11y-fastscan\/:jobId\/report",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/a11y-fastscan\/:jobId\/report",
                            "variable": [
                                {
                                    "id": "jobId",
                                    "key": "jobId",
                                    "value": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "Job UUID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"summary\": {\"total_pages_scanned\": 8, \"pages_with_violations\": 7, \"total_violations\": 45, \"change_scale\": \"moderate\"}, \"violations_by_type\": [], \"pages_analyzed\": []}",
                            "name": "Report available"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"code\": 404, \"status\": \"error\", \"message\": \"Report not found - job may not be completed yet\"}",
                            "name": "Report not found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Jobs Management",
            "description": "",
            "item": [
                {
                    "name": "Awaryjne zatrzymanie (kill) dzia\u0142aj\u0105cego joba asynchronicznego",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/jobs\/:job_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/jobs\/:job_id",
                            "variable": [
                                {
                                    "id": "job_id",
                                    "key": "job_id",
                                    "value": "9d4e8c72-1234-5678-9abc-def012345678",
                                    "description": "UUID joba do zabicia."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"job_id\":\"0e690040-cdf8-3f95-96e3-0e7705a645d4\"}"
                        },
                        "description": "Endpoint do killowania d\u0142ugo dzia\u0142aj\u0105cych proces\u00f3w collect-links i find-samples.\nZabija proces PHP artisan przez PID i oznacza job jako failed z reason=\"killed\".",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"code\":200,\"status\":\"failed\",\"reason\":\"killed\",\"message\":\"Job 9d4e8c72-1234-5678-9abc-def012345678 has been terminated\",\"job_id\":\"9d4e8c72-1234-5678-9abc-def012345678\"}",
                            "name": "Job zosta\u0142 zabity"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"code\":404,\"status\":\"error\",\"message\":\"Process not found or already terminated\",\"job_id\":\"9d4e8c72-1234-5678-9abc-def012345678\"}",
                            "name": "Proces nie istnieje"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"code\":404,\"status\":\"error\",\"message\":\"Job not found\",\"job_id\":\"9d4e8c72-1234-5678-9abc-def012345678\"}",
                            "name": "Job nie znaleziony"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"job_id\":[\"Job ID musi by\u0107 w formacie UUID\"]}}",
                            "name": "B\u0142\u0105d walidacji"
                        }
                    ]
                }
            ]
        }
    ],
    "auth": {
        "type": "noauth"
    }
}