# 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.Records do
@moduledoc """
API calls for all endpoints tagged `Records`.
"""
alias Spatio.Connection
import Spatio.RequestBuilder
@doc """
Create a record.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `create_record_request` (CreateRecordRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.Record.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec create_record(Tesla.Env.client, Spatio.Model.CreateRecordRequest.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.Record.t} | {:error, Tesla.Env.t}
def create_record(connection, create_record_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/records")
|> add_param(:body, :body, create_record_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{201, Spatio.Model.Record},
{401, Spatio.Model.ApiError}
])
end
@doc """
Create a record type (org-scoped).
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `create_record_type_request` (CreateRecordTypeRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.RecordType.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec create_record_type(Tesla.Env.client, Spatio.Model.CreateRecordTypeRequest.t, keyword()) :: {:ok, Spatio.Model.RecordType.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def create_record_type(connection, create_record_type_request, _opts \\ []) do
request =
%{}
|> method(:post)
|> url("/v1/records/types")
|> add_param(:body, :body, create_record_type_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{201, Spatio.Model.RecordType},
{401, Spatio.Model.ApiError}
])
end
@doc """
Delete a record.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, nil}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec delete_record(Tesla.Env.client, String.t, keyword()) :: {:ok, nil} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def delete_record(connection, id, _opts \\ []) do
request =
%{}
|> method(:delete)
|> url("/v1/records/#{id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{204, false},
{401, Spatio.Model.ApiError}
])
end
@doc """
Fetch a record.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.Record.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec get_record(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.Record.t} | {:error, Tesla.Env.t}
def get_record(connection, id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/records/#{id}")
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.Record},
{401, Spatio.Model.ApiError},
{404, Spatio.Model.ApiError}
])
end
@doc """
List record types for an organization.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `organization_id` (String.t):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.RecordTypeListResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_record_types(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.RecordTypeListResponse.t} | {:error, Tesla.Env.t}
def list_record_types(connection, organization_id, _opts \\ []) do
request =
%{}
|> method(:get)
|> url("/v1/records/types")
|> add_param(:query, :organization_id, organization_id)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.RecordTypeListResponse},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
List records for an organization. `organization_id` query param is required (handler returns 400 otherwise).
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `organization_id` (String.t):
- `opts` (keyword): Optional parameters
- `:record_type_id` (String.t):
- `:limit` (integer()):
### Returns
- `{:ok, Spatio.Model.RecordListResponse.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec list_records(Tesla.Env.client, String.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.RecordListResponse.t} | {:error, Tesla.Env.t}
def list_records(connection, organization_id, opts \\ []) do
optional_params = %{
:record_type_id => :query,
:limit => :query
}
request =
%{}
|> method(:get)
|> url("/v1/records")
|> add_param(:query, :organization_id, organization_id)
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.RecordListResponse},
{400, Spatio.Model.ApiError},
{401, Spatio.Model.ApiError}
])
end
@doc """
Update a record.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t):
- `update_record_request` (UpdateRecordRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.Record.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec update_record(Tesla.Env.client, String.t, Spatio.Model.UpdateRecordRequest.t, keyword()) :: {:ok, Spatio.Model.ApiError.t} | {:ok, Spatio.Model.Record.t} | {:error, Tesla.Env.t}
def update_record(connection, id, update_record_request, _opts \\ []) do
request =
%{}
|> method(:patch)
|> url("/v1/records/#{id}")
|> add_param(:body, :body, update_record_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.Record},
{401, Spatio.Model.ApiError}
])
end
@doc """
Update a record type.
### Parameters
- `connection` (Spatio.Connection): Connection to server
- `id` (String.t):
- `update_record_type_request` (UpdateRecordTypeRequest):
- `opts` (keyword): Optional parameters
### Returns
- `{:ok, Spatio.Model.RecordType.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec update_record_type(Tesla.Env.client, String.t, Spatio.Model.UpdateRecordTypeRequest.t, keyword()) :: {:ok, Spatio.Model.RecordType.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
def update_record_type(connection, id, update_record_type_request, _opts \\ []) do
request =
%{}
|> method(:patch)
|> url("/v1/records/types/#{id}")
|> add_param(:body, :body, update_record_type_request)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{200, Spatio.Model.RecordType},
{401, Spatio.Model.ApiError}
])
end
end