From ab4b481f59b88e49a80a938f0e87b3cd9f884cac Mon Sep 17 00:00:00 2001
From: taylordowns2000 Registry process to query and maintain a list of adaptors available for
writing jobs. Currently it queries NPM for all modules in the Usage Caching By default the results are cached to disk, and will be reused every start. In order to disable or configure caching pass see: The process uses Caching By default the results are cached to disk, and will be reused every start. In order to disable or configure caching pass see: The process uses Timeouts There is a 'general' timeout of 30s, this is used for GenServer calls like
Destructures an NPM style package name into module name and version. Example Destructures an NPM style package name into module name and version. Example The OpenFn CLI returns JSON formatted log lines, which are decoded and added
-to a There are two kinds of output: These are usually for general logging, and debugging. The above is the equivalent of the output of a commandapply_user_email(user, password, attrs)
Examples
-
+iex> apply_user_email(user, "valid password", %{email: ...})
-{:ok, %User{}}role: :superuser
-iex> apply_user_email(user, "invalid password", %{email: ...})
-{:error, %Ecto.Changeset{}}
iex> apply_user_email(user, "valid password", %{email: ...})
+{:ok, %User{}}role: :superuser
+iex> apply_user_email(user, "invalid password", %{email: ...})
+{:error, %Ecto.Changeset{}}
change_scheduled_deletion(user, attrs \\ %{
Examples
-
+iex> change_scheduled_deletion(user)
-%Ecto.Changeset{data: %User{}}
iex> change_scheduled_deletion(user)
+%Ecto.Changeset{data: %User{}}
change_superuser_registration(attrs \\ %{})
Examples
-
+iex> change_superuser_registration(user)
-%Ecto.Changeset{data: %User{}}
iex> change_superuser_registration(user)
+%Ecto.Changeset{data: %User{}}
change_user_email(user, attrs \\ %{})
Examples
-
+iex> change_user_email(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_email(user)
+%Ecto.Changeset{data: %User{}}
change_user_password(user, attrs \\ %{})
Examples
-
+iex> change_user_password(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_password(user)
+%Ecto.Changeset{data: %User{}}
change_user_registration(attrs \\ %{})
Examples
-
+iex> change_user_registration(user)
-%Ecto.Changeset{data: %User{}}
iex> change_user_registration(user)
+%Ecto.Changeset{data: %User{}}
delete_token(token)
Examples
-iex> delete_token(token)
-{:ok, %UserToken{}}
+
+iex> delete_token(token)
+{:error, %Ecto.Changeset{}}iex> delete_token(token)
+{:ok, %UserToken{}}
-iex> delete_token(token)
-{:error, %Ecto.Changeset{}}
delete_user(user)
Examples
-iex> delete_user(user)
-{:ok, %User{}}
+
+iex> delete_user(user)
+{:error, %Ecto.Changeset{}}iex> delete_user(user)
+{:ok, %User{}}
-iex> delete_user(user)
-{:error, %Ecto.Changeset{}}
deliver_update_email_instructions(user, cur
Examples
-
+iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
iex> deliver_update_email_instructions(user, current_email, &Routes.user_update_email_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
deliver_user_confirmation_instructions(user
Examples
-
iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
+
+iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:error, :already_confirmed}iex> deliver_user_confirmation_instructions(user, &Routes.user_confirmation_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
-iex> deliver_user_confirmation_instructions(confirmed_user, &Routes.user_confirmation_url(conn, :edit, &1))
-{:error, :already_confirmed}
deliver_user_reset_password_instructions(us
Examples
-
+iex> deliver_user_reset_password_instructions(user, &Routes.user_reset_password_url(conn, :edit, &1))
-{:ok, %{to: ..., body: ...}}
iex> deliver_user_reset_password_instructions(user, &Routes.user_reset_password_url(conn, :edit, &1))
+{:ok, %{to: ..., body: ...}}
get_token!(id)
Examples
-iex> get_token!(123)
-%UserToken{}
+
iex> get_token!(123)
+%UserToken{}
-iex> get_token!(456)
+iex> get_token!(456)
** (Ecto.NoResultsError)
get_user!(id)
Examples
-iex> get_user!(123)
-%User{}
+
@@ -1452,10 +1452,10 @@ iex> get_user!(123)
+%User{}
-iex> get_user!(456)
+iex> get_user!(456)
** (Ecto.NoResultsError)
get_user_by_email(email)
Examples
-iex> get_user_by_email("foo@example.com")
-%User{}
+
@@ -1484,10 +1484,10 @@ iex> get_user_by_email("foo@example.com")
+%User{}
-iex> get_user_by_email("unknown@example.com")
+iex> get_user_by_email("unknown@example.com")
nil
get_user_by_email_and_password(email, passw
Examples
-
iex> get_user_by_email_and_password("foo@example.com", "correct_password")
-%User{}
+
@@ -1516,10 +1516,10 @@ iex> get_user_by_email_and_password("foo@example.com", "correct_password")
+%User{}
-iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
+iex> get_user_by_email_and_password("foo@example.com", "invalid_password")
nil
get_user_by_reset_password_token(token)
Examples
-iex> get_user_by_reset_password_token("validtoken")
-%User{}
+
@@ -1716,8 +1716,8 @@ iex> get_user_by_reset_password_token("validtoken")
+%User{}
-iex> get_user_by_reset_password_token("invalidtoken")
+iex> get_user_by_reset_password_token("invalidtoken")
nil
list_users()
Examples
-
+iex> list_users()
-[%User{}, ...]
iex> list_users()
+[%User{}, ...]
register_superuser(attrs)
Examples
-iex> register_superuser(%{field: value})
-{:ok, %User{}}
+
+iex> register_superuser(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> register_superuser(%{field: value})
+{:ok, %User{}}
-iex> register_superuser(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
register_user(attrs)
Examples
-iex> register_user(%{field: value})
-{:ok, %User{}}
+
+iex> register_user(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> register_user(%{field: value})
+{:ok, %User{}}
-iex> register_user(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
reset_user_password(user, attrs)
Examples
-iex> reset_user_password(user, %{password: "new long password", password_confirmation: "new long password"})
-{:ok, %User{}}
+
+iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
+{:error, %Ecto.Changeset{}}iex> reset_user_password(user, %{password: "new long password", password_confirmation: "new long password"})
+{:ok, %User{}}
-iex> reset_user_password(user, %{password: "valid", password_confirmation: "not the same"})
-{:error, %Ecto.Changeset{}}
update_user_password(user, password, attrs)
Examples
-
iex> update_user_password(user, "valid password", %{password: ...})
-{:ok, %User{}}
+
+iex> update_user_password(user, "invalid password", %{password: ...})
+{:error, %Ecto.Changeset{}}iex> update_user_password(user, "valid password", %{password: ...})
+{:ok, %User{}}
-iex> update_user_password(user, "invalid password", %{password: ...})
-{:error, %Ecto.Changeset{}}
request(request)
Examples
-request = %HTTPoison.Request{
+
+request(request)request = %HTTPoison.Request{
method: :post,
url: "https://my.website.com",
body: "{\"foo\": 3}",
- headers: [{"Accept", "application/json"}]
-}
+ headers: [{"Accept", "application/json"}]
+}
-request(request)
request(method, url, body \\ "",
Examples
-
+request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
@openfn
organization and
filters out modules that are known not to be adaptors.# Starting the process
-AdaptorRegistry.start_link()
+AdaptorRegistry.start_link()
# Getting a list of all adaptors
-Lightning.AdaptorRegistry.AdaptorRegistry.all()
start_link/1
.:continue
to return before the adaptors have been queried.
+start_link/1
.:continue
to return before the adaptors have been queried.
This does mean that the first call to the process will be delayed until
the handle_continue/2
has finished.all/1
and also internally when the modules are being queried. NPM can
@@ -411,10 +411,10 @@ resolve_package_name(package_name)
-
+iex> resolve_package_name("@openfn/language-salesforce@1.2.3")
-{ "@openfn/language-salesforce", "1.2.3" }
-iex> resolve_package_name("@openfn/language-salesforce")
-{ "@openfn/language-salesforce", nil }
iex> resolve_package_name("@openfn/language-salesforce@1.2.3")
+{ "@openfn/language-salesforce", "1.2.3" }
+iex> resolve_package_name("@openfn/language-salesforce")
+{ "@openfn/language-salesforce", nil }
create_attempt(work_order, job, reason)
Examples
-iex> create_attempt(%{field: value})
-{:ok, %Attempt{}}
+
+iex> create_attempt(%{field: bad_value})
+{:error, %Ecto.Changeset{}}iex> create_attempt(%{field: value})
+{:ok, %Attempt{}}
-iex> create_attempt(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
request(request)
Examples
-request = %HTTPoison.Request{
+
+request(request)request = %HTTPoison.Request{
method: :post,
url: "https://my.website.com",
body: "{\"foo\": 3}",
- headers: [{"Accept", "application/json"}]
-}
+ headers: [{"Accept", "application/json"}]
+}
-request(request)
request(method, url, body \\ "",
Examples
-
+request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
request(:post, "https://my.website.com", "{\"foo\": 3}", [{"Accept", "application/json"}])
Logs
Result
struct.{"level":"<<level>>","name":"<<module>>","message":"..."],"time":<<timestamp>>}
{"message":["<<message|filepath|output>>"]}
Result
struct.
There are two kinds of output:
{"level":"<<level>>","name":"<<module>>","message":"..."],"time":<<timestamp>>}
These are usually for general logging, and debugging.
{"message":["<<message|filepath|output>>"]}
The above is the equivalent of the output of a command
diff --git a/Lightning.CLI.html b/Lightning.CLI.html index 9560e805ef..e409f78137 100644 --- a/Lightning.CLI.html +++ b/Lightning.CLI.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.Audit.html b/Lightning.Credentials.Audit.html index a236349404..df31c79484 100644 --- a/Lightning.Credentials.Audit.html +++ b/Lightning.Credentials.Audit.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.Credential.html b/Lightning.Credentials.Credential.html index ddc050df18..6f44db3d5d 100644 --- a/Lightning.Credentials.Credential.html +++ b/Lightning.Credentials.Credential.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.Schema.html b/Lightning.Credentials.Schema.html index 8eceec2073..8620319355 100644 --- a/Lightning.Credentials.Schema.html +++ b/Lightning.Credentials.Schema.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.SchemaDocument.html b/Lightning.Credentials.SchemaDocument.html index b9e9c634af..26c5dce1ae 100644 --- a/Lightning.Credentials.SchemaDocument.html +++ b/Lightning.Credentials.SchemaDocument.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.SensitiveValues.html b/Lightning.Credentials.SensitiveValues.html index 097397df50..1d8e19b30a 100644 --- a/Lightning.Credentials.SensitiveValues.html +++ b/Lightning.Credentials.SensitiveValues.html @@ -13,7 +13,7 @@ - + diff --git a/Lightning.Credentials.html b/Lightning.Credentials.html index c7bc37e636..17dbf10561 100644 --- a/Lightning.Credentials.html +++ b/Lightning.Credentials.html @@ -13,7 +13,7 @@ - + @@ -338,8 +338,8 @@iex> change_credential(credential)
-%Ecto.Changeset{data: %Credential{}}
+iex> change_credential(credential)
+%Ecto.Changeset{data: %Credential{}}
iex> create_credential(%{field: value})
-{:ok, %Credential{}}
+iex> create_credential(%{field: value})
+{:ok, %Credential{}}
-iex> create_credential(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_credential(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
iex> delete_credential(credential)
-{:ok, %Credential{}}
+iex> delete_credential(credential)
+{:ok, %Credential{}}
-iex> delete_credential(credential)
-{:error, %Ecto.Changeset{}}
+iex> delete_credential(credential)
+{:error, %Ecto.Changeset{}}
iex> get_credential!(123)
-%Credential{}
+iex> get_credential!(123)
+%Credential{}
-iex> get_credential!(456)
+iex> get_credential!(456)
** (Ecto.NoResultsError)
iex> has_activity_in_projects?(%Credential{id: some_id})
+iex> has_activity_in_projects?(%Credential{id: some_id})
true
-iex> has_activity_in_projects?(%Credential{id: another_id})
+iex> has_activity_in_projects?(%Credential{id: another_id})
false
notes
@@ -519,11 +519,11 @@ invalid_projects_for_user(credential_id, us
Examples
-iex> can_credential_be_shared_to_user(credential_id, user_id)
-[]
+iex> can_credential_be_shared_to_user(credential_id, user_id)
+[]
-iex> can_credential_be_shared_to_user(credential_id, user_id)
-["52ea8758-6ce5-43d7-912f-6a1e1f11dc55"]
+iex> can_credential_be_shared_to_user(credential_id, user_id)
+["52ea8758-6ce5-43d7-912f-6a1e1f11dc55"]
@@ -551,8 +551,8 @@ list_credentials()
Examples
-iex> list_credentials()
-[%Credential{}, ...]
+iex> list_credentials()
+[%Credential{}, ...]
@@ -602,8 +602,8 @@ list_credentials_for_user(user_id)
Examples
-iex> list_credentials_for_user(123)
-[%Credential{user_id: 123}, %Credential{user_id: 123},...]
+iex> list_credentials_for_user(123)
+[%Credential{user_id: 123}, %Credential{user_id: 123},...]
@@ -698,11 +698,11 @@ schedule_credential_deletion(credential)
Examples
-iex> schedule_credential_deletion(%Credential{id: some_id})
-{:ok, %Credential{}}
+iex> schedule_credential_deletion(%Credential{id: some_id})
+{:ok, %Credential{}}
-iex> schedule_credential_deletion(%Credential{})
-{:error, %Ecto.Changeset{}}
+iex> schedule_credential_deletion(%Credential{})
+{:error, %Ecto.Changeset{}}
@@ -759,11 +759,11 @@ update_credential(credential, attrs)
Examples
-iex> update_credential(credential, %{field: new_value})
-{:ok, %Credential{}}
+iex> update_credential(credential, %{field: new_value})
+{:ok, %Credential{}}
-iex> update_credential(credential, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_credential(credential, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Demo.html b/Lightning.Demo.html
index c329892e07..ad2f00d09f 100644
--- a/Lightning.Demo.html
+++ b/Lightning.Demo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.ExportUtils.html b/Lightning.ExportUtils.html
index b75c884fe6..f9118910e1 100644
--- a/Lightning.ExportUtils.html
+++ b/Lightning.ExportUtils.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.FailureNotifierView.html b/Lightning.FailureNotifierView.html
index 8415a02bcd..d063e26b21 100644
--- a/Lightning.FailureNotifierView.html
+++ b/Lightning.FailureNotifierView.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Helpers.html b/Lightning.Helpers.html
index b36965383d..82081139ce 100644
--- a/Lightning.Helpers.html
+++ b/Lightning.Helpers.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Invocation.Dataclip.html b/Lightning.Invocation.Dataclip.html
index 2bb5631277..3704e4037c 100644
--- a/Lightning.Invocation.Dataclip.html
+++ b/Lightning.Invocation.Dataclip.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Invocation.LogLine.html b/Lightning.Invocation.LogLine.html
index f171a896bf..7c1ca26207 100644
--- a/Lightning.Invocation.LogLine.html
+++ b/Lightning.Invocation.LogLine.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Invocation.Query.html b/Lightning.Invocation.Query.html
index c81de99ffd..8db3ba2218 100644
--- a/Lightning.Invocation.Query.html
+++ b/Lightning.Invocation.Query.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Invocation.Run.html b/Lightning.Invocation.Run.html
index 75289ab120..c40746a16a 100644
--- a/Lightning.Invocation.Run.html
+++ b/Lightning.Invocation.Run.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Invocation.html b/Lightning.Invocation.html
index fd18813e5d..2320d8750c 100644
--- a/Lightning.Invocation.html
+++ b/Lightning.Invocation.html
@@ -13,7 +13,7 @@
-
+
@@ -476,8 +476,8 @@ change_dataclip(dataclip, attrs \\ %{})
Examples
-iex> change_dataclip(dataclip)
-%Ecto.Changeset{data: %Dataclip{}}
+iex> change_dataclip(dataclip)
+%Ecto.Changeset{data: %Dataclip{}}
@@ -507,8 +507,8 @@ change_run(run, attrs \\ %{})
Examples
-iex> change_run(run)
-%Ecto.Changeset{data: %Run{}}
+iex> change_run(run)
+%Ecto.Changeset{data: %Run{}}
@@ -546,11 +546,11 @@ create_dataclip(attrs \\ %{})
Examples
-iex> create_dataclip(%{field: value})
-{:ok, %Dataclip{}}
+iex> create_dataclip(%{field: value})
+{:ok, %Dataclip{}}
-iex> create_dataclip(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_dataclip(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -602,11 +602,11 @@ create_run(attrs \\ %{})
Examples
-iex> create_run(%{field: value})
-{:ok, %Run{}}
+iex> create_run(%{field: value})
+{:ok, %Run{}}
-iex> create_run(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_run(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -634,11 +634,11 @@ delete_dataclip(dataclip)
Examples
-iex> delete_dataclip(dataclip)
-{:ok, %Dataclip{}}
+iex> delete_dataclip(dataclip)
+{:ok, %Dataclip{}}
-iex> delete_dataclip(dataclip)
-{:error, %Ecto.Changeset{}}
+iex> delete_dataclip(dataclip)
+{:error, %Ecto.Changeset{}}
@@ -666,11 +666,11 @@ delete_run(run)
Examples
-iex> delete_run(run)
-{:ok, %Run{}}
+iex> delete_run(run)
+{:ok, %Run{}}
-iex> delete_run(run)
-{:error, %Ecto.Changeset{}}
+iex> delete_run(run)
+{:error, %Ecto.Changeset{}}
@@ -859,14 +859,14 @@ get_dataclip(run)
Examples
-iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
-%Dataclip{}
+iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
+%Dataclip{}
-iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
+iex> get_dataclip("27b73932-16c7-4a72-86a3-85d805ccff98")
nil
-iex> get_dataclip(%Run{id: "a uuid"})
-%Dataclip{}
+iex> get_dataclip(%Run{id: "a uuid"})
+%Dataclip{}
@@ -900,10 +900,10 @@ get_dataclip!(id)
Examples
-iex> get_dataclip!(123)
-%Dataclip{}
+iex> get_dataclip!(123)
+%Dataclip{}
-iex> get_dataclip!(456)
+iex> get_dataclip!(456)
** (Ecto.NoResultsError)
@@ -982,10 +982,10 @@ get_run!(id)
Examples
-iex> get_run!(123)
-%Run{}
+iex> get_run!(123)
+%Run{}
-iex> get_run!(456)
+iex> get_run!(456)
** (Ecto.NoResultsError)
@@ -1064,8 +1064,8 @@ list_dataclips()
Examples
-iex> list_dataclips()
-[%Dataclip{}, ...]
+iex> list_dataclips()
+[%Dataclip{}, ...]
@@ -1174,8 +1174,8 @@ list_runs()
Examples
-iex> list_runs()
-[%Run{}, ...]
+iex> list_runs()
+[%Run{}, ...]
@@ -1330,11 +1330,11 @@ update_dataclip(dataclip, attrs)
Examples
-iex> update_dataclip(dataclip, %{field: new_value})
-{:ok, %Dataclip{}}
+iex> update_dataclip(dataclip, %{field: new_value})
+{:ok, %Dataclip{}}
-iex> update_dataclip(dataclip, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_dataclip(dataclip, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1362,11 +1362,11 @@ update_run(run, attrs)
Examples
-iex> update_run(run, %{field: new_value})
-{:ok, %Run{}}
+iex> update_run(run, %{field: new_value})
+{:ok, %Run{}}
-iex> update_run(run, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_run(run, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.InvocationReason.html b/Lightning.InvocationReason.html
index 54ca98dfc1..fbf07483cf 100644
--- a/Lightning.InvocationReason.html
+++ b/Lightning.InvocationReason.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.InvocationReasons.html b/Lightning.InvocationReasons.html
index cd1573ec4e..0abc03af1b 100644
--- a/Lightning.InvocationReasons.html
+++ b/Lightning.InvocationReasons.html
@@ -13,7 +13,7 @@
-
+
@@ -273,11 +273,11 @@ create_reason(attrs \\ %{})
Examples
-iex> create_reason(%{field: value})
-{:ok, %InvocationReason{}}
+iex> create_reason(%{field: value})
+{:ok, %InvocationReason{}}
-iex> create_reason(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_reason(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Jobs.Job.html b/Lightning.Jobs.Job.html
index 92eceb58d8..9bd2928406 100644
--- a/Lightning.Jobs.Job.html
+++ b/Lightning.Jobs.Job.html
@@ -13,7 +13,7 @@
-
+
@@ -336,17 +336,17 @@ put_workflow(changeset, workflow)
Attaches a workflow to a job, this is useful when you have an unpersisted
Workflow changeset - and want it to be created at the same time as a Job.
Example:
workflow =
- Ecto.Changeset.cast(
- %Lightning.Workflows.Workflow{},
- %{ "project_id" => attrs[:project_id], "id" => Ecto.UUID.generate() },
- [:project_id, :id]
- )
+ Ecto.Changeset.cast(
+ %Lightning.Workflows.Workflow{},
+ %{ "project_id" => attrs[:project_id], "id" => Ecto.UUID.generate() },
+ [:project_id, :id]
+ )
job =
- %Job{}
- |> Ecto.Changeset.change()
- |> Job.put_workflow(workflow)
- |> Job.changeset(attrs)
+ %Job{}
+ |> Ecto.Changeset.change()
+ |> Job.put_workflow(workflow)
+ |> Job.changeset(attrs)
diff --git a/Lightning.Jobs.Query.html b/Lightning.Jobs.Query.html
index f4517b9381..4928a4b08c 100644
--- a/Lightning.Jobs.Query.html
+++ b/Lightning.Jobs.Query.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Jobs.Scheduler.html b/Lightning.Jobs.Scheduler.html
index 8637507236..90912c3896 100644
--- a/Lightning.Jobs.Scheduler.html
+++ b/Lightning.Jobs.Scheduler.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Jobs.Trigger.html b/Lightning.Jobs.Trigger.html
index 0f03cc1635..db30e1563c 100644
--- a/Lightning.Jobs.Trigger.html
+++ b/Lightning.Jobs.Trigger.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Jobs.html b/Lightning.Jobs.html
index 8de7ce8fa4..500b60f25c 100644
--- a/Lightning.Jobs.html
+++ b/Lightning.Jobs.html
@@ -13,7 +13,7 @@
-
+
@@ -295,8 +295,8 @@ change_job(job, attrs \\ %{})
Examples
-iex> change_job(job)
-%Ecto.Changeset{data: %Job{}}
+iex> change_job(job)
+%Ecto.Changeset{data: %Job{}}
@@ -326,11 +326,11 @@ create_job(attrs \\ %{})
Examples
-iex> create_job(%{field: value})
-{:ok, %Job{}}
+iex> create_job(%{field: value})
+{:ok, %Job{}}
-iex> create_job(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_job(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -358,11 +358,11 @@ delete_job(job)
Examples
-iex> delete_job(job)
-{:ok, %Job{}}
+iex> delete_job(job)
+{:ok, %Job{}}
-iex> delete_job(job)
-{:error, %Ecto.Changeset{}}
+iex> delete_job(job)
+{:error, %Ecto.Changeset{}}
@@ -448,10 +448,10 @@ get_job!(id)
Examples
-iex> get_job!(123)
-%Job{}
+iex> get_job!(123)
+%Job{}
-iex> get_job!(456)
+iex> get_job!(456)
** (Ecto.NoResultsError)
@@ -637,11 +637,11 @@ update_job(job, attrs)
Examples
-iex> update_job(job, %{field: new_value})
-{:ok, %Job{}}
+iex> update_job(job, %{field: new_value})
+{:ok, %Job{}}
-iex> update_job(job, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_job(job, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.MetadataService.Error.html b/Lightning.MetadataService.Error.html
index 119a2c63c2..6af7be6ee8 100644
--- a/Lightning.MetadataService.Error.html
+++ b/Lightning.MetadataService.Error.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.MetadataService.html b/Lightning.MetadataService.html
index a7203388be..a767125016 100644
--- a/Lightning.MetadataService.html
+++ b/Lightning.MetadataService.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Name.html b/Lightning.Name.html
index e63e9f8621..885d9ed473 100644
--- a/Lightning.Name.html
+++ b/Lightning.Name.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.ObanManager.html b/Lightning.ObanManager.html
index 336e9c3921..42d436c61a 100644
--- a/Lightning.ObanManager.html
+++ b/Lightning.ObanManager.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Pipeline.Runner.Handler.html b/Lightning.Pipeline.Runner.Handler.html
index be4c4519bc..d1183b42a1 100644
--- a/Lightning.Pipeline.Runner.Handler.html
+++ b/Lightning.Pipeline.Runner.Handler.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Pipeline.Runner.html b/Lightning.Pipeline.Runner.html
index 663dbabab4..75e378b64c 100644
--- a/Lightning.Pipeline.Runner.html
+++ b/Lightning.Pipeline.Runner.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Pipeline.StateAssembler.html b/Lightning.Pipeline.StateAssembler.html
index 543716ce94..782c72e962 100644
--- a/Lightning.Pipeline.StateAssembler.html
+++ b/Lightning.Pipeline.StateAssembler.html
@@ -13,7 +13,7 @@
-
+
@@ -121,7 +121,7 @@
How state is assembled
For the most common jobs, an inbound webhook will store an :http_request
type
-dataclip. The reason that is created is associated with the dataclip.
At runtime, the initial state for a Run will be in the shape of:
{ "data": <the dataclip>, "configuration": <the job's credential> }
+dataclip. The reason that is created is associated with the dataclip.
At runtime, the initial state for a Run will be in the shape of:
{ "data": <the dataclip>, "configuration": <the job's credential> }
saved-inputs
diff --git a/Lightning.Pipeline.html b/Lightning.Pipeline.html
index 35ccbab4f3..aa231778d7 100644
--- a/Lightning.Pipeline.html
+++ b/Lightning.Pipeline.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Policies.Permissions.html b/Lightning.Policies.Permissions.html
index e3f42d401f..5591c5b5e9 100644
--- a/Lightning.Policies.Permissions.html
+++ b/Lightning.Policies.Permissions.html
@@ -13,7 +13,7 @@
-
+
@@ -115,13 +115,13 @@
This module defines a unique interface managing authorizations in Lightning.
Users in Lightning have instance-wide and project-wide roles which determine their level of access to resources in the application. Fo rmore details see the documentation.
These authorizations policies are all implemented under the lib/lightning/policies
folder. In that folder you can find 3 files:
- The
users.ex
file has all the policies for the instances wide access levels - The
project_users.ex
file has all the policies for the project wide access levels - The
permissions.ex
file defines the Lightning.Policies.Permissions.can/4
interface. Which is a wrapper around the Bodyguard.permit/4
function.
-We use that interface to be able to harmonize the use of policies accross the entire app.
All the policies are tested in the test/lightning/policies
folder. And the test are written in a way that allows the reader to quickly who can do what in the app.
We have two variants of the Lightning.Policies.Permissions.can/4
interface:
Lightning.Policies.Permissions.can(policy, action, actor, resource)
returns :ok
if the actor can perform the action on the resource and {:error, :unauthorized}
otherwise.Lightning.Policies.Permissions.can?(policy, action, actor, resource)
returns true
if the actor can perform the action on the resource and false
otherwise.
Here is an example of how we the Lightning.Policies.Permissions.can/4
interface to check if the a user can edit a job or not
can_edit_job = Lightning.Policies.ProjectUsers |> Lightning.Policies.Permissions.can?(:edit_job, socket.assigns.current_user, socket.assigns.project)
+We use that interface to be able to harmonize the use of policies accross the entire app.All the policies are tested in the test/lightning/policies
folder. And the test are written in a way that allows the reader to quickly who can do what in the app.
We have two variants of the Lightning.Policies.Permissions.can/4
interface:
Lightning.Policies.Permissions.can(policy, action, actor, resource)
returns :ok
if the actor can perform the action on the resource and {:error, :unauthorized}
otherwise.Lightning.Policies.Permissions.can?(policy, action, actor, resource)
returns true
if the actor can perform the action on the resource and false
otherwise.
Here is an example of how we the Lightning.Policies.Permissions.can/4
interface to check if the a user can edit a job or not
can_edit_job = Lightning.Policies.ProjectUsers |> Lightning.Policies.Permissions.can?(:edit_job, socket.assigns.current_user, socket.assigns.project)
-if can_edit_job do
+if can_edit_job do
# allow user to edit the job
-else
+else
# quick user out
-end
+end
@@ -199,11 +199,11 @@ can(policy, action, user, params \\ [])
Examples
-iex> can(Lightning.Policies.Users, :create_workflow, user, project)
+iex> can(Lightning.Policies.Users, :create_workflow, user, project)
:ok
-iex> can(Lightning.Policies.Users, :create_project, user, %{})
-{:error, :unauthorized}
+iex> can(Lightning.Policies.Users, :create_project, user, %{})
+{:error, :unauthorized}
@@ -233,10 +233,10 @@ can?(policy, action, user, params \\ [])
Examples
-iex> can(Lightning.Policies.Users, :create_workflow, user, project)
+iex> can(Lightning.Policies.Users, :create_workflow, user, project)
true
-iex> can(Lightning.Policies.Users, :create_project, user, %{})
+iex> can(Lightning.Policies.Users, :create_project, user, %{})
false
diff --git a/Lightning.Policies.ProjectUsers.html b/Lightning.Policies.ProjectUsers.html
index 31c09aa32f..0079f8c6ea 100644
--- a/Lightning.Policies.ProjectUsers.html
+++ b/Lightning.Policies.ProjectUsers.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Policies.Provisioning.html b/Lightning.Policies.Provisioning.html
index 4f67b9cae1..87d5c9feb6 100644
--- a/Lightning.Policies.Provisioning.html
+++ b/Lightning.Policies.Provisioning.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Policies.Users.html b/Lightning.Policies.Users.html
index 66b4743341..da5b84f66f 100644
--- a/Lightning.Policies.Users.html
+++ b/Lightning.Policies.Users.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Projects.Project.html b/Lightning.Projects.Project.html
index f0c3be126b..fbbba7d281 100644
--- a/Lightning.Projects.Project.html
+++ b/Lightning.Projects.Project.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Projects.ProjectCredential.html b/Lightning.Projects.ProjectCredential.html
index 85072b31d0..13399035a1 100644
--- a/Lightning.Projects.ProjectCredential.html
+++ b/Lightning.Projects.ProjectCredential.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Projects.ProjectUser.DigestEnum.html b/Lightning.Projects.ProjectUser.DigestEnum.html
index 517330d1ca..c2fa8ba53e 100644
--- a/Lightning.Projects.ProjectUser.DigestEnum.html
+++ b/Lightning.Projects.ProjectUser.DigestEnum.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Projects.ProjectUser.RolesEnum.html b/Lightning.Projects.ProjectUser.RolesEnum.html
index aa2b8f7862..fe99e594be 100644
--- a/Lightning.Projects.ProjectUser.RolesEnum.html
+++ b/Lightning.Projects.ProjectUser.RolesEnum.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Projects.ProjectUser.html b/Lightning.Projects.ProjectUser.html
index c4247bba3e..f3d7cc35d3 100644
--- a/Lightning.Projects.ProjectUser.html
+++ b/Lightning.Projects.ProjectUser.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Projects.Provisioner.html b/Lightning.Projects.Provisioner.html
index 4c2d51a972..45da065de4 100644
--- a/Lightning.Projects.Provisioner.html
+++ b/Lightning.Projects.Provisioner.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Projects.html b/Lightning.Projects.html
index 64b10cf83c..7dfae4919b 100644
--- a/Lightning.Projects.html
+++ b/Lightning.Projects.html
@@ -13,7 +13,7 @@
-
+
@@ -540,8 +540,8 @@ change_project(project, attrs \\ %{})
Examples
-iex> change_project(project)
-%Ecto.Changeset{data: %Project{}}
+iex> change_project(project)
+%Ecto.Changeset{data: %Project{}}
@@ -571,11 +571,11 @@ create_project(attrs \\ %{})
Examples
-iex> create_project(%{field: value})
-{:ok, %Project{}}
+iex> create_project(%{field: value})
+{:ok, %Project{}}
-iex> create_project(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_project(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -604,11 +604,11 @@ delete_project(project)
Examples
-iex> delete_project(project)
-{:ok, %Project{}}
+iex> delete_project(project)
+{:ok, %Project{}}
-iex> delete_project(project)
-{:error, %Ecto.Changeset{}}
+iex> delete_project(project)
+{:error, %Ecto.Changeset{}}
@@ -642,8 +642,8 @@ export_project(atom, project_id)
Examples
-iex> export_project(:yaml, project_id)
-{:ok, string}
+iex> export_project(:yaml, project_id)
+{:ok, string}
@@ -693,10 +693,10 @@ get_project!(id)
Examples
-iex> get_project!(123)
-%Project{}
+iex> get_project!(123)
+%Project{}
-iex> get_project!(456)
+iex> get_project!(456)
** (Ecto.NoResultsError)
@@ -791,10 +791,10 @@ get_project_user!(id)
Examples
-iex> get_project_user!(123)
-%ProjectUser{}
+iex> get_project_user!(123)
+%ProjectUser{}
-iex> get_project_user!(456)
+iex> get_project_user!(456)
** (Ecto.NoResultsError)
@@ -824,16 +824,16 @@ get_project_user_role(user, project)
Examples
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:admin
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:viewer
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:editor
-iex> get_project_user_role(user, project)
+iex> get_project_user_role(user, project)
:owner
@@ -862,10 +862,10 @@ get_project_with_users!(id)
Examples
-iex> get_project!(123)
-%Project{}
+iex> get_project!(123)
+%Project{}
-iex> get_project!(456)
+iex> get_project!(456)
** (Ecto.NoResultsError)
@@ -976,8 +976,8 @@ list_projects()
Examples
-iex> list_projects()
-[%Project{}, ...]
+iex> list_projects()
+[%Project{}, ...]
@@ -1435,11 +1435,11 @@ update_project(project, attrs)
Examples
-iex> update_project(project, %{field: new_value})
-{:ok, %Project{}}
+iex> update_project(project, %{field: new_value})
+{:ok, %Project{}}
-iex> update_project(project, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_project(project, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1467,11 +1467,11 @@ update_project_user(project_user, attrs)
Examples
-iex> update_project_user(project_user, %{field: new_value})
-{:ok, %ProjectUser{}}
+iex> update_project_user(project_user, %{field: new_value})
+{:ok, %ProjectUser{}}
-iex> update_project_user(projectUser, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_project_user(projectUser, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -1521,8 +1521,8 @@ validate_for_deletion(project, attrs)
Examples
-iex> validate_for_deletion(project)
-%Ecto.Changeset{data: %Project{}}
+iex> validate_for_deletion(project)
+%Ecto.Changeset{data: %Project{}}
diff --git a/Lightning.Release.html b/Lightning.Release.html
index a5339a28ba..7ae8b0e05d 100644
--- a/Lightning.Release.html
+++ b/Lightning.Release.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Repo.html b/Lightning.Repo.html
index 381adada5f..d86855d240 100644
--- a/Lightning.Repo.html
+++ b/Lightning.Repo.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.RunSearchForm.html b/Lightning.RunSearchForm.html
index ade8442601..c66d6d1092 100644
--- a/Lightning.RunSearchForm.html
+++ b/Lightning.RunSearchForm.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.ChildProcess.html b/Lightning.Runtime.ChildProcess.html
index 1943a02acd..06be50abb1 100644
--- a/Lightning.Runtime.ChildProcess.html
+++ b/Lightning.Runtime.ChildProcess.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.Handler.html b/Lightning.Runtime.Handler.html
index 2ddd149da5..62d4ca8e84 100644
--- a/Lightning.Runtime.Handler.html
+++ b/Lightning.Runtime.Handler.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.LogAgent.StringBuffer.html b/Lightning.Runtime.LogAgent.StringBuffer.html
index 35db7f12b9..a0af1496a6 100644
--- a/Lightning.Runtime.LogAgent.StringBuffer.html
+++ b/Lightning.Runtime.LogAgent.StringBuffer.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.LogAgent.html b/Lightning.Runtime.LogAgent.html
index 9f917142a7..af06dbf50f 100644
--- a/Lightning.Runtime.LogAgent.html
+++ b/Lightning.Runtime.LogAgent.html
@@ -13,7 +13,7 @@
-
+
@@ -115,9 +115,9 @@
Agent facility to consume STDOUT/STDERR byte by byte.
Since it works on a byte by byte basis, you will need to perform line-splitting
-yourself.
Usage:
{:ok, log} = LogAgent.start_link()
-"foo" = LogAgent.process_chunk(log, {:stdout, "foo"})
-"foobar" = LogAgent.process_chunk(log, {:stdout, "bar"})
+yourself.Usage:
{:ok, log} = LogAgent.start_link()
+"foo" = LogAgent.process_chunk(log, {:stdout, "foo"})
+"foobar" = LogAgent.process_chunk(log, {:stdout, "bar"})
diff --git a/Lightning.Runtime.Result.html b/Lightning.Runtime.Result.html
index c44137ee0c..f77593c2c3 100644
--- a/Lightning.Runtime.Result.html
+++ b/Lightning.Runtime.Result.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Runtime.RunSpec.html b/Lightning.Runtime.RunSpec.html
index a0268a8b22..41767f61b5 100644
--- a/Lightning.Runtime.RunSpec.html
+++ b/Lightning.Runtime.RunSpec.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.SafetyString.html b/Lightning.SafetyString.html
index 484b9b2e1e..7c074f39f7 100644
--- a/Lightning.SafetyString.html
+++ b/Lightning.SafetyString.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Scrubber.html b/Lightning.Scrubber.html
index 66cf280a8a..a7e5f0bd38 100644
--- a/Lightning.Scrubber.html
+++ b/Lightning.Scrubber.html
@@ -13,7 +13,7 @@
-
+
@@ -114,11 +114,11 @@
-Process used to scrub strings of sensitive information.
Can be started via start_link/1
.
{:ok, scrubber} =
- Lightning.Scrubber.start_link(
+Process used to scrub strings of sensitive information.
Can be started via start_link/1
.
{:ok, scrubber} =
+ Lightning.Scrubber.start_link(
samples:
- Lightning.Credentials.sensitive_values_for(credential)
- )
Takes an optional :name
key, in case you need to name the process.
+ Lightning.Credentials.sensitive_values_for(credential)
+ )
Takes an optional :name
key, in case you need to name the process.
diff --git a/Lightning.SetupUtils.html b/Lightning.SetupUtils.html
index 7dc1d35531..3851e26621 100644
--- a/Lightning.SetupUtils.html
+++ b/Lightning.SetupUtils.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.TaskWorker.html b/Lightning.TaskWorker.html
index c6a7ed302d..783cb7d1f9 100644
--- a/Lightning.TaskWorker.html
+++ b/Lightning.TaskWorker.html
@@ -13,7 +13,7 @@
-
+
@@ -117,7 +117,7 @@
A TaskWorker with concurrency limits.
A simple concurrency limiter that wraps Task.Supervisor
, which already does
have the ability to specify max_children
; it throws an error when
that limit is exceeded.
To use it, start it like any other process; ideally in your supervision tree.
...,
- {Lightning.TaskWorker, name: :cli_task_worker, max_tasks: 4}
Options
:max_tasks
Defaults to the number of system schedulers available to the vm.
+ {Lightning.TaskWorker, name: :cli_task_worker, max_tasks: 4}
Options
:max_tasks
Defaults to the number of system schedulers available to the vm.
diff --git a/Lightning.Validators.html b/Lightning.Validators.html
index 000e7000f7..28b4aaa45f 100644
--- a/Lightning.Validators.html
+++ b/Lightning.Validators.html
@@ -13,7 +13,7 @@
-
+
@@ -192,10 +192,10 @@ validate_exclusive(changeset, fields, messa
Validate that only one of the fields is set at a time.
Example:
changeset
-|> validate_exclusive(
- [:source_job_id, :source_trigger_id],
+|> validate_exclusive(
+ [:source_job_id, :source_trigger_id],
"source_job_id and source_trigger_id are mutually exclusive"
-)
+)
diff --git a/Lightning.Vault.html b/Lightning.Vault.html
index 8b4f012adb..a87d35ecbe 100644
--- a/Lightning.Vault.html
+++ b/Lightning.Vault.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.VersionControl.GithubClient.html b/Lightning.VersionControl.GithubClient.html
index 91520d2ff3..a6881eee8e 100644
--- a/Lightning.VersionControl.GithubClient.html
+++ b/Lightning.VersionControl.GithubClient.html
@@ -13,7 +13,7 @@
-
+
@@ -446,11 +446,11 @@ delete(client, url, opts)
-Perform a DELETE request.
See request/1
or request/2
for options definition.
delete("/users")
-delete("/users", query: [scope: "admin"])
-delete(client, "/users")
-delete(client, "/users", query: [scope: "admin"])
-delete(client, "/users", body: %{name: "Jon"})
+Perform a DELETE request.
See request/1
or request/2
for options definition.
delete("/users")
+delete("/users", query: [scope: "admin"])
+delete(client, "/users")
+delete(client, "/users", query: [scope: "admin"])
+delete(client, "/users", body: %{name: "Jon"})
@@ -479,11 +479,11 @@ delete!(client, url, opts)
-Perform a DELETE request.
See request!/1
or request!/2
for options definition.
delete!("/users")
-delete!("/users", query: [scope: "admin"])
-delete!(client, "/users")
-delete!(client, "/users", query: [scope: "admin"])
-delete!(client, "/users", body: %{name: "Jon"})
+Perform a DELETE request.
See request!/1
or request!/2
for options definition.
delete!("/users")
+delete!("/users", query: [scope: "admin"])
+delete!(client, "/users")
+delete!(client, "/users", query: [scope: "admin"])
+delete!(client, "/users", body: %{name: "Jon"})
@@ -533,11 +533,11 @@ get(client, url, opts)
-Perform a GET request.
See request/1
or request/2
for options definition.
get("/users")
-get("/users", query: [scope: "admin"])
-get(client, "/users")
-get(client, "/users", query: [scope: "admin"])
-get(client, "/users", body: %{name: "Jon"})
+Perform a GET request.
See request/1
or request/2
for options definition.
get("/users")
+get("/users", query: [scope: "admin"])
+get(client, "/users")
+get(client, "/users", query: [scope: "admin"])
+get(client, "/users", body: %{name: "Jon"})
@@ -566,11 +566,11 @@ get!(client, url, opts)
-Perform a GET request.
See request!/1
or request!/2
for options definition.
get!("/users")
-get!("/users", query: [scope: "admin"])
-get!(client, "/users")
-get!(client, "/users", query: [scope: "admin"])
-get!(client, "/users", body: %{name: "Jon"})
+Perform a GET request.
See request!/1
or request!/2
for options definition.
get!("/users")
+get!("/users", query: [scope: "admin"])
+get!(client, "/users")
+get!(client, "/users", query: [scope: "admin"])
+get!(client, "/users", body: %{name: "Jon"})
@@ -620,11 +620,11 @@ head(client, url, opts)
-Perform a HEAD request.
See request/1
or request/2
for options definition.
head("/users")
-head("/users", query: [scope: "admin"])
-head(client, "/users")
-head(client, "/users", query: [scope: "admin"])
-head(client, "/users", body: %{name: "Jon"})
+Perform a HEAD request.
See request/1
or request/2
for options definition.
head("/users")
+head("/users", query: [scope: "admin"])
+head(client, "/users")
+head(client, "/users", query: [scope: "admin"])
+head(client, "/users", body: %{name: "Jon"})
@@ -653,11 +653,11 @@ head!(client, url, opts)
-Perform a HEAD request.
See request!/1
or request!/2
for options definition.
head!("/users")
-head!("/users", query: [scope: "admin"])
-head!(client, "/users")
-head!(client, "/users", query: [scope: "admin"])
-head!(client, "/users", body: %{name: "Jon"})
+Perform a HEAD request.
See request!/1
or request!/2
for options definition.
head!("/users")
+head!("/users", query: [scope: "admin"])
+head!(client, "/users")
+head!(client, "/users", query: [scope: "admin"])
+head!(client, "/users", body: %{name: "Jon"})
@@ -707,11 +707,11 @@ options(client, url, opts)
-Perform a OPTIONS request.
See request/1
or request/2
for options definition.
options("/users")
-options("/users", query: [scope: "admin"])
-options(client, "/users")
-options(client, "/users", query: [scope: "admin"])
-options(client, "/users", body: %{name: "Jon"})
+Perform a OPTIONS request.
See request/1
or request/2
for options definition.
options("/users")
+options("/users", query: [scope: "admin"])
+options(client, "/users")
+options(client, "/users", query: [scope: "admin"])
+options(client, "/users", body: %{name: "Jon"})
@@ -740,11 +740,11 @@ options!(client, url, opts)
-Perform a OPTIONS request.
See request!/1
or request!/2
for options definition.
options!("/users")
-options!("/users", query: [scope: "admin"])
-options!(client, "/users")
-options!(client, "/users", query: [scope: "admin"])
-options!(client, "/users", body: %{name: "Jon"})
+Perform a OPTIONS request.
See request!/1
or request!/2
for options definition.
options!("/users")
+options!("/users", query: [scope: "admin"])
+options!(client, "/users")
+options!(client, "/users", query: [scope: "admin"])
+options!(client, "/users", body: %{name: "Jon"})
@@ -773,10 +773,10 @@ patch(client, url, body, opts)
-Perform a PATCH request.
See request/1
or request/2
for options definition.
patch("/users", %{name: "Jon"})
-patch("/users", %{name: "Jon"}, query: [scope: "admin"])
-patch(client, "/users", %{name: "Jon"})
-patch(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a PATCH request.
See request/1
or request/2
for options definition.
patch("/users", %{name: "Jon"})
+patch("/users", %{name: "Jon"}, query: [scope: "admin"])
+patch(client, "/users", %{name: "Jon"})
+patch(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -805,10 +805,10 @@ patch!(client, url, body, opts)
-Perform a PATCH request.
See request!/1
or request!/2
for options definition.
patch!("/users", %{name: "Jon"})
-patch!("/users", %{name: "Jon"}, query: [scope: "admin"])
-patch!(client, "/users", %{name: "Jon"})
-patch!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a PATCH request.
See request!/1
or request!/2
for options definition.
patch!("/users", %{name: "Jon"})
+patch!("/users", %{name: "Jon"}, query: [scope: "admin"])
+patch!(client, "/users", %{name: "Jon"})
+patch!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -837,10 +837,10 @@ post(client, url, body, opts)
-Perform a POST request.
See request/1
or request/2
for options definition.
post("/users", %{name: "Jon"})
-post("/users", %{name: "Jon"}, query: [scope: "admin"])
-post(client, "/users", %{name: "Jon"})
-post(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a POST request.
See request/1
or request/2
for options definition.
post("/users", %{name: "Jon"})
+post("/users", %{name: "Jon"}, query: [scope: "admin"])
+post(client, "/users", %{name: "Jon"})
+post(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -869,10 +869,10 @@ post!(client, url, body, opts)
-Perform a POST request.
See request!/1
or request!/2
for options definition.
post!("/users", %{name: "Jon"})
-post!("/users", %{name: "Jon"}, query: [scope: "admin"])
-post!(client, "/users", %{name: "Jon"})
-post!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a POST request.
See request!/1
or request!/2
for options definition.
post!("/users", %{name: "Jon"})
+post!("/users", %{name: "Jon"}, query: [scope: "admin"])
+post!(client, "/users", %{name: "Jon"})
+post!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -901,10 +901,10 @@ put(client, url, body, opts)
-Perform a PUT request.
See request/1
or request/2
for options definition.
put("/users", %{name: "Jon"})
-put("/users", %{name: "Jon"}, query: [scope: "admin"])
-put(client, "/users", %{name: "Jon"})
-put(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a PUT request.
See request/1
or request/2
for options definition.
put("/users", %{name: "Jon"})
+put("/users", %{name: "Jon"}, query: [scope: "admin"])
+put(client, "/users", %{name: "Jon"})
+put(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -933,10 +933,10 @@ put!(client, url, body, opts)
-Perform a PUT request.
See request!/1
or request!/2
for options definition.
put!("/users", %{name: "Jon"})
-put!("/users", %{name: "Jon"}, query: [scope: "admin"])
-put!(client, "/users", %{name: "Jon"})
-put!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
+Perform a PUT request.
See request!/1
or request!/2
for options definition.
put!("/users", %{name: "Jon"})
+put!("/users", %{name: "Jon"}, query: [scope: "admin"])
+put!(client, "/users", %{name: "Jon"})
+put!(client, "/users", %{name: "Jon"}, query: [scope: "admin"])
@@ -978,11 +978,11 @@ request(client \\ %Tesla.Client{}, options)
Examples
-ExampleApi.request(method: :get, url: "/users/path")
+ExampleApi.request(method: :get, url: "/users/path")
# use shortcut methods
-ExampleApi.get("/users/1")
-ExampleApi.post(client, "/users", %{name: "Jon"})
+ExampleApi.get("/users/1")
+ExampleApi.post(client, "/users", %{name: "Jon"})
@@ -1064,11 +1064,11 @@ trace(client, url, opts)
-Perform a TRACE request.
See request/1
or request/2
for options definition.
trace("/users")
-trace("/users", query: [scope: "admin"])
-trace(client, "/users")
-trace(client, "/users", query: [scope: "admin"])
-trace(client, "/users", body: %{name: "Jon"})
+Perform a TRACE request.
See request/1
or request/2
for options definition.
trace("/users")
+trace("/users", query: [scope: "admin"])
+trace(client, "/users")
+trace(client, "/users", query: [scope: "admin"])
+trace(client, "/users", body: %{name: "Jon"})
@@ -1097,11 +1097,11 @@ trace!(client, url, opts)
-Perform a TRACE request.
See request!/1
or request!/2
for options definition.
trace!("/users")
-trace!("/users", query: [scope: "admin"])
-trace!(client, "/users")
-trace!(client, "/users", query: [scope: "admin"])
-trace!(client, "/users", body: %{name: "Jon"})
+Perform a TRACE request.
See request!/1
or request!/2
for options definition.
trace!("/users")
+trace!("/users", query: [scope: "admin"])
+trace!(client, "/users")
+trace!(client, "/users", query: [scope: "admin"])
+trace!(client, "/users", body: %{name: "Jon"})
diff --git a/Lightning.VersionControl.GithubToken.html b/Lightning.VersionControl.GithubToken.html
index 12058a16f3..3f71dde950 100644
--- a/Lightning.VersionControl.GithubToken.html
+++ b/Lightning.VersionControl.GithubToken.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.VersionControl.ProjectRepoConnection.html b/Lightning.VersionControl.ProjectRepoConnection.html
index aec8210a62..092789e28f 100644
--- a/Lightning.VersionControl.ProjectRepoConnection.html
+++ b/Lightning.VersionControl.ProjectRepoConnection.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.VersionControl.html b/Lightning.VersionControl.html
index 54b14ed4e3..cea8529227 100644
--- a/Lightning.VersionControl.html
+++ b/Lightning.VersionControl.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.WorkOrder.html b/Lightning.WorkOrder.html
index 5a869c5996..8654e6d15c 100644
--- a/Lightning.WorkOrder.html
+++ b/Lightning.WorkOrder.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.WorkOrderService.html b/Lightning.WorkOrderService.html
index 7808e7c1cd..e89042fa7a 100644
--- a/Lightning.WorkOrderService.html
+++ b/Lightning.WorkOrderService.html
@@ -13,7 +13,7 @@
-
+
@@ -342,11 +342,11 @@ create_work_order(attrs \\ %{})
Examples
-iex> create_work_order(%{field: value})
-{:ok, %WorkOrder{}}
+iex> create_work_order(%{field: value})
+{:ok, %WorkOrder{}}
-iex> create_work_order(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_work_order(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.WorkOrders.Manual.html b/Lightning.WorkOrders.Manual.html
index 3078b468ab..fe29d22e63 100644
--- a/Lightning.WorkOrders.Manual.html
+++ b/Lightning.WorkOrders.Manual.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Workflows.Edge.html b/Lightning.Workflows.Edge.html
index 069e1a6cd1..9ce7a2c94d 100644
--- a/Lightning.Workflows.Edge.html
+++ b/Lightning.Workflows.Edge.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Workflows.Graph.html b/Lightning.Workflows.Graph.html
index b3b48c95b8..2672f95f8f 100644
--- a/Lightning.Workflows.Graph.html
+++ b/Lightning.Workflows.Graph.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Workflows.Workflow.html b/Lightning.Workflows.Workflow.html
index 4349ad2cfe..1d081de92f 100644
--- a/Lightning.Workflows.Workflow.html
+++ b/Lightning.Workflows.Workflow.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.Workflows.html b/Lightning.Workflows.html
index 5cb98e8e73..32a8601dcd 100644
--- a/Lightning.Workflows.html
+++ b/Lightning.Workflows.html
@@ -13,7 +13,7 @@
-
+
@@ -349,8 +349,8 @@ change_workflow(workflow, attrs \\ %{})
Examples
-iex> change_workflow(workflow)
-%Ecto.Changeset{data: %Workflow{}}
+iex> change_workflow(workflow)
+%Ecto.Changeset{data: %Workflow{}}
@@ -402,11 +402,11 @@ create_workflow(attrs \\ %{})
Examples
-iex> create_workflow(%{field: value})
-{:ok, %Workflow{}}
+iex> create_workflow(%{field: value})
+{:ok, %Workflow{}}
-iex> create_workflow(%{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> create_workflow(%{field: bad_value})
+{:error, %Ecto.Changeset{}}
@@ -434,11 +434,11 @@ delete_workflow(workflow)
Examples
-iex> delete_workflow(workflow)
-{:ok, %Workflow{}}
+iex> delete_workflow(workflow)
+{:ok, %Workflow{}}
-iex> delete_workflow(workflow)
-{:error, %Ecto.Changeset{}}
+iex> delete_workflow(workflow)
+{:error, %Ecto.Changeset{}}
@@ -539,10 +539,10 @@ get_workflow!(id)
Examples
-iex> get_workflow!(123)
-%Workflow{}
+iex> get_workflow!(123)
+%Workflow{}
-iex> get_workflow!(456)
+iex> get_workflow!(456)
** (Ecto.NoResultsError)
@@ -623,8 +623,8 @@ list_workflows()
Examples
-iex> list_workflows()
-[%Workflow{}, ...]
+iex> list_workflows()
+[%Workflow{}, ...]
@@ -654,8 +654,8 @@ mark_for_deletion(workflow, attrs \\ %{})
Examples
-iex> change_request_deletion(workflow)
-%Ecto.Changeset{data: %Workflow{}}
+iex> change_request_deletion(workflow)
+%Ecto.Changeset{data: %Workflow{}}
@@ -733,11 +733,11 @@ update_workflow(workflow, attrs)
Examples
-iex> update_workflow(workflow, %{field: new_value})
-{:ok, %Workflow{}}
+iex> update_workflow(workflow, %{field: new_value})
+{:ok, %Workflow{}}
-iex> update_workflow(workflow, %{field: bad_value})
-{:error, %Ecto.Changeset{}}
+iex> update_workflow(workflow, %{field: bad_value})
+{:error, %Ecto.Changeset{}}
diff --git a/Lightning.Workorders.SearchParams.html b/Lightning.Workorders.SearchParams.html
index a6be982b7a..7154f6d9b8 100644
--- a/Lightning.Workorders.SearchParams.html
+++ b/Lightning.Workorders.SearchParams.html
@@ -13,7 +13,7 @@
-
+
diff --git a/Lightning.epub b/Lightning.epub
index 729242d8d8223512f269ef14814bee84cb270b82..22b9f69fbd5f49392b4be476941b2e2e38f75cf8 100644
GIT binary patch
delta 105972
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