Interfejs API Notiondesk umożliwia odczytywanie i zmianę identyfikacji wizualnej centrum pomocy: kolorów, czcionek, układu, nagłówka i stopki, linków, wyświetlania wyszukiwania i opinii oraz motywu. Można go używać do wdrażania tej samej identyfikacji wizualnej w kilku centrach pomocy lub do przechowywania identyfikacji wizualnej w kodzie obok reszty systemu projektowego.
| Metoda | Ścieżka | Zakres | Robi |
|---|---|---|---|
GET | /sites/{site_id}/settings/customize | read | Czyta branding |
PATCH | /sites/{site_id}/settings/customize | admin | Aktualizuje branding |
GET | /sites/{site_id}/themes | read | Wyświetla listę dostępnych motywów |
Branding jest widoczny na każdej stronie publicznej, więc jego aktualizacja wymaga zakresu admin, a nie write. Tylko klucz utworzony przez właściciela lub administratora obszaru roboczego zawiera zakres admin.
Aby zmienić markę na pulpicie nawigacyjnym, zapoznaj się z sekcją Dostosowywanie kolorów i czcionek centrum pomocy .
Czego API nie zmienia
Pozostają one dostępne tylko na pulpicie. Trasa odczytu ich nie zwraca, a aktualizacja, która nadaje nazwę jednemu z nich, odpowiada 400 validation_error:
- Niestandardowy CSS i niestandardowy JavaScript. Zobacz Dostosowywanie centrum pomocy za pomocą niestandardowego CSS ;
- loga (jasne i ciemne), loga stopki (jasne i ciemne), ikona favicon, obrazy do mediów społecznościowych i obrazy nagłówka (jasne i ciemne).
Przeczytaj swoją markę
Odpowiedź zawiera dokładnie te pola, które akceptuje aktualizacja, pod tymi samymi nazwami. Skrócony przykład:
curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/customize" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"{
"colors": {
"primary": "#2563eb",
"text": "#111827",
"link": "#2563eb",
"link_hover": "#1d4ed8",
"header": "#2563eb",
"header_text": "#ffffff",
"background": "#ffffff",
"footer_background": ""
},
"appearance": null,
"layout_collection": "column_2",
"layout_article": "column_1",
"footer_layout": "compact",
"primary_font": "Inter",
"header_links": [{"title": "Docs", "url": "https://example.com/docs"}],
"footer_links": [{"title": "Product", "links": [{"title": "Pricing", "url": "https://example.com/pricing"}]}],
"show_powered_by_badge": false,
"theme": null
}- Kolor, który nigdy nie został ustawiony, to
"".colors.darkzawiera kolory trybu ciemnego i jest nieobecny, gdy centrum pomocy nie ma ciemnej palety.
- Lista, która nic nie zawiera, ma postać
[].
themetocodebieżącego motywu lubnull.
Zaktualizuj swoją markę
Trasa odpowiada 204 No Content. Przeczytaj ponownie oznakowanie, aby potwierdzić zmianę.
curl -i -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/customize" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16" \
-H "Content-Type: application/json" \
-d '{"primary_font": "Inter", "colors": {"primary": "#2563eb"}, "header_links": [{"title": "Docs", "url": "https://example.com/docs"}]}'- Pominięte pole zachowuje swoją wartość. Wewnątrz
colorspominięty kolor również zachowuje swoją wartość.
- Lista, którą wysyłasz, zastępuje całą zapisaną listę, a
[]ją opróżnia.
- Kolory to wartości szesnastkowe
#rrggbblub"". Krótkie formy, takie jak#fff, są odrzucane.
- Wyślij wartości logiczne JSON. Wartości
0i"false"są odczytywane jakotrue, anulljakofalse.
Bezpieczne aktualizacje: przeczytaj, zmień, odeślij
Najbezpieczniejszym sposobem aktualizacji brandingu jest odesłanie odczytanych danych z zastosowanymi zmianami. Pole wysłane z aktualną wartością jest akceptowane w dowolnym planie, więc ten wzorzec nigdy nie powoduje przekroczenia limitu planu dla pól, których nie zmieniono.
Odesłane ciało nadal może zostać odrzucone w dwóch przypadkach. Popraw wartość w panelu lub pomiń to pole w ciele:
const url = "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/customize";
const headers = {
Authorization: `Bearer ${process.env.NOTIONDESK_API_KEY}`,
"nd-version": "2026-10-16",
"Content-Type": "application/json",
};
const branding = await (await fetch(url, { headers })).json();
branding.colors.primary = "#7c3aed";
branding.colors.link = "#7c3aed";
const response = await fetch(url, { method: "PATCH", headers, body: JSON.stringify(branding) });
console.log(response.status);- zapisany kolor w skróconej formie, np.
#fff;
- lista przechowywanych danych jest dłuższa niż podane poniżej limity.
Pola, które możesz zmienić
| Obszar | Pola |
|---|---|
| Zabarwienie | colors z primary, text, link, link_hover, header, header_top, header_text, header_top_text, header_link, header_link_hover, background, footer_background, footer_text, article_card_background, collection_card_background, aside_menu_text, aside_menu_text_hover, aside_menu_background_hover i dark z tymi samymi polami dla trybu ciemnego |
| Wygląd | appearance (default: light, dark lub system; strict: wartość logiczna) |
| Czcionki i układ | primary_font, secondary_font, layout_collection, layout_article (column_1, column_2 lub column_3), theme |
| Chodnikowiec | header_variant (hero lub bar), headline_size, header_background_type (color, image lub gradient), header_gradient_type, header_gradient_angle, header_gradient_colors, header_shape_type, header_links, header_link_translations, homepage_link, homepage_link_translations |
| Szukaj | search_bar_length, search_bar_alignment, search_bar_corner_style, search_bar_shadow, search_result_variant, instant_search, segmented_search_results, ai_search_enabled, ai_search_display_mode, ai_search_aside_position |
| Kolekcje | collections_style, collection_card_corner_style, collection_section_variant, collection_content_variant, collapsable_sub_categories, collapsable_sub_categories_default_state, show_collection_icons, show_collection_descriptions, show_collection_content, show_collection_authors, show_collection_articles_count |
| Artykuły | articles_style, article_card_corner_style, content_tabs_style, article_footer_variant, table_of_contents_position, show_table_of_contents, show_article_icons, show_article_descriptions, show_article_authors, show_related_articles, show_breadcrumb_icon, show_article_publish_date, show_article_page_author |
| Informacja zwrotna | show_article_feedback_form, require_email_for_article_feedback, feedback_reaction_style (emoji lub thumbs), feedback_question_label, feedback_comment_mode |
| Menu boczne | aside_menu_expansion_mode, show_aside_menu_article_icons, show_aside_menu_collection_icons |
| Stopka | footer_layout (compact, standard lub multi_level), footer_shape_type, footer_links, footer_link_translations, footer_text_translations, social_media_links, social_link_translations |
| Przycisk kontaktowy | show_contact_us_button, contact_us_custom_link, contact_us_button_position (header lub footer) |
| Odznaka | show_powered_by_badge |
Linki to obiekty z atrybutem title i url. Grupy linków stopki to obiekty z listą title i links. Tłumaczenia to obiekty z atrybutem locale i przetłumaczonymi links, groups lub value.
Limity planu
| Pola | Funkcja planu potrzebna do ich zmiany |
|---|---|
show_powered_by_badge | Usuń branding. Zobacz , jak usunąć odznakę „Powered by Notiondesk”. |
theme, header_shape_type, instant_search, segmented_search_results, ai_search_display_mode, ai_search_aside_position, show_article_publish_date, show_article_page_author, pola opinii, pola menu bocznego, pola stopki, pola linków społecznościowych i pola przycisku kontaktu | Zaawansowana personalizacja |
Zmiana jednego z nich w planie bez funkcji odpowiada na kod 403 permission_denied, komunikat podaje nazwę funkcji i nic nie zostaje zapisane.
Bez zaawansowanej personalizacji kolory stopki zachowują swoją wartość bezbłędnie. Bez włączonego chatbota AI kolory ai_search_display_mode, ai_search_aside_position i ai_search_enabled: true również zachowują swoją wartość.
Limity listy
- Każda lista może pomieścić do 100 wpisów, podobnie jak każda lista
linkslubgroupsw jej obrębie.
- Wszystkie listy łącznie mogą pomieścić do 3000 wpisów, wliczając wpisy zagnieżdżone i listy przechowywane, których nie zawiera treść.
Przycisk kontaktu włącza formularz kontaktowy
Chociaż show_contact_us_button jest true w planie z zaawansowaną personalizacją, każda aktualizacja brandingu włącza formularz kontaktowy w centrum pomocy, podobnie jak zapisanie zmian w panelu. Zapoznaj się z sekcją dotyczącą formularza kontaktowego w artykule Aktualizacja ustawień centrum pomocy za pomocą interfejsu API Notiondesk .
Wybierz motyw
Lista zawsze zawiera każdy temat w jednej odpowiedzi, w kolejności wyświetlania. Aby zastosować jeden z nich, wyślij jego code jako theme:
Ustawienie motywu wymaga zaawansowanej personalizacji. Wysłanie "theme": null pozostawia motyw bez zmian.
Błędy
curl "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/themes" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16"{
"object": "list",
"data": [
{
"code": "ocean",
"name": "Ocean",
"description": "A calm, airy theme",
"preview_image_url": "https://example.com/ocean.png",
"layout": "default"
}
],
"has_more": false,
"next_cursor": null
}curl -i -X PATCH "https://api.notiondesk.so/sites/c74781f6-1aea-4e17-ab23-bbb8b4d174b6/settings/customize" \
-H "Authorization: Bearer $NOTIONDESK_API_KEY" \
-H "nd-version: 2026-10-16" \
-H "Content-Type: application/json" \
-d '{"theme": "ocean"}'| Status | Gdy | code |
|---|---|---|
| 400 | Treść nazywa pole dostępne tylko dla pulpitu nawigacyjnego, wartość nie jest jedną z opcji pola, kolor nie jest #rrggbb, wymagana wartość to null, lista jest zbyt długa, theme nie nazywa żadnego motywu lub treść zawiera nieznane pole | validation_error |
| 403 | Klucz nie ma zakresu read lub admin w przypadku aktualizacji | insufficient_scope |
| 403 | Aktualizacja zmienia pole, którego nie obejmuje Twój plan, lub twórca klucza nie może zmienić tego centrum pomocy | permission_denied |
| 404 | Centrum pomocy nie istnieje w Twoim obszarze roboczym | not_found |
Błędy pola określają nazwę wartości, na przykład colors.primary lub footer_links[0].links. Zobacz Obsługa błędów API Notiondesk, limitów szybkości i ponownych prób .
Często zadawane pytania
Czy mogę przesłać logo za pomocą API Notiondesk?
Nie. Loga, ikony i obrazy nagłówka są ustawiane w panelu.
Czy mogę zmienić niestandardowy kod CSS lub JavaScript za pomocą interfejsu API?
Nie. Niestandardowy kod CSS i niestandardowy kod JavaScript są dostępne wyłącznie w panelu sterowania, a interfejs API nigdy ich nie odczytuje ani nie zmienia.
Dlaczego moja aktualizacja zwraca błąd 403 w polu, którego nie zmieniłem?
Wysłano wartość inną niż zapisana w polu, którego plan nie uwzględnia. Najpierw zapoznaj się z brandingiem i odeślij zapisaną wartość albo pomiń to pole.
Czy aktualizacja marki wymaga synchronizacji?
Nie. Aktualizacja sama w sobie odświeża całe centrum pomocy.