September 23, 2024
Create or Update Client Team roles
POST/PUT Client Groups, POST/PUT Contacts and POST/PUT Organizations
Endpoints:
https://api.karbonhq.com/v3/ClientGroupshttps://api.karbonhq.com/v3/Contactshttps://api.karbonhq.com/v3/Organizations
When creating or updating a Client Group, Contact or Organization, it is now possible to optionally set or update the Client Team assigned.
This is done by providing ClientTeam property in the request, which is an array containing a record for:
- each User assigned to the ClientOwner, ClientManager, UserDefinedRoles, and/or
- Users and Teams assigned to the Client Team without a specific role
Refer to the ClientGroups API documentation, Contacts API documentation or Organizations API documentation for a full request and response payloads from these endpoints.
Example use case
You want to create a new Client Group, it will have:
- a
Contactand anOrganizationasMembers, - a Client Team comprised of a
ClientOwnerand one of theUserDefinedRoleproperties
You’ll need:
- To enable at least one of the User Defined Roles by assigning it a name under Karbon Settings > Contact Settings > Client Team
- The
OrganizationKeyfor the Organization you want to add to the Client Group - The
ContactKeyfor the Contact you want to add to the Client Group - The
UserIdfor each of the roles you want to assign to the client team members. - You have requested access to the
Usersendpoint to retrieve eachUserIdyou wish to assign to the Client Team
Make a POST request to the ClientGroups endpoint https://api.karbonhq.com/v3/ClientGroups with a request payload that includes the Client Group Members and ClientTeam properties.
The MemberKey for each assigned Client Team role will be set to a UserId for a member of your firm. You can retrieve a list of these Ids from the Users endpoint.
For example:
{
"FullName": "Silvers Family",
"ContactType": "Client",
"UserDefinedIdentifier": "SILVERS",
"RestrictionLevel": "Public",
"EntityDescription": {
"Text": "Silvers Family tax and accounting clients"
},
"Members": [
{
"ContactKey": "34yxkY51knn7"
}, {
"OrganizationKey": "4ncPZ7q96SGc"
}
],
"ClientTeam": [
{
"MemberKey": "JTphCpQqQYg",
"MemberType": "User",
"RoleType": "ClientOwner"
},
{
"MemberKey": "nRML2ngs7WJ",
"MemberType": "User",
"RoleType": "UserDefinedRole1"
}
]
}
If successful, this will return an HTTP status code of 201 Created with a response that includes the ClientGroupKey of the newly created Client Group.
You can then use the GET ClientGroup endpoint with the query parameter $expand=ClientTeam to verify the ClientTeam was correctly assigned, e.g. https://api.karbonhq.com/v3/ClientGroups/NwFFZqd3jM3?$expand=ClientTeam
Notes
- Teams can never be assigned to a specific role (e.g. ClientManager), but can be assigned to the ClientTeam - i.e. the
RoleTypeproperty will be always benull - Whilst the ClientTeam array can include a MemberType of
Team, it is not yet possible to request information about a Team and it’s members via the API - The
ClientTeamproperty duplicates and overrides the existing ClientManager and ClientOwner properties on client records - It is possible to assign Users with a pending registration status to a Client Team role.
- It is not possible to assign an archived Users to a Client Team role.
Contact Webhook notifcations and Client Teams
Any change to the Client Team will trigger a Contact webhook notification with the ActionType property set to Updated.