Roles#

class RolesClient(*, sdk_config: SDKConfiguration, generated_client: ApiClient)[source]#

Bases: object

Client for managing Arize roles.

This class is primarily intended for internal use within the SDK. Users are highly encouraged to access resource-specific functionality via arize.ArizeClient.

The roles client is a thin wrapper around the generated REST API client, using the shared generated API client owned by arize.config.SDKConfiguration.

Parameters:
  • sdk_config (SDKConfiguration) – Resolved SDK configuration.

  • generated_client (ApiClient) – Shared generated API client instance.

list(*, limit: int = DEFAULT_LIST_LIMIT, cursor: str | None = None, is_predefined: bool | None = None) → ListRolesResponse[source]#

List roles for the authenticated user’s account.

This endpoint supports cursor-based pagination. When provided, is_predefined filters results to predefined or custom roles only.

Parameters:
  • limit (int) – Maximum number of roles to return. The server enforces an upper bound of 100.

  • cursor (str | None) – Opaque pagination cursor from a previous response.

  • is_predefined (bool | None) – When True, return only system-defined predefined roles. When False, return only custom (account-defined) roles. When None (default), return all roles.

Returns:

A paginated role list response from the Arize REST API.

Raises:

ApiException – If the API request fails.

Return type:

ListRolesResponse

get(*, role: str) → Role[source]#

Get a role by name or ID.

Parameters:

role (str) – Role name or identifier (base64). If the value looks like an ID it is used directly; otherwise it is resolved by name.

Returns:

The role object.

Raises:
  • NotFoundError – If the role name cannot be found.

  • ApiException – If the API request fails (for example, role not found).

Return type:

Role

create(*, name: str, permissions: builtins.list[Permission], description: str | None = None) → Role[source]#

Create a new custom role.

Role names must be unique within the account. At least one permission must be provided. Predefined (system-managed) roles cannot be created through this endpoint.

Parameters:
  • name (str) – Role name (must be unique within the account, max 255 chars).

  • permissions (builtins.list[Permission]) – List of permissions to grant (e.g. [Permission.PROJECT_READ, Permission.DATASET_CREATE]). At least one is required.

  • description (str | None) – Optional description of the role’s purpose (max 1000 chars).

Returns:

The created role object.

Raises:

ApiException – If the API request fails.

Return type:

Role

update(*, role: str, name: str | None | UNSET = _UNSET, description: str | None | UNSET = _UNSET, permissions: builtins.list[Permission] | None | UNSET = _UNSET) → Role[source]#

Update a custom role by name or ID.

At least one field must be provided. Omitted fields are preserved. Passing description=None clears the description. Predefined roles cannot be updated. When permissions is provided, the existing permissions are fully replaced with the new set.

Parameters:
  • role (str) – Role name or identifier (base64). If the value looks like an ID it is used directly; otherwise it is resolved by name.

  • name (str | None | UNSET) – Updated name for the role (max 255 chars). Omit to preserve.

  • description (str | None | UNSET) – Updated description of the role (max 1000 chars). Omit to preserve, or pass None to clear.

  • permissions (builtins.list[Permission] | None | UNSET) – Replacement set of permissions. When provided, fully replaces existing permissions. Omit or pass None to preserve.

Returns:

The updated role object.

Raises:
  • NotFoundError – If the role name cannot be found.

  • ValueError – If none of name, description, or permissions is provided.

  • ApiException – If the API request fails (for example, role not found, insufficient permissions, or attempting to update a predefined role).

Return type:

Role

delete(*, role: str) → None[source]#

Delete a custom role by name or ID.

Predefined (system-managed) roles cannot be deleted.

Parameters:

role (str) – Role name or identifier (base64). If the value looks like an ID it is used directly; otherwise it is resolved by name.

Raises:
  • NotFoundError – If the role name cannot be found.

  • ApiException – If the API request fails (for example, role not found, insufficient permissions, or attempting to delete a predefined role).

Return type:

None

Response Types#

Public type re-exports for the roles subdomain.

class ListRolesResponse(*, roles: List[Role], pagination: PaginationMetadata)[source]#

