ExBifrost.Api.AccessProfiles (ex_bifrost v0.1.0)

Copy Markdown View Source

API calls for all endpoints tagged AccessProfiles.

Summary

Functions

Activate access profile Sets the profile active. Idempotent.

Attach roles to access profile Attaches one or more roles. Setting is_default: true makes the profile the role's default for new users. apply_to_existing: true provisions the profile to users already in the role.

Clone an access profile Creates a fresh copy of the profile under a new name. The clone has no role attachments or user copies.

Create access profile Creates a new access profile template. The profile is inactive until attached to a role. No size limits are enforced on create; the limits apply on update.

Deactivate access profile Sets the profile inactive. Idempotent. User copies are preserved; the profile is hidden from selection menus.

Delete access profile Blocked with 409 if any users still hold copies. Detach role attachments or remove user assignments first.

Detach a user's access profile Removes the profile from the user and deletes every virtual key it produced. Fails closed if a virtual key cannot be deleted.

Get access profile by ID Returns the profile plus its role attachments and the count of users holding a copy.

List workspace-wide audit log entries

List audit log entries for a single profile

List version snapshots for an access profile

List access profiles Returns access profiles visible to the caller.

Propagate template changes to user copies Pushes selected fields from the template to every user that holds a copy. Use dry_run: true to preview the impact. By default, accumulated usage is preserved.

Update access profile Partial update. Omitted fields preserve the current value. rate_limit: null explicitly clears the existing rate limit. Size limits enforced: max 100 provider_configs, max 100 budgets, max 50 tags.

Functions

activate_access_profile(connection, id, opts \\ [])

@spec activate_access_profile(Tesla.Env.client(), integer(), keyword()) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.CreateAccessProfile201Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

Activate access profile Sets the profile active. Idempotent.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.CreateAccessProfile201Response.t} on success
  • {:error, Tesla.Env.t} on failure

add_user_access_profile_virtual_key(connection, target_user_id, profile_id, opts \\ [])

@spec add_user_access_profile_virtual_key(
  Tesla.Env.client(),
  String.t(),
  integer(),
  keyword()
) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:ok, ExBifrost.Model.AddUserAccessProfileVirtualKey200Response.t()}
  | {:error, Tesla.Env.t()}

Add an extra virtual key under a user's access profile

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • target_user_id (String.t):
  • profile_id (integer()):
  • opts (keyword): Optional parameters
    • :body (AddUserAccessProfileVirtualKeyRequest):

Returns

  • {:ok, ExBifrost.Model.AddUserAccessProfileVirtualKey200Response.t} on success
  • {:error, Tesla.Env.t} on failure

attach_roles_to_access_profile(connection, id, attach_roles_to_access_profile_request, opts \\ [])

Attach roles to access profile Attaches one or more roles. Setting is_default: true makes the profile the role's default for new users. apply_to_existing: true provisions the profile to users already in the role.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • attach_roles_to_access_profile_request (AttachRolesToAccessProfileRequest):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.AttachRolesToAccessProfile200Response.t} on success
  • {:error, Tesla.Env.t} on failure

clone_access_profile(connection, id, clone_access_profile_request, opts \\ [])

Clone an access profile Creates a fresh copy of the profile under a new name. The clone has no role attachments or user copies.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • clone_access_profile_request (CloneAccessProfileRequest):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.CreateAccessProfile201Response.t} on success
  • {:error, Tesla.Env.t} on failure

create_access_profile(connection, create_access_profile_request, opts \\ [])

Create access profile Creates a new access profile template. The profile is inactive until attached to a role. No size limits are enforced on create; the limits apply on update.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • create_access_profile_request (CreateAccessProfileRequest):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.CreateAccessProfile201Response.t} on success
  • {:error, Tesla.Env.t} on failure

deactivate_access_profile(connection, id, opts \\ [])

@spec deactivate_access_profile(Tesla.Env.client(), integer(), keyword()) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.CreateAccessProfile201Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

Deactivate access profile Sets the profile inactive. Idempotent. User copies are preserved; the profile is hidden from selection menus.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.CreateAccessProfile201Response.t} on success
  • {:error, Tesla.Env.t} on failure

delete_access_profile(connection, id, opts \\ [])

@spec delete_access_profile(Tesla.Env.client(), integer(), keyword()) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.Logout200Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

Delete access profile Blocked with 409 if any users still hold copies. Detach role attachments or remove user assignments first.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.Logout200Response.t} on success
  • {:error, Tesla.Env.t} on failure

delete_user_access_profile_virtual_key(connection, target_user_id, vk_id, opts \\ [])

@spec delete_user_access_profile_virtual_key(
  Tesla.Env.client(),
  String.t(),
  String.t(),
  keyword()
) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.Logout200Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

Delete a virtual key from a user's access profile

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • target_user_id (String.t):
  • vk_id (String.t):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.Logout200Response.t} on success
  • {:error, Tesla.Env.t} on failure

detach_role_from_access_profile(connection, id, role_id, opts \\ [])

@spec detach_role_from_access_profile(
  Tesla.Env.client(),
  integer(),
  integer(),
  keyword()
) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.Logout200Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

Detach role from access profile

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • role_id (integer()):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.Logout200Response.t} on success
  • {:error, Tesla.Env.t} on failure

