Contact Detail Service
API Contract
REST
/api/v1/contacts
8 endpoints
GET
/api/v1/contacts/api/v1/contacts
List all contacts
Public
Response Example
{
"data": [
{
"contact_id": "c-00123",
"first_name": "Ingrid",
"last_name": "Solberg",
"email": "ingrid.solberg@example.no",
"phone": "+47 912 34 567",
"assignment_status": "assigned",
"chapter_count": 2,
"created_at": "2025-09-14T10:22:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 154
}
}
GET
/api/v1/contacts/api/v1/contacts/:id
Get contact by ID
Public
Response Example
{
"contact_id": "c-00123",
"first_name": "Ingrid",
"last_name": "Solberg",
"email": "ingrid.solberg@example.no",
"phone": "+47 912 34 567",
"address": "Storgata 12, 0155 Oslo",
"date_of_birth": "1988-04-21",
"assignment_status": "assigned",
"chapter_affiliations": [
"ch-01",
"ch-07"
],
"created_at": "2025-09-14T10:22:00Z",
"updated_at": "2026-01-05T08:44:00Z"
}
POST
/api/v1/contacts/api/v1/contacts
Create a new contact
Public
Request Example
{
"first_name": "Erik",
"last_name": "Haugen",
"email": "erik.haugen@example.no",
"phone": "+47 934 56 789",
"address": "Bjørnegata 4, 5003 Bergen",
"date_of_birth": "1993-11-03",
"chapter_affiliations": [
"ch-03"
]
}
Response Example
{
"contact_id": "c-00187",
"first_name": "Erik",
"last_name": "Haugen",
"email": "erik.haugen@example.no",
"phone": "+47 934 56 789",
"address": "Bjørnegata 4, 5003 Bergen",
"date_of_birth": "1993-11-03",
"chapter_affiliations": [
"ch-03"
],
"assignment_status": "unassigned",
"created_at": "2026-03-26T11:00:00Z",
"updated_at": "2026-03-26T11:00:00Z"
}
PUT
/api/v1/contacts/api/v1/contacts/:id
Update contact fields
Public
Request Example
{
"first_name": "Ingrid",
"last_name": "Solberg",
"email": "ingrid.s@newemail.no",
"phone": "+47 912 34 567",
"address": "Storgata 12, 0155 Oslo"
}
Response Example
{
"contact_id": "c-00123",
"first_name": "Ingrid",
"last_name": "Solberg",
"email": "ingrid.s@newemail.no",
"phone": "+47 912 34 567",
"address": "Storgata 12, 0155 Oslo",
"updated_at": "2026-03-26T12:15:00Z"
}
DELETE
/api/v1/contacts/api/v1/contacts/:id
Delete a contact
Public
Response Example
{
"contact_id": "c-00123",
"deleted": true,
"deleted_at": "2026-03-26T12:30:00Z"
}
GET
/api/v1/contacts/api/v1/contacts/:id/activities
Get activity history for a contact
Public
Response Example
{
"data": [
{
"activity_id": "act-0441",
"contact_id": "c-00123",
"activity_type": "call",
"description": "Follow-up call re: chapter onboarding",
"performed_by": "user-077",
"performed_at": "2026-02-14T09:30:00Z"
},
{
"activity_id": "act-0398",
"contact_id": "c-00123",
"activity_type": "email",
"description": "Welcome email sent",
"performed_by": "user-012",
"performed_at": "2026-01-20T15:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 11
}
}
GET
/api/v1/contacts/api/v1/contacts/:id/assignment-status
Get current assignment status for a contact
Public
Response Example
{
"contact_id": "c-00123",
"assignment_status": "assigned",
"assignment_id": "asgn-0055",
"assigned_to": "user-034",
"assigned_at": "2025-10-01T08:00:00Z"
}
GET
/api/v1/contacts/api/v1/contacts/:id/chapter-affiliations
Get chapter affiliations for a contact
Public
Response Example
{
"data": [
{
"chapter_id": "ch-01",
"chapter_name": "Oslo Sentrum",
"joined_at": "2025-09-14T10:22:00Z"
},
{
"chapter_id": "ch-07",
"chapter_name": "Grünerløkka",
"joined_at": "2026-01-03T09:10:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2
}
}