Moera Node API is a JSON-based REST API. See introduction to Node REST API in the Overview section.
Timestamp below is the number of seconds that passed since 01-01-1970 00:00:00 in UTC timezone.
If an error occurs when processing a API request, Result
structure is returned
instead of the regular response. The structure contains the error code and message, and also
the HTTP status code is set accordingly. All error codes are case-insensitive.
An error may occur on different stages of request processing.
not-found
error is returned.invalid-content-type
error is returned.invalid-syntax
error is returned.invalid-argument-value
error is
returned.
authentication.required
error is returned.
authentication.invalid
error is
returned.
authentication.incorrect-signature
error is returned.
carte.client-address-unknown
- cannot determine client IP address;carte.unknown-fingerprint
- unknown fingerprint version encoded in the carte;carte.invalid
- the carte format is invalid;carte.not-begun
- the timespan of the carte has not begun yet;carte.expired
- the carte is expired;carte.unknown-signing-key
- cannot find public key for carte owner;carte.invalid-signature
- carte signature is invalid.node-name-not-set
error is returned.
signing-key-not-set
error is
returned.
server.misconfiguration
error is returned.
naming.not-available
error is returned.
Authentication scheme, if specified in the request description, may be one of the following:
Authorization: bearer secret:<token>
header must be provided with
<token>
equal to the secret value set in the node configuration;
Authorization: bearer [token:]<token>
;
Authorization: bearer carte:<token>
) or signature (if present in the
input) for authentication.
Standard permission groups are:
admin
- administrator of the node;owner
- owner of the posting, comment etc.;public
- anybody.
cid
parameter may be passed with any request. See
Events page for the description of its purpose.
Local registry of all activity in the form of reactions performed by the node.
Get the list of all reactions performed by the node, filtered by some criteria.
ActivityReactionFilter
ActivityReactionInfo[]
Asyncronous operations pending or just finished on the node.
Get status of the asyncronous operation that performs verification of a remote posting signature.
String id
- asynchronous operation ID
RemotePostingVerificationInfo
Code | Description |
---|---|
async-operation.not-found |
async operation with the given ID is not found |
Get status of the asyncronous operation that performs verification of the signature of a reaction to a remote posting.
String id
- asynchronous operation ID
RemoteReactionVerificationInfo
Code | Description |
---|---|
async-operation.not-found |
async operation with the given ID is not found |
Avatars of the node's owner. The list of avatars is ordered using ordinals that every avatar has.
Every avatar has a shape. It is stored and returned solely for client's interpretation. The shape has no meaning for the node and does not affect the avatar image stored at the node.
Get the list of avatars in the ascending order of their ordinals.
AvatarInfo[]
Create a new avatar from a public media file that exists on the node. New public media file is created for the avatar. If avatar's ordinal is not provided in the input, the avatar is assigned an ordinal that is greater than ordinals of all existing avatars.
AvatarAttributes
AvatarInfo
Code | Description |
---|---|
media.storage-error |
media file cannot be stored |
avatar.media-unsupported |
the type of the source media file is not supported for avatars |
Get an individual avatar.
String id
- avatar ID
AvatarInfo
Code | Description |
---|---|
avatar.not-found |
avatar is not found |
Delete an avatar.
String id
- avatar ID
Result
Code | Description |
---|---|
avatar.not-found |
avatar is not found |
Reorder avatars. Every avatar mentioned in the input is assigned an ordinal in ascending order as they appear in the input. Ordinals of avatars not mentioned in the input are not touched.
AvatarsOrdered
AvatarOrdinal[]
Code | Description |
---|---|
avatar.not-found |
avatar is not found |
Cartes - cryptographic tokens used for authentication on any node besides the home node.
Get a set of cartes that correspond to successive periods of time. The node may decide to return less cartes than the given limit
.
int limit
- maximum number of cartes returned
CarteSet
Comments to a posting.
Get a slice of the list of comments, delimited by before
or after
moments (but not both) and the given limit
. If neither before
nor after
are provided, the latest comments are returned. The node may decide to return less comments than the given limit
. The stories are always sorted by moment, ascending.
String postingId
- ID of the posting
int before
- filter comments posted at or before this moment
int after
- filter comments posted strongly after this moment
int limit
- maximum number of comments returned
CommentsSliceInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
comments.before-after-exclusive |
before and after parameters are not allowed together |
limit.invalid |
limit parameter has an invalid value |
Create a comment from the given text and add it to the given posting. The comment owner must authenticate in some way. If the comment is not signed, it will be kept for a limited period of time and then erased. If authenticated as admin, the comment is signed by the node.
String postingId
- ID of the posting
CommentText
CommentCreated
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
posting.not-signed |
the posting is not signed, so it is impossible to add comments to it |
Get an individual comment.
String postingId
- ID of the posting
String commentId
- ID of the comment
String include
- Comma-separated list of additional blocks of information that are needed. The values are: source
- source text of the comment.
CommentInfo
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
Update the comment, creating a new revision of it. The text is processed just like in the POST
request.
String postingId
- ID of the posting
String commentId
- ID of the comment
CommentText
CommentInfo
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
Delete the comment. The comment may not be purged from the database immediately, but preserved for some period of time to give a chance to restore it.
String postingId
- ID of the posting
String commentId
- ID of the comment
CommentTotalInfo
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
Get all postings linked to media attached to the given comment.
String postingId
- ID of the posting
String commentId
- ID of the comment
PostingInfo[]
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
All revisions of the comment.
Get all revisions of the comment.
String postingId
- ID of the posting
String commentId
- ID of the comment
CommentRevisionInfo[]
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
Get an individual revision of the comment.
String postingId
- ID of the posting
String commentId
- ID of the comment
String id
- ID of the revision
CommentRevisionInfo
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
comment-revision.not-found |
there is no revision with the given ID |
Reactions ("Likes") - simple textless answers to a comment.
Add a reaction to the given comment. The reaction owner must authenticate in some way. Only one reaction is allowed from each owner to a particular comment. If a reaction from the same owner to this comment already exists, it is overwritten. If the reaction is not signed, the reaction will be kept for a limited period of time and then erased (the previous reaction of the same owner will be restored, if any).
String postingId
- ID of the posting
String commentId
- ID of the comment
ReactionDescription
ReactionCreated
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
comment.not-signed |
cannot add a reaction to an unsigned comment |
reaction.not-accepted |
the reaction is not acceptable |
Get a slice of the list of reactions to the given comment, optionally filtered by reaction type, delimited by before
moment and the given limit
. If before
is not provided, the latest reactions are returned. The node may decide to return less reactions than the given limit
. The reactions are always sorted by moment, descending.
String postingId
- ID of the posting
String commentId
- ID of the comment
boolean negative
- true
, to filter negative reactions, false
, to filter positive ones
int emoji
- filter by reaction code, usually interpreted by clients as emoji code point
int before
- filter reactions created at or before this moment
int limit
- maximum number of reactions returned
ReactionsSliceInfo
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
limit.invalid |
limit parameter has an invalid value |
Get the detailed information about the reaction of the given owner to the given comment. If no reaction with such owner exist, an empty structure with just commentId
is returned.
String postingId
- ID of the posting
String commentId
- ID of the comment
String ownerName
- reaction owner node name
ReactionInfo
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
Delete all reactions to the given comment.
String postingId
- ID of the posting
String commentId
- ID of the comment
Result
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
Delete the reaction of the given owner to the given comment.
String postingId
- ID of the posting
String commentId
- ID of the comment
String ownerName
- reaction owner node name
ReactionTotalsInfo
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
Summary of reactions to a comment.
Get summary of reactions to the comment given.
String postingId
- ID of the posting
String commentId
- ID of the comment
ReactionTotalsInfo
Code | Description |
---|---|
comment.not-found |
there is no comment with the given ID |
comment.wrong-posting |
the comment is not related to the given posting |
Information about all nodes having a relationship with the node.
Search for contacts matching the search query
. Every space-delimited word in the query must case-insensitively match a beginning of the contact's node name or a beginning of any space-delimited word in the contact's full name. The order of words is not significant.
The node may decide to return less contacts than the given limit
.
The contacts are sorted by their closeness to the node, which is calculated from the number of reactions and comments and their age.
String query
- the search query
int limit
- maximum number of contacts returned
ContactInfo[]
Code | Description |
---|---|
limit.invalid |
limit parameter has an invalid value |
Credentials used to authenticate the administrator of the node.
Check whether the credentials are initialized already.
CredentialsCreated
Initialize credentials, if they are not set yet. Note that this operation can be executed without authentication, so this should be done as soon as possible after the node installation. Sign in is not allowed until the credentials are set.
Credentials
Result
Code | Description |
---|---|
credentials.already-created |
credentials are already created |
Update credentials. Either old password or credentials reset token should be set in the input for the operation to succeed. Credentials reset token is not related to the authentication token and usually is sent to the user by E-mail.
CredentialsChange
Result
Code | Description |
---|---|
credentials.login-incorrect |
login incorrect (the old password is wrong) |
credentials.wrong-reset-token |
credentials reset token is wrong |
credentials.reset-token-expired |
credentials reset token is expired |
Delete credentials.
The node generates credentials reset token that is sent to the node admin by E-mail or using any other way that is defined for credentials recovery. This token then may be used to change the credentials without knowing the password.
EmailHint
Code | Description |
---|---|
credentials.email-not-set |
E-mail address is not set for the node |
All deleted postings, that are not purged from the database yet.
Get the list of deleted postings, page by page. The node may decide to use smaller page size than the given limit
. The postings are always sorted by the deletion timestamp, descending.
int page
- page number, 0 by default
int limit
- page size (maximum number of postings returned), the default is defined by the node
PostingInfo[]
Code | Description |
---|---|
page.invalid |
page parameter has an invalid value |
limit.invalid |
limit parameter has an invalid value |
Get an individual deleted posting.
String id
- ID of the posting
PostingInfo
Code | Description |
---|---|
posting.not-found |
there is no deleted posting with the given ID |
Restore a posting. A new revision is created with the same content as in the latest revision.
String id
- ID of the posting
PostingInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
All revisions of the deleted posting. This object supports the same requests as Posting Revisions object, but uses /deleted-postings
prefix instead of /postings
.
One instance of Moera node software can serve several virtual nodes. These virtual nodes are called domains and distinguished by the hostname passed in the HTTP request. Each virtual node has node ID, it is used in the database to designate the data that belongs to a particular node. The hostname is mapped to the node ID when the request is processed, using the list of registered domains. If there is no domain with such a name, the special _default_
domain is used.
Get the list of registered domains.
DomainInfo[]
Get information about the domain with the given hostname. If domain registration for this server is public, this request does not require authentication.
String name
- domain name
DomainInfo
Code | Description |
---|---|
domain.not-found |
there is no domain with the given hostname |
Create a new domain with the given hostname. If nodeId
is not passed, it is generated automatically. If domain registration for this server is public, this request does not require authentication.
DomainAttributes
DomainInfo
Code | Description |
---|---|
domain.already-exists |
a domain with the given hostname already exists |
domain.node-id-used |
a domain with the given node ID already exists |
Update the domain with the given hostname. If the new hostname is not passed, the old hostname is preserved. (Note that you cannot pass a new name for the default hostname, because it cannot be renamed and _default_
is not a valid hostname. Skip this field if you want to update the default hostname.) If nodeId
is not passed, it is generated automatically.
String name
- domain's hostname
DomainAttributes
DomainInfo
Code | Description |
---|---|
domain.not-found |
there is no domain with the given hostname |
domain.cannot-rename-default |
cannot change the name of the default domain |
Delete the domain with the given hostname. This operation deletes the domain record only, the user's data related to the domain is preserved.
String name
- domain name
Result
Code | Description |
---|---|
domain.not-found |
there is no domain with the given hostname |
domain.cannot-delete-default |
cannot delete the default domain |
Get an available domain name that is recommended for the given node name. The domain name is usually chosen to be close to the node name in English transcription. If domain registration for this server is not public, this request is not accessible.
String nodeName
- node name
DomainAvailable
All drafts. This is an universal interface for managing all types for drafts to all types of entries. Drafts of entries located on remote nodes are all stored on the home node.
Get the list of drafts, page by page, filtered by the given criteria. The node may decide to use smaller page size than the given limit
. The drafts are always sorted by the creation timestamp, descending.
String draftType
- type of the drafts, mandatory (see DraftInfo.draftType
for the list of possible values)
String nodeName
- name of the node the drafts are related to, mandatory
String postingId
- ID of the posting, mandatory for all types, except new-posting
String commentId
- ID of the comment, mandatory for comment-update
type
int page
- page number, 0 by default
int limit
- page size (maximum number of postings returned), the default is defined by the node
DraftInfo[]
Code | Description |
---|---|
page.invalid |
page parameter has an invalid value |
limit.invalid |
limit parameter has an invalid value |
Create a new draft from the text given.
DraftText
DraftInfo
Get an individual draft.
String id
- ID of the draft
DraftInfo
Code | Description |
---|---|
draft.not-found |
there is no draft with the given ID |
Update the draft.
String id
- ID of the draft
DraftText
DraftInfo
Code | Description |
---|---|
draft.not-found |
there is no draft with the given ID |
Delete the draft.
String id
- ID of the draft
Result
Code | Description |
---|---|
draft.not-found |
there is no draft with the given ID |
Feed is a set of stories collected for some purpose. The stories are sorted by moment, descending.
These are the standard feeds that have special meaning:
timeline
- the main feed of publications;instant
- the feed of instant notifications;news
- the main feed of publications gathered from other nodes.Get general information about all feeds accessible by client.
FeedInfo[]
Get general information about the feed.
String feedName
- name of the feed
FeedInfo
Code | Description |
---|---|
feed.not-found |
there is no accessible feed with this name |
Get information about total number and number of non-read and non-viewed stories in the feed.
String feedName
- name of the feed
FeedStatus
Code | Description |
---|---|
feed.not-found |
there is no accessible feed with this name |
Update information about non-read and non-viewed stories in the feed.
String feedName
- name of the feed
FeedStatusChange
FeedStatus
Code | Description |
---|---|
feed.not-found |
there is no accessible feed with this name |
Get a slice of the feed, delimited by before
or after
moments (but not both) and the given limit
. If neither before
nor after
are provided, the latest stories are returned. The node may decide to return less stories than the given limit
. The stories are always sorted by moment, descending.
String feedName
- name of the feed
int before
- filter stories posted at or before this moment
int after
- filter stories posted strongly after this moment
int limit
- maximum number of stories returned
FeedSliceInfo
Code | Description |
---|---|
feed.not-found |
there is no accessible feed with this name |
feed.before-after-exclusive |
before and after parameters are not allowed together |
limit.invalid |
limit parameter has an invalid value |
Media files that are bound to a particular uploader and may be inaccessible to other clients. Private media files cannot be retrieved by their hash, only by their ID. The ID is unique to the client that uploaded the file and the node the file was uploaded to. A private media file may have a linked posting - it is used to store the media file description, reactions and comments. The linked posting is accessed as any other posting.
Upload a new media file. Content of the file is passed in the request body
PrivateMediaFileInfo
Code | Description |
---|---|
media.image-invalid |
media file is not a readable image |
media.wrong-size |
media file is too large |
media.storage-error |
media file cannot be stored |
Get media file content (returned in the response body).
String id
- media file ID
Code | Description |
---|---|
media.not-found |
media file is not found |
Get media file details.
String id
- media file ID
PrivateMediaFileInfo
Code | Description |
---|---|
media.not-found |
media file is not found |
Get the list of all postings and comments the media file is attached to.
String id
- media file ID
EntryInfo[]
Media files that should be accessible to any client. ID of a public media file is SHA-1 hash of its content.
Upload a new media file. Content of the file is passed in the request body
PublicMediaFileInfo
Code | Description |
---|---|
media.image-invalid |
media file is not a readable image |
media.wrong-size |
media file is too large |
media.storage-error |
media file cannot be stored |
Get media file content (returned in the response body).
String id
- media file ID
Code | Description |
---|---|
media.not-found |
media file is not found |
Get media file details.
String id
- media file ID
PublicMediaFileInfo
Code | Description |
---|---|
media.not-found |
media file is not found |
The name of the node. Read more about it in the Overview section. Operations with the node name are performed asynchronously - need to poll the node periodically to get the current status of the operation. Only one operation with the node name may be performed by the node at any moment.
Get the name of the node. Admin user receives also the current status of the latest operation with the node name.
NodeNameInfo
Register a new name for the node. The corresponding signing key is generated automatically and stored at the node. The updating key is generated and returned in the encoded form and in the form of mnemonic (a sequence of English words) that need to be written down and stored securely to be able to perform further operations with the name.
NameToRegister
RegisteredNameSecret
Code | Description |
---|---|
naming.operation-pending |
another operation with the node name is pending currently |
Update the name of the node. May be used to assign an already-registered name to the node (the corresponding signing key is generated automatically and stored at the node), or to prolong the name. The secret or mnemonic of the updating key must be provided for this operation.
RegisteredNameSecret
Result
Code | Description |
---|---|
naming.operation-pending |
another operation with the node name is pending currently |
registeredNameSecret.empty |
the registered name secret or mnemonic are not provided |
node-name.name-absent |
the node name is not provided and not known by the node |
node-name. |
various errors returned by naming server (see the list) |
Delete all the information related to the node name (including the signing key) from the node. The name record on the naming server is not touched.
Result
Code | Description |
---|---|
naming.operation-pending |
another operation with the node name is pending currently |
Receiver of notifications from other nodes.
Accept a notification packet from other node. Notification packets older than 10 minutes are ignored. The sending node should update the packet timestamp and the signature and send the packet again. This mechanism prevents attackers from recording and resending old signed packets.
NotificationPacket
Result
Information related to other nodes.
Get general information about other nodes.
PeopleGeneralInfo
All postings. Each posting may contain one or more revisions, a new revision is created every time the posting is updated. The latest revision is the current one, the previous ones are marked as deleted.
Create a new posting from the text given and publish it in the given feeds (if any). The heading and the preview of the posting are created automatically, if needed. The posting owner must authenticate in some way. If the posting is not signed, it will be kept for a limited period of time and then erased. If authenticated as admin, the posting is signed by the node.
PostingText
PostingInfo
Update the posting, creating a new revision of it. The text is processed just like in the POST
request.
String id
- ID of the posting
PostingText
PostingInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
posting.not-original |
updating a non-original posting is not allowed |
Get an individual posting.
String id
- ID of the posting
String include
- Comma-separated list of additional blocks of information that are needed. The values are: source
- source text of the posting.
PostingInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
Delete the posting. The posting may not be purged from the database immediately, but preserved for some period of time to give a chance to restore it.
String id
- ID of the posting
Result
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
Get all postings linked to media attached to the given posting.
String id
- ID of the posting
PostingInfo[]
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
Get information about supported features of postings.
PostingFeatures
All revisions of the posting.
Get all revisions of the posting, but not more than limit
. The node may decide to return less revisions than the given limit
.
String postingId
- ID of the posting
int limit
- maximum number of revisions returned
PostingRevisionInfo[]
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
Get an individual revision of the posting.
String postingId
- ID of the posting
String id
- ID of the revision
PostingRevisionInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
posting-revision.not-found |
there is no revision with the given ID |
Restore a revision of the posting. A new revision is created with the same content as in the given revision.
String postingId
- ID of the posting
String id
- ID of the revision
PostingRevisionInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
posting-revision.not-found |
there is no revision with the given ID |
posting-revision.already-current |
the given revision is already the current one |
Reactions ("Likes") - simple textless answers to a posting.
Add a reaction to the given posting. The reaction owner must authenticate in some way. Only one reaction is allowed from each owner to a particular posting. If a reaction from the same owner to this posting already exists, it is overwritten. If the reaction is not signed, the reaction will be kept for a limited period of time and then erased (the previous reaction of the same owner will be restored, if any).
String postingId
- ID of the posting
ReactionDescription
ReactionCreated
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
posting.not-signed |
the posting is not signed, so it is impossible to add reactions to it |
reaction.not-accepted |
the reaction is not acceptable |
Get a slice of the list of reactions to the given posting, optionally filtered by reaction type, delimited by before
moment and the given limit
. If before
is not provided, the latest reactions are returned. The node may decide to return less reactions than the given limit
. The reactions are always sorted by moment, descending.
String postingId
- ID of the posting
boolean negative
- true
, to filter negative reactions, false
, to filter positive ones
int emoji
- filter by reaction code, usually interpreted by clients as emoji code point
int before
- filter reactions created at or before this moment
int limit
- maximum number of reactions returned
ReactionsSliceInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
limit.invalid |
limit parameter has an invalid value |
Get the detailed information about the reaction of the given owner to the given posting. If no reaction with such owner exist, an empty structure with just postingId
is returned.
String postingId
- ID of the posting
String ownerName
- reaction owner node name
ReactionInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
Delete all reactions to the given posting.
String postingId
- ID of the posting
Result
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
Delete the reaction of the given owner to the given posting.
String postingId
- ID of the posting
String ownerName
- reaction owner node name
ReactionTotalsInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
Summary of reactions to a posting.
Get summary of reactions to the posting given.
String postingId
- ID of the posting
ReactionTotalsInfo
Code | Description |
---|---|
posting.not-found |
there is no posting with the given ID |
The profile - the detailed information about the node's owner, node's purpose etc.
Get the profile.
String include
- Comma-separated list of additional blocks of information that are needed. The values are: source
- source text of the bio.
ProfileInfo
Update the profile.
ProfileAttributes
ProfileInfo
Proxy, that may be used by web clients to workaround CORS restrictions of browsers
Open the URL passed in the parameters and pass to the client the media file returned by the server.
String url
Code | Description |
---|---|
proxy.request-failed |
HTTP request failed |
proxy.resource-not-found |
resource is not found |
proxy.resource-not-media |
resource is not a media file |
proxy.error-status |
HTTP request returned an error status |
proxy.url.invalid |
the URL is not valid |
SSE channels for delivering push notifications from the home node. When a client opens an SSE connection for the first time, an individual push notifications channel for this client is created (every client must generate a unique random identifier for its channel). After that, push notifications are stacked for this channel and the client should poll the channel periodically (or keep it open constantly) to receive them. If the client does not poll the channel for a long time, the channel is deleted.
Open the push notifications channel for the connected client or create a new one, if it does not exist. This request returns a live SSE stream, where events are notifications in a form of JSON-encoded PushContent
structures and event IDs are the moments, when these notifications were generated. When the channel is opened, the node discards all notifications up to after
(if provided) and delivers the rest of notifications till the current moment. After that, the notifications are delivered in real time until the channel is closed. If a client with the same clientId
opens a channel from another device, this channel is automatically closed by the node.
String clientId
- ID of the client
int after
- moment of the last notification already received by the client (Last-Event-ID
header may be used instead of this parameter)
PushContent[]
Code | Description |
---|---|
push.clientId.blank |
client ID is not set |
push.clientId.wrong-size |
client ID is too long |
push.too-many-clients |
too many push clients |
Delete the channel with all notifications in it.
String clientId
- ID of the client
Result
Code | Description |
---|---|
push.not-found |
push client is not found |
Comments to postings located on other nodes.
Add a comment to the posting on the remote node and register it in the registry at the local node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
CommentSourceText
Result
Update a comment to the posting on the remote node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
String commentId
- ID of the comment on the remote node
CommentSourceText
Result
Delete a comment from the registry of all comments at the local node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
String commentId
- ID of the comment on the remote node
Result
Verify the signature of the given comment to the posting on the remote node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
String commentId
- ID of the comment on the remote node
AsyncOperationCreated
Postings located on other nodes.
Add a posting to the remote node and register it in the registry at the local node.
String nodeName
- name of the remote node
PostingSourceText
Result
Update a posting on the remote node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
PostingSourceText
Result
Delete a posting from the registry of all remote postings at the local node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
Result
Verify the signature of the given posting.
String nodeName
- name of the remote node
String id
- ID of the posting on the remote node
AsyncOperationCreated
Verify the signature of the given revision of a posting.
String nodeName
- name of the remote node
String id
- ID of the posting on the remote node
String revisionId
- ID of the posting revision
AsyncOperationCreated
Reactions to postings located on other nodes.
Add a reaction to the posting on the remote node and register it in the registry at the local node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
ReactionAttributes
Result
Delete a reaction from the registry of all reactions at the local node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
Result
Verify the signature of the reaction of the given owner to the posting on the remote node.
String nodeName
- name of the remote node
String postingId
- ID of the posting on the remote node
String ownerName
- reaction owner node name
AsyncOperationCreated
Settings - the node and client settings. The node settings affect the node behavior. Only those settings are accepted that are known by the node, and their values are validated before saving. The node settings metadata can be obtained by request. The client settings are saved without validation and their metadata is built into the client. All client settings must have names starting with client.
to distinguish them from the node ones. By convention, the client name is added to the prefix (client.<client name>.
) to be able to store settings of several different clients at the same time.
Update the given settings. If the input contains node settings, they are validated and the first validation error is returned, if any. The update is always performed as whole - if there is an error saving any one of the settings in the input, none of them are updated.
If one of the settings to be updated is privileged, root secret authentication is required. If one of the settings to be updated is non-privileged, admin authentication is required.
SettingInfo[]
Result
Code | Description |
---|---|
setting.deserialization-failed |
setting value deserialization failed |
setting.cannot-convert |
cannot convert value to the setting type |
setting.invalid-value |
invalid value for the setting |
setting.internal |
cannot set value of an internal setting |
setting.unknown |
unknown setting |
Get all client settings, sorted by name.
String prefix
- filter settings whose names start with the given prefix, case-sensitive (client.
prefix must be included)
SettingInfo[]
Get all node settings, sorted by name. If a setting has not changed its value from the default, it is omitted.
String prefix
- filter settings whose names start with the given prefix, case-sensitive
SettingInfo[]
Get all node settings metadata, sorted by name.
String prefix
- filter settings whose names start with the given prefix, case-sensitive
SettingMetaInfo[]
Update node settings metadata, overriding built-in defaults.
SettingMetaAttributes[]
Result
Code | Description |
---|---|
setting.deserialization-failed |
setting value deserialization failed |
setting.cannot-convert |
cannot convert value to the setting type |
setting.invalid-value |
invalid value for the setting |
setting.internal |
cannot set value of an internal setting |
setting.unknown |
unknown setting |
All stories. Each story describes something happening in Moera, stories are building blocks for feeds. A story may reference a posting, a remote object etc.
Get an individual story.
String id
- ID of the story
StoryInfo
Code | Description |
---|---|
story.not-found |
there is no story with the given ID |
Update the story.
String id
- ID of the story
StoryAttributes
StoryInfo
Code | Description |
---|---|
story.not-found |
there is no story with the given ID |
All nodes that have subscribed to notifications from this node.
Get the list of all subscribers, optionally filtered by some criteria.
String nodeName
- filter by subscribed node name, may be omitted
String type
- filter by subscription type (see SubscriptionDescription.type
for the list of possible values), may be omitted
SubscriberInfo[]
Subscribe to a particular group of notifications.
SubscriberDescription
SubscriberInfo
Code | Description |
---|---|
subscriber.already-exists |
an identical subscriber already exists |
Get an individual subscriber.
String id
- ID of the subscriber
SubscriberInfo
Code | Description |
---|---|
subscriber.not-found |
there is no subscriber with the given ID |
Delete a subscriber.
String id
- ID of the subscriber
Result
Code | Description |
---|---|
subscriber.not-found |
there is no subscriber with the given ID |
All nodes that send notifications to this node.
Get the list of all subscriptions, optionally filtered by some criteria.
String nodeName
- filter by node name, may be omitted
String type
- filter by subscription type (see SubscriptionDescription.type
for the list of possible values), may be omitted
SubscriptionInfo[]
Register a subscription to notifications from a particular node.
SubscriptionDescription
SubscriptionInfo
Code | Description |
---|---|
subscription.already-exists |
an identical subscription already exists |
Delete the subscription described by the given parameters.
String remoteNodeName
- name of the node this node is subscribed to
String remoteSubscriberId
- ID of the subscriber on the remote node
Result
Code | Description |
---|---|
subscription.not-found |
there is no subscription with the given parameters. |
Search for subscriptions by the given criteria.
SubscriptionFilter
SubscriptionInfo[]
The authentication token. Read more about token-base authentication in the Overview section.
Get information about the token.
String token
- the token
TokenInfo
Sign in and create a token.
Credentials
TokenCreated
Code | Description |
---|---|
credentials.not-created |
credentials are not created yet |
credentials.login-incorrect |
login or password is incorrect |
Brief information about the node.
Get brief information about the node.
Type | Name | Description |
---|---|---|
String
|
positive |
comma-separated list of codes of the positive reactions that are accepted; a code may be prefixed by 0x to designate hexadecimal number and + to designate a recommended reaction
|
String
|
negative |
comma-separated list of codes of the negative reactions that are accepted (the format is the same as above) |
Type | Name | Description |
---|---|---|
RemotePosting[]
|
postings |
include only reactions to remote postings from this list |
Type | Name | Description |
---|---|---|
String
|
remoteNodeName |
name of the remote node |
String
|
remoteFullName |
full name of the remote node |
AvatarImage
|
remoteAvatar |
avatar of the remote node |
String
|
remotePostingId |
ID of the posting on the remote node |
boolean
|
negative |
true , if the reaction is negative, false , if positive |
int
|
emoji |
reaction code, usually interpreted by clients as emoji code point |
timestamp
|
createdAt |
reaction creation timestamp - the real time when the reaction was created |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the asyncronous operation that was created |
Type | Name | Description |
---|---|---|
String
|
mediaId |
ID of the public media file used as a source image |
int
|
clipX |
x coordinate of the top-left corner of the clipping square |
int
|
clipY |
y coordinate of the top-left corner of the clipping square |
int
|
clipSize |
size of the clipping square |
int
|
avatarSize |
size of the avatar to be created |
float
|
rotate |
rotation angle of the source image |
String
|
shape |
shape of the avatar |
int
|
ordinal |
ordinal of the avatar, may be absent |
Code | Description |
---|---|
avatarAttributes.mediaId.blank |
media ID is not set |
avatarAttributes.mediaId.not-found |
the source media is not found |
avatarAttributes.clipX.out-of-range |
clipping area left side is out of the image bounds |
avatarAttributes.clipY.out-of-range |
clipping area top side is out of the image bounds |
avatarAttributes.clipSize.out-of-range |
clipping area size is out of range (usually too small) |
avatarAttributes.avatarSize.out-of-range |
avatar size is out of range (usually too small) |
Type | Name | Description |
---|---|---|
String
|
mediaId |
ID of the public media file used as an avatar image |
String
|
shape |
shape of the avatar |
bool
|
optional |
if set to true , the node will ignore the absence of the media file referenced in mediaId field (empty avatar will be used in this case); if set to false or absent, the node will return an error, if the media file referenced in mediaId field is absent
|
Type | Name | Description |
---|---|---|
String
|
mediaId |
ID of the media file |
String
|
path |
virtual location of the media file, relative to the /media virtual page
|
int
|
width |
width of the media in pixels (null , if the media file is not an image/video) |
int
|
height |
height of the media in pixels (null , if the media file is not an image/video) |
String
|
shape |
shape of the avatar |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the avatar |
String
|
mediaId |
ID of the media file |
String
|
path |
virtual location of the media file, relative to the /media virtual page
|
int
|
width |
width of the media in pixels (null , if the media file is not an image/video) |
int
|
height |
height of the media in pixels (null , if the media file is not an image/video) |
String
|
shape |
shape of the avatar |
int
|
ordinal |
ordinal of the avatar |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the avatar |
int
|
ordinal |
ordinal of the avatar |
Type | Name | Description |
---|---|---|
String[]
|
ids |
IDs of avatars |
Type | Name | Description |
---|---|---|
String
|
subject |
plain text |
String
|
text |
HTML |
Type | Name | Description |
---|---|---|
String
|
carte |
|
timestamp
|
beginning |
timestamp of the beginning of the carte's life |
timestamp
|
deadline |
timestamp of the end of the carte's life |
Type | Name | Description |
---|---|---|
String
|
cartesIp |
the client IP address the cartes are bound to |
CarteInfo[]
|
cartes |
the cartes |
timestamp
|
createdAt |
cartes creation timestamp |
Type | Name | Description |
---|---|---|
String
|
value |
|
String
|
title |
user-readable title for the value |
Type | Name | Description |
---|---|---|
boolean
|
negative |
true , if the reaction is negative, false , if positive |
int
|
emoji |
reaction code, usually interpreted by clients as emoji code point |
timestamp
|
createdAt |
reaction creation timestamp - the real time when the reaction was created |
timestamp
|
deadline |
if present, the reaction will be erased at this time |
Type | Name | Description |
---|---|---|
CommentInfo
|
comment |
details of the comment created |
int
|
total |
total number of comments in the posting after the creation |
Type | Name | Description |
---|---|---|
String
|
id |
|
String
|
ownerName |
node name of the comment's owner |
String
|
ownerFullName |
full name of the comment's owner |
AvatarImage
|
ownerAvatar |
avatar of the comment's owner |
String
|
postingId |
ID of the parent posting of the comment |
String
|
postingRevisionId |
ID of the revision of parent posting that was current when the comment was created |
String
|
revisionId |
ID of the current revision of the comment |
int
|
totalRevisions |
total number of revisions the comment has |
String
|
bodyPreview |
preview of the comment's body, a string representation of a JSON structure, may be absent |
String
|
bodySrc |
the source text of the comment, a string representation of a JSON structure, may be absent if not requested |
byte[]
|
bodySrcHash |
hash of the source text of the comment |
String
|
bodySrcFormat |
format of the source text of the comment, the list of available formats is returned in PostingFeatures
|
String
|
body |
body of the comment, a string representation of a JSON structure |
String
|
bodyFormat |
format of the body of the comment, may have any value meaningful for the client, including:
|
MediaAttachment[]
|
media |
list of the media attached to the comment |
String
|
heading |
heading of the comment |
RepliedTo
|
repliedTo |
information about the comment this comment is replying to, may be absent |
int
|
moment |
|
timestamp
|
createdAt |
comment creation timestamp - the real time when the comment was created |
timestamp
|
editedAt |
comment editing timestamp - the last time the comment was updated |
timestamp
|
deletedAt |
comment deletion timestamp - the time when the comment was deleted, may be absent |
timestamp
|
revisionCreatedAt |
creation timestamp of the current revision of the comment |
timestamp
|
deadline |
comment purging timestamp - the time when the deleted comment will be purged from the database, may be absent |
byte[]
|
digest |
cryptographic digest of the comment |
byte[]
|
signature |
the comment's owner signature (use Comment fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
String -> String[]
|
operations |
list of the supported operations (see below) and the corresponding access hints |
AcceptedReactions
|
acceptedReactions |
types of reactions that the comment accepts |
ClientReactionInfo
|
clientReaction |
details of the existing reaction (if any) of the client's owner |
ClientReactionInfo
|
seniorReaction |
details of the existing reaction (if any) of the posting's owner ("senior") to the comment |
ReactionTotalsInfo
|
reactions |
reactions summary of the comment |
Name | Description |
---|---|
edit |
edit the comment |
delete |
delete the comment |
revisions |
view the comment's revisions |
reactions |
view reactions to the comment |
Type | Name | Description |
---|---|---|
String
|
id |
|
String
|
postingRevisionId |
ID of the posting revision that was actual at the moment of creation of this comment revision |
String
|
bodyPreview |
preview of the revision's body, a string representation of a JSON structure, may be absent |
byte[]
|
bodySrcHash |
hash of the source text of the revision |
String
|
bodySrcFormat |
format of the source text of the revision, the list of available formats is returned in PostingFeatures
|
String
|
body |
body of the revision, a string representation of a JSON structure |
String
|
bodyFormat |
format of the body of the revision, may have any value meaningful for the client, including:
|
String
|
heading |
heading of the revision |
timestamp
|
createdAt |
revision creation timestamp - the real time when the revision was created |
timestamp
|
deletedAt |
revision deletion timestamp - the time when the revision was deleted, may be absent |
timestamp
|
deadline |
revision deletion timestamp - the time when the revision will be deleted and the previous revision will take its place, may be absent |
byte[]
|
digest |
cryptographic digest of the revision |
byte[]
|
signature |
the comment's owner signature (use Comment fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
ClientReactionInfo
|
clientReaction |
details of the existing reaction (if any) of the client's owner |
ReactionTotalsInfo
|
reactions |
reactions summary of the revision |
Type | Name | Description |
---|---|---|
int
|
before |
the slice contains all comments before this moment, inclusive. May be the far future. |
int
|
after |
the slice contains all comments after this moment, exclusive. May be the far past. |
CommentInfo[]
|
comments |
the comments |
int
|
total |
total number of comments |
int
|
totalInPast |
number of comments before this slice till the far past |
int
|
totalInFuture |
number of comments after this slice till the far future |
Type | Name | Description |
---|---|---|
AvatarDescription
|
ownerAvatar |
avatar of the comment's owner |
String
|
bodySrc |
the source text of the comment, a string representation of a JSON structure |
String
|
bodySrcFormat |
format of the source text of the comment, plain-text by default; the list of available formats is returned in PostingFeatures
|
MediaWithDigest[]
|
media |
array of IDs and digests of private media to be attached to the comment |
AcceptedReactions
|
acceptedReactions |
types of reactions that the comment accepts |
String
|
repliedToId |
ID of the comment this comment is replying to |
Code | Description |
---|---|
commentText.bodySrc.blank |
body text is empty |
commentText.bodySrc.wrong-size |
body text is too long |
commentText.bodySrc.wrong-encoding |
body text is formatted incorrectly |
commentText.acceptedReactions.positive.wrong-size |
list of accepted positive reactions is too long |
commentText.acceptedReactions.positive.wrong-pattern |
list of accepted positive reactions has wrong format |
commentText.acceptedReactions.negative.wrong-size |
list of accepted negative reactions is too long |
commentText.acceptedReactions.negative.wrong-pattern |
list of accepted negative reactions has wrong format |
Type | Name | Description |
---|---|---|
String
|
ownerName |
node name of the comment's owner |
String
|
ownerFullName |
full name of the comment's owner |
AvatarDescription
|
ownerAvatar |
avatar of the comment's owner |
String
|
bodyPreview |
preview of the comment's body, a string representation of a JSON structure |
String
|
bodySrc |
the source text of the comment, a string representation of a JSON structure |
String
|
bodySrcFormat |
format of the source text of the comment, plain-text by default; the list of available formats is returned in PostingFeatures
|
String
|
body |
body of the comment, a string representation of a JSON structure |
String
|
bodyFormat |
format of the body of the comment, may have any value meaningful for the client, including:
|
String[]
|
media |
array of IDs of private media to be attached to the comment |
timestamp
|
createdAt |
comment creation timestamp - the real time when the comment was created |
AcceptedReactions
|
acceptedReactions |
types of reactions that the comment accepts |
String
|
repliedToId |
ID of the comment this comment is replying to |
byte[]
|
signature |
the comment's owner signature (use Comment fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
Code | Description |
---|---|
commentText.ownerAvatar.mediaId.not-found |
owner's avatar is not found |
commentText.bodySrc.blank |
body text is empty |
commentText.bodySrc.wrong-size |
body text is too long |
commentText.bodySrc.wrong-encoding |
body text is formatted incorrectly |
commentText.bodySrcFormat.unknown |
unknown body text format |
commentText.body.blank |
body is empty |
commentText.body.wrong-size |
body is too long |
commentText.body.wrong-encoding |
body encoding is incorrect |
commentText.bodyPreview.wrong-encoding |
body preview encoding is incorrect |
commentText.bodyFormat.blank |
body format is not set |
commentText.bodyFormat.wrong-size |
body format is too long |
commentText.media.not-found |
media attachment is not found |
commentText.media.not-compressed |
media attachment is not compressed as the node requires, the parameters of the desired compression are returned in PostingFeatures
|
commentText.createdAt.blank |
body creation timestamp is not set |
commentText.createdAt.out-of-range |
body creation timestamp is too far from the current timestamp |
commentText.acceptedReactions.positive.wrong-size |
list of accepted positive reactions is too long |
commentText.acceptedReactions.positive.wrong-pattern |
list of accepted positive reactions has wrong format |
commentText.acceptedReactions.negative.wrong-size |
list of accepted negative reactions is too long |
commentText.acceptedReactions.negative.wrong-pattern |
list of accepted negative reactions has wrong format |
commentText.repliedToId.not-found |
comment referred in `repliedToId` is not found |
Type | Name | Description |
---|---|---|
int
|
total |
total number of comments in the posting after the operation |
Type | Name | Description |
---|---|---|
String
|
nodeName |
|
String
|
fullName |
|
AvatarImage
|
avatar |
|
float
|
closeness |
closeness of the contact to the node, which is calculated from the number of reactions and comments and their age |
Type | Name | Description |
---|---|---|
String
|
login |
|
String
|
password |
Code | Description |
---|---|
credentials.login.blank |
the login is empty |
credentials.password.blank |
the password is empty |
Type | Name | Description |
---|---|---|
String
|
token |
credentials reset token |
String
|
oldPassword |
the current password |
String
|
login |
|
String
|
password |
Code | Description |
---|---|
credentials.login.blank |
the login is empty |
credentials.password.blank |
the password is empty |
Type | Name | Description |
---|---|---|
boolean
|
created |
true if the credentials are initialized already, false otherwise |
Type | Name | Description |
---|---|---|
String
|
name |
domain's hostname or _default_ for the default domain |
UUID
|
nodeId |
domain's node ID |
Code | Description |
---|---|
domainAttributes.name.blank |
the domain name is empty |
domainAttributes.name.wrong-hostname |
the domain name is not a valid hostname |
domainAttributes.nodeId.wrong-uuid |
the node ID is not a valid UUID |
Type | Name | Description |
---|---|---|
String
|
name |
fully-qualified domain name |
Type | Name | Description |
---|---|---|
String
|
name |
domain's hostname or _default_ for the default domain |
UUID
|
nodeId |
domain's node ID |
timestamp
|
createdAt |
domain creation timestamp |
Code | Description |
---|---|
domainInfo.name.blank |
the domain name is empty |
domainInfo.name.wrong-hostname |
the domain name is not a valid hostname |
domainInfo.nodeId.wrong-uuid |
the node ID is not a valid UUID |
Type | Name | Description |
---|---|---|
String
|
id |
|
String
|
draftType |
type of the draft, one of:
|
String
|
receiverName |
name of the node the draft is related to |
String
|
receiverPostingId |
ID of the posting, set for all types, except new-posting |
String
|
receiverCommentId |
ID of the comment, set for comment-update type |
timestamp
|
createdAt |
draft creation timestamp - the real time when the draft was created |
timestamp
|
editedAt |
draft editing timestamp - the last time the draft was updated |
timestamp
|
deadline |
draft purging timestamp - the time when the draft will be purged from the database, if not updated |
String
|
ownerFullName |
full name of the posting's/comment's owner |
AvatarDescription
|
ownerAvatar |
avatar of the posting's/comment's owner |
AcceptedReactions
|
acceptedReactions |
types of reactions that the posting accepts |
boolean
|
reactionsVisible |
true , if the posting allows to view detailed information about reactions to anybody except posting and reaction owners, false otherwise
|
boolean
|
reactionTotalsVisible |
true , if the posting allows to view number of reactions to anybody except the posting owner, false otherwise
|
String
|
bodySrc |
the source text of the draft, a string representation of a JSON structure |
String
|
bodySrcFormat |
format of the source text of the draft, plain-text by default; the list of available formats is returned in PostingFeatures
|
String
|
body |
body of the draft, a string representation of a JSON structure |
String
|
bodyFormat |
format of the body of the draft, see detailed description in PostingInfo .bodyFormat
|
MediaAttachment[]
|
media |
list of the media attached to the draft |
String
|
heading |
heading of the draft |
int
|
publishAt |
story publication timestamp - the time the story must be published under in the feed |
UpdateInfo
|
updateInfo |
description of the update |
Type | Name | Description |
---|---|---|
String
|
draftType |
type of the draft (see DraftInfo.draftType for the list of possible values)
|
String
|
receiverName |
name of the node the draft is related to |
String
|
receiverPostingId |
ID of the posting, mandatory for all types, except new-posting |
String
|
receiverCommentId |
ID of the comment, mandatory for comment-update type |
String
|
ownerFullName |
full name of the posting's/comment's owner |
AvatarDescription
|
ownerAvatar |
avatar of the posting's/comment's owner |
AcceptedReactions
|
acceptedReactions |
types of reactions that the posting accepts |
boolean
|
reactionsVisible |
true , if the posting allows to view detailed information about reactions to anybody except posting and reaction owners, false otherwise
|
boolean
|
reactionTotalsVisible |
true , if the posting allows to view number of reactions to anybody except the posting owner, false otherwise
|
String
|
bodySrc |
the source text of the draft, a string representation of a JSON structure |
String
|
bodySrcFormat |
format of the source text of the draft, plain-text by default; the list of available formats is returned in PostingFeatures
|
RemoteMedia[]
|
media |
list of the media attached to the draft, the media may be located on another node |
int
|
publishAt |
story publication timestamp - the time the story must be published under in the feed |
UpdateInfo
|
updateInfo |
description of the update |
Code | Description |
---|---|
draftText.postingId.blank |
posting ID is not set |
draftText.commentId.blank |
comment ID is not set |
draftText.ownerFullName.wrong-size |
owner's full name is too long |
draftText.ownerAvatar.mediaId.not-found |
owner's avatar is not found |
draftText.bodySrc.wrong-size |
body text is too long |
draftText.bodySrc.wrong-encoding |
body text encoding is incorrect |
draftText.bodySrcFormat.unknown |
unknown body text format |
draftText.acceptedReactions.positive.wrong-size |
list of accepted positive reactions is too long |
draftText.acceptedReactions.positive.wrong-pattern |
list of accepted positive reactions has wrong format |
draftText.acceptedReactions.negative.wrong-size |
list of accepted negative reactions is too long |
draftText.acceptedReactions.negative.wrong-pattern |
list of accepted negative reactions has wrong format |
Type | Name | Description |
---|---|---|
String
|
emailHint |
a masked E-mail address that should help user to understand which E-mail address was used without revealing it |
Type | Name | Description |
---|---|---|
PostingInfo
|
posting |
posting details, may be absent, if the entry is not a posting |
CommentInfo
|
comment |
comment details, may be absent, if the entry is not a comment |
Type | Name | Description |
---|---|---|
String
|
feedName |
name of the feed |
String
|
title |
title of the feed |
String
|
subscriberId |
ID of the subscriber, if the client is subscribed to notifications about this feed, null or absent otherwise
|
int
|
total |
total number of stories in the feed |
timestamp
|
firstCreatedAt |
creation timestamp of the earliest story in the feed |
timestamp
|
lastCreatedAt |
creation timestamp of the latest story in the feed |
String -> String[]
|
operations |
list of the supported operations (see below) and the corresponding access hints |
Name | Description |
---|---|
add |
add stories to the feed |
Type | Name | Description |
---|---|---|
String
|
feedName |
name of the feed |
timestamp
|
publishedAt |
story publication timestamp - the time the story is published under in the feed |
boolean
|
pinned |
true , if the story is pinned (should appear before any non-pinned story in the feed), false otherwise
|
int
|
moment |
|
String
|
storyId |
ID of the story |
String -> String[]
|
operations |
list of the supported operations (see StoryInfo.operations ) and the corresponding access hints for the story in the feed
|
Type | Name | Description |
---|---|---|
int
|
before |
the slice contains all stories before this moment, inclusive. May be the far future. |
int
|
after |
the slice contains all stories after this moment, exclusive. May be the far past. |
StoryInfo[]
|
stories |
the stories |
int
|
totalInPast |
total number of stories in the feed before this slice |
int
|
totalInFuture |
total number of stories in the feed after this slice |
Type | Name | Description |
---|---|---|
int
|
total |
total number of stories |
int
|
totalPinned |
total number of pinned stories |
int
|
notViewed |
number of stories that have not been viewed yet, admin only |
int
|
notRead |
number of stories that have not been read yet, admin only |
int
|
notViewedMoment |
moment of the oldest non-viewed story, admin only, may be absent |
Type | Name | Description |
---|---|---|
boolean
|
viewed |
new value of the viewed flag (null , if the flag is not changed) |
boolean
|
read |
new value of the read flag (null , if the flag is not changed) |
int
|
before |
change flags for all stories before this moment, inclusive |
Type | Name | Description |
---|---|---|
String
|
feedName |
name of the feed |
int
|
notViewed |
number of stories in the feed that have not been viewed yet |
int
|
notRead |
number of stories in the feed that have not been read yet |
Type | Name | Description |
---|---|---|
String
|
title |
fundraiser title |
String
|
qrCode |
text or URI to be encoded and displayed as QR-code, may be absent |
String
|
text |
arbitrary text to be displayed, may be absent |
String
|
href |
link to the fundraiser, may be absent |
any
|
any |
any other fields understood by Moera clients |
Type | Name | Description |
---|---|---|
PrivateMediaFileInfo
|
media |
details of the attached media, may be absent, if the media is not located on the node |
RemoteMediaInfo
|
remoteMedia |
details of the media, if it is located on another node |
boolean
|
embedded |
true if the media is used in the body of the posting/comment, false otherwise
|
Type | Name | Description |
---|---|---|
int
|
targetWidth |
the width the preview was prepared for viewing at |
int
|
width |
actual width of the preview in pixels |
int
|
height |
actual height of the preview in pixels |
boolean
|
original |
true if the preview is identical to the original media, false otherwise |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the media file |
String
|
digest |
cryptographic digest of the media file |
Type | Name | Description |
---|---|---|
String
|
name |
Code | Description |
---|---|
nameToRegister.name.blank |
the name is empty |
nameToRegister.name.invalid |
the name is reserved, too long or contains invalid characters |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the notification packet on the sending node (used to filter out duplicates) |
String
|
nodeName |
name of the sending node |
String
|
fullName |
full name of the sending node |
AvatarImage
|
avatar |
avatar of the sending node |
timestamp
|
createdAt |
notification packet creation timestamp |
String
|
type |
notification type |
String
|
notification |
the notification, a string representation of a JSON structure (see Notifications page for details) |
byte[]
|
signature |
the notification packet sender signature (use NotificationPacket fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
Type | Name | Description |
---|---|---|
String
|
name |
|
OperationStatus
|
operationStatus |
status of the latest operation with the node name |
timestamp
|
operationStatusUpdated |
the last time the operation status was updated |
String
|
operationErrorCode |
if the operation with the node name was failed, the code of the failure |
String
|
operationErrorMessage |
if the operation with the node name was failed, the human-readable description of the failure |
String -> String[]
|
operations |
list of the supported operations (see below) and the corresponding access hints |
Name | Description |
---|---|
manage |
any modification of the node name, prolonging it etc |
Type | Name | Description |
---|---|---|
int
|
feedSubscribersTotal |
total number of subscribers of the node |
int
|
feedSubscriptionsTotal |
total number of subscriptions of the node |
Type | Name | Description |
---|---|---|
boolean
|
subjectPresent |
true if new postings are recommended to have a subject, false otherwise |
Choice[]
|
sourceFormats |
List of source text formats the node understands. The well-known values are:
|
int
|
mediaMaxSize |
maximal size of a media attachment in a post |
int
|
imageRecommendedSize |
maximal size of a compressed image in a post |
int
|
imageRecommendedPixels |
maximal resolution of a compressed image in a post (in pixels) |
Type | Name | Description |
---|---|---|
String
|
id |
|
String
|
revisionId |
ID of the current revision of the posting |
String
|
receiverRevisionId |
ID of the current revision of the original posting (for cached copies of remote postings only) |
int
|
totalRevisions |
total number of revisions the posting has |
String
|
receiverName |
name of the node where the posting was published (for cached copies of remote postings only) |
String
|
receiverFullName |
full name of the node where the posting was published (for cached copies of remote postings only) |
AvatarImage
|
receiverAvatar |
avatar of the node where the posting was published (for cached copies of remote postings only) |
String
|
receiverPostingId |
ID of the original posting (for cached copies of remote postings only) |
String
|
parentMediaId |
ID of the media the posting is linked to, if any |
String
|
ownerName |
node name of the posting's owner |
String
|
ownerFullName |
full name of the posting's owner |
AvatarImage
|
ownerAvatar |
avatar of the posting's owner |
String
|
bodyPreview |
preview of the posting's body, a string representation of a JSON structure, may be absent |
String
|
bodySrc |
the source text of the posting, a string representation of a JSON structure, may be absent if not requested |
byte[]
|
bodySrcHash |
hash of the source text of the posting |
String
|
bodySrcFormat |
format of the source text of the posting, the list of available formats is returned in PostingFeatures
|
String
|
body |
body of the posting, a string representation of a JSON structure |
String
|
bodyFormat |
format of the body of the posting, may have any value meaningful for the client, including:
|
MediaAttachment[]
|
media |
list of the media attached to the posting |
String
|
heading |
heading of the posting |
UpdateInfo
|
updateInfo |
description of the latest update |
timestamp
|
createdAt |
posting creation timestamp - the real time when the posting was created |
timestamp
|
editedAt |
posting editing timestamp - the last time the posting was updated |
timestamp
|
deletedAt |
posting deletion timestamp - the time when the posting was deleted, may be absent |
timestamp
|
receiverCreatedAt |
original posting creation timestamp (for cached copies of remote postings only) |
timestamp
|
receiverEditedAt |
original posting editing timestamp (for cached copies of remote postings only) |
timestamp
|
receiverDeletedAt |
original posting deletion timestamp (for cached copies of remote postings only) |
timestamp
|
revisionCreatedAt |
creation timestamp of the current revision of the posting |
timestamp
|
receiverRevisionCreatedAt |
creation timestamp of the current revision of the original posting (for cached copies of remote postings only) |
timestamp
|
deadline |
posting purging timestamp - the time when the deleted posting will be purged from the database, may be absent |
byte[]
|
signature |
the posting's owner signature (use Posting fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
FeedReference[]
|
feedReferences |
array of references to the posting from stories in feeds |
String -> String[]
|
operations |
list of the supported operations (see below) and the corresponding access hints |
AcceptedReactions
|
acceptedReactions |
types of reactions that the posting accepts |
ClientReactionInfo
|
clientReaction |
details of the existing reaction (if any) of the client's owner |
ReactionTotalsInfo
|
reactions |
reactions summary of the posting |
boolean
|
reactionsVisible |
true , if the posting allows to view detailed information about reactions to anybody except posting and reaction owners, false otherwise
|
boolean
|
reactionTotalsVisible |
true , if the posting allows to view number of reactions to anybody except the posting owner, false otherwise
|
PostingSourceInfo[]
|
sources |
details of the sources the posting was received from (for cached copies of remote postings only) |
int
|
totalComments |
total number of comments to the posting |
PostingSubscriptionsInfo
|
subscriptions |
existing subscriptions of the client's owner |
Name | Description |
---|---|
edit |
edit the posting |
delete |
delete the posting |
revisions |
view the posting's revisions |
reactions |
view reactions to the posting |
Type | Name | Description |
---|---|---|
String
|
id |
|
String
|
receiverId |
ID of the original revision (for cached copies of remote postings only) |
String
|
bodyPreview |
preview of the revisions's body, a string representation of a JSON structure, may be absent |
byte[]
|
bodySrcHash |
hash of the source text of the revision |
String
|
bodySrcFormat |
format of the source text of the revision, the list of available formats is returned in PostingFeatures
|
String
|
body |
body of the revision, a string representation of a JSON structure |
String
|
bodyFormat |
format of the body of the revision, see detailed description in PostingInfo .bodyFormat
|
MediaAttachment[]
|
media |
list of the media attached to the revision |
String
|
heading |
heading of the revision |
UpdateInfo
|
updateInfo |
description of the latest update |
timestamp
|
createdAt |
revision creation timestamp - the real time when the revision was created |
timestamp
|
deletedAt |
revision deletion timestamp - the time when the revision was deleted, may be absent |
timestamp
|
receiverCreatedAt |
original revision creation timestamp (for cached copies of remote postings only) |
timestamp
|
receiverDeletedAt |
original revision deletion timestamp (for cached copies of remote postings only) |
byte[]
|
signature |
the revision's owner signature (use Posting fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
ClientReactionInfo
|
clientReaction |
details of the existing reaction (if any) of the client's owner |
ReactionTotalsInfo
|
reactions |
reactions summary of the posting revision |
Type | Name | Description |
---|---|---|
String
|
nodeName |
name of the remote node |
String
|
fullName |
full name of the remote node |
AvatarImage
|
avatar |
avatar of the remote node |
String
|
feedName |
name of the feed on the remote node |
String
|
postingId |
ID of the posting on the remote node |
timestamp
|
createdAt |
timestamp when the posting was received from this source |
Type | Name | Description |
---|---|---|
AvatarDescription
|
ownerAvatar |
avatar of the posting's owner |
String
|
bodySrc |
the source text of the posting, a string representation of a JSON structure |
String
|
bodySrcFormat |
format of the source text of the posting, plain-text by default; the list of available formats is returned in PostingFeatures
|
MediaWithDigest[]
|
media |
array of IDs and digests of private media to be attached to the posting |
AcceptedReactions
|
acceptedReactions |
types of reactions that the posting accepts |
Type | Name | Description |
---|---|---|
String
|
comments |
ID of the existing subscription to posting comments, if any |
Type | Name | Description |
---|---|---|
String
|
ownerName |
node name of the posting's owner, may be absent |
String
|
ownerFullName |
full name of the posting's owner |
AvatarDescription
|
ownerAvatar |
avatar of the posting's owner |
String
|
bodyPreview |
preview of the posting's body, a string representation of a JSON structure |
String
|
bodySrc |
the source text of the posting, a string representation of a JSON structure |
String
|
bodySrcFormat |
format of the source text of the posting, plain-text by default; the list of available formats is returned in PostingFeatures
|
String
|
body |
body of the posting, a string representation of a JSON structure |
String
|
bodyFormat |
format of the body of the posting, may have any value meaningful for the client, including:
|
String[]
|
media |
array of IDs of private media to be attached to the posting |
timestamp
|
createdAt |
posting creation timestamp - the real time when the posting was created |
AcceptedReactions
|
acceptedReactions |
types of reactions that the posting accepts |
boolean
|
reactionsVisible |
true , if the posting allows to view detailed information about reactions to anybody except posting and reaction owners, false otherwise
|
boolean
|
reactionTotalsVisible |
true , if the posting allows to view number of reactions to anybody except the posting owner, false otherwise
|
StoryAttributes[]
|
publications |
list of publications in feeds that must be made after creating the posting (for new postings only) |
UpdateInfo
|
updateInfo |
description of the update |
byte[]
|
signature |
the posting's owner signature (use Posting fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
Code | Description |
---|---|
postingText.ownerAvatar.mediaId.not-found |
owner's avatar is not found |
postingText.bodySrc.blank |
body source text is empty |
postingText.bodySrc.wrong-size |
body source text is too long |
postingText.bodySrc.wrong-encoding |
body source text is formatted incorrectly |
postingText.bodySrcFormat.unknown |
unknown body source text format |
postingText.body.blank |
body text is empty |
postingText.body.wrong-size |
body text is too long |
postingText.bodyPreview.wrong-encoding |
body preview encoding is incorrect |
postingText.bodyFormat.blank |
body format is not set |
postingText.bodyFormat.wrong-size |
body format is too long |
postingText.media.not-found |
media attachment is not found |
postingText.media.not-compressed |
media attachment is not compressed as the node requires, the parameters of the desired compression are returned in PostingFeatures
|
postingText.createdAt.blank |
body creation timestamp is not set |
postingText.createdAt.out-of-range |
body creation timestamp is too far from the current timestamp |
postingText.acceptedReactions.positive.wrong-size |
list of accepted positive reactions is too long |
postingText.acceptedReactions.positive.wrong-pattern |
list of accepted positive reactions has wrong format |
postingText.acceptedReactions.negative.wrong-size |
list of accepted negative reactions is too long |
postingText.acceptedReactions.negative.wrong-pattern |
list of accepted negative reactions has wrong format |
postingText.publications.cannot-modify |
publications field is not allowed in posting modification query |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the media file |
String
|
hash |
SHA-1 hash of the media file |
String
|
path |
virtual location of the media file, relative to the /media virtual page
|
String
|
mimeType |
MIME-type of the media |
int
|
width |
width of the media in pixels (null , if the media file is not an image/video) |
int
|
height |
height of the media in pixels (null , if the media file is not an image/video) |
int
|
size |
size of the media file in bytes |
String
|
postingId |
ID of the posting linked to the media (may be absent) |
MediaFilePreviewInfo[]
|
previews |
list of media previews - downscaled versions of the media |
Type | Name | Description |
---|---|---|
String
|
fullName |
node owner's full name |
String
|
gender |
node owners's gender |
String
|
email |
node owner's E-mail address |
String
|
title |
node title |
String
|
bioSrc |
the source text of node owner's bio (arbitrary text) |
String
|
bioSrcFormat |
format of the source text of node owner's bio, markdown by default; the list of available formats is returned in PostingFeatures
|
String
|
avatarId |
node owner's avatar ID |
FundraiserInfo[]
|
fundraisers |
list of fundraisers - methods of giving a donation to the node owner (may be absent) |
Code | Description |
---|---|
profileAttributes.fullName.wrong-size |
the full name is too long |
profileAttributes.gender.wrong-size |
the gender string is too long |
profileAttributes.email.wrong-size |
the E-mail is too long |
profileAttributes.email.wrong-email |
the E-mail is not a well-formed E-mail address |
profileAttributes.title.wrong-size |
the title is too long |
profileAttributes.bioSrc.wrong-size |
the bio is too long |
Type | Name | Description |
---|---|---|
String
|
fullName |
node owner's full name |
String
|
gender |
node owners's gender |
String
|
email |
node owner's E-mail address |
String
|
title |
node title |
String
|
bioSrc |
the source text of node owner's bio (arbitrary text), may be absent if not requested |
String
|
bioSrcFormat |
format of the source text of node owner's bio, markdown by default, may be absent if not requested; the list of available formats is returned in PostingFeatures
|
String
|
bioHtml |
HTML representation of node owner's bio |
AvatarInfo
|
avatar |
node owner's avatar |
FundraiserInfo[]
|
fundraisers |
list of fundraisers - methods of giving a donation to the node owner (may be absent) |
String -> String[]
|
operations |
list of the supported operations (see below) and the corresponding access hints |
Name | Description |
---|---|
edit |
change the profile |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the media file |
String
|
path |
virtual location of the media file, relative to the /media virtual page
|
int
|
width |
width of the media in pixels (null , if the media file is not an image/video) |
int
|
height |
height of the media in pixels (null , if the media file is not an image/video) |
int
|
size |
size of the media file in bytes |
Type | Name | Description |
---|---|---|
String
|
type |
type of the notification, one of:
|
String
|
id |
ID of the story (story-deleted notifications only) |
StoryInfo
|
story |
the story (story-added notifications only) |
FeedWithStatus
|
feedStatus |
status of the feed (feed-updated notifications only) |
Type | Name | Description |
---|---|---|
boolean
|
negative |
true , if the reaction is negative, false , if positive |
int
|
emoji |
reaction code, usually interpreted by clients as emoji code point |
Type | Name | Description |
---|---|---|
ReactionInfo
|
reaction |
details of the reaction created |
ReactionTotalsInfo
|
totals |
summary of reactions after the creation |
Type | Name | Description |
---|---|---|
String
|
ownerName |
reaction owner's node name |
String
|
ownerFullName |
reaction owner's full name |
AvatarDescription
|
ownerAvatar |
reaction owner's avatar |
boolean
|
negative |
true , if the reaction is negative, false , if positive |
int
|
emoji |
reaction code, usually interpreted by clients as emoji code point |
byte[]
|
signature |
the reaction owner signature (use Reaction fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
Code | Description |
---|---|
reactionDescription.ownerAvatar.mediaId.not-found |
owner's avatar is not found |
Type | Name | Description |
---|---|---|
String
|
ownerName |
reaction owner's node name |
String
|
ownerFullName |
reaction owner's full name |
AvatarImage
|
ownerAvatar |
reaction owner's avatar |
String
|
postingId |
ID of the posting |
String
|
postingRevisionId |
ID of the posting revision, if relevant |
String
|
commentId |
ID of the comment, if relevant |
String
|
commentRevisionId |
ID of the comment revision, if relevant |
boolean
|
negative |
true , if the reaction is negative, false , if positive |
int
|
emoji |
reaction code, usually interpreted by clients as emoji code point |
int
|
moment |
|
timestamp
|
createdAt |
reaction creation timestamp - the real time when the reaction was created |
timestamp
|
deadline |
if present, the reaction will be erased at this time |
byte[]
|
signature |
the reaction owner signature (use Reaction fingerprint)
|
int
|
signatureVersion |
signature version (i.e. fingerprint version) |
String -> String[]
|
operations |
list of the supported operations (see below) and the corresponding access hints |
Name | Description |
---|---|
delete |
delete the reaction |
Type | Name | Description |
---|---|---|
int
|
before |
the slice contains all reactions before this moment, inclusive. May be the far future. |
int
|
after |
the slice contains all reactions after this moment, exclusive. May be the far past. |
int
|
total |
total number of reactions in the whole list |
ReactionInfo[]
|
reactions |
the reactions |
Type | Name | Description |
---|---|---|
int
|
emoji |
reaction code, usually interpreted by clients as emoji code point |
int
|
total |
total number of reactions with the given code (may be absent) |
float
|
share |
share the reactions with the given code stand from the total number of reactions (may be absent, if total is present)
|
Type | Name | Description |
---|---|---|
ReactionTotalInfo[]
|
positive |
summary of positive reactions |
ReactionTotalInfo[]
|
negative |
summary of negative reactions |
Type | Name | Description |
---|---|---|
String
|
name |
|
String[]
|
mnemonic |
human-friendly mnemonic of the updating key |
String
|
secret |
base64-encoded secret of the updating key |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the media file |
String
|
hash |
SHA-1 hash of the media file |
String
|
digest |
cryptographic digest of the media file |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the media file |
String
|
hash |
SHA-1 hash of the media file |
String
|
digest |
cryptographic digest of the media file |
Type | Name | Description |
---|---|---|
String
|
nodeName |
name of the node |
String
|
postingId |
ID of the posting on the node |
Type | Name | Description |
---|---|---|
String
|
id |
asynchronous operation ID |
String
|
nodeName |
|
String
|
postingId |
|
String
|
revisionId |
|
String
|
status |
status of the operation, may be one of:
|
String
|
errorCode |
error code |
String
|
errorMessage |
human-readable error message |
Type | Name | Description |
---|---|---|
String
|
id |
asynchronous operation ID |
String
|
nodeName |
|
String
|
postingId |
|
String
|
reactionOwnerName |
node name of the reaction's owner |
String
|
status |
status of the operation, may be one of:
|
String
|
errorCode |
error code |
String
|
errorMessage |
human-readable error message |
Type | Name | Description |
---|---|---|
String
|
id |
ID of the comment |
String
|
revisionId |
ID of the comment revision |
String
|
name |
node name of the comment's owner |
String
|
fullName |
full name of the comment's owner |
AvatarImage
|
avatar |
avatar of the comment's owner |
String
|
heading |
heading of the comment |
byte[]
|
digest |
cryptographic digest of the comment |
Type | Name | Description |
---|---|---|
String
|
errorCode |
error code |
String
|
message |
human-readable error message |
Type | Name | Description |
---|---|---|
String
|
name |
name of the setting |
String
|
value |
value of the setting |
Type | Name | Description |
---|---|---|
String
|
name |
name of the setting |
String
|
defaultValue |
default value of the setting (if absent or null , the built-in default value will be used)
|
boolean
|
privileged |
the setting should be privileged (if absent or null , the built-in value of the flag will be used)
|
Type | Name | Description |
---|---|---|
String
|
name |
name of the setting |
String
|
type |
type of the setting, may be one of:
|
String
|
defaultValue |
default value of the setting |
boolean
|
privileged |
the setting is privileged - may be changed by server owner only |
String
|
title |
human-friendly description of the setting |
SettingTypeModifiers
|
modifiers |
additional modifiers that may help to choose a proper UI component for the setting value and to validate the input; meaning of the modifiers depend on the setting type |
Type | Name | Description |
---|---|---|
String
|
min |
(int , Duration ) minimal value |
String
|
max |
(int , Duration ) maximal value |
boolean
|
multiline |
(string ) true , if the value is a multiline text |
boolean
|
never |
(Duration ) true , if value never is allowed |
boolean
|
always |
(Duration ) true , if value always is allowed |
Type | Name | Description |
---|---|---|
String
|
feedName |
name of the feed |
timestamp
|
publishAt |
story publication timestamp - the time the story must be published under in the feed |
boolean
|
pinned |
true , if the story is pinned (should appear before any non-pinned story in the feed), false otherwise
|
boolean
|
viewed |
value of the viewed flag (null , if the flag is not changed) |
boolean
|
read |
value of the read flag (null , if the flag is not changed) |
Type | Name | Description |
---|---|---|
String
|
id |
|
String
|
feedName |
name of the feed |
String
|
storyType |
type of the story (see Stories page for description of various story types and their meaning) |
timestamp
|
createdAt |
story creation timestamp - the real time when the story was created |
timestamp
|
publishedAt |
story publication timestamp - the time the story is published under in the feed |
boolean
|
pinned |
true , if the story is pinned (should appear before any non-pinned story in the feed), false otherwise
|
int
|
moment |
|
boolean
|
viewed |
true , if the story has been viewed by node owner, false otherwise |
boolean
|
read |
true , if the story has been read by node owner, false otherwise |
String -> String[]
|
operations |
list of the supported operations (see below) and the corresponding access hints |
String
|
summaryNodeName |
name of the node related to the summary of the story |
String
|
summaryFullName |
full name of the node related to the summary of the story |
AvatarImage
|
summaryAvatar |
avatar of the summary of the story |
String
|
summary |
user-readable summary of the story |
String
|
trackingId |
ID (visible by node admin only) that may be used to update the story viewed/read status without authentication |
PostingInfo
|
posting |
the posting this story is about (may be absent or contain only ID) |
CommentInfo
|
comment |
the comment this story is about (may be absent or contain only ID) |
String
|
remoteNodeName |
name of the node this story is about (may be absent) |
String
|
remoteFullName |
full name of the node this story is about (may be absent) |
String
|
remotePostingId |
ID of the posting at remote node this story is about (may be absent) |
String
|
remoteCommentId |
ID of the comment at remote node this story is about (may be absent) |
String
|
remoteMediaId |
ID of the media at remote node this story is about (may be absent) |
Name | Description |
---|---|
edit |
update the story |
delete |
delete the story |
Type | Name | Description |
---|---|---|
String
|
type |
subscription type, (see SubscriptionDescription.type for the list of possible values)
|
String
|
feedName |
feed name, if the subscription type requires one |
String
|
postingId |
posting ID, if the subscription type requires one |
String
|
ownerFullName |
full name of the subscriber |
AvatarDescription
|
ownerAvatar |
avatar of the subscriber |
timestamp
|
lastUpdatedAt |
timestamp of the latest known state of the object, may be absent |
Code | Description |
---|---|
subscriberDescription.type.blank |
type is empty |
subscriberDescription.feedName.blank |
feed name is empty |
subscriberDescription.feedName.not-found |
feed is not found |
subscriberDescription.postingId.blank |
posting ID is empty |
subscriberDescription.postingId.not-found |
posting is not found |
subscriberDescription.ownerAvatar.mediaId.not-found |
subscriber's avatar is not found |
Type | Name | Description |
---|---|---|
String
|
id |
subscriber ID |
String
|
type |
subscription type, (see SubscriptionDescription.type for the list of possible values)
|
String
|
feedName |
feed name, if the subscription type requires one |
String
|
postingId |
posting ID, if the subscription type requires one |
String
|
nodeName |
name of the subscribed node |
String
|
fullName |
full name of the subscribed node |
AvatarImage
|
avatar |
avatar of the subscribed node |
timestamp
|
createdAt |
subscription creation timestamp |
Type | Name | Description |
---|---|---|
String
|
type |
subscription type, the possible values are:
|
String
|
feedName |
feed name on this node that receives notifications |
String
|
remoteSubscriberId |
ID of the subscriber on the remote node |
String
|
remoteNodeName |
name of the node this node is subscribed to |
String
|
remoteFullName |
full name of the node this node is subscribed to |
AvatarDescription
|
remoteAvatar |
avatar of the node this node is subscribed to |
String
|
remoteFeedName |
feed name on the remote node, if the subscription type requires one |
String
|
remotePostingId |
posting ID on the remote node, if the subscription type requires one |
String
|
reason |
subscription reason, the well-known values are:
|
Code | Description |
---|---|
subscriptionDescription.type.blank |
type is empty |
subscriptionDescription.feedName.blank |
feed name is empty |
subscriptionDescription.feedName.not-found |
feed is not found |
subscriptionDescription.remoteSubscriberId.blank |
subscriber ID is empty |
subscriptionDescription.remoteSubscriberId.wrong-size |
subscriber ID is too long |
subscriptionDescription.remoteNodeName.blank |
node name is empty |
subscriptionDescription.remoteNodeName.wrong-size |
node name is too long |
subscriptionDescription.remoteAvatar.mediaId.not-found |
node avatar is not found |
subscriptionDescription.remoteFeedName.wrong-size |
remote feed name is too long |
subscriptionDescription.remotePostingId.wrong-size |
posting ID is too long |
subscriptionDescription.reason.blank |
subscription reason is empty |
Type | Name | Description |
---|---|---|
RemotePosting[]
|
postings |
list of postings |
Type | Name | Description |
---|---|---|
String
|
id |
subscription ID |
String
|
type |
subscription type, (see SubscriptionDescription.type for the list of possible values)
|
String
|
feedName |
feed name on this node that receives notifications |
String
|
remoteSubscriberId |
ID of the subscriber on the remote node |
String
|
remoteNodeName |
name of the node this node is subscribed to |
String
|
remoteFullName |
full name of the node this node is subscribed to |
AvatarImage
|
remoteAvatar |
avatar of the node this node is subscribed to |
String
|
remoteFeedName |
feed name on the remote node, if the subscription type requires one |
String
|
remotePostingId |
posting ID on the remote node, if the subscription type requires one |
timestamp
|
createdAt |
subscription creation timestamp |
String
|
reason |
subscription reason (see the list of well-known values in SubscriptionDescription .reason
|
Type | Name | Description |
---|---|---|
String
|
token |
the token |
String[]
|
permissions |
the list of permission groups assigned to the token |
Type | Name | Description |
---|---|---|
String
|
token |
the token |
boolean
|
valid |
true if the token is valid, false otherwise |
String[]
|
permissions |
The list of permission groups assigned to the token. See also the list of standard permission groups. |
Type | Name | Description |
---|---|---|
boolean
|
important |
true , if the update is important, false (the default) otherwise |
String
|
description |
description of the update |
Type | Name | Description |
---|---|---|
String
|
nodeName |
|
boolean
|
nodeNameChanging |
true if node name is about to be changed |
String
|
fullName |
node owner's full name |
String
|
gender |
node owners's gender |
String
|
title |
node title |
AvatarImage
|
avatar |
node owners's avatar |
This enum is used to designate the operation status both by the naming server and by the node.
Value | Description |
---|---|
WAITING |
operation is waiting to be sent to the naming server |
ADDED |
operation was accepted by the naming server |
STARTED |
the naming server started to proceed the operation |
SUCCEEDED |
operation completed successfully |
FAILED |
operation failed |
UNKNOWN |
operation status is unknown |
Code | Description |
---|---|
200 |
No error. |
201 |
Object created successfully. The object location is provided in Location: header. |
400 |
Validation of the request body failed. |
401 |
Invalid authentication token or root secret. |
403 |
Authentication required, but not provided. |
404 |
Unrecognized request or object not found. |
405 |
Method not allowed. |
409 |
Operation failed. |
500 |
The node configured incorrectly or a bug in the node software; naming service not available. |