Files
zitadel/docs/docs/apis/actions.md
T
3c3bce1a6b docs: improve documentation for v2 release (#4046)
* WIP: docs(proxy): describe proxy settings

* fix nginx

* refactor (docs): deploy and operate sections

* chore: ignore package-lock since we use yarn

* chore: update to rc1

* chore: broken links

* chore: update yarn

* docs: move disclaimer to bottom

* chore: fix broken links

* Update docs/docs/guides/operate/tls_modes.mdx

Co-authored-by: Fabi <[email protected]>

* test caddy files

* syntax highlight

* traefik example

* refactor: docs

* refactor

* working state

* got a working state

* remove bar

* mark rate limits for update

* remove zitadel.ch

* fix cases

* docs: zitadel quickstart

* docs: zitadel quickstart

* docs: create app and project

* docs: move customer portal docs to guides manage cloud

* docs: move customer portal docs to guides manage cloud

* docs: move customer portal docs to guides manage cloud

* docs: add help me choose in the quickstart

* docs: broken links

* fix broken links

* Update knative guide

* styling

* docs: support customer portal

* update to main instead v2-alpha

* use version 2 tag

* docs: images

* docs: move authentication and authorization guides to integrate

* docs: quickstart use examples

* docs: lb example

* fix broken link

* docs: update userinfo endpoints

* docs: update userinfo endpoints

* fix oidc endpoint

* docs: remove unused endpoints in app.module

Co-authored-by: Fabi <[email protected]>
Co-authored-by: Fabienne <[email protected]>
Co-authored-by: Livio Amstutz <[email protected]>
2022-07-29 10:13:45 +02:00

106 lines
3.2 KiB
Markdown

---
title: Actions
---
This page describes the options you have when writing ZITADEL actions scripts.
## Language
ZITADEL interpretes the scripts as JavaScript.
Make sure your scripts are ECMAScript 5.1(+) compliant.
Go to the [goja GitHub page](https://github.com/dop251/goja) for detailed reference about the underlying library features and limitations.
Actions do not have access to any libraries yet.
Also, sending HTTP requests is not supported yet.
[We plan to add such features in the future](https://zitadel.com/roadmap).
## Flows
Each flow type supports its own set of:
- Triggers
- Readable information
- Writable information
For reading and mutating state, the runtime executes the function that has the same name as the action.
The function receives the JavaScript objects `ctx` and `api`.
The object `ctx` provides readable information as object properties and by callable functions.
The object `api` provides mutable properties and state mutating functions.
The script of an action called **doSomething** should have a function called `doSomething` and look something like this:
```js
function doSomething(ctx, api){
// read from ctx and manipulate with api
}
```
ZITADEL supports only the external authentication flow at the moment.
[More flows are coming soon](https://zitadel.com/roadmap).
### External authentication flow triggers
- Post authentication: A user has authenticated externally. ZITADEL retrieved and mapped the external information.
- Pre creation: A user selected **Register** on the overview page after external authentication. ZITADEL did not create the user yet.
- Post creation: A user selected **Register** on the overview page after external authentication. ZITADEL created the user.
### External authentication flow context
- `ctx.accessToken string`
This can be an opaque token or a JWT
- `ctx.idToken string`
- `ctx.getClaim(string) any`
Returns the requested claim
- `ctx.claimsJSON() object`
Returns the complete payload of the `ctx.idToken`
### External authentication flow api
- `api.setFirstName(string)`
- `api.setLastName(string)`
- `api.setNickName(string)`
- `api.setDisplayName(string)`
- `api.setPreferredLanguage(string)`
- `api.setGender(Gender)`
- `api.setUsername(string)`
This function is only available for the pre creation trigger
- `api.setPreferredUsername(string)`
This function is only available for the post authentication trigger
- `api.setEmail(string)`
- `api.setEmailVerified(bool)`
- `api.setPhone(string)`
- `api.setPhoneVerified(bool)`
- `api.metadata array<Metadata>`
Push entries.
- `api.userGrants array<UserGrant>`
Push entries.
This field is only available for the post creation trigger
### External authentication flow types <!-- TODO: Are these types correct? -->
- `Gender` is a code number
| code | gender |
| ---- | ------ |
| 0 | unspecified |
| 1 | female |
| 2 | male |
| 3 | diverse |
- `UserGrant` is a JavaScript object
```ts
{
ProjectID: string,
ProjectGrantID: string,
Roles: Array<string>,
}
```
- `Metadata` is a JavaScript object with string values.
The string values must be Base64 encoded
## Further reading
- [Actions concept](../concepts/features/actions)
- [Actions guide](../guides/manage/customize/behavior)