What publishing a version would do
const url = 'https://api.sloose.com/orgs/org_9f3c/libraries/acme/impact';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"manifest":{"functions":[{"name":"example"}]}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.sloose.com/orgs/org_9f3c/libraries/acme/impact \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "manifest": { "functions": [ { "name": "example" } ] } }'Before a publish: the functions the manifest sent takes away from the version current now, who uses the library — the org’s templates, its imports not finished, its connections’ own defaults, its runs in progress — and which of them call a function taken away. Read from each formula’s syntax tree, so a name inside a string is not a call; a formula that reaches helpers by a name it works out (helpers[name]), or a recipe that cannot be read, is answered as one that may call it, never as one that does not. A formula that is listed may be one a run skips — a mapping to a field the connection no longer offers — but none a run evaluates is left out. A template private to somebody else, and a connection that is somebody else’s own, are counted in hidden and never described. A run in progress keeps the version it started with until it ends. Administrators only, as publishing is. Nothing is written.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The org id the session was issued for. A token for one org can never read another.
Example
org_9f3cThe org id the session was issued for. A token for one org can never read another.
The library namespace, as it appears in expressions.
Example
acmeThe library namespace, as it appears in expressions.
Request Body
Section titled “Request Body”object
object
object
Examplegenerated
{ "manifest": { "functions": [ { "name": "example" } ] }}Responses
Section titled “Responses”What the publish would do.
object
The org’s templates, which each run whichever version is current.
object
How many call one of its functions by name.
How many may reach it without naming the function (helpers[name], or the library read whole), or could not be read: never counted as not using it.
Its imports not finished.
object
How many call one of its functions by name.
How many may reach it without naming the function (helpers[name], or the library read whole), or could not be read: never counted as not using it.
Its connections, by their own defaults: a module’s default match rule and a field’s default mapping, which a run takes from the connection rather than its recipe. A connection that is somebody else’s own is counted, never named.
object
How many call one of its functions by name.
How many may reach it without naming the function (helpers[name], or the library read whole), or could not be read: never counted as not using it.
The org’s runs in progress.
object
The version of this library the run started with, which it keeps until it ends — 0 for what came before v1 (the one Sloose ships, or one stored before versions were kept); null when the run did not say which libraries it holds. A run that said, and named no version of this one, holds none of it and is not listed.
True when what the run holds is of a library since removed — its record names another library’s id — so version is no version of this one.
Imports not finished that keep an older version of this library instead of the current one (“Keep v3 for this import”): counted in no use of the current version, and broken by no publish.
object
The version it keeps.
The functions the version current now has and the manifest sent does not.
object
object
The functions it calls that the new version does not have, and where.
object
object
In a recipe — row-filter: which rows take part. gate: a module’s which rows. guard: a module’s update-only-when. field: a field’s formula. search: a lookup’s search value. key: the value a module’s match compares. In a connection’s own defaults — default-match: a module’s default match rule. default-field, default-search, default-key: the same three parts of a field’s default mapping.
The flow, for a place in a recipe.
object
In a recipe — row-filter: which rows take part. gate: a module’s which rows. guard: a module’s update-only-when. field: a field’s formula. search: a lookup’s search value. key: the value a module’s match compares. In a connection’s own defaults — default-match: a module’s default match rule. default-field, default-search, default-key: the same three parts of a field’s default mapping.
The flow, for a place in a recipe.
object
The functions it calls that the new version does not have, and where.
object
object
In a recipe — row-filter: which rows take part. gate: a module’s which rows. guard: a module’s update-only-when. field: a field’s formula. search: a lookup’s search value. key: the value a module’s match compares. In a connection’s own defaults — default-match: a module’s default match rule. default-field, default-search, default-key: the same three parts of a field’s default mapping.
The flow, for a place in a recipe.
object
In a recipe — row-filter: which rows take part. gate: a module’s which rows. guard: a module’s update-only-when. field: a field’s formula. search: a lookup’s search value. key: the value a module’s match compares. In a connection’s own defaults — default-match: a module’s default match rule. default-field, default-search, default-key: the same three parts of a field’s default mapping.
The flow, for a place in a recipe.
Connections whose own defaults call a function taken away, or may.
object
The functions it calls that the new version does not have, and where.
object
object
In a recipe — row-filter: which rows take part. gate: a module’s which rows. guard: a module’s update-only-when. field: a field’s formula. search: a lookup’s search value. key: the value a module’s match compares. In a connection’s own defaults — default-match: a module’s default match rule. default-field, default-search, default-key: the same three parts of a field’s default mapping.
The flow, for a place in a recipe.
object
In a recipe — row-filter: which rows take part. gate: a module’s which rows. guard: a module’s update-only-when. field: a field’s formula. search: a lookup’s search value. key: the value a module’s match compares. In a connection’s own defaults — default-match: a module’s default match rule. default-field, default-search, default-key: the same three parts of a field’s default mapping.
The flow, for a place in a recipe.
How many more break that are not the caller’s to see: templates private to somebody else, connections that are somebody else’s own. Counted, never described.
object
What was found to break, as one string. Sent back as impactToken with the publish, it is checked again as the publish is made, and a publish that would now break something this answer did not name is refused (409 IMPACT_CHANGED) — saving a template moves no configuration version, so If-Match alone cannot see one saved while the person was deciding.
Example
{ "breaks": { "templates": [ { "calls": [ { "places": [ { "kind": "row-filter" } ] } ], "may": "unreadable" } ], "imports": [ { "calls": [ { "places": [ { "kind": "row-filter" } ] } ], "may": "unreadable" } ], "connections": [ { "calls": [ { "places": [ { "kind": "row-filter" } ] } ], "may": "unreadable" } ] }}The request — its body or its query — did not match the schema. issues carries the Zod issue list.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}No bearer, or one that is expired, revoked or no longer resolves to a member.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}The bearer’s role is too low, or it was issued for a different org.
The error envelope every non-2xx answer uses.
object
Human-readable explanation.
Machine-readable reason. Absent on a few legacy 400s.
Examplegenerated
{ "error": "example", "code": "example"}