whoami:query
Description: Query the identity of the authenticated user and retrieve their full profile within the community context.
Request Schema
{
"payload": {
"type": "whoami:query"
},
"signature": "payload_ed25519_hex_signature",
"source_public_key": "your_client_public_key"
}
Request Attributes
- See global request attributes
- No additional payload attributes required
Response Schema
{
"source_public_key": "community_public_key",
"source_site": {
"protocol": "https",
"fqdn": "arkipel.localhost:3000"
},
"created_at": "2025-11-13T20:52:49Z",
"signature": "8b6392d5550605bd6ccddf9c21ebec470de4b44e4b4deb746076e37ab61c5346e07e7c7c7cebb5bbee41cdd92a476bcd3f02373d146ec165b31c31fc31c9ce0d",
"payload": {
"type": "whoami:query",
"identity": {
"public_key": "abc123def456...",
"name": "John Doe",
"email": "john@example.com",
"accounts": [
{
"public_key": "xyz789abc012...",
"name": "Community Garden Project",
"role": "admin"
}
]
},
"profile": {
"id": 12345,
"status": "active",
"first_name": "John",
"last_name": "Doe",
"dob": "1990-01-15",
"gender": "man",
"locale": "fr",
"account": {
"id": 67890,
"public_key": "def789abc012...",
"name": "Local Community"
},
"contact_informations": [
{
"id": 111,
"type": "Email",
"info": "john@example.com",
"label": "Personal",
"main": true
},
{
"id": 112,
"type": "PhoneNumber",
"info": "+1-555-0123",
"label": "Home",
"main": false
}
],
"addresses": [
{
"id": 222,
"name": "Home",
"street1": "123 Main St",
"street2": "Apt 4B",
"city": "Springfield",
"zip": "12345",
"country_code": "US",
"region_code": "IL",
"main": true
}
],
"collaborations": [
{
"id": 333,
"main": true,
"title": null,
"contact": {
"id": 444,
"name": "Doe Family"
}
}
],
"picture_url": "https://...",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-12-20T14:22:00Z"
}
}
}
Response Attributes
- See global response attributes
-
payload.identity- Object - User identity information-
public_key- String - The normalized public key of the user -
name- String - The user’s display name -
email- String - The user’s email address -
accounts- Array - All accounts the user has access to-
public_key- String - The account’s public key -
name- String - The account/site name -
role- String - User’s role in that account (owner, admin, standard, partner, guest)
-
-
-
payload.profile- Object - Complete person profile-
id- Integer - The person ID in the community -
status- String - Person status: “wizard”, “active”, or “inactive” -
first_name,last_name- String - Person’s name -
dob- String - Date of birth (ISO 8601 format) -
gender- String - Gender value -
locale- String - Language preference (e.g., “fr”, “en”) -
account- Object - The community account context -
contact_informations- Array - All contact details (emails, phones, websites, etc.) -
addresses- Array - Physical addresses -
collaborations- Array - Households and organizations the person belongs to -
picture_url- String, optional - URL to profile picture (if uploaded)
-
Error Responses
User Not Found
{
"payload": {
"type": "whoami:query",
"identity": null,
"profile": null
},
"error": "User not found for the provided public key"
}
Person Not Found in Community
Returned when the user is authenticated but has no associated person record in the target community:
{
"payload": {
"type": "whoami:query",
"identity": null,
"profile": null
},
"error": "Person not found in this community"
}
Processing Error
{
"payload": {
"type": "whoami:query"
},
"error": "Failed to retrieve identity information",
"status": "internal_server_error"
}
Real Life Example - Successful Response
{
"source_public_key": "bwyexzko74pnnjn741936fnaujxyhib9rpx8rggtejwnc3cz6ans",
"source_site": {
"protocol": "https",
"fqdn": "arkipel.co"
},
"created_at": "2026-02-14T14:14:22Z",
"signature": "0b7cf3e421c4d7e4212e2069fbfbfd6734d0809fa3603e492949dc5b948da691f277c601d48b9cbac2bebbfdf697e8e01aa93ff54ae53afab4c5c2272dea0400",
"payload": {
"type": "whoami:query",
"identity": {
"public_key": "abc123def456ghi789",
"name": "Sarah Johnson",
"email": "sarah.johnson@example.com",
"accounts": [
{
"public_key": "xyz789abc012def345",
"name": "Community Garden Project",
"role": "admin"
},
{
"public_key": "uvw456def789ghi012",
"name": "Sister Community Site",
"role": "standard"
}
]
},
"profile": {
"id": 9876,
"status": "active",
"import_id": "P2024-001",
"gid": "gid://arkipel/Person/9876",
"account": {
"id": 5432,
"public_key": "xyz789abc012def345",
"name": "Community Garden Project"
},
"locale": "en",
"accepts_marketing": true,
"data_consent": "given",
"dob_year": 1985,
"gender": "woman",
"zip": "94102",
"created_at": "2024-03-15T09:00:00Z",
"updated_at": "2025-01-10T16:45:00Z",
"category": {
"id": 100,
"name": "Active Member"
},
"first_name": "Sarah",
"last_name": "Johnson",
"email": "sarah.johnson@example.com",
"phone_number": "+1-415-555-0199",
"dob": "1985-06-12",
"note": "Joined through community outreach program",
"contact_informations": [
{
"id": 5001,
"info": "sarah.johnson@example.com",
"label": "Personal",
"type": "Email",
"main": true
},
{
"id": 5002,
"info": "+1-415-555-0199",
"label": "Mobile",
"type": "CellNumber",
"main": true
},
{
"id": 5003,
"info": "sarah.j",
"label": "Instagram",
"type": "Website",
"main": false
}
],
"addresses": [
{
"id": 6001,
"name": "Home",
"street1": "456 Oak Street",
"street2": "Unit 12",
"city": "San Francisco",
"zip": "94102",
"country_code": "US",
"region_code": "CA",
"main": true
}
],
"collaborations": [
{
"id": 7001,
"main": true,
"title": null,
"contact": {
"id": 8001,
"name": "Johnson Family"
}
},
{
"id": 7002,
"main": false,
"title": "Treasurer",
"contact": {
"id": 8002,
"name": "Community Garden Club"
}
}
],
"picture_url": "https://arkipel.co/rails/active_storage/representations/.../profile.jpg",
"tags": [
{
"id": 9001,
"name": "Garden Volunteer"
}
]
}
}
}
Usage Notes
- The
identityobject provides basic user identification (public_key, name, email) plus a list of allaccountsthe user has access to with their role in each - The
profileobject contains the complete person record including:- Personal information (name, DOB, gender)
- All contact methods (emails, phone numbers, websites)
- Physical addresses
- Household and organization memberships (via
collaborations) - Profile picture URL (if available)
- This is an ephemeral query - no message is persisted to the database
- Authentication can be via token, whitelist, or membership
- The
public_keyin the identity is normalized (arki: prefix and @domain suffix removed) - Requires an active membership in the target community to return profile data