detach_user_access_profile(connection, target_user_id, profile_id, opts \\ [])

@spec detach_user_access_profile(Tesla.Env.client(), String.t(), integer(), keyword()) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.DetachUserAccessProfile200Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

Detach a user's access profile Removes the profile from the user and deletes every virtual key it produced. Fails closed if a virtual key cannot be deleted.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • target_user_id (String.t):
  • profile_id (integer()):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.DetachUserAccessProfile200Response.t} on success
  • {:error, Tesla.Env.t} on failure

get_access_profile(connection, id, opts \\ [])

@spec get_access_profile(Tesla.Env.client(), integer(), keyword()) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:ok, ExBifrost.Model.GetAccessProfile200Response.t()}
  | {:error, Tesla.Env.t()}

Get access profile by ID Returns the profile plus its role attachments and the count of users holding a copy.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.GetAccessProfile200Response.t} on success
  • {:error, Tesla.Env.t} on failure

get_access_profile_version(connection, id, version, opts \\ [])

@spec get_access_profile_version(Tesla.Env.client(), integer(), integer(), keyword()) ::
  {:ok, nil}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:ok, ExBifrost.Model.GetAccessProfileVersion200Response.t()}
  | {:error, Tesla.Env.t()}

Get a single version snapshot

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • version (integer()):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.GetAccessProfileVersion200Response.t} on success
  • {:error, Tesla.Env.t} on failure

list_access_profile_audit_logs(connection, opts \\ [])

@spec list_access_profile_audit_logs(
  Tesla.Env.client(),
  keyword()
) ::
  {:ok, ExBifrost.Model.ListAccessProfileAuditLogsById200Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

List workspace-wide audit log entries

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • opts (keyword): Optional parameters
    • :limit (integer()):
    • :offset (integer()):
    • :action (String.t):
    • :user_id (String.t):

Returns

  • {:ok, ExBifrost.Model.ListAccessProfileAuditLogsById200Response.t} on success
  • {:error, Tesla.Env.t} on failure

list_access_profile_audit_logs_by_id(connection, id, opts \\ [])

@spec list_access_profile_audit_logs_by_id(Tesla.Env.client(), integer(), keyword()) ::
  {:ok, ExBifrost.Model.ListAccessProfileAuditLogsById200Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

List audit log entries for a single profile

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • opts (keyword): Optional parameters
    • :limit (integer()):
    • :offset (integer()):
    • :action (String.t): One of create, update, delete, propagate, attach_role, detach_role, clone, activate, deactivate.
    • :user_id (String.t):

Returns

  • {:ok, ExBifrost.Model.ListAccessProfileAuditLogsById200Response.t} on success
  • {:error, Tesla.Env.t} on failure

list_access_profile_versions(connection, id, opts \\ [])

@spec list_access_profile_versions(Tesla.Env.client(), integer(), keyword()) ::
  {:ok, ExBifrost.Model.ListAccessProfileVersions200Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

List version snapshots for an access profile

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.ListAccessProfileVersions200Response.t} on success
  • {:error, Tesla.Env.t} on failure

list_access_profiles(connection, opts \\ [])

@spec list_access_profiles(
  Tesla.Env.client(),
  keyword()
) ::
  {:ok, ExBifrost.Model.BifrostError.t()}
  | {:ok, ExBifrost.Model.ListAccessProfiles200Response.t()}
  | {:error, Tesla.Env.t()}

List access profiles Returns access profiles visible to the caller.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • opts (keyword): Optional parameters
    • :limit (integer()):
    • :offset (integer()):
    • :search (String.t):
    • :tags (String.t): Comma-separated list of tags to filter on.
    • :is_active (boolean()):

Returns

  • {:ok, ExBifrost.Model.ListAccessProfiles200Response.t} on success
  • {:error, Tesla.Env.t} on failure

list_user_access_profiles(connection, target_user_id, opts \\ [])

@spec list_user_access_profiles(Tesla.Env.client(), String.t(), keyword()) ::
  {:ok, ExBifrost.Model.ListUserAccessProfiles200Response.t()}
  | {:ok, ExBifrost.Model.BifrostError.t()}
  | {:error, Tesla.Env.t()}

List access profiles held by a user

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • target_user_id (String.t):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.ListUserAccessProfiles200Response.t} on success
  • {:error, Tesla.Env.t} on failure

propagate_access_profile(connection, id, propagate_access_profile_request, opts \\ [])

Propagate template changes to user copies Pushes selected fields from the template to every user that holds a copy. Use dry_run: true to preview the impact. By default, accumulated usage is preserved.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • propagate_access_profile_request (PropagateAccessProfileRequest):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.PropagateAccessProfile200Response.t} on success
  • {:error, Tesla.Env.t} on failure

update_access_profile(connection, id, update_access_profile_request, opts \\ [])

Update access profile Partial update. Omitted fields preserve the current value. rate_limit: null explicitly clears the existing rate limit. Size limits enforced: max 100 provider_configs, max 100 budgets, max 50 tags.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • id (integer()):
  • update_access_profile_request (UpdateAccessProfileRequest):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.CreateAccessProfile201Response.t} on success
  • {:error, Tesla.Env.t} on failure