climatememory programiści

Dokumentacja API

API Pogoda

Globalne prognozy do 15 dni z ECMWF i krajowych modeli wysokiej rozdzielczości, skorygowane do rzeczywistej wysokości twojego terenu. Jeden scope — meteo — pokrywa całą tę stronę.

Prognoza#

GEThttps://api.climatememory.com/v1/forecastscope: meteo1 kredyt

Prognoza godzinowa i dobowa dla dowolnej współrzędnej.

Parametry

ParametrTypDomyślnieOpis
latfloatSzerokość geograficzna, −90 do 90. Wymagane.
lonfloatDługość geograficzna, −180 do 180. Wymagane.
daysint7Przyjmowane jest 1–16, ale serwowany horyzont to 15 dni, więc 16 zwraca 15. Dni 11–15 to tendencja, a nie prognoza — zobacz niżej.
elevationfloat (m)Rzeczywista wysokość twojego punktu. Podaj ją, a temperatura zostanie skorygowana o różnicę względem wygładzonego terenu modelu. Na pogórzu zwykle warta 1–3 °C.
timezoneIANA zoneUTCStrefa, na której cięte są agregaty dobowe, oraz przesunięcie, które niesie każdy znacznik czasu.
hourlycsvallPodzbiór pól godzinowych, żeby zmniejszyć odpowiedź. Nazwy są te z dokumentacji pól.
include_dailybooltrueDołącz blok dobowy.

Odpowiedź

{
  "latitude": 48.85,
  "longitude": 2.35,
  "timezone": "Europe/Paris",
  "grid": {
    "latitude": 48.85, "longitude": 2.35,
    "distance_km": 0.42, "resolution_km": 1.3
  },
  "elevation": {
    "applied": true,
    "model_elevation_m": 91.0,
    "location_elevation_m": 113,
    "temperature_offset_c": -0.14
  },
  "source": {
    "model": "mf_arome",
    "model_run": "20260801T00Z",
    "reference_time": "2026-08-01T00:00:00+00:00",
    "data_age_hours": 3.95,
    "stale": false,
    "attribution": "Data: Météo-France (etalab-2.0)"
  },
  "hourly": {
    "time": ["2026-08-01T00:00:00+02:00", "..."],
    "temperature_2m": [18.1, 17.9, 17.6, "..."],
    "apparent_temperature": [17.4, "..."],
    "weather_code": [0, 1, 2, "..."]
  },
  "daily": {
    "date": ["2026-08-01", "..."],
    "temperature_2m_max": [26.6, "..."],
    "temperature_2m_min": [16.2, "..."],
    "precipitation_sum": [0.0, "..."],
    "uv_index_max": [7.6, "..."],
    "sunrise": ["2026-08-01T06:24:00+02:00", "..."],
    "sunset": ["2026-08-01T21:24:00+02:00", "..."],
    "daylight_hours": [15.0, "..."]
  }
}

Blok grid warto przeczytać. distance_km mówi, jak daleko od punktu, o który pytałeś, leży środek komórki modelu, a resolution_km — jak zgrubna jest ta komórka. Razem mówią, jak dosłownie brać te liczby: 0,4 km od komórki 1,3 km to twoja ulica; 12 km od komórki 28 km to twój region.

Blok elevation mówi, co zrobiono, a nie o co poproszono. applied: false znaczy, że korekty nie było — albo nie podałeś elevation, albo teren modelu już się zgadzał. Nigdy nie zakładaj, że korekta się wykonała, bo o nią poprosiłeś.

Zmniejszanie odpowiedzi

Pełny blok godzinowy na 15 dni to około 32 pól × 360 godzin. Jeśli rysujesz trzy z nich, poproś o trzy:

GET /v1/forecast?lat=48.85&lon=2.35&days=3
    &hourly=temperature_2m,precipitation,weather_code
    &include_daily=false

Ta sama cena — kosztuje odczyt archiwum, a nie serializacja — ale dziesięć razy mniej bajtów i zauważalnie szybsze parsowanie na telefonie.

Prognoza dla miasta#

GEThttps://api.climatememory.com/v1/forecast/city/{country}/{slug}scope: meteo1 kredyt

Ta sama odpowiedź, rozwiązana przez katalog miast.

