---
title: Create a User Role, including Entitlements when provided.
slug: create-a-user-role-including-entitlements-when-provided
docTags: 
createdAt: 2025-09-12T20:51:27.709Z
---

{
  "id": "j3_6DG3hd-ckc8Woppm5Y",
  "type": "api-oas-v2",
  "data": {
    "method": "POST",
    "url": "https://api.b.preview.loyaltyservices.io/api/v3/user-roles",
    "servers": [
      {
        "url": "https://api.b.preview.loyaltyservices.io/api/v3/user-roles"
      }
    ],
    "name": "Create a User Role, including Entitlements when provided.",
    "description": "",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "headerParameters": [
        {
          "name": "accept",
          "type": "string",
          "kind": "optional",
          "description": "Generated from available response content types",
          "enum": [
            "application/json"
          ],
          "default": "application/json"
        }
      ],
      "queryParameters": [],
      "bodyDataParameters": [
        {
          "kind": "required",
          "name": "body",
          "type": "object",
          "description": "",
          "customType": "UserRole",
          "schema": [
            {
              "name": "roleName",
              "kind": "required",
              "type": "string",
              "description": "Name of user role",
              "minLength": 1,
              "maxLength": 30
            },
            {
              "name": "roleDescription",
              "kind": "required",
              "type": "string",
              "description": "Description of user role",
              "maxLength": 200
            },
            {
              "name": "active",
              "kind": "optional",
              "type": "boolean",
              "description": "Indicates whether a user role is active or not"
            },
            {
              "name": "rank",
              "kind": "required",
              "type": "integer",
              "description": "Used for filtering in bonus rule search and preventing a user from modifying a more privileged user",
              "minimum": 0,
              "maximum": 9999
            },
            {
              "name": "channelCode",
              "kind": "optional",
              "type": "string",
              "description": "Code representing user role channel type",
              "example": "API"
            },
            {
              "name": "entitlements",
              "kind": "optional",
              "type": "array",
              "description": "<p>For GET, all entitlements for the userRole will be returned.\nFor POST, only provided entitlements are assigned.\nFor PUT, only provided entitlements are assigned, and missing entitlements are removed.</p>",
              "modelRef": "#/components/schemas/UserEntitlement",
              "customType": "UserEntitlement[]",
              "schema": [
                {
                  "name": "name",
                  "kind": "optional",
                  "type": "string",
                  "description": "Element name",
                  "example": "twa:member:search"
                },
                {
                  "name": "description",
                  "kind": "optional",
                  "type": "string",
                  "readOnly": true,
                  "description": "Description of the element",
                  "example": "Tally Call Center: Search Member"
                }
              ]
            }
          ],
          "modelRef": "#/components/schemas/UserRole",
          "isExpanded": true
        }
      ],
      "formDataParameters": [],
      "oAuthParameters": [
        {
          "id": "OAuth2",
          "name": "OAuth2",
          "kind": "optional",
          "type": "oauth2",
          "description": "<p>See <a href=\"https://docs.wearephaedon.com/docs/platform-api-authentication\" target=\"_blank\">https://docs.wearephaedon.com/docs/platform-api-authentication</a></p>",
          "oauth2Flows": {
            "clientCredentials": {
              "tokenUrl": "https://phaedon.oktapreview.com/oauth2/auscfbbmieFBGGOzR1d7/v1/token",
              "scopes": {
                "api:custom-data:read": "Grants read access to custom data information",
                "api:custom-data:modify": "Grants modify access to custom data information",
                "api:data-codes:read": "Grants read access to data codes",
                "api:data-codes:modify": "Grants modify access to data codes",
                "api:coupon-compensation:read": "Grants read access to compensations for coupon code",
                "api:coupon-compensation:create": "Grants access to create compensations for coupon code",
                "api:coupon-compensation:modify": "Grants access to edit compensation nights for coupon code",
                "api:coupon-request:modify": "Grants modify access to create coupons",
                "api:member:search": "Grants search access to member information",
                "api:member:verify": "Grants verify access to member information",
                "api:member:merge": "Grants access to merge members",
                "api:member:enroll": "Grants access to enroll members",
                "api:member:modify": "Grants modify access to member information",
                "api:member:read": "Grants read access to member information",
                "api:member:close": "Grants access to close member account",
                "api:member:migrate": "Grants access to migrate member accounts",
                "api:member-address:read": "Grants read access to member address information",
                "api:member-address:modify": "Grants modify access to member address information",
                "api:member-alias:read": "Grants read access to member alias information",
                "api:member-alias:modify": "Grants modify access to member alias information",
                "api:member-badge:read": "Grants read access to member badge information",
                "api:member-badge:modify": "Grants modify access to member badge information",
                "api:member-bonus:add": "Grants access to add a bonus to a member",
                "api:member-bonus:read": "Grants read access to member bonus information",
                "api:member-comments:read": "Grants read access to member comments information",
                "api:member-comments:modify": "Grants modify access to member comments information",
                "api:member-communication:read": "Grants read access to member communication information",
                "api:member-communication:modify": "Grants modify access to member communication information",
                "api:member-coupon:read": "Grants read access to member coupon information",
                "api:member-coupon-use:cancel": "Grants access to cancel member coupon uses",
                "api:member-coupon:transfer": "Grants access to transfer a member coupon",
                "api:member-coupon-use:update": "Grants access to update member coupon uses",
                "api:member-currency:read": "Grants read access to member currency information",
                "api:member-currency:adjust": "Grants access to adjust member currency",
                "api:member-currency:migrate": "Grants access to migrate member currency",
                "api:member-currency-conversion:convert": "Grants access to convert member currency",
                "api:member-email:read": "Grants read access to member email information",
                "api:member-email:modify": "Grants modify access to member email information",
                "api:member-event:read": "Grants read access to member events",
                "api:member-event:modify": "Grants modify access to member events",
                "api:event-rule:read": "Grants read access to event rules",
                "api:event-rule:modify": "Grants access to modify event rule",
                "api:event-rule:admin": "Grants full admin access to event rules",
                "api:member-list:read": "Grants read access to member list information",
                "api:member-list:modify": "Grants modify access to member list information",
                "api:member-partner-link:read": "Grants read access to member partner link information",
                "api:member-partner-link:modify": "Grants modify access to member partner link information",
                "api:member-payment-card:read": "Grants read access to member payment card information",
                "api:member-payment-card:modify": "Grants modify access to member payment card information",
                "api:member-phone:read": "Grants read access to member phone information",
                "api:member-phone:modify": "Grants modify access to member phone information",
                "api:member-preference:read": "Grants read access to member preference information",
                "api:member-preference:modify": "Grants modify access to member preference information",
                "api:member-promotion:read": "Grants read access to member promotion information",
                "api:member-promotion:register": "Grants access to register a member into a promotion",
                "api:member-redemption:create": "Grants redeem access to member redemption information",
                "api:member-redemption:over-redeem": "Grants access to over redeem",
                "api:member-redemption:read": "Grants read access to member redemption information",
                "api:member-redemption:cancel": "Grants access to cancel member redemptions",
                "api:member-redemption:migrate": "Allows migration of member redemption information",
                "api:member-redemption:patch": "Grants patching access to member redemption",
                "api:member-tier:read": "Grants read access to member tier information",
                "api:member-tier:adjust": "Grants access to adjust member tiers",
                "api:member-tier:migrate": "Grants access to migrate member tiers",
                "api:member-transaction:read": "Grants read access to transaction information",
                "api:member-transaction:cancel": "Grants access to cancel transactions",
                "api:member-transaction:clone": "Grants access to clone transactions",
                "api:member-transfer:transfer": "Grants access to do member to member transfers",
                "api:preference:read": "Grants read access to preference information",
                "api:promotion:read": "Grants read access to promotion information",
                "api:tier:read": "Grant read access to tier information",
                "api:promotion:register": "Grants access to register a member into a promotion using token",
                "api:promotion-token:manage": "Grants access to generate promotion token",
                "api:redemption:read": "Grants read access to redemption information",
                "api:redemption:modify": "Grants access to modify redemption information",
                "api:bonus-rule:read": "Grants read access to bonus rule configuration",
                "api:bonus-rule:modify": "Grants access to modify bonus rule configuration",
                "api:bonus-rule:manage": "Grants limited admin access to bonus rule configuration",
                "api:bonus-rule:admin": "Grants full admin access to bonus rules",
                "api:promotion-rule:read": "Grants read access to promotion rule configuration",
                "api:promotion-rule:modify": "Grants access to modify promotion rule configuration",
                "api:promotion-rule:manage": "Grants limited admin access to promotion rule configuration",
                "api:promotion-rule:admin": "Grants full admin access to promotion rules",
                "api:reports:under-investigation": "Grants access to under investigation report",
                "api:transaction:submit": "Grants access to submit transactions",
                "api:transaction:migrate": "Grants access to migrate transactions",
                "api:user:read": "Grants access to read user information",
                "api:user:modify": "Grants access to create user",
                "api:user-task:read": "Grants read access to user tasks",
                "api:user-task:modify": "Grants modify access to user tasks",
                "api:user-role:read": "Grants read access to user roles",
                "api:user-role:modify": "Grants modify access to user roles",
                "api:compensation:read": "Grants read access to hotel summary information",
                "api:compensation:modify": "Grants modify access to hotel summary information",
                "api:member-referral:read": "Grants read access to member referral information",
                "api:member-referral:modify": "Grants modify access to member referral information",
                "api:member-referral-codes:read": "Grants read access to member referral codes",
                "api:member-referral-codes:create": "Grants access to create member referral codes",
                "api:outbound-notification:modify": "Grants access to send outbound notification",
                "api:outbound-notification:read": "Grants access to read outbound notification types",
                "api:background-task:read": "Grants read access to background task information",
                "api:async-task:create": "Grants access to submit operations for background processing",
                "api:async-task:read": "Grants read access to background processing results",
                "api:audit-configuration:read": "Grants read access to audit configuration information",
                "api:audit-configuration:modify": "Grants modify access to audit configuration information",
                "api:badge:read": "Grant read access to badge information",
                "api:broadcast-messages:read": "Grant Read access to broadcast messages",
                "api:expression-config:read": "Grant read access to expression builder configuration",
                "api:managed-entity:read": "Grant read access to managed entity data",
                "api:customer-satisfaction:modify": "Grants modify access to customer satisfaction metrics",
                "api:member-linked-account:modify": "Grant modify access to member linked account",
                "api:member-linked-account:read": "Grants access to read linked member accounts",
                "api:enroll-codes:read": "Grants access to read enroll codes",
                "api:contact-us:modify": "Grants access to submit Contact Us inquiry",
                "api:data-release:read": "Grants read access to data releases",
                "api:points-pool:read": "Grants read access to points pools",
                "api:points-pool:modify": "Grants modify access to points pools",
                "api:segment:read": "Grants read access to segments",
                "api:segment:modify": "Grants modify access to segments",
                "api:communication-type:read": "Grants read access to communication types",
                "api:communication-type:modify": "Grants modify access to communication types",
                "api:member-status-match:read": "Grants read access to status match eligibility and submitted images/applications",
                "api:member-status-match:create": "Grants access to upload status match images and submit applications"
              }
            }
          },
          "requiredScopes": [
            "api:user-role:modify"
          ]
        }
      ],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "Success",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "customType": "UserRole",
            "schema": [
              {
                "name": "userRoleId",
                "kind": "optional",
                "type": "integer<int64>",
                "readOnly": true,
                "description": "User role unique identifier",
                "format": "int64"
              },
              {
                "name": "roleName",
                "kind": "required",
                "type": "string",
                "description": "Name of user role",
                "minLength": 1,
                "maxLength": 30
              },
              {
                "name": "roleDescription",
                "kind": "required",
                "type": "string",
                "description": "Description of user role",
                "maxLength": 200
              },
              {
                "name": "active",
                "kind": "optional",
                "type": "boolean",
                "description": "Indicates whether a user role is active or not"
              },
              {
                "name": "rank",
                "kind": "required",
                "type": "integer",
                "description": "Used for filtering in bonus rule search and preventing a user from modifying a more privileged user",
                "minimum": 0,
                "maximum": 9999
              },
              {
                "name": "channelCode",
                "kind": "optional",
                "type": "string",
                "description": "Code representing user role channel type",
                "example": "API"
              },
              {
                "name": "entitlements",
                "kind": "optional",
                "type": "array",
                "description": "<p>For GET, all entitlements for the userRole will be returned.\nFor POST, only provided entitlements are assigned.\nFor PUT, only provided entitlements are assigned, and missing entitlements are removed.</p>",
                "modelRef": "#/components/schemas/UserEntitlement",
                "customType": "UserEntitlement[]",
                "schema": [
                  {
                    "name": "name",
                    "kind": "optional",
                    "type": "string",
                    "description": "Element name",
                    "example": "twa:member:search"
                  },
                  {
                    "name": "description",
                    "kind": "optional",
                    "type": "string",
                    "readOnly": true,
                    "description": "Description of the element",
                    "example": "Tally Call Center: Search Member"
                  }
                ]
              }
            ],
            "modelRef": "#/components/schemas/UserRole",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "400",
        "description": "Bad request",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "customType": "ErrorResponse",
            "schema": [
              {
                "name": "errors",
                "kind": "optional",
                "type": "array",
                "description": "List of errors",
                "modelRef": "#/components/schemas/ValidationError",
                "customType": "ValidationError[]",
                "schema": [
                  {
                    "name": "code",
                    "kind": "optional",
                    "type": "string",
                    "description": "Error code assigned to this violation"
                  },
                  {
                    "name": "fieldName",
                    "kind": "optional",
                    "type": "string",
                    "description": "<p>Name of field that violated validation constraint (optional)</p>"
                  },
                  {
                    "name": "message",
                    "kind": "optional",
                    "type": "string",
                    "description": "Internal message describing the error"
                  },
                  {
                    "name": "messageParameters",
                    "kind": "optional",
                    "type": "array",
                    "description": "Error message parameters",
                    "example": "",
                    "itemType": "object",
                    "customType": "object[]",
                    "schema": []
                  }
                ]
              }
            ],
            "modelRef": "#/components/schemas/ErrorResponse",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "401",
        "description": "Unauthorized",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "403",
        "description": "Forbidden",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "500",
        "description": "Internal error",
        "jsonExample": "",
        "isExpanded": true
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "JIAOesjF5B7lp6zNiw3Hw",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request POST \\\n     --url https://api.b.preview.loyaltyservices.io/api/v3/user-roles \\\n     --header 'accept: application/json' \\\n     --header 'content-type: application/json' \\\n     --data '{\n     \"roleName\": \"\",\n     \"roleDescription\": \"\",\n     \"rank\": \"\"\n     }'"
        },
        {
          "id": "fkjm1fhMUD0HQCK6UExL2",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.b.preview.loyaltyservices.io/api/v3/user-roles\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"roleName\": \"\",\n   \"roleDescription\": \"\",\n   \"rank\": \"\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
        },
        {
          "id": "CAGiLsvsTNoKDSfzLEtR6",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://api.b.preview.loyaltyservices.io/api/v3/user-roles\"\n\npayload = json.dumps({\n   \"roleName\": \"\",\n   \"roleDescription\": \"\",\n   \"rank\": \"\"\n})\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        },
        {
          "id": "sJViY1PElUCh_dKzuFsGZ",
          "language": "java",
          "label": "Java",
          "code": "OkHttpClient client = new OkHttpClient().newBuilder()\n   .build();\nMediaType mediaType = MediaType.parse(\"application/json\");\nRequestBody body = RequestBody.create(mediaType, \"{\\n  \\\"roleName\\\": \\\"\\\",\\n  \\\"roleDescription\\\": \\\"\\\",\\n  \\\"rank\\\": \\\"\\\"\\n}\");\nRequest request = new Request.Builder()\n   .url(\"https://api.b.preview.loyaltyservices.io/api/v3/user-roles\")\n   .method(\"POST\", body)\n   .addHeader(\"accept\", \"application/json\")\n   .addHeader(\"content-type\", \"application/json\")\n   .build();\nResponse response = client.newCall(request).execute();"
        }
      ],
      "selectedLanguageId": "JIAOesjF5B7lp6zNiw3Hw"
    },
    "results": {
      "languages": [
        {
          "id": "izpNR1BT2k5TEk7CH43QM",
          "language": "200",
          "code": "// Success\n{\n  \"userRoleId\": \"\",\n  \"roleName\": \"\",\n  \"roleDescription\": \"\",\n  \"active\": false,\n  \"rank\": 0,\n  \"channelCode\": \"API\",\n  \"entitlements\": [\n    {\n      \"name\": \"twa:member:search\",\n      \"description\": \"Tally Call Center: Search Member\"\n    }\n  ]\n}"
        },
        {
          "id": "F5BigsK2ySGSXnR9rfrW8",
          "language": "400",
          "code": "// Bad request\n{\n  \"errors\": [\n    {\n      \"code\": \"\",\n      \"fieldName\": \"\",\n      \"message\": \"\",\n      \"messageParameters\": [\n        {}\n      ]\n    }\n  ]\n}"
        },
        {
          "id": "yKYE90t_jP-_GtsT5IMdC",
          "language": "401",
          "code": "// Unauthorized\n"
        },
        {
          "id": "a001r_z8om9rDhhyLydF_",
          "language": "403",
          "code": "// Forbidden\n"
        },
        {
          "id": "lsnBoo0mUi6MWB6w38EBQ",
          "language": "500",
          "code": "// Internal error\n"
        }
      ],
      "selectedLanguageId": "izpNR1BT2k5TEk7CH43QM"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}