# NOTE: This file is auto generated by OpenAPI Generator 7.22.0 (https://openapi-generator.tech).
# Do not edit this file manually.
defmodule Spatio.Api.Workspaces do
@moduledoc """
API calls for all endpoints tagged `Workspaces`.
"""
alias Spatio.Connection
import Spatio.RequestBuilder
@doc """
Accept a workspace invitation by token. The signed-in user's email must match the invitation. Organization-token accept lives at `POST /v1/organizations/{org}/accept-invitation`.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `token` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec accept_workspace_invitation(Tesla.Env.client, String.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def accept_workspace_invitation(connection, token, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/invitations/#{token}/accept")
|> ensure_body()
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{404, Spatio.Model.ApiError},
{410, Spatio.Model.ApiError}
])
end
@doc """
Add a member directly (skips invitation flow).
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `add_workspace_member_request` (AddWorkspaceMemberRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec add_workspace_member(Tesla.Env.client, String.t, Spatio.Model.AddWorkspaceMemberRequest.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def add_workspace_member(connection, workspace_id, add_workspace_member_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/workspaces/#{workspace_id}/members")
|> add_param(:body, :body, add_workspace_member_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
Create a workspace. Requires `organizationId` in the body — bare \"personal\" workspaces aren't supported on the public API.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `create_workspace_request` (CreateWorkspaceRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.WorkspaceEnvelope.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec create_workspace(Tesla.Env.client, Spatio.Model.CreateWorkspaceRequest.t, keyword()) :: {:ok, Spatio.Model.WorkspaceEnvelope.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def create_workspace(connection, create_workspace_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/workspaces")
|> add_param(:body, :body, create_workspace_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{201, Spatio.Model.WorkspaceEnvelope},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
Invite a user to a workspace.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `create_workspace_invitation_request` (CreateWorkspaceInvitationRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.WorkspaceInvitation.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec create_workspace_invitation(Tesla.Env.client, String.t, Spatio.Model.CreateWorkspaceInvitationRequest.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.WorkspaceInvitation.t} | {:error, Tesla.Env.t}
def create_workspace_invitation(connection, workspace_id, create_workspace_invitation_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/workspaces/#{workspace_id}/invitations")
|> add_param(:body, :body, create_workspace_invitation_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.WorkspaceInvitation},
{401, Spatio.Model.ApiError},
{402, Spatio.Model.ApiError}
])
end
@doc """
Fetch invitation details by token (unauthenticated). Used by the renderer to show invitation context before the user signs in.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `token` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.PublicInvitationPayload.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec get_public_invitation(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.PublicInvitationPayload.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def get_public_invitation(connection, token, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/invitations/#{token}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.PublicInvitationPayload},
{404, Spatio.Model.ApiError},
{410, Spatio.Model.ApiError}
])
end
@doc """
Fetch a single workspace by id.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.WorkspaceEnvelope.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec get_workspace(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.WorkspaceEnvelope.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def get_workspace(connection, workspace_id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/workspaces/#{workspace_id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.WorkspaceEnvelope},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError},
{404, Spatio.Model.ApiError}
])
end
@doc """
List the caller's workspaces (across organizations).
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.WorkspaceListResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_my_workspaces(Tesla.Env.client, keyword()) :: {:ok, Spatio.Model.WorkspaceListResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_my_workspaces(connection, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/workspaces")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.WorkspaceListResponse},
{401, Spatio.Model.ApiError}
])
end
@doc """
List pending workspace invitations.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.WorkspaceInvitationListResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_workspace_invitations(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.WorkspaceInvitationListResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def list_workspace_invitations(connection, workspace_id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/workspaces/#{workspace_id}/invitations")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.WorkspaceInvitationListResponse},
{401, Spatio.Model.ApiError}
])
end
@doc """
List members of a workspace.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.WorkspaceMemberListResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_workspace_members(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.WorkspaceMemberListResponse.t} | {:error, Tesla.Env.t}
def list_workspace_members(connection, workspace_id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/workspaces/#{workspace_id}/members")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.WorkspaceMemberListResponse},
{401, Spatio.Model.ApiError}
])
end
@doc """
Remove a member from the workspace.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `member_id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, nil}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec remove_workspace_member(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, nil} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def remove_workspace_member(connection, workspace_id, member_id, _opts \\ []) do
request =
%{}
|> method(:delete)
|> url("/v1/workspaces/#{workspace_id}/members/#{member_id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{204, false},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
Revoke a pending workspace invitation.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `invitation_id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, nil}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec revoke_workspace_invitation(Tesla.Env.client, String.t, String.t, keyword()) :: {:ok, nil} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def revoke_workspace_invitation(connection, workspace_id, invitation_id, _opts \\ []) do
request =
%{}
|> method(:delete)
|> url("/v1/workspaces/#{workspace_id}/invitations/#{invitation_id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{204, false},
{401, Spatio.Model.ApiError},
{404, Spatio.Model.ApiError}
])
end
@doc """
Update workspace metadata.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `update_workspace_request` (UpdateWorkspaceRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.WorkspaceEnvelope.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec update_workspace(Tesla.Env.client, String.t, Spatio.Model.UpdateWorkspaceRequest.t, keyword()) :: {:ok, Spatio.Model.WorkspaceEnvelope.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def update_workspace(connection, workspace_id, update_workspace_request, _opts \\ []) do
request =
%{}
|> method(:patch)
|> url("/v1/workspaces/#{workspace_id}")
|> add_param(:body, :body, update_workspace_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.WorkspaceEnvelope},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
@doc """
Update a member's role.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `workspace_id` (String.t):
- `member_id` (String.t):
- `update_workspace_member_request` (UpdateWorkspaceMemberRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, %{}}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec update_workspace_member(Tesla.Env.client, String.t, String.t, Spatio.Model.UpdateWorkspaceMemberRequest.t, keyword()) :: {:ok, %{optional(String.t) => any()}} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def update_workspace_member(connection, workspace_id, member_id, update_workspace_member_request, _opts \\ []) do
request =
%{}
|> method(:patch)
|> url("/v1/workspaces/#{workspace_id}/members/#{member_id}")
|> add_param(:body, :body, update_workspace_member_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, %{}},
{401, Spatio.Model.ApiError},
{403, Spatio.Model.ApiError}
])
end
end