Current section
Files
Jump to
Current section
Files
lib/okta/trusted_origins.ex
defmodule Okta.TrustedOrigins do
@moduledoc """
The `Okta.TrustedOrigins` module provides access methods to the [Okta Trusted Origins API](https://developer.okta.com/docs/reference/api/trusted-origins/).
All methods require a Tesla Client struct created with `Okta.client(base_url, api_key)`.
## Examples
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.list_trusted_origins(client)
"""
@trusted_origins_api "/api/v1/trustedOrigins"
@doc """
Creates a new trusted origin
The scopes parameter is a List with one or both of `:cors` and `:redirect`
## Examples
```
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.create_trusted_origin(client, "Test", "https://example.com/test", [:cors, :redirect])
```
https://developer.okta.com/docs/reference/api/trusted-origins/#create-trusted-origin
"""
@spec create_trusted_origin(Okta.client(), String.t(), String.t(), [:cors | :redirect]) ::
Okta.result()
def create_trusted_origin(client, name, origin, scopes) do
Tesla.post(client, @trusted_origins_api, trusted_origin_body(name, origin, scopes))
|> Okta.result()
end
@doc """
Gets a trusted origin by ID
## Examples
```
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.get_trusted_origin(client, "tosue7JvguwJ7U6kz0g3")
```
https://developer.okta.com/docs/reference/api/trusted-origins/#get-trusted-origin
"""
@spec get_trusted_origin(Okta.client(), String.t()) :: Okta.result()
def get_trusted_origin(client, trusted_origin_id) do
Tesla.get(client, @trusted_origins_api <> "/#{trusted_origin_id}") |> Okta.result()
end
@doc """
Lists all trusted origins
A subset of trusted origins can be returned that match a supported filter expression or query criteria.
## Examples
```
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.list_trusted_origins(client, limit: 1000)
```
https://developer.okta.com/docs/reference/api/trusted-origins/#list-trusted-origins
"""
@spec list_trusted_origins(Okta.client(), keyword()) :: Okta.result()
def list_trusted_origins(client, opts \\ []) do
Tesla.get(client, @trusted_origins_api, query: opts) |> Okta.result()
end
@doc """
Lists all trusted origins with a filter
## Examples
```
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.filter_trusted_origins(client, "(id eq \"tosue7JvguwJ7U6kz0g3\" or id eq \"tos10hzarOl8zfPM80g4\")")
```
https://developer.okta.com/docs/reference/api/trusted-origins/#list-trusted-origins-with-a-filter
"""
@spec filter_trusted_origins(Okta.client(), String.t(), keyword()) :: Okta.result()
def filter_trusted_origins(client, filter, opts \\ []) do
list_trusted_origins(client, Keyword.merge(opts, filter: filter))
end
@doc """
Updates a trusted origin
The scopes parameter is a List with one or both of `:cors` and `:redirect`
## Examples
```
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.update_trusted_origin(client, "tosue7JvguwJ7U6kz0g3", "Test", "https://example.com/test", [:cors, :redirect])
```
https://developer.okta.com/docs/reference/api/trusted-origins/#update-trusted-origin
"""
@spec update_trusted_origin(Okta.client(), String.t(), String.t(), String.t(), [
:cors | :redirect
]) ::
Okta.result()
def update_trusted_origin(client, trusted_origin_id, name, origin, scopes) do
Tesla.put(
client,
@trusted_origins_api <> "/#{trusted_origin_id}",
trusted_origin_body(name, origin, scopes)
)
|> Okta.result()
end
@doc """
Activates an existing trusted origin
## Examples
```
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.activate_trusted_origin(client, "tosue7JvguwJ7U6kz0g3")
```
https://developer.okta.com/docs/reference/api/trusted-origins/#activate-trusted-origin
"""
@spec activate_trusted_origin(Okta.client(), String.t()) :: Okta.result()
def activate_trusted_origin(client, trusted_origin_id) do
Tesla.post(client, @trusted_origins_api <> "/#{trusted_origin_id}/lifecycle/activate", %{})
|> Okta.result()
end
@doc """
Deactivates an existing trusted origin
## Examples
```
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.deactivate_trusted_origin(client, "tosue7JvguwJ7U6kz0g3")
```
https://developer.okta.com/docs/reference/api/trusted-origins/#deactivate-trusted-origin
"""
@spec deactivate_trusted_origin(Okta.client(), String.t()) :: Okta.result()
def deactivate_trusted_origin(client, trusted_origin_id) do
Tesla.post(client, @trusted_origins_api <> "/#{trusted_origin_id}/lifecycle/deactivate", %{})
|> Okta.result()
end
@doc """
Deletes an existing trusted origin
## Examples
```
client = Okta.Client("https://dev-000000.okta.com", "thisismykeycreatedinokta")
{:ok, result, _env} = Okta.TrustedOrigins.delete_trusted_origin(client, "tosue7JvguwJ7U6kz0g3")
```
https://developer.okta.com/docs/reference/api/trusted-origins/#delete-trusted-origin
"""
@spec delete_trusted_origin(Okta.client(), String.t()) :: Okta.result()
def delete_trusted_origin(client, trusted_origin_id) do
Tesla.delete(client, @trusted_origins_api <> "/#{trusted_origin_id}")
|> Okta.result()
end
defp trusted_origin_body(name, origin, scopes) do
scopes =
Enum.reduce(scopes, [], fn scope, new_scopes ->
case scope do
:cors -> [%{type: "CORS"} | new_scopes]
:redirect -> [%{type: "REDIRECT"} | new_scopes]
_ -> new_scopes
end
end)
%{
name: name,
origin: origin,
scopes: scopes
}
end
end