Bases: BaseModel

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Parameters:
roles: List[Role]#
pagination: PaginationMetadata#
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'protected_namespaces': (), 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

to_str() → str[source]#

Returns the string representation of the model using alias

Return type:

str

to_json() → str[source]#

Returns the JSON representation of the model using alias

Return type:

str

classmethod from_json(json_str: str) → Self | None[source]#

Create an instance of ListRolesResponse from a JSON string

Parameters:

json_str (str)

Return type:

Self | None

to_dict() → Dict[str, Any][source]#

Return the dictionary representation of the model using alias.

This has the following differences from calling pydantic’s self.model_dump(by_alias=True):

  • None is only added to the output dict for nullable fields that were set at model initialization. Other fields with value None are ignored.

Return type:

Dict[str, Any]

classmethod from_dict(obj: Dict[str, Any] | None) → Self | None[source]#

Create an instance of ListRolesResponse from a dict

Parameters:

obj (Dict[str, Any] | None)

Return type:

Self | None

to_df(by_alias: bool = False, exclude_none: str | bool = True, json_normalize: bool = False, convert_dtypes: bool = True, expand_field: str = 'additional_properties', expand_prefix: str = '') → pd.DataFrame#

Convert a list of objects to a pandas.DataFrame.

Behavior:
  • If an item is a Pydantic v2 model, use .model_dump(by_alias=…).

  • If an item is a mapping (dict-like), use it as-is.

  • Otherwise, raise a ValueError (unsupported row type).

Parameters:
  • self (object) – The object instance containing the field to convert.

  • by_alias (bool) – Use field aliases when dumping Pydantic models.

  • exclude_none (str | bool) – Control None/NaN column dropping. - False: keep Nones as-is - “all”: drop columns where all values are None/NaN - “any”: drop columns where any value is None/NaN - True: alias for “all”

  • json_normalize (bool) – If True, flatten nested dicts via pandas.json_normalize.

  • convert_dtypes (bool) – If True, call DataFrame.convert_dtypes() at the end.

  • expand_field (str) – If set, look for this field in each row and expand its keys into top-level columns.

  • expand_prefix (str) – If set, prefix expanded column names with this string.

Returns:

The converted DataFrame.

Return type:

pandas.DataFrame