Gdzie tylko możesz, wybieraj to zamiast surowych współrzędnych. Katalog dostarcza dwóch rzeczy, których współrzędna nie potrafi: prawdziwej wysokości miasta, dzięki czemu korekta terenu działa bez podawania jej przez ciebie, oraz jego strefy czasowej, dzięki czemu agregaty dobowe są cięte na właściwym dniu lokalnym.

GET /v1/forecast/city/dz/alger      # slug francuski
GET /v1/forecast/city/dz/algiers    # slug angielski — to samo miasto
GET /v1/forecast/city/fr/paris

country to kod ISO-3166-1 alfa-2, małymi literami. slug nie zważa na znaki diakrytyczne: bejaia znajduje Béjaïa. Nieznany slug zwraca 404 city_not_found z tablicą suggestions — pokaż ją zamiast ślepego zaułka.

Wszystkie parametry zapytania z /v1/forecast nadal obowiązują poza lat, lon i elevation, które dostarcza katalog. Podanie timezone nadpisuje strefę miasta, co prawie nigdy nie jest tym, czego chcesz.

Nie zaszywaj w kodzie slugów, które zgadłeś. Rozwiąż nazwę raz przez /v1/geocode, zapisz zwrócony kraj i slug, i używaj ich. Geokodowanie nie kosztuje kredytów, więc zrobienie tego porządnie jest darmowe.

Warunki bieżące#

GEThttps://api.climatememory.com/v1/currentscope: meteo1 kredyt

Warunki w tej chwili dla współrzędnej, interpolowane między krokami modelu.

GEThttps://api.climatememory.com/v1/current/city/{country}/{slug}scope: meteo1 kredyt

To samo, przez katalog miast.

Temperatura, wilgotność, wiatr i ciśnienie są interpolowane liniowo do bieżącej chwili, między dwoma krokami modelu, które ją obejmują.

Opad nie jest interpolowany i jest to celowe. Godzinowa wartość opadu to suma z przedziału, a nie odczyt w danej chwili. Interpolowanie jej wymyśliłoby deszcz w minucie, w której model umieścił go w innej godzinie. Zamiast tego dostajesz wartość kroku, który tę chwilę zawiera — prawdziwą liczbę o prawdziwym przedziale.

Użyj tego do pokazania stanu „teraz”. Do czegokolwiek, co będziesz porównywać w czasie, użyj /v1/forecast i odczytaj interesującą cię godzinę: szereg jest stabilny, podczas gdy teraz przesuwa się pod tobą między dwoma wywołaniami.

Dokumentacja pól#

GEThttps://api.climatememory.com/v1/fieldsklucz niepotrzebny0 kredytów

Ta sama tabela w JSON-ie, z jednostkami i informacją, które pola są domyślne. Klucz niepotrzebny.

Pola godzinowe

21 z nich wraca domyślnie. Reszta jest twoja na życzenie — wymień je w hourly=, po przecinku — i są wstrzymane ze względu na koszt, a nie z wątpliwości: każde zapisane pole to osobny skompresowany odczyt, więc domyślna odpowiedź niosąca wszystkie 45 kazałaby każdemu płacić za tych nielicznych, którzy chcą grubości pokrywy śnieżnej.

GET /v1/forecast?lat=45.19&lon=5.72&hourly=temperature_2m,snow_line_altitude,soil_temperature_8cm

Pole, którego dany model nie publikuje, wraca jako null na odcinku prognozy tego modelu, zamiast znikać z odpowiedzi — więc łańcuch, który zaczyna się na AROME i biegnie dalej na ICON-EU, zwraca visibility przez cały czas, puste przez pierwsze 51 godzin. Nieznana nazwa pola to 400 unknown_field, z podpowiedzianym najbliższym dopasowaniem; kiedyś była po cichu ignorowana.

