Arkipel Message Specifications
This section documents all message types supported by Arkipel communities. Each message type includes:
- Description
- Request schema
- Request attributes
- Response schema
Queries (Read Operations)
Distributions
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| π§ | distributions:query |
Retrieve a list of distributions. | View |
| π§ | distribution:query |
Retrieve a single distribution by ID. |
View |
Distribution Templates
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | distribution_templates:query |
Retrieve a list of distribution templates. | View |
Forms
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | forms:query |
Retrieve a list of forms supported by the community. | View |
| β | form:query |
Retrieve a single form by ID. |
View |
Households
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | households:query |
Retrieve a list of households. | View |
| β | household:query |
Retrieve a single household by ID. |
View |
Household Categories
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | household_categories:query |
Retrieve a list of household categories. | View |
Organizations
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| π | organizations:query |
Retrieve a list of organizations. | View |
| π | organization:query |
Retrieve a single organization by ID. |
View |
Organization Categories
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| π | organization_categories:query |
Retrieve a list of organization categories. | View |
People
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | people:query |
Retrieve a list of people. | View |
| β | person:query |
Retrieve a single person by ID. |
View |
Person Categories
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | person_categories:query |
Retrieve a list of person categories. | View |
Todos
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | todos:query |
Retrieve a list of todos. | View |
| β | todo:query |
Retrieve a single todo by ID. | View |
Mutations (Write/Destroy Operations)
Addresses
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| π | address:delete |
Delete a single address by ID. |
View |
Contact Informations
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| π | contact_information:delete |
Delete a single contact information by ID. |
View |
Distributions
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | distributions:upsert |
Create a distribution or update a single distribution by ID. |
View |
| β | distribution:delete |
Delete a single distribution by ID. |
View |
| β | distributions:delete |
Delete a list of distributions. | View |
Forms
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| π | form:fill |
Fill a form. | View |
Households
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | households:upsert |
Create a household or update a single household by ID. |
View |
| β | household:delete |
Delete a single household by ID. |
View |
| β | household_person:delete |
Delete a person link to an household by ID. |
View |
Organizations
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | organizations:upsert |
Create an organization or update a single organization by ID. |
View |
| β | organization:delete |
Delete a single organization by ID. |
View |
| π | organization_person:delete |
Delete a person link to an organization by ID. |
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 |
Procurements
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| π | procurements:upsert |
Create a procurement or update a single procurement by ID. |
View |
| β | procurement:delete |
Delete a single procurement by ID. |
View |
Publications
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | publications:upsert |
Create a publication or update a single publication by ID. |
View |
Todos
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | todo:close |
Close a single todo by ID. |
View |
| β | todo:reopen |
Reopen a single todo by ID. |
View |
System Messages
| Status | Message Type | Description | Documentation |
|---|---|---|---|
| β | ping |
Check connection health. | View |
| β | arkipel_messages:query |
Query a message from a given ID
|
View |
Global Request Attributes (for all messages)
-
payload.type(Message Type) signaturesource_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
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_idfrom the response. -
Query the status by sending an
arkipel_messages:querymessage with themessage_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_idis your reference to poll or subscribe for updates. -
Idem-potency: The same
message_idcan 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 |