class Permission(value, names=_not_given, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Bases: str, Enum

A permission identifier following the pattern {RESOURCE}_{ACTION}. Auto-generated from proto/auth/protocol/permissions.proto.

AGENT_ROLE_CREATE = 'AGENT_ROLE_CREATE'#
AGENT_ROLE_DELETE = 'AGENT_ROLE_DELETE'#
AGENT_ROLE_READ = 'AGENT_ROLE_READ'#
AGENT_ROLE_UPDATE = 'AGENT_ROLE_UPDATE'#
AI_PROVIDER_READ = 'AI_PROVIDER_READ'#
ALYX_RUN = 'ALYX_RUN'#
ANNOTATION_CONFIG_CREATE = 'ANNOTATION_CONFIG_CREATE'#
ANNOTATION_CONFIG_DELETE = 'ANNOTATION_CONFIG_DELETE'#
ANNOTATION_CONFIG_READ = 'ANNOTATION_CONFIG_READ'#
ANNOTATION_CONFIG_UPDATE = 'ANNOTATION_CONFIG_UPDATE'#
COST_CONFIG_CREATE = 'COST_CONFIG_CREATE'#
COST_CONFIG_DELETE = 'COST_CONFIG_DELETE'#
COST_CONFIG_READ = 'COST_CONFIG_READ'#
COST_CONFIG_UPDATE = 'COST_CONFIG_UPDATE'#
CUSTOM_METRIC_CREATE = 'CUSTOM_METRIC_CREATE'#
CUSTOM_METRIC_DELETE = 'CUSTOM_METRIC_DELETE'#
CUSTOM_METRIC_READ = 'CUSTOM_METRIC_READ'#
CUSTOM_METRIC_UPDATE = 'CUSTOM_METRIC_UPDATE'#
DASHBOARD_CREATE = 'DASHBOARD_CREATE'#
DASHBOARD_DELETE = 'DASHBOARD_DELETE'#
DASHBOARD_READ = 'DASHBOARD_READ'#
DASHBOARD_RESTRICT = 'DASHBOARD_RESTRICT'#
DASHBOARD_UPDATE = 'DASHBOARD_UPDATE'#
DATASET_CREATE = 'DATASET_CREATE'#
DATASET_DELETE = 'DATASET_DELETE'#
DATASET_EXAMPLE_ANNOTATE = 'DATASET_EXAMPLE_ANNOTATE'#
DATASET_EXAMPLE_CREATE = 'DATASET_EXAMPLE_CREATE'#
DATASET_EXAMPLE_DELETE = 'DATASET_EXAMPLE_DELETE'#
DATASET_EXAMPLE_READ = 'DATASET_EXAMPLE_READ'#
DATASET_EXAMPLE_UPDATE = 'DATASET_EXAMPLE_UPDATE'#
DATASET_READ = 'DATASET_READ'#
DATASET_UPDATE = 'DATASET_UPDATE'#
DATASET_VIEW_CREATE = 'DATASET_VIEW_CREATE'#
DATASET_VIEW_DELETE = 'DATASET_VIEW_DELETE'#
DATASET_VIEW_READ = 'DATASET_VIEW_READ'#
DATASET_VIEW_UPDATE = 'DATASET_VIEW_UPDATE'#
DATA_FABRIC_CONNECTOR_CREATE = 'DATA_FABRIC_CONNECTOR_CREATE'#
DATA_FABRIC_CONNECTOR_DELETE = 'DATA_FABRIC_CONNECTOR_DELETE'#
DATA_FABRIC_CONNECTOR_READ = 'DATA_FABRIC_CONNECTOR_READ'#
DATA_FABRIC_CONNECTOR_UPDATE = 'DATA_FABRIC_CONNECTOR_UPDATE'#
EVALUATOR_CREATE = 'EVALUATOR_CREATE'#
EVALUATOR_DELETE = 'EVALUATOR_DELETE'#
EVALUATOR_READ = 'EVALUATOR_READ'#
EVALUATOR_UPDATE = 'EVALUATOR_UPDATE'#
EXPERIMENT_CREATE = 'EXPERIMENT_CREATE'#
EXPERIMENT_DELETE = 'EXPERIMENT_DELETE'#
EXPERIMENT_EVAL_TASK_CREATE = 'EXPERIMENT_EVAL_TASK_CREATE'#
EXPERIMENT_EVAL_TASK_DELETE = 'EXPERIMENT_EVAL_TASK_DELETE'#
EXPERIMENT_EVAL_TASK_READ = 'EXPERIMENT_EVAL_TASK_READ'#
EXPERIMENT_EVAL_TASK_UPDATE = 'EXPERIMENT_EVAL_TASK_UPDATE'#
EXPERIMENT_READ = 'EXPERIMENT_READ'#
EXPERIMENT_RUN_ANNOTATE = 'EXPERIMENT_RUN_ANNOTATE'#
EXPERIMENT_RUN_READ = 'EXPERIMENT_RUN_READ'#
EXPERIMENT_UPDATE = 'EXPERIMENT_UPDATE'#
FILE_IMPORT_CREATE = 'FILE_IMPORT_CREATE'#
FILE_IMPORT_DELETE = 'FILE_IMPORT_DELETE'#
FILE_IMPORT_READ = 'FILE_IMPORT_READ'#
FILE_IMPORT_UPDATE = 'FILE_IMPORT_UPDATE'#
LLM_INTEGRATION_CREATE = 'LLM_INTEGRATION_CREATE'#
LLM_INTEGRATION_DELETE = 'LLM_INTEGRATION_DELETE'#
LLM_INTEGRATION_UPDATE = 'LLM_INTEGRATION_UPDATE'#
MANAGED_AGENT_CREATE = 'MANAGED_AGENT_CREATE'#
MANAGED_AGENT_DELETE = 'MANAGED_AGENT_DELETE'#
MANAGED_AGENT_READ = 'MANAGED_AGENT_READ'#
MANAGED_AGENT_UPDATE = 'MANAGED_AGENT_UPDATE'#
ML_MODEL_CREATE = 'ML_MODEL_CREATE'#
ML_MODEL_DELETE = 'ML_MODEL_DELETE'#
ML_MODEL_READ = 'ML_MODEL_READ'#
ML_MODEL_UPDATE = 'ML_MODEL_UPDATE'#
MONITOR_CREATE = 'MONITOR_CREATE'#
MONITOR_DELETE = 'MONITOR_DELETE'#
MONITOR_READ = 'MONITOR_READ'#
MONITOR_TRIGGER = 'MONITOR_TRIGGER'#
MONITOR_UPDATE = 'MONITOR_UPDATE'#
ORGANIZATION_CREATE = 'ORGANIZATION_CREATE'#
ORGANIZATION_DELETE = 'ORGANIZATION_DELETE'#
ORGANIZATION_READ = 'ORGANIZATION_READ'#
ORGANIZATION_UPDATE = 'ORGANIZATION_UPDATE'#
PLAYGROUND_RUN = 'PLAYGROUND_RUN'#
PLAYGROUND_VIEW_CREATE = 'PLAYGROUND_VIEW_CREATE'#
PLAYGROUND_VIEW_DELETE = 'PLAYGROUND_VIEW_DELETE'#
PLAYGROUND_VIEW_READ = 'PLAYGROUND_VIEW_READ'#
PLAYGROUND_VIEW_UPDATE = 'PLAYGROUND_VIEW_UPDATE'#
PROJECT_CREATE = 'PROJECT_CREATE'#
PROJECT_DELETE = 'PROJECT_DELETE'#
PROJECT_EVAL_TASK_CREATE = 'PROJECT_EVAL_TASK_CREATE'#
PROJECT_EVAL_TASK_DELETE = 'PROJECT_EVAL_TASK_DELETE'#
PROJECT_EVAL_TASK_READ = 'PROJECT_EVAL_TASK_READ'#
PROJECT_EVAL_TASK_UPDATE = 'PROJECT_EVAL_TASK_UPDATE'#
PROJECT_READ = 'PROJECT_READ'#
PROJECT_RESTRICT = 'PROJECT_RESTRICT'#
PROJECT_SPAN_ANNOTATE = 'PROJECT_SPAN_ANNOTATE'#
PROJECT_SPAN_CREATE = 'PROJECT_SPAN_CREATE'#
PROJECT_SPAN_DELETE = 'PROJECT_SPAN_DELETE'#
PROJECT_SPAN_READ = 'PROJECT_SPAN_READ'#
PROJECT_SPAN_UPDATE = 'PROJECT_SPAN_UPDATE'#
PROJECT_UPDATE = 'PROJECT_UPDATE'#
PROMPT_CREATE = 'PROMPT_CREATE'#
PROMPT_DELETE = 'PROMPT_DELETE'#
PROMPT_OPTIMIZE_TASK_CREATE = 'PROMPT_OPTIMIZE_TASK_CREATE'#
PROMPT_OPTIMIZE_TASK_DELETE = 'PROMPT_OPTIMIZE_TASK_DELETE'#
PROMPT_OPTIMIZE_TASK_READ = 'PROMPT_OPTIMIZE_TASK_READ'#
PROMPT_OPTIMIZE_TASK_UPDATE = 'PROMPT_OPTIMIZE_TASK_UPDATE'#
PROMPT_READ = 'PROMPT_READ'#
PROMPT_UPDATE = 'PROMPT_UPDATE'#
QUEUE_CREATE = 'QUEUE_CREATE'#
QUEUE_DELETE = 'QUEUE_DELETE'#
QUEUE_READ = 'QUEUE_READ'#
QUEUE_RECORD_ANNOTATE = 'QUEUE_RECORD_ANNOTATE'#
QUEUE_RECORD_CREATE = 'QUEUE_RECORD_CREATE'#
QUEUE_RECORD_DELETE = 'QUEUE_RECORD_DELETE'#
QUEUE_RECORD_READ = 'QUEUE_RECORD_READ'#
QUEUE_RECORD_UPDATE = 'QUEUE_RECORD_UPDATE'#
QUEUE_UPDATE = 'QUEUE_UPDATE'#
REMOTE_ENDPOINT_INTEGRATION_CREATE = 'REMOTE_ENDPOINT_INTEGRATION_CREATE'#
REMOTE_ENDPOINT_INTEGRATION_DELETE = 'REMOTE_ENDPOINT_INTEGRATION_DELETE'#
REMOTE_ENDPOINT_INTEGRATION_READ = 'REMOTE_ENDPOINT_INTEGRATION_READ'#
REMOTE_ENDPOINT_INTEGRATION_UPDATE = 'REMOTE_ENDPOINT_INTEGRATION_UPDATE'#
ROLE_BINDING_CREATE = 'ROLE_BINDING_CREATE'#
ROLE_BINDING_DELETE = 'ROLE_BINDING_DELETE'#
ROLE_BINDING_READ = 'ROLE_BINDING_READ'#
ROLE_CREATE = 'ROLE_CREATE'#
ROLE_DELETE = 'ROLE_DELETE'#
ROLE_READ = 'ROLE_READ'#
ROLE_UPDATE = 'ROLE_UPDATE'#
SERVICE_KEY_CREATE = 'SERVICE_KEY_CREATE'#
SERVICE_KEY_READ = 'SERVICE_KEY_READ'#
SERVICE_KEY_REVOKE = 'SERVICE_KEY_REVOKE'#
SPACE_CREATE = 'SPACE_CREATE'#
SPACE_DELETE = 'SPACE_DELETE'#
SPACE_READ = 'SPACE_READ'#
SPACE_UPDATE = 'SPACE_UPDATE'#
TAG_CREATE = 'TAG_CREATE'#
TAG_DELETE = 'TAG_DELETE'#
TAG_READ = 'TAG_READ'#
TAG_UPDATE = 'TAG_UPDATE'#
TRACE_VIEW_CREATE = 'TRACE_VIEW_CREATE'#
TRACE_VIEW_DELETE = 'TRACE_VIEW_DELETE'#
TRACE_VIEW_READ = 'TRACE_VIEW_READ'#
TRACE_VIEW_UPDATE = 'TRACE_VIEW_UPDATE'#
USER_CREATE = 'USER_CREATE'#
USER_DELETE = 'USER_DELETE'#
USER_PERMISSION_UPDATE = 'USER_PERMISSION_UPDATE'#
USER_READ = 'USER_READ'#
USER_UPDATE = 'USER_UPDATE'#
classmethod from_json(json_str: str) → Self[source]#

Create an instance of Permission from a JSON string

Parameters:

json_str (str)

Return type:

Self

class Role(*, id: Annotated[str, Strict(strict=True)], name: Annotated[str, Strict(strict=True)], description: Annotated[str, Strict(strict=True)] | None = None, permissions: List[Permission], is_predefined: Annotated[bool, Strict(strict=True)], created_at: datetime, updated_at: datetime)[source]#

Bases: BaseModel

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Parameters:
id: StrictStr#
name: StrictStr#
description: StrictStr | None#
permissions: List[Permission]#
is_predefined: StrictBool#
created_at: datetime#
updated_at: datetime#
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'protected_namespaces': (), 'validate_assignment': True, 'validate_by_alias': True, 'validate_by_name': True}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

to_str() → str[source]#

Returns the string representation of the model using alias

Return type:

str

to_json() → str[source]#

Returns the JSON representation of the model using alias

Return type:

str

classmethod from_json(json_str: str) → Self | None[source]#

Create an instance of Role from a JSON string

Parameters:

json_str (str)

Return type:

Self | None

to_dict() → Dict[str, Any][source]#

Return the dictionary representation of the model using alias.

This has the following differences from calling pydantic’s self.model_dump(by_alias=True):

  • None is only added to the output dict for nullable fields that were set at model initialization. Other fields with value None are ignored.

Return type:

Dict[str, Any]

classmethod from_dict(obj: Dict[str, Any] | None) → Self | None[source]#

Create an instance of Role from a dict

Parameters:

obj (Dict[str, Any] | None)

Return type:

Self | None