Download OpenAPI specification:Download
Peerdom’s RESTful API offers organizations another way to work with the data they manage in Peerdom, making it easy to integrate with other tools or automate processes.
API access is available only to organizations with an active paid subscription or during an active trial period. Organizations upgrade to Peerdom+ to gain access.
Create your API key in your organization’s settings.
Peerdom's API URL is https://api.peerdom.app/
All API endpoints operate in the context of a single organization, determined by the API key you provide. Most endpoints require this key to return data.
Include your API key in the request header using:
X-Api-Key.
The API returns JSON-encoded data. Apply any additional encoding needed for your specific context (for example, escape HTML tags when rendering in a browser).
Gets a lists of all peers within the organization's namespace.
| limit | integer [ 1 .. 100 ] Pagination: limit the result to |
| offset | integer >= 0 Pagination: skip the first |
| includeFormer | boolean When |
| with | string Use |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "firstName": "string",
- "lastName": "string",
- "nickName": "string",
- "slug": "string",
- "avatarUrl": "string",
- "birthdate": "2019-08-24T14:15:22Z",
- "joinedAt": "2019-08-24T14:15:22Z",
- "leftAt": "2019-08-24T14:15:22Z",
- "roles": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "contribution": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "relations": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
]
}
]Create a new peer within the organization's namespace.
When email is set, an account is provisioned for the peer and granted a
permission in your organization (see permissionGroup). No invitation
email is sent — invite the peer from the Peerdom UI when you are ready.
A Peerdom account is identified globally by its email address, so if one already exists for that address it is reused and linked, rather than a second account being created. The existing account is not modified: its password, and any access it holds in other organizations, are untouched. Only a permission in your organization is added.
Create one peer (single object) or many peers (array, 1..n). An array is created atomically: all peers are created or none are.
| firstName required | string |
| lastName | string |
| nickName | string |
string <email> The peer's email address. When provided on create, an account is found-or-created and linked to the peer, and a tenant permission is granted (see | |
| birthdate | string <date> |
| percentage | integer Contribution App needs to be enabled for this attribute. |
object The custom fields for a peer. You can add the properties from the predefined custom fields. Please refer to the example in the sample request. | |
| permissionGroup | string Default: "guest" Enum: "owner" "editor" "member" "friend" "guest" Permission granted to the account provisioned for this peer. Requires Defaults to Create-only. Sending it on |
[ ]{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "firstName": "string",
- "lastName": "string",
- "nickName": "string",
- "slug": "string",
- "avatarUrl": "string",
- "birthdate": "2019-08-24T14:15:22Z",
- "joinedAt": "2019-08-24T14:15:22Z",
- "leftAt": "2019-08-24T14:15:22Z",
- "roles": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "contribution": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "relations": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
]
}Gets a single peer based on their single ID.
| id required | string <uuid> ID of peer to fetch |
| with | string Comma-separated list of extra data to include. Use |
| includeFormer | boolean When |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "firstName": "string",
- "lastName": "string",
- "nickName": "string",
- "slug": "string",
- "avatarUrl": "string",
- "birthdate": "2019-08-24T14:15:22Z",
- "joinedAt": "2019-08-24T14:15:22Z",
- "leftAt": "2019-08-24T14:15:22Z",
- "roles": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "contribution": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "relations": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
]
}Update a single peer based on the ID supplied.
| id required | string <uuid> ID of peer to update |
Update a peer
| firstName | string |
| lastName | string |
| nickName | string |
string <email> The peer's email address. When provided on create, an account is found-or-created and linked to the peer, and a tenant permission is granted (see | |
| birthdate | string <date> |
| percentage | integer Contribution App needs to be enabled for this attribute. |
object The custom fields for a peer. You can add the properties from the predefined custom fields. Please refer to the example in the sample request. |
{- "firstName": "string",
- "lastName": "string",
- "nickName": "string",
- "email": "user@example.com",
- "birthdate": "2019-08-24",
- "percentage": 0,
- "customFields": {
- "Office": "String",
- "Mobile number": "String",
- "List of Mentors": [
- "Mentor 1",
- "Mentor 2"
]
}
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "firstName": "string",
- "lastName": "string",
- "nickName": "string",
- "slug": "string",
- "avatarUrl": "string",
- "birthdate": "2019-08-24T14:15:22Z",
- "joinedAt": "2019-08-24T14:15:22Z",
- "leftAt": "2019-08-24T14:15:22Z",
- "roles": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "contribution": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "relations": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
]
}Set (upload or replace) a peer's profile photo. The image is resized
and stored, and the peer's avatarUrl is updated. Provide the image in
one of two ways on this single endpoint:
multipart/form-data with a file field (raw image bytes), orapplication/json with an imageUrl the server fetches itself.For imageUrl the fetch is restricted for safety: HTTPS only, public
hosts only (private, loopback, link-local and cloud-metadata addresses
are rejected), a few redirects at most, and a short timeout.
Allowed formats: JPEG, PNG, WebP. Maximum size 5 MB and maximum dimensions 4000x4000 pixels. Uploading the same image again is a no-op.
| id required | string <uuid> ID of the peer whose photo to set |
| file required | string <binary> Image file (JPEG, PNG or WebP). Max 5 MB, max 4000x4000 px. |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "firstName": "string",
- "lastName": "string",
- "nickName": "string",
- "slug": "string",
- "avatarUrl": "string",
- "birthdate": "2019-08-24T14:15:22Z",
- "joinedAt": "2019-08-24T14:15:22Z",
- "leftAt": "2019-08-24T14:15:22Z",
- "roles": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "contribution": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "relations": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
]
}Remove a peer's profile photo. The peer's avatarUrl is cleared and the
stored image is retired. Returns the updated peer. Calling this on a peer
with no photo is a no-op and still returns 200.
| id required | string <uuid> ID of the peer whose photo to remove |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "firstName": "string",
- "lastName": "string",
- "nickName": "string",
- "slug": "string",
- "avatarUrl": "string",
- "birthdate": "2019-08-24T14:15:22Z",
- "joinedAt": "2019-08-24T14:15:22Z",
- "leftAt": "2019-08-24T14:15:22Z",
- "roles": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "contribution": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "relations": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
]
}Create a new role within the organtization
Create one role (single object) or many roles (array, 1..n). You can create a role inside the organization or as an external role. An array is created atomically: all roles are created or none are.
| name required | string |
| mapId required | string <uuid> |
| parentId required | string <uuid> The Id should be a valid group ID. In order to find the groups on your map, please check these routes Get a list of groups. For roles, kindly visit this route Get a list of roles |
| electable | boolean |
| external | boolean Marks the node as outside the organization. It also controls the parent link (there is no direct |
| color | string The choice of color for the node as a hex string ( |
| shape | string Specifies the shape of the node. Acceptable values are "circle" or "hexagon", each determining the visual representation of the node within the interface. |
object The custom fields for a group/role. You can add the properties from the predefined custom fields. Please refer to the example in the sample request. | |
Array of objects (Goals) | |
| groupEmail | string Email for node(group/role) communication |
| representingId | string <uuid> Id of the group the new role represents (must be the role's parent group). |
| target | number or null >= 0 The role's contribution target, mapped to |
{- "name": "string",
- "mapId": "d6853b15-65cc-485b-a478-286f3c59e1a7",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "electable": true,
- "external": true,
- "color": "string",
- "shape": "string",
- "customFields": {
- "Notes": "String",
- "Responsibilties": [
- "Res 1",
- "Res 2"
]
}, - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string",
- "representingId": "6d629f63-017c-4219-ac49-0f085d73f873",
- "target": 0
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "representing": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}, - "slug": "string",
- "external": true,
- "electable": true,
- "salaryLevel": "string",
- "mirrored": true,
- "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d",
- "shape": "string",
- "target": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "holders": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "contribution": 0,
- "contributionUnit": "string"
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "purpose": "string",
- "accountabilities": [
- "string"
], - "groups": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "groupEmail": "string"
}Get a list of all roles within the organization's namespace.
Optionally filterable to only include roles held by a given peer or that belong to a given group. The result may optionally be extended by showing a list of peers holding the roles.
| peer | string <uuid> Peer ID to filter roles by. If set, this parameter overrides the |
| group | string <uuid> Group ID to filter roles by. |
| with | string Use |
| mapId | string <uuid> Filter the role nodes on the basis of map ID. If there is no map Id provided, the role nodes of the live map will be returned. |
| limit | integer [ 1 .. 100 ] Pagination: limit the result to |
| offset | integer >= 0 Pagination: skip the first |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "representing": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}, - "slug": "string",
- "external": true,
- "electable": true,
- "salaryLevel": "string",
- "mirrored": true,
- "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d",
- "shape": "string",
- "target": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "holders": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "contribution": 0,
- "contributionUnit": "string"
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "purpose": "string",
- "accountabilities": [
- "string"
], - "groups": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "groupEmail": "string"
}
]Get a single role based on the ID supplied.
| id required | string <uuid> ID of role to fetch |
| with | string Use |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "representing": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}, - "slug": "string",
- "external": true,
- "electable": true,
- "salaryLevel": "string",
- "mirrored": true,
- "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d",
- "shape": "string",
- "target": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "holders": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "contribution": 0,
- "contributionUnit": "string"
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "purpose": "string",
- "accountabilities": [
- "string"
], - "groups": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "groupEmail": "string"
}Update an existing role based on the ID supplied.
| id required | string <uuid> ID of role to update |
Update the following fields of an existing role
| name | string |
| color | string The choice of color for the node as a hex string ( |
| parentId | string The Id should be a valid group/role ID. In order to find the groups on your map, please check these routes Get a list of groups. For roles, kindly visit this route Get a list of roles |
| external | boolean Marks the node as outside the organization. It also controls the parent link (there is no direct |
object The custom fields for a group/role. You can add the properties from the predefined custom fields. Please refer to the example in the sample request. | |
| shape | string Specifies the shape of the node. Acceptable values are "circle" or "hexagon", each determining the visual representation of the node within the interface. |
Array of objects (Goals) | |
| representing | string or null The Id of the group the role represents, or null to clear it. |
| representingAll | boolean If true, the change to the above field "representing" will be copied to all the mirrored nodes. |
| electable | boolean Set the value to true, if the role is electable. |
| groupEmail | string Email for node(group/role) communication |
| target | number or null >= 0 The role's contribution target, mapped to |
{- "name": "string",
- "color": "string",
- "parentId": "string",
- "external": true,
- "customFields": {
- "Notes": "String",
- "Responsibilties": [
- "Res 1",
- "Res 2"
]
}, - "shape": "string",
- "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "representing": "string",
- "representingAll": true,
- "electable": true,
- "groupEmail": "string",
- "target": 0
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "representing": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}, - "slug": "string",
- "external": true,
- "electable": true,
- "salaryLevel": "string",
- "mirrored": true,
- "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d",
- "shape": "string",
- "target": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "holders": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "contribution": 0,
- "contributionUnit": "string"
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "purpose": "string",
- "accountabilities": [
- "string"
], - "groups": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "groupEmail": "string"
}Delete a single role based on the ID supplied.
| id required | string <uuid> ID of role to delete |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "representing": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}, - "slug": "string",
- "external": true,
- "electable": true,
- "salaryLevel": "string",
- "mirrored": true,
- "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d",
- "shape": "string",
- "target": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "holders": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "contribution": 0,
- "contributionUnit": "string"
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "purpose": "string",
- "accountabilities": [
- "string"
], - "groups": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "groupEmail": "string"
}Assign peers to multiple roles in a single atomic request. The body is an
array of {roleId, holders[]} groups; every assignment across every group
is created in one transaction (all-or-none). Collapses what used to be one
call per role into a single round trip.
| roleId required | string <uuid> |
required | Array of objects (HolderCreate) non-empty |
[- {
- "roleId": "7382d58e-652a-4905-b7c9-bcca1e0e5391",
- "holders": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "percentage": 0,
- "focus": "string",
- "electedUntil": "2022-06-09"
}
]
}
]{- "created": 0,
- "items": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "roleId": "7382d58e-652a-4905-b7c9-bcca1e0e5391",
- "focus": "string",
- "percentage": "string"
}
]
}Create mirrored copies of a role across the given target parent circles. Every copy shares the source role's template, so the whole mirror group keeps its custom fields and goals in sync — editing one propagates to all siblings. If the source role is still standalone, a template is created and the source is linked to it on the first mirror.
Holders are NOT mirrored. When copyHolders is true the source's current
holders are copied onto each new role once, at creation; later holder
changes do not propagate between mirrored roles.
A target circle that already holds a member of the group — including the
source role's own parent circle — is rejected with 400, so the role is
never duplicated within a circle it is already present in.
The operation is atomic: either every copy is created or none are.
| roleId required | string <uuid> ID of the source role to mirror. |
| targetParentIds required | Array of strings <uuid> [ 1 .. 100 ] items [ items <uuid > ] Ids of the parent circles to mirror the role into. Each must be an existing circle in your tenant. |
| copyHolders | boolean Default: false When true, the source role's current holders are copied onto each mirrored role at creation. This is a one-time snapshot, NOT a mirror: unlike custom fields and goals, holder changes do not propagate between mirrored roles afterwards. |
{- "targetParentIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "copyHolders": false
}{- "created": 0,
- "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d",
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "representing": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}, - "slug": "string",
- "external": true,
- "electable": true,
- "salaryLevel": "string",
- "mirrored": true,
- "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d",
- "shape": "string",
- "target": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "holders": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "contribution": 0,
- "contributionUnit": "string"
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "purpose": "string",
- "accountabilities": [
- "string"
], - "groups": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "groupEmail": "string"
}
]
}Return every role sharing this role's template — the full mirror group, including the role itself. Returns an empty array when the role is standalone (not part of a mirror group).
| roleId required | string <uuid> ID of a role in the mirror group. |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "color": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "representing": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}, - "slug": "string",
- "external": true,
- "electable": true,
- "salaryLevel": "string",
- "mirrored": true,
- "templateId": "196100ac-4eec-4fb6-a7f7-86c8b584771d",
- "shape": "string",
- "target": 0,
- "contributionUnit": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "holders": [
- {
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "contribution": 0,
- "contributionUnit": "string"
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "purpose": "string",
- "accountabilities": [
- "string"
], - "groups": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "groupEmail": "string"
}
]Assign existing role from live or draft map to a peer
| roleId required | string <uuid> ID of role to that needs to be assigned to the peer |
Assign one peer (single object) or many peers (array, 1..n) to this role. An array is created atomically: all assignments are created or none are.
| peerId required | string <uuid> |
| percentage | number |
| focus | string |
| electedUntil | string <date> |
[ ]{- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "roleId": "7382d58e-652a-4905-b7c9-bcca1e0e5391",
- "focus": "string",
- "percentage": "string"
}Unassign existing role from a peer
| roleId required | string <uuid> ID of role that needs to be unassigned from the peer |
| peerId required | string <uuid> ID of peer that needs to be removed from the given role |
{- "message": "Role Unassinged successfully"
}Update the role holder's percentage, focus, and electedUntil based on the role ID and peer ID.
| roleId required | string <uuid> ID of the role associated with the holder |
| peerId required | string <uuid> ID of the peer assigned to the role |
Update the role holder's details
| percentage | string |
| electedUntil | string <date> |
| focus | string |
{- "percentage": "string",
- "electedUntil": "2019-08-24",
- "focus": "string"
}{- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "roleId": "7382d58e-652a-4905-b7c9-bcca1e0e5391",
- "focus": "string",
- "percentage": "string"
}Retrieve a role holder by role ID and peer ID.
| roleId required | string <uuid> ID of the role |
| peerId required | string <uuid> ID of the peer |
{- "id": "string",
- "percentage": "string",
- "focus": "string",
- "electedUntil": "2019-08-24"
}API endpoints related to Groups.
Note: The default terminology has been changed to /groups. For backward compatibility, /circles is still available and functions the same as /groups. Please update your integrations to use /groups as /circles will eventually be deprecated.
Create a new group. You can create a group inside the organization map or it can be an external group.
Create one group (single object) or many groups (array, 1..n). You can create a group inside the organization map or as an external group. An array is created atomically: all groups are created or none are.
| name required | string |
| mapId required | string <uuid> |
| parentId required | string <uuid> The Id should be a valid group ID. In order to find the groups on your map, please check these routes Get a list of groups. For roles, kindly visit this route Get a list of roles |
| electable | boolean |
| external | boolean Marks the node as outside the organization. It also controls the parent link (there is no direct |
| color | string The choice of color for the node as a hex string ( |
| shape | string Specifies the shape of the node. Acceptable values are "circle" or "hexagon", each determining the visual representation of the node within the interface. |
object The custom fields for a group/role. You can add the properties from the predefined custom fields. Please refer to the example in the sample request. | |
Array of objects (Goals) | |
| groupEmail | string Email for node(group/role) communication |
[ ]{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "slug": "string",
- "external": true,
- "color": "string",
- "shape": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string"
}Get a list of groups within the organization's namespace.
| with | string Use |
| peer | string <uuid> Peer ID to filter groups by. |
| mapId | string <uuid> Filter the group nodes on the basis of map ID. If there is no map Id provided, the group nodes of the live map will be returned. |
| limit | integer [ 1 .. 100 ] Pagination: limit the result to |
| offset | integer >= 0 Pagination: skip the first |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "slug": "string",
- "external": true,
- "color": "string",
- "shape": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string"
}
]Get a single group based on the supplied ID from live or draft map excluding archived maps
| id required | string <uuid> ID of group to fetch |
| with | string Use |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "slug": "string",
- "external": true,
- "color": "string",
- "shape": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string"
}Delete a single group based on the supplied group ID from live or draft map excluding archived maps.
| id required | string <uuid> ID of group to delete |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "slug": "string",
- "external": true,
- "color": "string",
- "shape": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string"
}Update a single group based on the ID supplied.
| id required | string <uuid> ID of group to update |
Update an existing group
| name | string |
| color | string The choice of color for the node as a hex string ( |
| parentId | string The Id should be a valid group/role ID. In order to find the groups on your map, please check these routes Get a list of groups. For roles, kindly visit this route Get a list of roles |
| external | boolean Marks the node as outside the organization. It also controls the parent link (there is no direct |
| shape | string Specifies the shape of the node. Acceptable values are "circle" or "hexagon", each determining the visual representation of the node within the interface. |
object The custom fields for a group/role. You can add the properties from the predefined custom fields. Please refer to the example in the sample request. | |
Array of objects (Goals) | |
| groupEmail | string Email for node(group/role) communication |
{- "name": "string",
- "color": "string",
- "parentId": "string",
- "external": true,
- "shape": "string",
- "customFields": {
- "Notes": "String",
- "Responsibilties": [
- "Res 1",
- "Res 2"
]
}, - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "slug": "string",
- "external": true,
- "color": "string",
- "shape": "string",
- "customFields": [
- {
- "id": "string",
- "name": "string",
- "values": [
- "string"
], - "definition": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "string",
- "translation": { },
- "multiEntry": true
}
}
], - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string"
}Get a list of projects within the organization's namespace.
Optionally filterable to only include projects that belong to a given peer.
| peer | string <uuid> Peer ID to filter projects by. |
| limit | integer [ 1 .. 100 ] Pagination: limit the result to |
| offset | integer >= 0 Pagination: skip the first |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "slug": "string",
- "description": "string",
- "notes": "string",
- "externalUrl": "string",
- "archived": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "archivedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "group": true
}
]Create a project for the organization. Optionally attach it to a circle
(circleId) and/or nest it under a parent project (parentId). Requires
the Projects app to be enabled.
| name required | string |
| description | string |
| notes | string |
| externalUrl | string |
| circleId | string <uuid> Optional circle (node) to attach the project to. |
| parentId | string <uuid> Optional parent project to nest under. |
| startedAt | string <date-time> |
| endedAt | string <date-time> |
| archived | boolean |
{- "name": "string",
- "description": "string",
- "notes": "string",
- "externalUrl": "string",
- "circleId": "4ceb1055-6a0f-49e1-bd4c-fbcf31b9c404",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "archived": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "slug": "string",
- "description": "string",
- "notes": "string",
- "externalUrl": "string",
- "archived": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "archivedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "group": true
}Get a single project based on the supplied ID.
| id required | string <uuid> ID of project to fetch |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "slug": "string",
- "description": "string",
- "notes": "string",
- "externalUrl": "string",
- "archived": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "archivedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "group": true
}Patch a project. Every field is optional; only the supplied fields are changed. Renaming regenerates the slug. Requires the Projects app.
| id required | string <uuid> |
| name | string |
| description | string |
| notes | string |
| externalUrl | string |
| circleId | string <uuid> |
| parentId | string <uuid> |
| startedAt | string <date-time> |
| endedAt | string <date-time> |
| archived | boolean |
{- "name": "string",
- "description": "string",
- "notes": "string",
- "externalUrl": "string",
- "circleId": "4ceb1055-6a0f-49e1-bd4c-fbcf31b9c404",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "archived": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "slug": "string",
- "description": "string",
- "notes": "string",
- "externalUrl": "string",
- "archived": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "archivedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "group": true
}Create a goal attached to a circle (nodeId). The goal data carries its
name, order and completion (isComplete or subgoals). Requires the Goals
app to be enabled.
required | object (GoalData) |
| nodeId required | string <uuid> The circle (node) the goal attaches to. |
| description | string |
| startedAt | string <date-time> |
| endedAt | string <date-time> |
| archived | boolean |
{- "data": {
- "name": "string",
- "order": 0,
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "type": "number",
- "amountComplete": 0,
- "targetAmount": 0,
- "percentComplete": 1,
- "isComplete": true
}
]
}, - "nodeId": "959356e3-6168-4a92-b4a5-b9d462be6177",
- "description": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "archived": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "data": {
- "name": "string",
- "order": 0,
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "type": "number",
- "amountComplete": 0,
- "targetAmount": 0,
- "percentComplete": 1,
- "isComplete": true
}
]
}, - "description": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Patch a goal. Every field is optional; only the supplied fields change.
nodeId re-attaches the goal to a different circle. Requires the Goals app.
| id required | string <uuid> |
object (GoalData) | |
| nodeId | string <uuid> Re-attach the goal to this circle. |
| description | string |
| startedAt | string <date-time> |
| endedAt | string <date-time> |
| archived | boolean |
{- "data": {
- "name": "string",
- "order": 0,
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "type": "number",
- "amountComplete": 0,
- "targetAmount": 0,
- "percentComplete": 1,
- "isComplete": true
}
]
}, - "nodeId": "959356e3-6168-4a92-b4a5-b9d462be6177",
- "description": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "archived": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "data": {
- "name": "string",
- "order": 0,
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "type": "number",
- "amountComplete": 0,
- "targetAmount": 0,
- "percentComplete": 1,
- "isComplete": true
}
]
}, - "description": "string",
- "startedAt": "2019-08-24T14:15:22Z",
- "endedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Gets a lists of all Maps within the organization's namespace.
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "slug": "string",
- "draft": true,
- "tenant": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}, - "layout": {
- "enclose": "string",
- "connectingLines": true
}, - "private": true,
- "archived": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]Create a draft map
Create a new draft map
| private | boolean Set to true to make the draft map private; set to false to keep it public. |
{- "private": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "slug": "string",
- "draft": true,
- "tenant": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}, - "layout": {
- "enclose": "string",
- "connectingLines": true
}, - "private": true,
- "archived": true,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}Retrieve details of the tenant associated with the Auth Key.
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "slug": "string",
- "liveMapId": "7db03005-b826-405a-a2a4-d90f0f552934",
- "palette": [
- {
- "hex": "string",
- "name": "string"
}
], - "allowPersonalColors": true
}Activate an app for the organization. Idempotent: activating an already-enabled app succeeds without side effects. Only flips the enablement flag; billing for charged apps is handled separately.
| name required | string Enum: "contribution" "drafts" "goals" "pages" "projects" Name of the app to activate. |
{- "app": "goals",
- "enabled": true
}List the organization's custom-field definitions (the schema/vocabulary,
not the per-entity values). Call this before writing peers/roles/groups so
source data maps to the organization's real field names. Optionally filter
by the owning entity with ?entity=.
| entity | string Enum: "node" "peer" "project" "goal" Only return definitions for this owning entity. |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "entity": "node",
- "nodeType": "circle",
- "multiEntry": true,
- "relationScope": "group",
- "translation": {
- "en": "string",
- "de": "string",
- "fr": "string",
- "nl": "string",
- "sv": "string",
- "it": "string",
- "es": "string"
}, - "order": 0,
- "public": true
}
]Create one definition (single object) or many (array, 1..n). An array is created atomically: all definitions are created or none are. Create the definitions before setting their values on peers/roles/groups.
| name required | string |
| type | string Enum: "text" "textarea" "email" "link" "date" "relation" "image" "list" Defaults to |
| entity | string Enum: "node" "peer" "project" "goal" |
| nodeType | string Enum: "circle" "role" "generic" |
| multiEntry | boolean |
| relationScope | string Enum: "group" "page" "peer" "role" Required when |
object (Translation) Localized labels keyed by language code. | |
| order | integer |
| public | boolean |
[ ]{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "entity": "node",
- "nodeType": "circle",
- "multiEntry": true,
- "relationScope": "group",
- "translation": {
- "en": "string",
- "de": "string",
- "fr": "string",
- "nl": "string",
- "sv": "string",
- "it": "string",
- "es": "string"
}, - "order": 0,
- "public": true
}Fetch a single definition by id, including its type, multiEntry,
entity and nodeType, so values can be verified before being written.
| id required | string <uuid> |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "entity": "node",
- "nodeType": "circle",
- "multiEntry": true,
- "relationScope": "group",
- "translation": {
- "en": "string",
- "de": "string",
- "fr": "string",
- "nl": "string",
- "sv": "string",
- "it": "string",
- "es": "string"
}, - "order": 0,
- "public": true
}Update side-effect-free fields of a definition: name (the API key used
to write values by name), translation (display labels), order and
public. A rename updates BOTH the API key and the label. type,
entity, nodeType, multiEntry and relationScope are not editable
here — changing them would mutate or drop existing values — and are
rejected with 400.
| id required | string <uuid> |
| name | string The API key used to write values by name. |
object (Translation) Localized labels keyed by language code. | |
| order | integer |
| public | boolean |
{- "name": "string",
- "translation": {
- "en": "string",
- "de": "string",
- "fr": "string",
- "nl": "string",
- "sv": "string",
- "it": "string",
- "es": "string"
}, - "order": 0,
- "public": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "entity": "node",
- "nodeType": "circle",
- "multiEntry": true,
- "relationScope": "group",
- "translation": {
- "en": "string",
- "de": "string",
- "fr": "string",
- "nl": "string",
- "sv": "string",
- "it": "string",
- "es": "string"
}, - "order": 0,
- "public": true
}API endpoints related to Pages. A page is a titled, ordered collection of cards. Cards are a separate resource (see the Cards tag) linked to pages via the page-card endpoints, so one card can appear on several pages ("mirrored"). Deleting a page archives it rather than removing it, matching the Peerdom app.
List the organization's pages, newest-updated first.
| archived | boolean Filter by archived state. |
| public | boolean Filter by public/private. |
| with | string Value: "cards" Comma-separated expansions. |
| limit | integer [ 1 .. 100 ] |
| offset | integer >= 0 |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "slug": "string",
- "public": true,
- "visibility": "PRIVATE",
- "archived": true,
- "archivedAt": "2019-08-24T14:15:22Z",
- "thumbnailUrl": "string",
- "thumbnailAlt": "string",
- "createdBy": "string",
- "lastUpdatedBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "cards": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}
]
}
]| name required | string |
| description | string |
| public | boolean Default: false |
{- "name": "string",
- "description": "string",
- "public": false
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "slug": "string",
- "public": true,
- "visibility": "PRIVATE",
- "archived": true,
- "archivedAt": "2019-08-24T14:15:22Z",
- "thumbnailUrl": "string",
- "thumbnailAlt": "string",
- "createdBy": "string",
- "lastUpdatedBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "cards": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}
]
}| id required | string <uuid> |
| with | string Value: "cards" |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "slug": "string",
- "public": true,
- "visibility": "PRIVATE",
- "archived": true,
- "archivedAt": "2019-08-24T14:15:22Z",
- "thumbnailUrl": "string",
- "thumbnailAlt": "string",
- "createdBy": "string",
- "lastUpdatedBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "cards": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}
]
}Update a page's name, description, visibility or archived state.
| id required | string <uuid> |
| name | string |
| description | string |
| public | boolean |
| archived | boolean |
{- "name": "string",
- "description": "string",
- "public": true,
- "archived": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "slug": "string",
- "public": true,
- "visibility": "PRIVATE",
- "archived": true,
- "archivedAt": "2019-08-24T14:15:22Z",
- "thumbnailUrl": "string",
- "thumbnailAlt": "string",
- "createdBy": "string",
- "lastUpdatedBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "cards": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}
]
}Archives the page (sets archived: true). The page is NOT hard-deleted — it remains fetchable and can be restored with PATCH { "archived": false }.
| id required | string <uuid> |
{- "message": "string"
}List the cards on a page, in their per-page order.
| id required | string <uuid> |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}
]Link an existing card to a page. mirrored links the same card, so edits propagate to every page that shares it; independent (default) clones the card first, so edits do not propagate.
| id required | string <uuid> |
| cardId required | string <uuid> |
| mode | string Default: "independent" Enum: "independent" "mirrored"
|
| order | integer >= 0 Optional insert position; appended to the end when omitted. |
{- "cardId": "f16ba382-eb42-481a-b08f-c57bdc9aae24",
- "mode": "independent",
- "order": 0
}{- "pageId": "347b9bf8-fe00-46f6-b8ca-1e06b3bd5809",
- "cardId": "f16ba382-eb42-481a-b08f-c57bdc9aae24",
- "order": 0
}Rewrite the order of a page's cards. Send the FULL, ordered list of the page's current card ids; each card's position becomes its array index.
| id required | string <uuid> |
| cardIds required | Array of strings <uuid> non-empty [ items <uuid > ] The full, ordered list of the page's current card ids. |
{- "cardIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}
]Removes the card from this page only. The card itself, and its links to any other pages, are unaffected. To delete the card entirely use DELETE /cards/{id}.
| id required | string <uuid> |
| cardId required | string <uuid> |
{- "message": "string"
}API endpoints related to Cards. A card is a text or image block that lives independently of pages and may be linked to zero, one, or many pages. Editing a card changes it on every page it is linked to.
| type | string Enum: "text" "image" |
| onPage | string <uuid> Only cards linked to this page. |
| limit | integer [ 1 .. 100 ] |
| offset | integer >= 0 |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}
]Create a text or image card. Image cards accept the image EITHER as a multipart/form-data file field OR as an imageUrl in a JSON body (fetched server-side). Link the card to a page afterwards via POST /pages/{id}/cards.
| type required | string Enum: "text" "image" |
| name | string |
| text | string Required for text cards. |
| isQuote | boolean |
| imageUrl | string <uri> For image cards: a public https URL, fetched server-side. |
| imageAlt | string |
{- "type": "text",
- "name": "string",
- "text": "string",
- "isQuote": true,
- "imageAlt": "string"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}Fetch a card, including pageCount (how many pages share it).
| id required | string <uuid> |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}Edit a card's content. The change applies to EVERY page the card is linked to (mirrored cards share one content row). type may be switched between text and image.
| id required | string <uuid> |
| type | string Enum: "text" "image" Switch the card between text and image. |
| name | string |
| text | string |
| isQuote | boolean |
| imageUrl | string <uri> |
| imageAlt | string |
{- "type": "text",
- "name": "string",
- "text": "string",
- "isQuote": true,
- "imageAlt": "string"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "type": "text",
- "content": {
- "text": "string",
- "isQuote": true,
- "imageUrl": "string",
- "imageAlt": "string"
}, - "order": 0,
- "pageCount": 0
}Permanently delete the card, its content, and every page link (it disappears from all pages). To remove a card from a single page without deleting it, use DELETE /pages/{id}/cards/{cardId}.
| id required | string <uuid> |
{- "message": "string"
}Apply a single JSON document that creates peers, groups, roles and holder
assignments together, atomically (all-or-none). Entities created in the
same document are wired together with transient ref aliases: give an item
a ref, then point at it from a parent (parentRef) or a holder
(roleRef / peerRef). Aliases are in-memory only and never stored. Items
that already exist can be referenced by real id instead. Synchronous — keep
batches reasonably sized.
| mapId required | string <uuid> Target map for the groups/roles in this import. |
Array of objects (PeerCreate) | |
Array of objects | |
Array of objects | |
Array of objects |
{- "mapId": "d6853b15-65cc-485b-a478-286f3c59e1a7",
- "peers": [
- {
- "firstName": "string",
- "lastName": "string",
- "nickName": "string",
- "email": "user@example.com",
- "birthdate": "2019-08-24",
- "percentage": 0,
- "customFields": {
- "Office": "String",
- "Mobile number": "String",
- "List of Mentors": [
- "Mentor 1",
- "Mentor 2"
]
}, - "permissionGroup": "owner",
- "ref": "string"
}
], - "groups": [
- {
- "name": "string",
- "mapId": "d6853b15-65cc-485b-a478-286f3c59e1a7",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "electable": true,
- "external": true,
- "color": "string",
- "shape": "string",
- "customFields": {
- "Notes": "String",
- "Responsibilties": [
- "Res 1",
- "Res 2"
]
}, - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string",
- "ref": "string",
- "parentRef": "string"
}
], - "roles": [
- {
- "name": "string",
- "mapId": "d6853b15-65cc-485b-a478-286f3c59e1a7",
- "parentId": "70850378-7d3c-4f45-91b7-942d4dfbbd43",
- "electable": true,
- "external": true,
- "color": "string",
- "shape": "string",
- "customFields": {
- "Notes": "String",
- "Responsibilties": [
- "Res 1",
- "Res 2"
]
}, - "goals": [
- {
- "endedAt": "2019-05-17",
- "startedAt": "2019-05-17",
- "archived": true,
- "data": {
- "order": "string",
- "name": "string",
- "isComplete": true,
- "subgoals": [
- {
- "name": "string",
- "percentComplete": 0,
- "isComplete": true,
- "amountComplete": 0,
- "targetAmount": 0
}
]
}
}
], - "groupEmail": "string",
- "ref": "string",
- "parentRef": "string"
}
], - "holders": [
- {
- "roleId": "7382d58e-652a-4905-b7c9-bcca1e0e5391",
- "roleRef": "string",
- "peerId": "60a07d40-746d-414c-b70b-908ca16e7459",
- "peerRef": "string",
- "percentage": 0,
- "focus": "string",
- "electedUntil": "2019-08-24"
}
]
}{- "imported": {
- "peers": 0,
- "groups": 0,
- "roles": 0,
- "holders": 0
}
}