PoleJednostkaUwagi
temperature_2m°CSkorygowana o teren, gdy wysokość jest znana
apparent_temperature°CWzór Steadmana; poprawny w całym zakresie
relative_humidity_2m%
dewpoint_2m°C
precipitationmmSuma z kroku, po odkumulowaniu
precipitation_probability_proxy%Heurystyka, nie prawdopodobieństwo z ensemble'u. Zobacz niżej.
weather_codeWMOKod ikony, progowany na mm/h, a nie na sumie kroku
cloud_cover%
wind_speed_10mm/s
wind_direction_10m°Kierunek, z którego wieje wiatr
wind_gust_10mm/sMaksimum z kroku
pressure_mslhPaSprowadzone do poziomu morza
surface_pressurehPaNa wysokości lokalizacji
shortwave_radiationW/m²Średnia z kroku
uv_index0–11+Szacowany. Zobacz niżej.
capeJ/kgPotencjał burzowy
is_day0/1
visibilitymTylko ICON-EU i ICON-D2
cloud_cover_low%Tylko modele ICON
cloud_cover_mid%Tylko modele ICON
cloud_cover_high%Tylko modele ICON
precipitation_typeWMOTylko ECMWF Poproś o nie w hourly=
snow_depthmTo, co leży, a nie to, co spada. Tylko ICON Poproś o nie w hourly=
snow_water_equivalentmmIle pokrywa daje po stopieniu. Tylko ICON Poproś o nie w hourly=
snow_line_altitudemZobacz śnieg. ICON-EU i ICON-D2 Poproś o nie w hourly=
freezing_level_altitudemIzoterma 0 °C. Tylko ICON Poproś o nie w hourly=
soil_temperature_0cm°CPowierzchnia. Tylko ICON globalny i ICON-EU Poproś o nie w hourly=
soil_temperature_8cm°CStrefa korzeniowa, warstwa 7–28 cm. Tylko ICON globalny i ICON-EU Poproś o nie w hourly=
shortwave_radiation_directW/m²Składowa bezpośrednia. Tylko ICON Poproś o nie w hourly=
shortwave_radiation_diffuseW/m²Składowa rozproszona. Tylko ICON Poproś o nie w hourly=
solar_elevation°Liczone ze znacznika czasu i współrzędnej Poproś o nie w hourly=
solar_azimuth°Liczone ze znacznika czasu i współrzędnej Poproś o nie w hourly=
temperature_2m_max°CZ kroku, tam gdzie model to publikuje Poproś o nie w hourly=
temperature_2m_min°CZ kroku, tam gdzie model to publikuje Poproś o nie w hourly=
skin_temperature°CPowierzchnia gruntu, nie powietrze Poproś o nie w hourly=
heat_index°CUS NWS. Poniżej 27 °C zwraca zwykłą temperaturę Poproś o nie w hourly=
wind_chill°CEnvironment Canada. Powyżej 10 °C zwraca zwykłą temperaturę Poproś o nie w hourly=
wind_speed_100mm/sZastosowania w energetyce wiatrowej Poproś o nie w hourly=
wind_direction_100m°Poproś o nie w hourly=
wind_beaufort0–12Poproś o nie w hourly=
cloud_cover_octas0–8Poproś o nie w hourly=
snowfallmmRównoważnik wodny, a nie grubość świeżego śniegu Poproś o nie w hourly=
total_column_water_vapourkg/m²Poproś o nie w hourly=
pressure_tendencyhPaPoproś o nie w hourly=
weather_descriptiontekstPoproś o nie w hourly=

Pola dobowe

date, temperature_2m_max, temperature_2m_min, temperature_2m_mean, precipitation_sum, wind_speed_max, wind_gust_max, shortwave_radiation_sum (MJ/m²), uv_index_max, sunrise, sunset, daylight_hours, weather_code.

Agregowane na lokalnych dniach kalendarzowych, a nie na UTC. Niepełny dzień na którymkolwiek krańcu zakresu jest pomijany, zamiast być raportowanym z mylącym maksimum — więc żądanie na 7 dni może zgodnie z prawdą zwrócić 6 wierszy dobowych.

Dwa pola są szacunkami i wolimy to powiedzieć, niż pozwolić ci to odkryć.

uv_index wywodzi się z wysokości Słońca i promieniowania szerokopasmowego, a nie z kolumny ozonu. Dokładny mniej więcej do ±1 jednostki — tyle, ile trzeba na „załóż czapkę”, ale nie na twierdzenie medyczne.

precipitation_probability_proxy to oszacowanie, a nie prawdopodobieństwo. Model deterministyczny nie ma rozrzutu, z którego można je wyprowadzić. Nazywa się _proxy, żeby nikt nie pomylił go z produktem ensemble'owym serwowanym przez /v1/probability, który jest prawdziwą częstością z 51 członków.

