--- title: "Dashboard: dane domeny (`getDomainData`)" source: https://docs.senuto.com/modules/visibility_analysis/va-dashboard-getDomainData api: GET /api/visibility_analysis/reports/dashboard/getDomainData --- # Dashboard: dane domeny (`getDomainData`) **`GET /api/visibility_analysis/reports/dashboard/getDomainData`** Zwraca dashboardową „kartę domeny" dla danej domeny: najważniejsze kategorie, w których domena jest widoczna (każda z porównaniami `rank`, `visibility` i `top10`), technologie wykryte na stronie oraz informację, czy domena jest oznaczona jako ulubiona. --- ## Żądanie `GET` `/api/visibility_analysis/reports/dashboard/getDomainData` Parametry odczytywane są z **query stringa** (`getQuery`). Nagłówki: `Authorization: Bearer `. **Nie** wysyłaj treści JSON — jest ignorowana, a żądanie nie przechodzi walidacji i zwraca `418`. ### Struktura żądania **Podstawowy** ```jsonc filename="żądanie-podstawowe.jsonc" // Query string parameters { "domain": "zalando.pl", "fetch_mode": "topLevelDomain" } // GET /api/visibility_analysis/reports/dashboard/getDomainData?domain=zalando.pl&fetch_mode=topLevelDomain ``` **Rozszerzony** ```jsonc filename="żądanie-rozszerzone.jsonc" // Query string parameters { "domain": "zalando.pl", "fetch_mode": "topLevelDomain", "country_id": 1 } // GET /api/visibility_analysis/reports/dashboard/getDomainData?domain=zalando.pl&fetch_mode=topLevelDomain&country_id=1 ``` **cURL** ```bash curl --location --request GET 'https://api.senuto.com/api/visibility_analysis/reports/dashboard/getDomainData?domain=zalando.pl&fetch_mode=topLevelDomain' \ --header 'Authorization: Bearer $YOUR_TOKEN_HERE' ``` ### Parametry ```ts type DashboardGetDomainDataRequest = { /** * **Wymagane**. Domena lub subdomena do analizy, walidowana po stronie API. * Bez schematu/protokołu — np. `zalando.pl`. Przekazywane jako parametr **query stringa**. */ domain: string; /** * **Wymagane**. Tryb agregacji danych o widoczności. * Uwaga: `domain` NIE jest prawidłową wartością — użyj `topLevelDomain` dla całej domeny. * - `topLevelDomain` — cała domena (najczęstszy przypadek; „domena" mapuje się tutaj) * - `subdomain` — pojedyncza subdomena * - `catalog` — ścieżka/katalog * - `url` — dokładny adres URL */ fetch_mode: 'topLevelDomain' | 'subdomain' | 'catalog' | 'url'; /** * Identyfikator kraju (baza Google). Opcjonalne — gdy brak, `0` lub nieprawidłowe, * backend używa domyślnego kraju (PL). * @default 1 */ country_id?: number; } export default DashboardGetDomainDataRequest ``` > **Ostrzeżenie:** > Dozwolone wartości `fetch_mode` to dokładnie `['topLevelDomain', 'subdomain', 'catalog', 'url']` (`DataFetchMode::AVAILABLE_MODES`). Przekazanie `domain` to częsty błąd — nie mapuje się na nic i nie przechodzi walidacji. Pamiętaj, że te parametry trafiają do **query stringa**, a nie do treści żądania. > **Ostrzeżenie:** > **To jest endpoint `GET`.** Parametry odczytywane są z **query stringa** (kontroler używa `getQuery`) — wysyłaj je w URL-u, a nie w treści JSON. Wysłanie treści JSON zwraca **`418`** (`invalid_data` — wymagane `domain`/`fetch_mode`), ponieważ `getQuery` jest puste. Zarówno **`domain`**, jak i **`fetch_mode`** są **wymagane**. Wartość `fetch_mode` **`domain` nie istnieje** — użyj **`topLevelDomain`** dla całej domeny. `country_id` jest opcjonalne i domyślnie przyjmuje **PL (`1`)**, gdy nie zostanie podane. ## Odpowiedź W przypadku powodzenia otrzymujesz pojedynczy **obiekt** `data` (a nie listę — **nie ma `pagination`**). Zawiera on analizowaną `domain`, datę `updated`, tablicę `categories`, w których domena jest widoczna (każda z porównaniem `rank` / `visibility` / `top10`), tablicę wykrytych `technologies` oraz flagę `is_favourite`. Każda metryka to porównanie `recent_value` z `older_value` wraz z bezwzględną różnicą `diff` i ułamkowym `percent` (np. `0.0364` = `+3.64%`). **Skrócona** ```json filename="przykładowa-odpowiedź (skrócona)" { "success": true, "data": { "domain": "zalando.pl", "updated": "2026-06-30", "categories": [ { "id": 290, "name": "Styl i moda", "statistics": { "rank": { "recent_value": 3, "older_value": 3, "diff": 0, "percent": 0 } /* … visibility, top10 */ } } /* … more categories */ ], "technologies": [ { "name": "ActiveCampaign", "icon": "activecampaign.png" } /* … */ ], "is_favourite": false } } ``` **Pełna** ```json filename="przykładowa-odpowiedź (200)" { "success": true, "data": { "domain": "zalando.pl", "updated": "2026-06-30", "categories": [ { "id": 290, "name": "Styl i moda", "statistics": { "rank": { "recent_value": 3, "older_value": 3, "diff": 0, "percent": 0 }, "visibility": { "recent_value": 2096740, "older_value": 2020426.41, "diff": 76314, "percent": 0.0364 }, "top10": { "recent_value": 53273, "older_value": 53542, "diff": -269, "percent": -0.005 } } }, { "id": 295, "name": "Ubrania", "statistics": { "rank": { "recent_value": 3, "older_value": 3, "diff": 0, "percent": 0 }, "visibility": { "recent_value": 1550110, "older_value": 1472866.32, "diff": 77243, "percent": 0.0498 }, "top10": { "recent_value": 30106, "older_value": 30265, "diff": -159, "percent": -0.0053 } } } ], "technologies": [ { "name": "ActiveCampaign", "icon": "activecampaign.png" }, { "name": "Google Cloud", "icon": "google_cloud.svg" }, { "name": "Nginx", "icon": "Nginx.svg" } ], "is_favourite": false } } ``` ### Struktura odpowiedzi ```ts type DashboardDomainDataResponse = { /** `true` przy powodzeniu; przy błędzie `false` i koperta z `error` */ success: boolean; /** Pojedynczy obiekt — tutaj NIE ma paginacji. */ data: { /** Analizowana domena, zwrócona zwrotnie */ domain: string; /** Data ostatniego odświeżenia danych o widoczności (YYYY-MM-DD) */ updated: string; /** Najważniejsze kategorie, w których domena jest widoczna */ categories: { /** Identyfikator kategorii Senuto */ id: number; /** Nazwa kategorii */ name: string; statistics: { /** Pozycja domeny w obrębie kategorii */ rank: Metric; /** Szacowana widoczność (ruch) w kategorii */ visibility: Metric; /** Słowa kluczowe rankujące w TOP10 w kategorii */ top10: Metric; }; }[]; /** Technologie wykryte na stronie */ technologies: { name: string; /** Nazwa pliku ikony serwowanej przez Senuto */ icon: string; }[]; /** Czy domena jest oznaczona gwiazdką przez bieżące konto */ is_favourite: boolean; }; } /** Porównanie bieżącego okresu z poprzednim. `percent` to ułamek, np. 0.0364 = +3.64%. */ type Metric = { recent_value: number; older_value: number; diff: number; percent: number; } export default DashboardDomainDataResponse ``` ## Błędy ```ts type ErrorResponse = { success: false; data: { error: { /** np. invalid_data, unreachable_data, timeout, database, unknown */ type: string; message: string; /** pole -> reguła -> komunikat (dla invalid_data) */ params?: Record>; }; }; } export default ErrorResponse ``` > **Błąd:** > **`418`** zwracane jest również dla błędów walidacji — nie tylko dla limitowania zapytań. Najczęstsze przyczyny to wysłanie parametrów w **treści JSON** zamiast w query stringu (przez co `getQuery` jest puste → wymagane `domain`/`fetch_mode`) oraz pominięcie `fetch_mode`. Brak `fetch_mode` → > `{"success":false,"data":{"error":{"type":"invalid_data","params":{"fetch_mode":{"_required":"This field is required"}}}}}`. Nieprawidłowy lub brakujący token zwraca **`Unauthorized`**. ## Powiązane akcje - `getDomainData` — karta domeny: kategorie, technologie, flaga ulubionej (ta strona) - `getDomainStatistics` — kluczowe metryki domeny (TOP3 / TOP10, widoczność, pozycja, AIO) dla tej samej pary `domain` + `fetch_mode` - `getData` (Positions) — pozycje na poziomie słów kluczowych stojące za tymi agregatami (ten sam kształt `domain` + `fetch_mode`)