Body
-
The name of the role.
Maximum length is
255. -
A description of the role.
Maximum length is
255. -
An array of permissions in the format "resource:verb".
-
Legacy role which this Rbac role represents. Setting this removes the legacy_role from any other rbac roles for the firm
Value Description owner An owner of the firm admin A legacy admin type employee
DEPRECATED:
This value is replaced in system withemployee
Since: 2026-07-27 v1.130.0member A legacy member type employee
DEPRECATED:
This value is replaced in system withemployee
Since: 2026-07-27 v1.130.0Values are
owner,admin, ormember.
PUT
/api/v2/roles/{uuid}
curl \
--request PUT 'https://api.plannrcrm.com/api/v2/roles/6ff8f7f6-1eb3-3525-be4a-3932c805afed' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--header "X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}" \
--data '{"name":"Admin Role","description":"Full administrative access","permissions":["network:read","firm:read","firm:update"],"legacy_role":"owner"}'
Request examples
# Headers
X-PLANNR-ACCOUNT-UUID: {YOUR_PLANNR_ACCOUNT_UUID}
# Payload
{
"name": "Admin Role",
"description": "Full administrative access",
"permissions": [
"network:read",
"firm:read",
"firm:update"
],
"legacy_role": "owner"
}
Response examples (200)
{
"uuid": "d5c1c83b-5922-4279-b7be-e75d77fa492c",
"name": "Admin Role",
"scope": "plannr-crm",
"description": "Full administrative access",
"permissions": [
"cases:read",
"firms:read"
],
"is_protected": false,
"is_managed": false,
"assigned_to_authed": false,
"firm": {
"uuid": "e2f8fcf6-49fb-499a-bd62-c986975604df",
"created_at": "2026-09-07T20:57:23+01:00",
"updated_at": "2026-09-07T20:57:23+01:00",
"name": "Codepotato",
"slug": "codepotato",
"address_1": "Suite E, 5 The Briars",
"address_2": "Waterberry Drive",
"town_city": "Waterlooville",
"county": "Hampshire",
"postcode": "PO7 7YH",
"country": "United Kingdom",
"regulatory_text": "Regulatory text",
"logo": "https://api.plannrcrm.com/images/plannr.jpg",
"logo_icon": "https://api.plannrcrm.com/images/plannr-icon.jpg",
"brand_colours": {
"sidebar_background": "#0E0E56",
"sidebar_accent": "#36367E",
"sidebar_text": "#FFFFFF",
"sidebar_hover": "#0A0A42",
"sidebar_active": "#53DBB8",
"sidebar_title_background": "#36367E",
"sidebar_title_primary": "#FFC634",
"sidebar_title_secondary": "#FFFFFF",
"sidebar_title_secondary_hover": "#FFFFFF",
"email_background": "#0E0E56",
"email_logo_background_panel": "#36367E",
"email_sub_text": "#FFFFFF",
"email_button_background": "#36367E",
"email_button_text": "#FFFFFF",
"portal_sidebar_button_background": "#F6F6F6",
"portal_sidebar_button_hover": "#FFFFFF",
"portal_sidebar_button_active": "#FFFFFF",
"portal_brand_title": "#323B4B",
"portal_brand_sub_title": "#828994",
"portal_sidebar_title": "#11151D",
"portal_sidebar_text": "#323B4B",
"portal_sidebar_text_hover": "#323B4B",
"portal_sidebar_text_active": "#323B4B",
"portal_sidebar_icon": "#828994",
"portal_sidebar_icon_hover": "#828994",
"portal_sidebar_icon_active": "#828994",
"portal_background": "#F6F6F6",
"portal_sidebar_account_title": "#11151D",
"portal_sidebar_account_email": "#828994",
"portal_sidebar_divider": "#E3E5E9",
"portal_dashboard_bg_one": "#EF4583",
"portal_dashboard_bg_two": "#FFC634",
"portal_sidebar_collapse_button": "#828994",
"portal_sidebar_collapse_button_hover": "#B3B9C4",
"portal_sidebar_user_select_background": "#F6F6F6",
"portal_sidebar_user_select_hover": "#F6F6F6",
"portal_sidebar_user_select_text": "#323B4B",
"portal_sidebar_user_select_text_hover": "#323B4B",
"portal_sidebar_user_select_border": "#EEEEEE",
"portal_sidebar_user_select_border_hover": "#828994"
},
"factfind_pdf_header_background": "#0E0E56",
"factfind_pdf_header_text": "#ffffff",
"factfind_pdf_logo": "https://api.plannrcrm.com/images/plannr.jpg",
"is_subscribed": true,
"addon_subscriptions": {
"uuid": "d974e19e-1e85-4934-9baf-f707263eabe7",
"created_at": "2026-09-07T20:57:28+01:00",
"updated_at": "2026-09-07T20:57:28+01:00",
"enabled": "true",
"trial_ends_at": "2026-09-21",
"trial_ends_in_days": 14,
"payment_confirmed_at": "2026-09-25"
},
"keep_deleted_files_for": 30,
"tax": 17.5,
"month_end": 25,
"statement_frequency": "monthly",
"billing": {
"invoice_address_1": "Suite E, 5 The Briars",
"invoice_address_2": "Waterberry Drive",
"invoice_town_city": "Waterlooville",
"invoice_county": "Hampshire",
"invoice_postcode": "PO7 7YH",
"invoice_country": "United Kingdom",
"invoice_email": "gareth@codepotato.co.uk"
},
"task_board_template": {
"uuid": null,
"created_at": "2026-09-07T20:57:28+01:00",
"updated_at": "2026-09-07T20:57:28+01:00",
"is_template": false,
"name": "Task Board",
"default_list_uuid": null,
"is_editable": true,
"priorities": [
{
"name": "High",
"value": "high"
},
{
"name": "Low",
"value": "low"
}
]
},
"ip_whitelist": [
"192.168.0.1",
"127.0.0.1"
],
"welcome_paragraph_html": "<h1>Welcome.</h1>",
"email_welcome_paragraph_html": "Welcome to Plannr!",
"show_fact_find_illustrations": true,
"cc_email_addresses": [
"jack@example.com",
"jill@example.com"
],
"bcc_email_addresses": [
"jack@example.com",
"jill@example.com"
],
"reply_to_email_address": "jack@example.com",
"mobile_app_support_number": "01234 567890",
"mobile_app_support_email": "support@example.com"
},
"created_at": "2026-09-07T20:57:23+01:00",
"updated_at": "2026-09-07T20:57:23+01:00",
"assignees_count": 3,
"assignees": [
{
"uuid": "2bb90cc9-95ca-4795-9821-543b8d1e34c1",
"type": "user",
"name": "Ron Swanson",
"email": "ron@example.com",
"photo_url": "https://eu.ui-avatars.com/api/?name=Ron+Swanson",
"role": [],
"is_limited": false
}
],
"legacy_role": "admin"
}
Response examples (422)
Role is protected
{
"message": "This role cannot be modified as it is protected - contact Plannr for more assistance.",
"errors": {
"role": [
"This role cannot be modified as it is protected - contact Plannr for more assistance."
]
}
}
{
"message": "You cannot modify a role that you're currently assigned to.",
"errors": {
"role": [
"You cannot modify a role that you're currently assigned to."
]
}
}
{
"message": "The selected legacy role is invalid.",
"errors": {
"legacy_role": [
"The selected legacy role is invalid."
]
}
}
{
"message": "The legacy role field must be missing.",
"errors": {
"legacy_role": [
"The legacy role field must be missing."
]
}
}