Łączy dwa człony. Pierwszy pyta, czy deszcz z komórki dociera do twojego punktu: zapisane natężenie jest średnią po całej komórce siatki, więc przy 28 km — 780 km² — słaba średnia może być realnym przelotnym opadem nad jej małą częścią. Przyjęcie podsiatkowego rozkładu natężeń jako Weibulla, o kształcie zadanym rozmiarem komórki i własną średnią modelu, daje w postaci zamkniętej szansę, że punkt w komórce przekroczy 0,1 mm/h. Drugi człon ogranicza to, co może rościć sobie zachmurzone, bliskie nasycenia niebo tam, gdzie model nie umieszcza w komórce deszczu wcale. Oba są następnie skalowane tym, na ile przebieg zasługuje na wiarę przy danym wyprzedzeniu — dlatego ten sam opad czyta się niżej dziewiątego dnia niż pierwszego.

W konsekwencji to samo miejsce może czytać się różnie w dwóch modelach i tak powinno: komórka 2,2 km i komórka 28 km naprawdę nie zgadzają się co do znaczenia słabej średniej. Aplikacje konsumenckie, które podają jedną liczbę, to ukrywają.

Modele i rozdzielczość#

GEThttps://api.climatememory.com/v1/modelsklucz niepotrzebny0 kredytów

Które modele są w użyciu, co każdy pokrywa i jak świeży jest. Klucz niepotrzebny.

Serwujemy najdrobniejszy model, który pokrywa twój punkt i twoje wyprzedzenie. Nigdy go nie wybierasz; wybór jest raportowany w source.model, żebyś zawsze wiedział, który odpowiedział.

Modele wysokiej rozdzielczości są wyłącznie krótkoterminowe — przy 1 km atmosfera staje się chaotyczna w ciągu dwóch dni, więc prognozowanie dalej nie miałoby sensu — i rozdzielczość schodzi więc w dół w miarę biegu prognozy:

dzień 0 ───── dzień 2 ───── dzień 5 ─────────────── dzień 15
  AROME 1,3 km (Francja)
  ICON-D2 2,2 km (Niemcy, Alpy, Beneluks)
  HRRR 3 km (USA i południe Kanady)
              ICON-EU 6,5 km (Europa)
                          ICON 13 km · ECMWF 28 km (globalnie)
                                              AIFS (tylko tendencja)
source.modelModelRozdzielczośćPrzebiegiHoryzont
mf_aromeMétéo-France AROME1.3 km8/dobę51 h
dwd_icon_d2DWD ICON-D22.2 km4/dobę48 h
noaa_hrrrNOAA HRRR3 km4/dobę48 h
dwd_icon_euDWD ICON-EU6.5 km2/dobę120 h
dwd_iconDWD ICON13 km2/dobę180 h
ecmwf_ifsECMWF IFS28 km2/dobę240 h
ecmwf_aifsECMWF AIFS28 km2/dobę360 h
ecmwf_waveECMWF wave28 km2/dobę240 h

Przejścia przez krawędź domeny modelu są wzajemnie wygaszane, więc dwie miejscowości po obu stronach granicy nigdy nie różnią się skokowo.

Dni 11–15 to tendencja, a nie prognoza. Na tym dystansie sprawdzalność zbliża się do klimatologii. Publikujemy ją, bo jest oczekiwana; traktuj to jako kierunek zmian, a jeśli to pokazujesz, powiedz o tym.

/v1/models nie wymaga klucza, co czyni go właściwą rzeczą do odpytywania ze strony statusu albo do sprawdzenia przed zakupem: raportuje najnowszy przebieg każdego modelu i jego wiek, więc na pytanie „czy dane są świeże” da się odpowiedzieć bez wydawania kredytu.

Prawdopodobieństwa z ensemble'u#

GEThttps://api.climatememory.com/v1/probabilityscope: meteo1 kredyt

Percentyle i prawdopodobieństwa deszczu z 51-członowego ensemble'u ECMWF.

Pojedyncza prognoza mówi 22 °C w czwartek. To domysł podany jak fakt. Ten endpoint odpowiada na pytanie, na podstawie którego naprawdę decydujesz: jak bardzo jest to pewne i jakie prawdopodobieństwo deszczu warto wziąć pod uwagę w planach.

Liczone jest z ensemble'u ECMWF — tego samego modelu puszczonego 50 razy z lekko różnych warunków początkowych. Tam, gdzie przebiegi się zgadzają, prognoza jest pewna. Tam, gdzie się rozjeżdżają, niepewna jest sama atmosfera i żaden model, choćby najlepszy, nie powie ci więcej.

