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 = 100, cursor: str | None = None, is_predefined: bool | None = None) RolesList200Response[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:

RolesList200Response

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

Get a role by name or ID.

Parameters:

role (str) – Role name or global ID (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 = None, description: str | None = None, permissions: builtins.list[Permission] | None = None) Role[source]#

Update a custom role by name or ID.

At least one field must be provided. 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 global ID (base64). If the value looks like an ID it is used directly; otherwise it is resolved by name.

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

  • description (str | None) – Updated description of the role (max 1000 chars).

  • permissions (builtins.list[Permission] | None) – Replacement set of permissions. When provided, fully replaces existing permissions.

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 global ID (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#

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.

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'#
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_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'#
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'#
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'#
SERVICE_KEY_CREATE = 'SERVICE_KEY_CREATE'#
SERVICE_KEY_DELETE = 'SERVICE_KEY_DELETE'#
SERVICE_KEY_READ = 'SERVICE_KEY_READ'#
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

class RolesList200Response(*, 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)

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 RolesList200Response 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 RolesList200Response 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

  • columns. (expand its keys into top-level)

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

Returns:

The converted DataFrame.

Return type:

pandas.DataFrame