api
argument.
Migrating an Action created during the period prior to General Availability (GA) should typically involve the following steps:
- Adjust references to renamed and relocated event properties as outlined in the Breaking changes section.
- Instead of composing and returning an object describing the desired side-effects, update custom code to call the relevant
api
method as outlined in the Performing side effects section. - For Actions that need to handle redirect callbacks, use the newly-exposed dedicated function. If you used code that relied on
event.protocol === 'redirect-callback'
, review the Redirect with Actions page.
Breaking changes
Query and body parameters
Direct access to the query and body parameters is available using theevent.request.query
and event.request.body
objects. These are exposed regardless of whether the authorization was initiated via a GET
or POST
request. Many protocol-specific query or body parameters sent as part of an authorization request are now also available as first-class values on the event.transaction
object. We recommend that you use event.transaction
rather than event.request.query
and event.request.body
unless your use case is not supported. A complete mapping of these changes is below:
Pre-GA Property | GA Property |
---|---|
event.actor.ip | event.request.ip |
event.actor.hostname | event.request.hostname |
event.actor.geoIp | event.request.geoip |
event.actor.language | event.request.language |
event.actor.method | event.request.method |
event.actor.userAgent | event.request.user_agent |
event.actor.body | event.request.body |
event.actor.query | event.request.query |
event.actor.query.audience | event.resource_server.identifier |
event.actor.query.scope | event.transaction.requested_scopes |
event.actor.query.acr_values | event.transaction.acr_values |
event.actor.query.ui_locales | event.transaction.ui_locales |
event.protocol | event.transaction.protocol |
context.secrets | event.secrets |
User Profile properties
In general, theevent.user
object has had its properties changed from camel case to snake case in order to match the Auth0 User Profile structure. For example, event.user.appMetadata
has been changed to event.user.app_metadata
.
Performing side effects
In the pre-GA version of the post-login trigger, side effects were performed by returning an object from an Action. In Actions GA, anapi
object is provided to encapsulate these changes and provide better in-editor type hints and inline documentation.
Update user user_metadata
Pre-GA Trigger:You should not use this method in callbacks because invoking this method won’t update metadata immediately. Instead, you can call this method several times throughout multiple Actions in the same flow (metadata set in one Action is applied to the transient object and is therefore available in subsequent Actions), and the engine will aggregate the changes and update the metadata all at once before the flow is completed.
Update user app_metadata
Pre-GA Trigger:You should not use this method in callbacks because invoking this method won’t update metadata immediately. Instead, you can call this method several times throughout multiple Actions in the same flow (metadata set in one Action is applied to the transient object and is therefore available in subsequent Actions), and the engine will aggregate the changes and update the metadata all at once before the flow is completed.
Deny a login
Pre-GA Trigger:Throwing an error will also deny a login, but calling
api.access.deny
is the preferred approach.