{
  "members": 50,
  "hourly": {
    "time": ["2026-08-01T00:00:00+00:00"],
    "temperature_2m_p10": [26.4],
    "temperature_2m_p50": [26.78],
    "temperature_2m_p90": [27.3],
    "temperature_2m_spread": [0.4],
    "precipitation_probability_0_1mm": [10.0],
    "precipitation_probability_1_0mm": [0.0],
    "precipitation_probability_5_0mm": [0.0],
    "precipitation_probability_10_0mm": [0.0],
    "precipitation_p90": [0.1]
  }
}

Jak to czytać

p10 i p90 obejmują środkowe 80 % członków: jeden na dziesięciu spodziewa się chłodniej niż p10, jeden na dziesięciu cieplej niż p90. spread równy 0,4 °C to sytuacja ustabilizowana, której możesz ufać; 3 °C oznacza, że modele się nie zgadzają i powinieneś powiedzieć o tym użytkownikom, zamiast wybierać jeden.

Progi opadu to decyzje, a nie okrągłe liczby — 0,1 mm to w ogóle mokro, 1 mm to weź kurtkę, 5 i 10 mm to to już problem. precipitation_p90 to zły scenariusz: tylko jeden członek na dziesięciu jest bardziej mokry.

Tylko dwie zmienne, temperatura i opad. Dodanie zachmurzenia, wiatru i ciśnienia podwoiłoby pasmo całej platformy dla liczb, na podstawie których nikt nie podejmuje decyzji.

Jakość powietrza#

GEThttps://api.climatememory.com/v1/air-qualityscope: meteo1 kredyt

Pyły zawieszone, ozon, NO₂, SO₂, CO i pył saharyjski, z Copernicus CAMS.

To endpoint, który najbardziej liczy się w Afryce Północnej i nad Morzem Śródziemnym. Epizod pyłowy wynosi PM10 ponad tysiąc mikrogramów na metr sześcienny na całe dnie, co jest decyzją zdrowotną, a nie liczbą, i jest słabo pokryty przez darmowe serwisy konsumenckie.

{
  "current": {
    "pm2_5": 38.7,
    "band": "poor",
    "who_guidelines_ug_m3": {"pm2_5": 15.0, "pm10": 45.0,
                             "nitrogen_dioxide": 25.0, "ozone": 100.0}
  },
  "hourly": {
    "time": ["2026-08-01T00:00:00+00:00"],
    "pm2_5": [38.7], "pm10": [85.8], "ozone": [43.4],
    "nitrogen_dioxide": [19.0], "dust_aod_550nm": [0.24]
  },
  "units": {"pm2_5": "ug/m3", "pm10": "ug/m3", "dust_aod_550nm": "1"}
}

Wszystkie stężenia są w µg/m³, jednostce, w której jakość powietrza podaje się wszędzie. dust_aod_550nm to grubość optyczna i nie ma jednostki: powyżej mniej więcej 0,5 niebo jest widocznie zamglone, powyżej 1,0 słońce jest przygaszone.

Krótkoterminowe wartości wytyczne WHO jadą w każdej odpowiedzi, żeby dało się umiejscowić liczbę bez szukania. band podąża za europejskim indeksem jakości powietrza dla PM2,5: dobra, w porządku, umiarkowana, zła, bardzo zła, skrajnie zła.

Śnieg i granica śniegu#

Cztery pola, a odpowiadają na różne pytania. snowfall to ile spada; reszta opisuje to, co leży, i gdzie.

Poproś o nie po nazwie — nie ma ich w domyślnej odpowiedzi:

GET /v1/forecast?lat=45.19&lon=5.72&hourly=snowfall,snow_depth,snow_water_equivalent,snow_line_altitude,freezing_level_altitude
PoleJednostkaCo mówi
snow_depthmTo, co leży. Dwadzieścia centymetrów może spaść i stopnieć albo osiąść na osiemdziesięciu, które już tam były.
snow_water_equivalentmmIle daje po stopieniu. Pół metra puchu i pół metra śniegu ubitego to bardzo różne rzeczy.
snow_line_altitudemWysokość, powyżej której opad pada jako śnieg.
freezing_level_altitudemWysokość izotermy 0 °C, zwykle kilkaset metrów nad granicą śniegu.

