-# Status.git
+# x_status_git
-A minimal git‐based self‐hosted status publishing solution.
+A minimal git‐based microblog.
## What It Is
`</statuses.jsonld>;rel=meta;type="application/ld+json"` (or
equivalent) **must** be provided.
- + **`GET /$YYYY-MM`** (where `$YYYY-MM` is an `xsd:gYearMonth`):
+ + **`GET /statuses/$YYYY-MM`** (where `$YYYY-MM` is an `xsd:gYearMonth`):
Serve the file at `/.topic.html`.
A `Link` header with the value
`</$YYYY-MM.jsonld>;rel=meta;type="application/ld+json"` (or
equivalent) **must** be provided.
- + **`GET /$YYYY-MM/*`** (where `$YYYY-MM` is an `xsd:gYearMonth`):
+ + **`GET /statuses/$YYYY-MM/*`** (where `$YYYY-MM` is an `xsd:gYearMonth`):
Serve the file at `/.status.html`.
A `Link` header with the value
`</$YYYY-MM.jsonld>;rel=meta;type="application/ld+json"` (or
`</$TOPIC.jsonld>;rel=meta;type="application/ld+json"` (or
equivalent) **must** be provided.
+### X·H·T·M·L responses
+
+These responses **must** be served with a `Content-Type` of
+ `application/xhtml+xml` (or equivalent).
+Note that these paths **do not** have a trailing slash.
+
+ + **`GET /$IRI`** (where `$IRI` contains a colon and no slash):
+ Serve the file at `/.lookup.xhtml`.
+ This can be used to look up statuses by their identifier.
+
### Json‐L·D responses
These responses **should** be served with a `Content-Type` of
+ **`GET /statuses.jsonld`**:
Serve the file at `/statuses/index.jsonld`.
- + **`GET /$YYYY-MM.jsonld`** (where `$YYYY-MM` is an
+ + **`GET /statuses/$YYYY-MM.jsonld`** (where `$YYYY-MM` is an
`xsd:gYearMonth`):
Serve the file at `/$YYYY-MM/index.jsonld`.
`[0-9A-Za-z_-]+`):
Serve the file at `/topics/$TOPIC/index.jsonld`.
+### Atom responses
+
+These responses **should** be served with a `Content-Type` of
+ `application/atom+xml`.
+In all cases, for `/$PATH.atom`, this just serves the file at
+ `/$PATH/index.atom`.
+
+ + **`GET /statuses.atom`**:
+ Serve the file at `/statuses/index.atom`.
+
+ + **`GET /statuses/$YYYY-MM.atom`** (where `$YYYY-MM` is an
+ `xsd:gYearMonth`):
+ Serve the file at `/$YYYY-MM/index.atom`.
+
+ + **`GET /topics/$TOPIC.atom`** (where `$TOPIC` matches
+ `[0-9A-Za-z_-]+`):
+ Serve the file at `/topics/$TOPIC/index.atom`.
+
### Other Headers
All responses **should** have a `Access-Control-Allow-Origin` header
The contents of this file **must** give the author’s URL,
optionally followed by a trailing newline.
+ + **`2=TITLE`** (where `TITLE` might be anything):
+ This file is **optional** and indicates the title of the status.
+ The value of `TITLE` **should** be a file·system‐friendly version
+ of the title, but is ignored.
+ The contents of this file **must** give the title of the status,
+ optionally followed by a trailing newline.
+
+ **`3=YYYY-MM-DD`** (where `YYYY-MM-DD` is a date):
This file is **required** and indicates the date of the status.
Only one date is currently supported.
Files with names that begin with the strings `2=` or `x_status_git_`
are reserved for backwards‐compatible extensions.
-Status.git has no opinion on how these files make their way into the
+x_status_git has no opinion on how these files make their way into the
Git repository, except that all the files for a single status should
be added in the same commit.
The intention is that the simple nature of these files will make them
## I Am Computer, How Do I Get Status?
Assume you are given a U·R·L `resource_url` which you think points to
- some kind of Status.git resource.
+ some kind of x_status_git resource.
Start by resolving it as follows :—
01. Make a `HEAD` request to `resource_url`.
+ **`subject`** [`dcterms:subject`] (optional):
The topic of the status, for topic statuses.
+ + **`title`** [`dcterms:title`] (optional):
+ The title of the status.
+
+ **`content`** [`sioc:content`]:
The content of the status, as an `rdf:XMLLiteral`.