> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinetica.com/llms.txt
> Use this file to discover all available pages before exploring further.

# /has/role

```
URL: http://<db.host>:<db.port>/has/role
```

Checks if the specified user has the specified role.

## Input Parameter Description

<ParamField body="principal" type="string">
  Name of the user for which role membership is being checked. Must be an existing user. If blank, will use the current user.

  The default value is ''.
</ParamField>

<ParamField body="role" type="string">
  Name of role to check for membership.
</ParamField>

<ParamField body="options" type="map of string to strings">
  Optional parameters.

  The default value is an empty map ( \{} ).

  <Expandable title="options">
    <ParamField body="no_error_if_not_exists">
      If *false* will return an error if the provided input parameter *role* does not exist or is blank. If *true* then it will return *false* for output parameter *has\_role*.

      The default value is `false`.

      The supported values are:

      * true
      * false
    </ParamField>

    <ParamField body="only_direct">
      If *false* will search recursively if the input parameter *principal* is a member of input parameter *role*.  If *true* then input parameter *principal* must directly be a member of input parameter *role*.

      The default value is `false`.

      The supported values are:

      * true
      * false
    </ParamField>
  </Expandable>
</ParamField>

## Output Parameter Description

The Kinetica server embeds the endpoint response inside a standard response structure which contains status information and the actual response to the query.  Here is a description of the various fields of the wrapper:

<ResponseField name="status" type="String">
  'OK' or 'ERROR'
</ResponseField>

<ResponseField name="message" type="String">
  Empty if success or an error message
</ResponseField>

<ResponseField name="data_type" type="String">
  'has\_role\_response' or 'none' in case of an error
</ResponseField>

<ResponseField name="data" type="String">
  Empty string
</ResponseField>

<ResponseField name="data_str" type="JSON or String">
  This embedded JSON represents the result of the /has/role endpoint:

  <Expandable title="data_str">
    <ResponseField name="principal" type="string">
      Value of input parameter *principal*.
    </ResponseField>

    <ResponseField name="role" type="string">
      Input parameter *role* for which membership is being checked.
    </ResponseField>

    <ResponseField name="has_role" type="boolean">
      Indicates whether the specified user has membership in the specified target input parameter *role*.

      * **true**: User has membership in the role.
      * **false**: User does not have membership in the role.
    </ResponseField>

    <ResponseField name="info" type="map of string to strings">
      Additional information.

      The default value is an empty map ( \{} ).

      <Expandable title="info">
        <ResponseField name="direct">
          *true* when principal is directly a member of the role.

          The default value is `false`.

          The supported values are:

          * true
          * false
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>

  Empty string in case of an error.
</ResponseField>
