Skip to content

Activities API

Activities track interactions with people (calls, meetings, emails, etc.). They are stored as WordPress comments with type rondo_activity and exposed through custom REST endpoints.

MethodEndpointDescription
GET/rondo/v1/people/{person_id}/activitiesList activities for a person
POST/rondo/v1/people/{person_id}/activitiesCreate an activity
PUT/rondo/v1/activities/{id}Update an activity
DELETE/rondo/v1/activities/{id}Delete an activity

TypeLabel
emailEmail
chatChat
callTelefoon
videoVideogesprek
meetingVergadering
coffeeKoffie
lunchLunch
dinnerDiner
noteOverig

GET /rondo/v1/people/{person_id}/activities

Returns all activities for a person, sorted by creation date (newest first).

Permission: User must have access to the person.

Response:

[
{
"id": 123,
"type": "activity",
"content": "<p>Discussed membership renewal</p>",
"person_id": 789,
"author_id": 1,
"author": "Jan de Vries",
"created": "2026-02-12 14:30:00",
"modified": "2026-02-12 14:30:00",
"activity_type": "call",
"activity_date": "2026-02-12",
"activity_time": "14:30",
"participants": [456, 789]
}
]

POST /rondo/v1/people/{person_id}/activities

Permission: User must have access to the person.

Parameters:

NameTypeRequiredDescription
contentstringYesActivity description. Safe HTML allowed (bold, italic, links, lists).
activity_typestringNoOne of the activity types listed above.
activity_datestringNoDate in YYYY-MM-DD format.
activity_timestringNoTime in HH:MM format.
participantsint[]NoArray of person IDs involved in the activity.

Example request:

{
"content": "Besproken dat lidmaatschap verlengd wordt voor volgend seizoen.",
"activity_type": "call",
"activity_date": "2026-02-12",
"activity_time": "14:30",
"participants": [456]
}

Response: The created activity object (same format as list response).

Errors:

StatusCodeDescription
400empty_contentContent field is required and cannot be empty.
500create_failedFailed to insert the activity into the database.

PUT /rondo/v1/activities/{id}

Permission: User must own the activity or be an administrator.

Parameters: Same as create. All fields are optional — only provided fields are updated.

Example request:

{
"content": "Updated description of the call.",
"activity_type": "meeting"
}

Response: The updated activity object.


DELETE /rondo/v1/activities/{id}

Permission: User must own the activity or be an administrator.

Response:

{
"deleted": true
}

FieldTypeDescription
idintUnique activity ID.
typestringAlways "activity".
contentstringHTML content with rendered @mentions and clickable links.
person_idintID of the person this activity belongs to.
author_idintUser ID of the creator.
authorstringDisplay name of the creator.
createdstringCreation timestamp (YYYY-MM-DD HH:MM:SS).
modifiedstringModification timestamp.
activity_typestringType of activity (see table above).
activity_datestringDate of the activity (YYYY-MM-DD), or empty string.
activity_timestringTime of the activity (HH:MM), or empty string.
participantsint[]Array of person IDs, or empty array.

Activities can be created automatically by external integrations:

  • FreeScout conversations - The FreeScout pipeline downloads helpdesk conversations and creates activities on the matching person records. This provides a unified timeline of member interactions without manual data entry.

Activities also appear in the combined timeline endpoint:

GET /rondo/v1/people/{person_id}/timeline

This returns activities alongside notes, emails, and todos, sorted by date descending. Each item includes a type field to distinguish between them.