Arkipel Message Specifications
This section documents all message types supported by Arkipel communities. Each message type includes:
- Description
- Request schema
- Request attributes
- Response schema
Global Request Attributes (for all messages)
-
payload.type (Message Type)
signature
source_public_key
NOTE: In the request and response examples, only the minimum required attributes are shown, except otherwise
Search Request Attributes (for query messages)
Inside a payload.q hash:
-
per_page - Integer - How many records to be returned per page
-
page - Integer - Page number to be returned
Search Response Attributes (for query messages)
Inside a payload.q hash:
-
per_page - Integer - How many records returned per page
-
page - Integer - Page number returned
-
total - Integer - Total records count
Queries (Read Operations)
Distributions
Distribution Templates
| Status |
Message Type |
Description |
Documentation |
| π
|
forms:query |
Retrieve a list of forms supported by the community. |
View |
People
Person Categories
Mutations (Write/Destroy Operations)
Procurements
Distributions
| Status |
Message Type |
Description |
Documentation |
| π
|
forms:fill |
Fill a form. |
View |
People
| Status |
Message Type |
Description |
Documentation |
| π§ |
people:upsert |
Create a person or update a single person by ID. |
View |
| β |
person:delete |
Delete a single person by ID. |
View |
System Messages
Asynchronous Message Processing
When sending mutation messages (e.g., people:upsert, procurements:upsert), the response will not immediately include the created, updated, or destroyed resource. Instead, the message will be processed asynchronouslyβeither queued for background processing or pending user validation.
Response Structure
The response will always include a message_id, which serves as a reference to track the status or result of the operation. You can use this message_id to query the outcome later using the arkipel_messages:query message type.
How to Retrieve Results
-
Store the
message_id from the response.
-
Query the status by sending an arkipel_messages:query message with the message_id:
{
"type": "arkipel_messages:query",
"message_id": "6916452112f746b2b4cf48c1"
}
- The response will include the final state of the operation (e.g., success, failure, or pending).
Why This Approach?
-
Decoupling: Allows for background processing, user validation, or delayed execution.
-
Reliability: Ensures integrators can always retrieve the result, even if processing takes time.
Key Points to Highlight
-
Asynchronous by Design: Mutations are not blocking; the system acknowledges receipt but processes them later.
-
Tracking: The
message_id is your reference to poll or subscribe for updates.
-
Idem-potency: The same
message_id can be queried multiple times for consistency.
Sequence Diagram

Glossary
Message Implementation Status
| Emoji |
Status |
Meaning |
| β
|
Implemented |
Message is fully implemented |
| π§ |
In Progress |
Currently being worked on |
| β |
Not Implemented |
Not started or not planned yet |
| π
|
Planned |
Scheduled for future implementation |
| ποΈ |
Deprecated |
Message is deprecated |