Catalogue of JML steps available per connected platform
Returns, for every connection a JML step can act on, the step
kinds it supports — derived from the registered remediation
recipes and provisioning targets, so the palette only offers what
the engine can dispatch. Each entry maps directly onto a JMLStep:
type, and for grant/revoke the granting_type, for provision the
target, for notify the channel, for ticket the provider —
plus the phases it may be authored in and the params its
recipe reads. The response also carries the notify channels and
ticket providers the compiler accepts, so the builder never keeps
its own copy of either list. builtin_steps publishes the output
descriptors of the step kinds that never appear under a
connection (ticket, webhook) — one entry per (type, provider)
pair, so the builder never keeps its own copy of what those steps
produce either.
Query Parameters
- lifecycle string
Possible values: [
joiner,mover,leaver,risk_signal]Narrow to steps valid for this lifecycle and compute each step's
phasesfor it. Omitted means joiner, the most permissive lifecycle.
Header Parameters
- SlashID-OrgID string required
The organization ID
Example: af5fbd30-7ce7-4548-8b30-4cd59cb2aba1
- 200
- 400
Step catalogue grouped by connection
- application/json
- Schema
- Example (from schema)
Schema
meta object
pagination object
limit integeroffset integertotal_count int64cursor_pagination object
Cursors are opaque. Follow the tokens the server returns; never construct, parse or modify one.
limit integernext_cursor stringOpaque token addressing the next page. Absent on the last page.
prev_cursor stringOpaque token addressing the previous page. Absent on the first page.
last_cursor stringOpaque token addressing the final page directly, so a client can jump to the end without a total count.
total_count int64Total number of matching items. Returned on the FIRST page only; clients cache it for the remainder of the walk.
errors object[]
httpcode integermessage stringcode stringMachine-readable reason, present only for errors that define one. Values today:
unserved_org_region(the organization is homed in a region this deployment does not serve),wrong_region(the request must be sent to the organization's home region),region_route_missing(this instance has no route to the organization's home region).result object
connections object[]
connection_id stringprovider stringConnection source type, e.g. okta_org, jira, slack.
display_name stringConnection name as shown in the palette card.
steps object[]
type stringPossible values: [
grant,revoke,disable,notify,ticket,webhook,provision,access_review]The
JMLStep.typethis entry produces.label stringPalette label, e.g. "Add to group", "Open ticket".
phases string[]Possible values: [
before,access,after]The phases an authored step of this kind may be placed in, for the requested
lifecycle(joiner when none was given). Empty means the step is not authorable on that lifecycle at all. This is the same rule JMLSource validation and the compiler apply.params object[]
The parameters the dispatching recipe reads, from the recipe registry. A param with
autotrue is filled by the engine from the triggering identity or the step's own target and needs no authoring; one withautofalse has to be supplied inJMLStep.paramsundername.name stringThe
JMLStep.paramskey, e.g. "group_name".required booleanThe recipe cannot dispatch without a value.
auto booleanThe engine fills this from the triggering identity or the step's target (connection, granting_id), so the author never supplies it.
type stringPossible values: [
string]Always "string" today — declared so the picker's from_step-output compatibility rule (matching a param's type against an upstream output's type) is data, not a client-side convention.
template booleanMarks a param whose value may be a template string the engine interpolates rather than a plain value. False everywhere today, and no rendering path exists behind it: no recipe declares a template param, and a param value reaches the provider verbatim. Published so the builder's field rendering is catalogue-driven when one does.
granting_type stringFor grant/revoke — the
JMLStep.granting_type, e.g. "okta_group".target stringFor provision — the
JMLStep.target, e.g. "aws_account".channel stringFor notify — the
JMLStep.channel.provider stringFor ticket — the
JMLStep.provider.subject_bindable booleanWhether an authored step of this kind may carry a
subjectbinding — true for grant, revoke and disable.phasesabove describes the step KIND, which carries no binding yet: a subject-bound step is always abefore/afterstep, whateverphasessays.outputs object[]
The values a completed step of this kind makes available to a later step's
from_stepreference. Empty means the step declares nothing to reference — true for grant/revoke/disable today; only provision (via the recipe registry) declares any.name stringThe output key a
from_stepreference names, e.g. "role_arn".type stringPossible values: [
string,identity]The output value's shape. A
stringoutput fills a param, agranting_id_refor a template. Anidentityoutput is what asubjectbinding must reference; in a template it is addressed as{{.steps.<id>.<name>.external_id}}(any field of the identity works) or{{.steps.<id>.<name>_id}}— naming it bare is rejected, since an identity is not a string.description stringnotify_channels string[]The
JMLStep.channelvalues a notify step accepts.ticket_providers string[]The
JMLStep.providervalues a ticket step accepts.builtin_steps object[]
Output descriptors for the step kinds that never go through the recipe registry (ticket, webhook) and so never appear under a connection — one entry per (type, provider) pair.
type stringPossible values: [
grant,revoke,disable,notify,ticket,webhook,provision]The
JMLStep.typethis entry describes.provider stringFor ticket — the
JMLStep.providerthis entry describes, e.g. "jira".channel stringFor notify — reserved for a future notify variant that declares outputs; unused today.
outputs object[]
What a completed step of this kind makes available to a later step's
from_stepreference. The webhook entry is VOCABULARY ONLY: nothing consumes the webhook event yet, so no completion ever carries those values and a step referencing them fails at run time.name stringThe output key a
from_stepreference names, e.g. "role_arn".type stringPossible values: [
string,identity]The output value's shape. A
stringoutput fills a param, agranting_id_refor a template. Anidentityoutput is what asubjectbinding must reference; in a template it is addressed as{{.steps.<id>.<name>.external_id}}(any field of the identity works) or{{.steps.<id>.<name>_id}}— naming it bare is rejected, since an identity is not a string.description string
{
"meta": {
"pagination": {
"limit": 0,
"offset": 0,
"total_count": 0
},
"cursor_pagination": {
"limit": 0,
"next_cursor": "string",
"prev_cursor": "string",
"last_cursor": "string",
"total_count": 0
}
},
"errors": [
{
"httpcode": 0,
"message": "string",
"code": "string"
}
],
"result": {
"connections": [
{
"connection_id": "string",
"provider": "string",
"display_name": "string",
"steps": [
{
"type": "grant",
"label": "string",
"phases": [
"before"
],
"params": [
{
"name": "string",
"required": true,
"auto": true,
"type": "string",
"template": true
}
],
"granting_type": "string",
"target": "string",
"channel": "string",
"provider": "string",
"subject_bindable": true,
"outputs": [
{
"name": "string",
"type": "string",
"description": "string"
}
]
}
]
}
],
"notify_channels": [
"string"
],
"ticket_providers": [
"string"
],
"builtin_steps": [
{
"type": "grant",
"provider": "string",
"channel": "string",
"outputs": [
{
"name": "string",
"type": "string",
"description": "string"
}
]
}
]
}
}
Bad Request
- application/json
- Schema
- Example (from schema)
Schema
meta object
pagination object
limit integeroffset integertotal_count int64cursor_pagination object
Cursors are opaque. Follow the tokens the server returns; never construct, parse or modify one.
limit integernext_cursor stringOpaque token addressing the next page. Absent on the last page.
prev_cursor stringOpaque token addressing the previous page. Absent on the first page.
last_cursor stringOpaque token addressing the final page directly, so a client can jump to the end without a total count.
total_count int64Total number of matching items. Returned on the FIRST page only; clients cache it for the remainder of the walk.
errors object[]
httpcode integermessage stringcode stringMachine-readable reason, present only for errors that define one. Values today:
unserved_org_region(the organization is homed in a region this deployment does not serve),wrong_region(the request must be sent to the organization's home region),region_route_missing(this instance has no route to the organization's home region).
{
"meta": {
"pagination": {
"limit": 0,
"offset": 0,
"total_count": 0
},
"cursor_pagination": {
"limit": 0,
"next_cursor": "string",
"prev_cursor": "string",
"last_cursor": "string",
"total_count": 0
}
},
"errors": [
{
"httpcode": 0,
"message": "string",
"code": "string"
}
]
}