Current section
Files
Jump to
Current section
Files
lib/ex_bifrost/api/access_profiles.ex
# NOTE: This file is auto generated by OpenAPI Generator 7.23.0 (https://openapi-generator.tech)
# using the Elixir SDK Generator template (https://github.com/houllette/elixir-sdk-generator).
# Do not edit this file manually — edit the templates and regenerate instead.
defmodule ExBifrost.Api.AccessProfiles do
@moduledoc """
API calls for all endpoints tagged `AccessProfiles`.
"""
alias ExBifrost.Connection
import ExBifrost.RequestBuilder
@doc """
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
"""
@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()}
def activate_access_profile(connection, id, _opts \\ []) do
request =
%{}
|> method(:put)
|> url("/api/access-profiles/#{id}/activate")
|> ensure_body()
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.CreateAccessProfile201Response},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def add_user_access_profile_virtual_key(connection, target_user_id, profile_id, opts \\ []) do
optional_params = %{
:body => :body
}
request =
%{}
|> method(:post)
|> url("/api/users/#{target_user_id}/access-profiles/#{profile_id}/virtual-keys")
|> add_optional_params(optional_params, opts)
|> ensure_body()
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.AddUserAccessProfileVirtualKey200Response},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@spec attach_roles_to_access_profile(
Tesla.Env.client(),
integer(),
ExBifrost.Model.AttachRolesToAccessProfileRequest.t(),
keyword()
) ::
{:ok, nil}
| {:ok, ExBifrost.Model.AttachRolesToAccessProfile200Response.t()}
| {:ok, ExBifrost.Model.BifrostError.t()}
| {:error, Tesla.Env.t()}
def attach_roles_to_access_profile(connection, id, attach_roles_to_access_profile_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/api/access-profiles/#{id}/roles")
|> add_param(:body, :body, attach_roles_to_access_profile_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.AttachRolesToAccessProfile200Response},
{400, ExBifrost.Model.BifrostError},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@spec clone_access_profile(Tesla.Env.client(), integer(), ExBifrost.Model.CloneAccessProfileRequest.t(), keyword()) ::
{:ok, nil}
| {:ok, ExBifrost.Model.CreateAccessProfile201Response.t()}
| {:ok, ExBifrost.Model.BifrostError.t()}
| {:error, Tesla.Env.t()}
def clone_access_profile(connection, id, clone_access_profile_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/api/access-profiles/#{id}/clone")
|> add_param(:body, :body, clone_access_profile_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{201, ExBifrost.Model.CreateAccessProfile201Response},
{400, ExBifrost.Model.BifrostError},
{404, false},
{409, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@spec create_access_profile(Tesla.Env.client(), ExBifrost.Model.CreateAccessProfileRequest.t(), keyword()) ::
{:ok, nil}
| {:ok, ExBifrost.Model.CreateAccessProfile201Response.t()}
| {:ok, ExBifrost.Model.BifrostError.t()}
| {:error, Tesla.Env.t()}
def create_access_profile(connection, create_access_profile_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/api/access-profiles")
|> add_param(:body, :body, create_access_profile_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{201, ExBifrost.Model.CreateAccessProfile201Response},
{400, ExBifrost.Model.BifrostError},
{409, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def deactivate_access_profile(connection, id, _opts \\ []) do
request =
%{}
|> method(:put)
|> url("/api/access-profiles/#{id}/deactivate")
|> ensure_body()
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.CreateAccessProfile201Response},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def delete_access_profile(connection, id, _opts \\ []) do
request =
%{}
|> method(:delete)
|> url("/api/access-profiles/#{id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.Logout200Response},
{404, false},
{409, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def delete_user_access_profile_virtual_key(connection, target_user_id, vk_id, _opts \\ []) do
request =
%{}
|> method(:delete)
|> url("/api/users/#{target_user_id}/access-profiles/virtual-keys/#{vk_id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.Logout200Response},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def detach_role_from_access_profile(connection, id, role_id, _opts \\ []) do
request =
%{}
|> method(:delete)
|> url("/api/access-profiles/#{id}/roles/#{role_id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.Logout200Response},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def detach_user_access_profile(connection, target_user_id, profile_id, _opts \\ []) do
request =
%{}
|> method(:delete)
|> url("/api/users/#{target_user_id}/access-profiles/#{profile_id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.DetachUserAccessProfile200Response},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def get_access_profile(connection, id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/api/access-profiles/#{id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.GetAccessProfile200Response},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def get_access_profile_version(connection, id, version, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/api/access-profiles/#{id}/versions/#{version}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.GetAccessProfileVersion200Response},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@spec list_access_profile_audit_logs(Tesla.Env.client(), keyword()) ::
{:ok, ExBifrost.Model.ListAccessProfileAuditLogsById200Response.t()}
| {:ok, ExBifrost.Model.BifrostError.t()}
| {:error, Tesla.Env.t()}
def list_access_profile_audit_logs(connection, opts \\ []) do
optional_params = %{
:limit => :query,
:offset => :query,
:action => :query,
:user_id => :query
}
request =
%{}
|> method(:get)
|> url("/api/access-profiles/audit-logs")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.ListAccessProfileAuditLogsById200Response},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def list_access_profile_audit_logs_by_id(connection, id, opts \\ []) do
optional_params = %{
:limit => :query,
:offset => :query,
:action => :query,
:user_id => :query
}
request =
%{}
|> method(:get)
|> url("/api/access-profiles/#{id}/audit-logs")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.ListAccessProfileAuditLogsById200Response},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@spec list_access_profile_versions(Tesla.Env.client(), integer(), keyword()) ::
{:ok, ExBifrost.Model.ListAccessProfileVersions200Response.t()}
| {:ok, ExBifrost.Model.BifrostError.t()}
| {:error, Tesla.Env.t()}
def list_access_profile_versions(connection, id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/api/access-profiles/#{id}/versions")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.ListAccessProfileVersions200Response},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@spec list_access_profiles(Tesla.Env.client(), keyword()) ::
{:ok, ExBifrost.Model.BifrostError.t()}
| {:ok, ExBifrost.Model.ListAccessProfiles200Response.t()}
| {:error, Tesla.Env.t()}
def list_access_profiles(connection, opts \\ []) do
optional_params = %{
:limit => :query,
:offset => :query,
:search => :query,
:tags => :query,
:is_active => :query
}
request =
%{}
|> method(:get)
|> url("/api/access-profiles")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.ListAccessProfiles200Response},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@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()}
def list_user_access_profiles(connection, target_user_id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/api/users/#{target_user_id}/access-profiles")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.ListUserAccessProfiles200Response},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@spec propagate_access_profile(
Tesla.Env.client(),
integer(),
ExBifrost.Model.PropagateAccessProfileRequest.t(),
keyword()
) ::
{:ok, nil}
| {:ok, ExBifrost.Model.PropagateAccessProfile200Response.t()}
| {:ok, ExBifrost.Model.BifrostError.t()}
| {:error, Tesla.Env.t()}
def propagate_access_profile(connection, id, propagate_access_profile_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/api/access-profiles/#{id}/propagate")
|> add_param(:body, :body, propagate_access_profile_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.PropagateAccessProfile200Response},
{400, ExBifrost.Model.BifrostError},
{404, false},
{500, ExBifrost.Model.BifrostError}
])
end
@doc """
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
"""
@spec update_access_profile(Tesla.Env.client(), integer(), ExBifrost.Model.UpdateAccessProfileRequest.t(), keyword()) ::
{:ok, nil}
| {:ok, ExBifrost.Model.CreateAccessProfile201Response.t()}
| {:ok, ExBifrost.Model.BifrostError.t()}
| {:error, Tesla.Env.t()}
def update_access_profile(connection, id, update_access_profile_request, _opts \\ []) do
request =
%{}
|> method(:put)
|> url("/api/access-profiles/#{id}")
|> add_param(:body, :body, update_access_profile_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, ExBifrost.Model.CreateAccessProfile201Response},
{400, ExBifrost.Model.BifrostError},
{404, false},
{409, false},
{500, ExBifrost.Model.BifrostError}
])
end
end