request_config (visibility, allowed groups, approvals, provisioning, and
webhooks).
v1 splits them. The entitlement is the grantable access. What
v0 kept in request_config is now the entitlement’s AppStore settings, at
/v1/entitlements/{entitlement_uuid}/appstore-settings, and its three bound workflows, so one v0
write often becomes several v1 calls.
Identifiers
v0 requestable-permission IDs and v1 entitlement IDs are different values. Each v0 requestable permission corresponds to exactly one v1 entitlement, but its v0id won’t work in a v1 path.
GET /v1/entitlements/{entitlement_uuid} returns 404 for it.
The same applies everywhere v1 refers to an entitlement. Access Policies list entitlements by
entitlement ID, access requests take entitlement_ids, and tasks carry an entitlement_id. No v1
response carries a requestable-permission ID.
Endpoints
The list filters changed too:
search_termis nowsearch, a case-insensitive substring match onlabel. There’s noexact_match.in_app_storeis nowvisible_in_appstore.include_inherited_configsis gone. Where the entitlement inherits a setting from its app, v1 returns that override asnull, not the app’s value.- List Entitlements has no
app_idfilter. Use List App Entitlements for one app.
app_class_id, app_instance_id, type, and request_config are gone.
v1 adds entitlement_type_label, source, description, description_override, the three
workflow fields, custom_approval_message_override, and appstore_settings, which you get with
expand=appstore_settings. source tells you where the entitlement came from. manual means
someone created it in Lumos.
Where each request_config field went
Creating an entitlement
v0 created a requestable permission and its wholerequest_config in one call. v1 takes several:
- Call Create Entitlement with
app_id,label, and optionallydescription_overrideandcustom_approval_message_override. - Call Update Entitlement AppStore Settings to set visibility, allowed groups, time-based access, and the validation webhook.
- Call the workflow endpoints to set the approval, provisioning, and deprovisioning workflows.
404, and nobody can request the entitlement. v0 returned
request_config either way. Use this order:
- Add the app to the AppStore while its
catalog_visibilityis stillhidden. A new app starts ashidden. - Set each entitlement’s
visible_in_appstore. - Make the app
visible.
v0
v1
Provisioning groups and webhooks
v1 expresses these three v0 settings as steps in the entitlement’s workflows:
Inline webhook IDs come from
List Inline Webhooks. Create the workflow
with Create Workflow. Then bind it to the entitlement
with
Set Entitlement Provisioning Workflow
or
Set Entitlement Deprovisioning Workflow.
What v1 doesn’t do yet
These v0 writes have no v1 equivalent yet. Until v1 supports them, make these changes in the Lumos UI.- Renaming a synced entitlement.
Update Entitlement changes the label only
for entitlements created in Lumos (
sourceismanual). For any other entitlement, a new label returns400. v0 renamed any requestable permission. - Configuring an entitlement while its app isn’t in the AppStore. Add the app first, as Creating an entitlement describes.
Terraform
In version 1.x of the Lumos Terraform provider,lumos_requestable_permission becomes
lumos_entitlement and lumos_entitlement_appstore_settings, and its approval and provisioning
overrides move into workflows. You import each one by its entitlement’s ID, which isn’t the
permission’s ID.
Migrating from 0.x to 1.x
covers finding those IDs and maps each attribute.