To granica śniegu jest tą wartą odczytania. „Na 800 m pada deszcz, a na 1200 śnieg” to informacja, na podstawie której ośrodek narciarski, zarządca drogi albo kierowca mogą działać; „3 mm opadu” nie jest. Liczy się to także w Afryce Północnej — Atlas ma ośrodki narciarskie w Chréa i Tikjda, a wysokie płaskowyże pod Sétif, Batną i Dżelfą leżą powyżej 1000 m.

Lodowce raportują dziesiątki metrów grubości śniegu, bo tak model reprezentuje lód wieczny, a nie dlatego, że to błąd pomiaru. Najgłębszy śnieg sezonowy na Ziemi ma około 11 m — wszystko powyżej traktuj jako lód, a nie pogodę.

Te dane pochodzą z ICON-a od DWD, który pokrywa świat w 13 km. Otwarte dane ECMWF publikują grubość śniegu, ale nie granicę śniegu, więc to jeden z przypadków, w których model zgrubniejszy jest użyteczniejszy. snow_line_altitude jest produktem regionalnym: ICON-EU i ICON-D2 go publikują, ICON globalny nie, więc poza Europą dostajesz poziom zera stopni i grubość, ale nie samą granicę.

Morze — stan morza#

GEThttps://api.climatememory.com/v1/marinescope: meteo1 kredyt

Wysokość, kierunek i okres fali z modelu falowego ECMWF, na całym świecie, do 10 dni.

{
  "hourly": {
    "time": ["2026-08-01T00:00:00+00:00"],
    "wave_height": [0.32],
    "wave_direction": [264.3],
    "wave_period": [3.79],
    "wave_peak_period": [4.21]
  }
}

Wysokość fali to wysokość znacząca — średnia z najwyższej jednej trzeciej fal, czyli mniej więcej to, co raportuje obserwator na morzu. Pojedyncze fale sięgają około dwukrotności tej wartości i to ta liczba ma znaczenie, jeśli decydujesz, czy wypłynąć. Kierunek to ten, z którego fale idą, tak jak przy wietrze.

Punkt na lądzie zwraca 404 not_at_sea, a nie listę wartości pustych. Model falowania z założenia nie ma wartości nad lądem, a powiedzenie tego jest bardziej użyteczne niż odpowiedź, która czyta się jak awaria usługi. Jeśli pozwalasz użytkownikom postawić pinezkę, obsłuż ten kod jawnie.

Rzeki#

GEThttps://api.climatememory.com/v1/hydrologyscope: meteo1 kredyt

Przepływ rzek z Copernicus GloFAS na sieci rzecznej 0,05°, do 10 dni.

Odpowiada na to, czego nie potrafi żaden model pogodowy: nie ile deszczu pada w górze zlewni, ale ile wody dociera tutaj — a to inna liczba, oddzielona od deszczu zlewnią, stanem wilgotności gleby i dniem lub dwoma przepływu.

{
  "disclaimer": "Information only. Only national and regional authorities
                 are authorised to issue flood warnings.",
  "daily": {
    "time": ["2026-08-01T00:00:00+00:00"],
    "river_discharge": [4.953],
    "soil_wetness_index": [0.448]
  }
}
PoleZnaczenie
river_dischargeŚredni przepływ w m³/s w ciągu 24 godzin kończących się w tym momencie. Zero znaczy, że model nie ma rzeki w tej komórce, a nie że rzeka wyschła.
soil_wetness_indexNasycenie zlewni, od 0 sucho do 1 nasycone. Wysokie wartości znaczą, że kolejny deszcz spłynie, zamiast wsiąknąć.

To nie jest ostrzeżenie powodziowe i nie wolno tego tak przedstawiać. Licencja Copernicus zastrzega ostrzeżenia powodziowe dla władz krajowych i regionalnych w obrębie ich odpowiedzialności i tak jest właściwie — ci, którzy mają prawo ostrzegać, to również ci, którzy mogą zamknąć drogę i ewakuować wieś.

Przepływ w m³/s — tak. Alert, kolor zagrożenia albo polecenie działania — nie, niezależnie od tego, jak danego dnia wyglądają liczby. Zastrzeżenie podróżuje w ciele każdej odpowiedzi, nie tylko tutaj, i jest tam po to, by dotarło do twoich użytkowników, nawet jeśli ta strona nie dotarła.