# Nyup Status
> A status page run by nabiz 3.12.1
> (https://github.com/productdevbook/nabiz). The
> services listed on it are probed once a minute and ninety days of history
> are kept. Everything here is public, read-only and CORS-open. Every
> answer here is held briefly — at most fifteen seconds on Cloudflare, and
> until the next probe round on a self-hosted one — and every round drops
> what it held, so nothing served is older than the round behind it.
A monitor marked as a group stands for several hosts that are served here
but named elsewhere; neither their names nor their number is published.
## Endpoints
- [The page](https://status.nyup.net/): HTML, and the JSON below to an Accept header that asks for it
- [status.json](https://status.nyup.net/api/status.json): current state, per-monitor uptime and latency, why anything is down, recent events
- [history.json](https://status.nyup.net/api/history.json): ninety days of daily totals per monitor
- [notices.json](https://status.nyup.net/api/notices.json): operator-written notices, markdown and rendered
- [badge.svg](https://status.nyup.net/badge.svg): the overall state as a badge
- [feed.xml](https://status.nyup.net/feed.xml): state changes and notices as RSS
- [health](https://status.nyup.net/health): 204 when the status page itself is alive, with no database behind it, and an "x-nabiz" header carrying the build
- [robots.txt](https://status.nyup.net/robots.txt): crawling is welcome; it points here
## Asking cheaply
HEAD https://status.nyup.net/ answers with an "x-status" response header that says up,
sites, degraded or down, and no body. https://status.nyup.net/api/status.json carries
the same header; no other endpoint does.
GET https://status.nyup.net/ with "Accept: application/json" (and no text/html) returns
the status.json body instead of HTML. A Link header on the HTML page
points to this file, the JSON and the RSS feed, and the HTML head carries
the same links as .
The page, the feed and notices.json take ?lang= (en, tr, de, es, fr,
zh-CN).
The page and the feed translate their words and serve a notice written
for one language only to that language; notices.json does the same when
asked for a language, and returns every notice when not. The other
endpoints carry no words to translate.
## Reading status.json
"status" is one of four for the whole page: "up", "sites" when only some
of the hosted sites are unreachable and everything else is serving,
"degraded" when a service is down, and "down" when nothing answers.
Each monitor carries "status" — "up", "down", or "unknown" before its
first probe has written anything, and "degraded" only for a group —
"uptime_90d" (percent, null before the first day of data), and
"latency_ms" from the most recent successful probe.
A monitor that is down also carries "last_status", the code its last probe
was answered with, and "reason" when the code does not say it: "timeout",
"unreachable" for a connection that never happened, or "body" for a
promised status with the wrong words in it. A group carries neither: it
speaks for several hosts and publishes none of their answers. A grouped monitor speaks for several hosts and says only
how it is: "degraded" while some of them are unreachable, "down" once half
or more are, and never on one host alone. How many there are is not
published — that number is a customer count. Each day it publishes is a
real member's day rather than a total: the median one, never worse than
the second-worst, so one host's bad day is not billed to the others.
## Writing
For the operator, with a token. POST https://status.nyup.net/api/notice with
Authorization: Bearer and a JSON body of {"body": "markdown",
"severity": "info|maintenance|degraded|outage", "lang":
"all|en|tr|de|es|fr|zh-CN"}; POST https://status.nyup.net/api/notice/resolve with the
same
header and {"id": n}.
Ten guesses at the token a minute per address, counted in the memory of
whichever process answered — so on Cloudflare, where there are many, it is
a brake rather than a limit. A refusal carries retry-after.
## Optional
- [robots.txt](https://status.nyup.net/robots.txt): everyone is allowed; there is nothing here worth hiding