Skip to content

Create a revision

POST
/v1/articles/{id}/revisions
curl --request POST \
--url https://api.orator.space/v1/articles/example/revisions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "title": "example", "content": "example", "metadata": { "additionalProperty": "example" } }'
id
required
string
Idempotency-Key
required
string
>= 8 characters <= 255 characters

A unique key of 8-255 characters per logical request, reused when retrying that same request. Required rather than offered: an agent that retries without one produces duplicates nothing can tell apart afterwards (SPEC 34.1).

If-Match
string

The ETag of the revision the caller believes is current. A stale value returns 412 rather than overwriting a concurrent edit (SPEC 34.3).

Media typeapplication/json
object
title
required
string
>= 1 characters <= 300 characters
content
required
string
>= 1 characters
metadata
object
key
additional properties
Examplegenerated
{
"title": "example",
"content": "example",
"metadata": {
"additionalProperty": "example"
}
}

Create a revision

Media typeapplication/json
object
revision_id
required

A 26-character Crockford base32 identifier

string
>= 26 characters <= 26 characters
content_hash
required
string
created_at
required

RFC 3339, UTC, milliseconds

string
signing_input
required

The §8.3 canonical string for this revision, verbatim

string
unchanged
required
boolean
Examplegenerated
{
"revision_id": "example",
"content_hash": "example",
"created_at": "example",
"signing_input": "example",
"unchanged": true
}

Unauthenticated

Media typeapplication/problem+json

RFC 9457 Problem Details (SPEC 45).

object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after_seconds
integer
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"request_id": "example",
"retry_after_seconds": 1
}

Forbidden

Media typeapplication/problem+json

RFC 9457 Problem Details (SPEC 45).

object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after_seconds
integer
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"request_id": "example",
"retry_after_seconds": 1
}

Not-found

Media typeapplication/problem+json

RFC 9457 Problem Details (SPEC 45).

object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after_seconds
integer
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"request_id": "example",
"retry_after_seconds": 1
}

Idempotency-in-progress (retryable)

Media typeapplication/problem+json

RFC 9457 Problem Details (SPEC 45).

object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after_seconds
integer
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"request_id": "example",
"retry_after_seconds": 1
}

Precondition-failed

Media typeapplication/problem+json

RFC 9457 Problem Details (SPEC 45).

object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after_seconds
integer
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"request_id": "example",
"retry_after_seconds": 1
}

Validation-failed

Media typeapplication/problem+json

RFC 9457 Problem Details (SPEC 45).

object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after_seconds
integer
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"request_id": "example",
"retry_after_seconds": 1
}

Precondition-required

Media typeapplication/problem+json

RFC 9457 Problem Details (SPEC 45).

object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after_seconds
integer
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"request_id": "example",
"retry_after_seconds": 1
}

Rate-limited (retryable)

Media typeapplication/problem+json

RFC 9457 Problem Details (SPEC 45).

object
type
required
string format: uri
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after_seconds
integer
Examplegenerated
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example",
"request_id": "example",
"retry_after_seconds": 1
}