@zitadel/components 1.0.0-alpha.22 → 1.0.0-alpha.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
- import { $ as CreateTeam201, $t as ListSchemasParams, A as CreateFlow201StepChallenge, At as GetReadyDefault, B as CreateGrantParams, Bt as IssueChallenge201, C as CreateBrandingBody, Cn as UpdateFlowDefinitionBody, Ct as GetGrant200, D as CreateFlow201BrandingLayout, Dn as VerifyChallengeProofBody, Dt as GetMySession200, E as CreateFlow201Branding, En as VerifyChallengeProof200, Et as GetLiveDefault, F as CreateFlowBodyPurpose, Ft as GetSession200, G as CreateRelease201, Gt as ListEnvironmentsParams, H as CreateProject201, Ht as ListBranding200Item, I as CreateFlowDefinition201, It as GetTeam200, J as CreateSchema201, Jt as ListFlowDefinitions200, K as CreateReleaseBody, Kt as ListEvents200, L as CreateFlowDefinitionBody, Lt as GetUserByID200, M as CreateFlow201StepGates, Mt as GetReleaseByIdParams, N as CreateFlow201StepSsoProvidersItem, Nt as GetSchemaById200, O as CreateFlow201Step, Ot as GetMyUser200, P as CreateFlowBody, Pt as GetSchemaByIdParams, Q as CreateSessionBody, Qt as ListSchemas200, R as CreateGrant201, Rt as GetUserByIDParams, S as CreateBranding201, Sn as UpdateFlowDefinition200, St as GetFlowStep200, T as CreateFlow201, Tn as UpdateTeamBody, Tt as GetHealthDefault, U as CreateProjectBody, Ut as ListBrandingParams, V as CreateHandoff200, Vt as IssueChallengeBody, W as CreateRelease200, Wt as ListEnvironments200, X as CreateSchemaParams, Xt as ListReleases200, Y as CreateSchemaBody, Yt as ListFlowDefinitionsParams, Z as CreateSession201, Zt as ListReleasesParams, _ as BeginUserPasskeyRegistrationBody, _n as QueryUsers200, _t as GetEnvironmentByName200, an as PatchProjectBody, at as DeleteGrantParams, b as CreateAuthAttempt201, bn as SubmitFlowStep200, bt as GetEventParams, cn as QueryGrantsParams, ct as ExchangeHandoffParams, dn as QuerySessions200, dt as GetAuthAttempt200, en as ListUserPasskeys200, et as CreateTeamBody, fn as QuerySessionsBody, ft as GetBrandingById200, g as BeginUserPasskeyRegistration201, gn as QueryTeamsParams, gt as GetClaimWindowParams, hn as QueryTeamsBody, ht as GetClaimWindow200, in as PatchProject200, it as CreateUserParams, j as CreateFlow201StepFieldsItem, jt as GetReleaseById200, k as CreateFlow201StepActionsItem, kt as GetProject200, ln as QueryProjects200, lt as FinishUserPasskeyRegistration201, mn as QueryTeams200, mt as GetClaimStatusParams, nn as ListUserTeams200, nt as CreateUser201, on as QueryGrants200, ot as ExchangeHandoff200, pn as QuerySessionsParams, pt as GetClaimStatus200, q as CreateReleaseParams, qt as ListEventsParams, rn as ListUserTeamsParams, rt as CreateUserBody, sn as QueryGrantsBody, st as ExchangeHandoffBody, tn as ListUserPasskeysParams, tt as CreateTeamParams, un as QueryProjectsBody, ut as FinishUserPasskeyRegistrationBody, v as CompleteClaim200, vn as QueryUsersBody, vt as GetEnvironmentByNameParams, w as CreateBrandingParams, wn as UpdateTeam200, wt as GetGrantParams, x as CreateAuthAttemptBody, xn as SubmitFlowStepBody, xt as GetFlowDefinition200, y as CompleteClaimBody, yn as SetUserPasswordBody, yt as GetEvent200, z as CreateGrantBody, zt as InitClaim201 } from "./index-DMPCvLh_.mjs";
1
+ import { $ as CreateRelease200, $n as UpdateVariables200, $t as GetVariable200, A as CreateFlow201BrandingThemeLight, An as PatchUserByID200, At as GetEventParams, B as CreateFlowBodyPurpose, Bn as QuerySessions200, Bt as GetLiveDefault, C as CreateBrandingBody, Cn as ListUserPasskeysParams, Ct as GetClaimStatus200, D as CreateFlow201BrandingLayout, Dn as PatchMyUserBody, Dt as GetEnvironmentByName200, E as CreateFlow201Branding, En as PatchMyUser200, Et as GetClaimWindowParams, F as CreateFlow201StepChallenge, Fn as QueryIdps200, Ft as GetHealthDefault, G as CreateGrantParams, Gn as QueryTeamsParams, Gt as GetReleaseById200, H as CreateFlowDefinitionBody, Hn as QuerySessionsParams, Ht as GetMyUser200, I as CreateFlow201StepFieldsItem, In as QueryIdpsBody, It as GetIdpById200, J as CreateIdp201, Jn as SetUserPasswordBody, Jt as GetSchemaByIdParams, K as CreateHandoff200, Kn as QueryUsers200, Kt as GetReleaseByIdParams, L as CreateFlow201StepGates, Ln as QueryIdpsParams, Lt as GetIdpByIdParams, M as CreateFlow201BrandingTypography, Mn as QueryGrants200, Mt as GetFlowStep200, N as CreateFlow201Step, Nn as QueryGrantsBody, Nt as GetGrant200, O as CreateFlow201BrandingShape, On as PatchProject200, Ot as GetEnvironmentByNameParams, P as CreateFlow201StepActionsItem, Pn as QueryGrantsParams, Pt as GetGrantParams, Q as CreateProjectBody, Qn as UpdateTeamBody, Qt as GetUserByIDParams, R as CreateFlow201StepSsoProvidersItem, Rn as QueryProjects200, Rt as GetIdpRevisionById200, S as CreateBranding201, Sn as ListUserPasskeys200, St as GetBrandingById200, T as CreateFlow201, Tn as ListUserTeamsParams, Tt as GetClaimWindow200, U as CreateGrant201, Un as QueryTeams200, Ut as GetProject200, V as CreateFlowDefinition201, Vn as QuerySessionsBody, Vt as GetMySession200, W as CreateGrantBody, Wn as QueryTeamsBody, Wt as GetReadyDefault, X as CreateIdpParams, Xn as SubmitFlowStepBody, Xt as GetTeam200, Y as CreateIdpBody, Yn as SubmitFlowStep200, Yt as GetSession200, Z as CreateProject201, Zn as UpdateTeam200, Zt as GetUserByID200, _ as BeginUserPasskeyRegistrationBody, _n as ListMyProjectsParams, _t as ExchangeHandoffBody, an as IssueChallengeBody, at as CreateSchemaParams, b as CreateAuthAttempt201, bn as ListSchemas200, bt as FinishUserPasskeyRegistrationBody, cn as ListEnvironments200, ct as CreateTeam201, dn as ListEventsParams, dt as CreateUser201, en as GetVariableParams, er as UpdateVariablesBody, et as CreateRelease201, fn as ListFlowDefinitions200, ft as CreateUserBody, g as BeginUserPasskeyRegistration201, gn as ListMyProjects200, gt as ExchangeHandoff200, hn as ListIdpRevisionsParams, ht as DeleteVariableParams, in as IssueChallenge201, it as CreateSchemaBody, j as CreateFlow201BrandingThemeLightPalette, jn as PatchUserByIDBody, jt as GetFlowDefinition200, k as CreateFlow201BrandingTheme, kn as PatchProjectBody, kt as GetEvent200, ln as ListEnvironmentsParams, lt as CreateTeamBody, mn as ListIdpRevisions200, mt as DeleteGrantParams, nn as GetVariablesParams, nr as VerifyChallengeProof200, nt as CreateReleaseParams, on as ListBranding200Item, ot as CreateSession201, pn as ListFlowDefinitionsParams, pt as CreateUserParams, q as CreateIdp200, qn as QueryUsersBody, qt as GetSchemaById200, rn as InitClaim201, rr as VerifyChallengeProofBody, rt as CreateSchema201, sn as ListBrandingParams, st as CreateSessionBody, tn as GetVariables200, tr as UpdateVariablesParams, tt as CreateReleaseBody, un as ListEvents200, ut as CreateTeamParams, v as CompleteClaim200, vn as ListReleases200, vt as ExchangeHandoffParams, w as CreateBrandingParams, wn as ListUserTeams200, wt as GetClaimStatusParams, x as CreateAuthAttemptBody, xn as ListSchemasParams, xt as GetAuthAttempt200, y as CompleteClaimBody, yn as ListReleasesParams, yt as FinishUserPasskeyRegistration201, z as CreateFlowBody, zn as QueryProjectsBody, zt as GetIdpRevisionByIdParams } from "./index-BRd9vg2q.mjs";
2
2
  import * as _$lit from "lit";
3
3
  import { LitElement, PropertyValues, ReactiveController, ReactiveControllerHost, nothing } from "lit";
4
4
  import layoutChromeCss from "./templates/layout-chrome.css?inline";
5
5
 
6
- //#region ../api/dist/zitadelNextGen-C79YSuEo.d.mts
6
+ //#region ../api/dist/zitadelNextGen-DPyZep6V.d.mts
7
7
  //#region src/generated/endpoints/zitadelNextGen.d.ts
8
8
  declare namespace zitadelNextGen_d_exports {
9
- export { beginUserPasskeyRegistration, completeClaim, createAuthAttempt, createBranding, createFlow, createFlowDefinition, createGrant, createHandoff, createProject, createRelease, createSchema, createSession, createTeam, createUser, deleteFlowDefinition, deleteGrant, deleteTeam, deleteUserByID, exchangeHandoff, finishUserPasskeyRegistration, getAuthAttempt, getBeginUserPasskeyRegistrationUrl, getBrandingById, getClaimStatus, getClaimWindow, getCompleteClaimUrl, getCreateAuthAttemptUrl, getCreateBrandingUrl, getCreateFlowDefinitionUrl, getCreateFlowUrl, getCreateGrantUrl, getCreateHandoffUrl, getCreateProjectUrl, getCreateReleaseUrl, getCreateSchemaUrl, getCreateSessionUrl, getCreateTeamUrl, getCreateUserUrl, getDeleteFlowDefinitionUrl, getDeleteGrantUrl, getDeleteTeamUrl, getDeleteUserByIDUrl, getEnvironmentByName, getEvent, getExchangeHandoffUrl, getFinishUserPasskeyRegistrationUrl, getFlowDefinition, getFlowStep, getGetAuthAttemptUrl, getGetBrandingByIdUrl, getGetClaimStatusUrl, getGetClaimWindowUrl, getGetEnvironmentByNameUrl, getGetEventUrl, getGetFlowDefinitionUrl, getGetFlowStepUrl, getGetGrantUrl, getGetHealthUrl, getGetLiveUrl, getGetMySessionUrl, getGetMyUserUrl, getGetProjectUrl, getGetReadyUrl, getGetReleaseByIdUrl, getGetSchemaByIdUrl, getGetSessionUrl, getGetTeamUrl, getGetUserByIDUrl, getGrant, getHealth, getInitClaimUrl, getIssueChallengeUrl, getListBrandingUrl, getListEnvironmentsUrl, getListEventsUrl, getListFlowDefinitionsUrl, getListReleasesUrl, getListSchemasUrl, getListUserPasskeysUrl, getListUserTeamsUrl, getLive, getMySession, getMyUser, getPatchProjectUrl, getProject, getQueryGrantsUrl, getQueryProjectsUrl, getQuerySessionsUrl, getQueryTeamsUrl, getQueryUsersUrl, getReady, getReleaseById, getRevokeMySessionUrl, getRevokeSessionUrl, getSchemaById, getSession, getSetUserPasswordUrl, getSubmitFlowStepUrl, getTeam, getUpdateFlowDefinitionUrl, getUpdateTeamUrl, getUserByID, getVerifyChallengeProofUrl, initClaim, issueChallenge, listBranding, listEnvironments, listEvents, listFlowDefinitions, listReleases, listSchemas, listUserPasskeys, listUserTeams, patchProject, queryGrants, queryProjects, querySessions, queryTeams, queryUsers, revokeMySession, revokeSession, setUserPassword, submitFlowStep, updateFlowDefinition, updateTeam, verifyChallengeProof };
9
+ export { beginUserPasskeyRegistration, completeClaim, createAuthAttempt, createBranding, createFlow, createFlowDefinition, createGrant, createHandoff, createIdp, createProject, createRelease, createSchema, createSession, createTeam, createUser, deleteGrant, deleteTeam, deleteUserByID, deleteVariable, exchangeHandoff, finishUserPasskeyRegistration, getAuthAttempt, getBeginUserPasskeyRegistrationUrl, getBrandingById, getClaimStatus, getClaimWindow, getCompleteClaimUrl, getCreateAuthAttemptUrl, getCreateBrandingUrl, getCreateFlowDefinitionUrl, getCreateFlowUrl, getCreateGrantUrl, getCreateHandoffUrl, getCreateIdpUrl, getCreateProjectUrl, getCreateReleaseUrl, getCreateSchemaUrl, getCreateSessionUrl, getCreateTeamUrl, getCreateUserUrl, getDeleteGrantUrl, getDeleteTeamUrl, getDeleteUserByIDUrl, getDeleteVariableUrl, getEnvironmentByName, getEvent, getExchangeHandoffUrl, getFinishUserPasskeyRegistrationUrl, getFlowDefinition, getFlowStep, getGetAuthAttemptUrl, getGetBrandingByIdUrl, getGetClaimStatusUrl, getGetClaimWindowUrl, getGetEnvironmentByNameUrl, getGetEventUrl, getGetFlowDefinitionUrl, getGetFlowStepUrl, getGetGrantUrl, getGetHealthUrl, getGetIdpByIdUrl, getGetIdpRevisionByIdUrl, getGetLiveUrl, getGetMySessionUrl, getGetMyUserUrl, getGetProjectUrl, getGetReadyUrl, getGetReleaseByIdUrl, getGetSchemaByIdUrl, getGetSessionUrl, getGetTeamUrl, getGetUserByIDUrl, getGetVariableUrl, getGetVariablesUrl, getGrant, getHealth, getIdpById, getIdpRevisionById, getInitClaimUrl, getIssueChallengeUrl, getListBrandingUrl, getListEnvironmentsUrl, getListEventsUrl, getListFlowDefinitionsUrl, getListIdpRevisionsUrl, getListMyProjectsUrl, getListReleasesUrl, getListSchemasUrl, getListUserPasskeysUrl, getListUserTeamsUrl, getLive, getMySession, getMyUser, getPatchMyUserUrl, getPatchProjectUrl, getPatchUserByIDUrl, getProject, getQueryGrantsUrl, getQueryIdpsUrl, getQueryProjectsUrl, getQuerySessionsUrl, getQueryTeamsUrl, getQueryUsersUrl, getReady, getReleaseById, getRevokeMySessionUrl, getRevokeSessionUrl, getSchemaById, getSession, getSetUserPasswordUrl, getSubmitFlowStepUrl, getTeam, getUpdateTeamUrl, getUpdateVariablesUrl, getUserByID, getVariable, getVariables, getVerifyChallengeProofUrl, initClaim, issueChallenge, listBranding, listEnvironments, listEvents, listFlowDefinitions, listIdpRevisions, listMyProjects, listReleases, listSchemas, listUserPasskeys, listUserTeams, patchMyUser, patchProject, patchUserByID, queryGrants, queryIdps, queryProjects, querySessions, queryTeams, queryUsers, revokeMySession, revokeSession, setUserPassword, submitFlowStep, updateTeam, updateVariables, verifyChallengeProof };
10
10
  }
11
11
  declare const getGetHealthUrl: () => string;
12
12
  /**
@@ -35,9 +35,14 @@ declare const getQueryUsersUrl: () => string;
35
35
  /**
36
36
  * Returns the users of a project, paginated with a cursor.
37
37
 
38
- The project comes from the credential, not from a parameter: the operation
39
- is bound to the token's own project by construction. This is why it takes
40
- no `project_id`, unlike the other query endpoints.
38
+ The project comes from the credential, not from a parameter: the
39
+ operation is bound to the credential's home project by construction
40
+ (oauth2 secret or user-bound session). This is why it takes no
41
+ `project_id`, unlike the other query endpoints.
42
+
43
+ Accepts either a project secret (`oauth2`) or a user-bound Console
44
+ session cookie (`nextgenSession`). CSRF/Origin for cookie mutations
45
+ is a follow-up (#1140).
41
46
 
42
47
  * @summary Query users
43
48
  */
@@ -47,6 +52,16 @@ declare const getGetUserByIDUrl: (userId: string, params?: GetUserByIDParams) =>
47
52
  * @summary Get user by ID
48
53
  */
49
54
  declare const getUserByID: (userId: string, params?: GetUserByIDParams, options?: RequestInit) => Promise<GetUserByID200>;
55
+ declare const getPatchUserByIDUrl: (userId: string) => string;
56
+ /**
57
+ * Partially updates a user's schema-defined attributes, and optionally
58
+ moves the user to another registered schema. The merged result is
59
+ validated against the schema before commit. Concurrent writes are
60
+ last-write-wins.
61
+
62
+ * @summary Update user by ID
63
+ */
64
+ declare const patchUserByID: (userId: string, patchUserByIDBody: PatchUserByIDBody, options?: RequestInit) => Promise<PatchUserByID200>;
50
65
  declare const getDeleteUserByIDUrl: (userId: string) => string;
51
66
  /**
52
67
  * @summary Delete user by ID
@@ -103,6 +118,28 @@ declare const getGetMyUserUrl: () => string;
103
118
  * @summary Get my user information
104
119
  */
105
120
  declare const getMyUser: (options?: RequestInit) => Promise<GetMyUser200>;
121
+ declare const getPatchMyUserUrl: () => string;
122
+ /**
123
+ * Partially updates the caller's own schema-defined attributes. The merged
124
+ result is validated against the user's schema before commit. Concurrent
125
+ writes are last-write-wins.
126
+
127
+ * @summary Update my user information
128
+ */
129
+ declare const patchMyUser: (patchMyUserBody: PatchMyUserBody, options?: RequestInit) => Promise<PatchMyUser200>;
130
+ declare const getListMyProjectsUrl: (params?: ListMyProjectsParams) => string;
131
+ /**
132
+ * The projects the signed-in user holds an active grant on, either directly or
133
+ through a team they are a member of. Ordered by project id and paged with an
134
+ opaque cursor.
135
+
136
+ This is not the same question as `queryProjects`, which answers with the one
137
+ project the calling credential is bound to. Here the session is the caller
138
+ and the grants are the answer, so the list spans projects.
139
+
140
+ * @summary List the projects I can act on
141
+ */
142
+ declare const listMyProjects: (params?: ListMyProjectsParams, options?: RequestInit) => Promise<ListMyProjects200>;
106
143
  declare const getCreateFlowUrl: () => string;
107
144
  /**
108
145
  * Resolves a flow definition based on purpose + audience context and returns
@@ -475,23 +512,6 @@ declare const getGetFlowDefinitionUrl: (id: string) => string;
475
512
  * @summary Get a flow definition by id
476
513
  */
477
514
  declare const getFlowDefinition: (id: string, options?: RequestInit) => Promise<GetFlowDefinition200>;
478
- declare const getUpdateFlowDefinitionUrl: (id: string) => string;
479
- /**
480
- * Update a flow definition by id. This endpoint replaces the existing flow definition.
481
- If `flow_definition.status` is omitted, the current status is preserved
482
-
483
- * @summary Update a flow definition by id
484
- */
485
- declare const updateFlowDefinition: (id: string, updateFlowDefinitionBody: UpdateFlowDefinitionBody, options?: RequestInit) => Promise<UpdateFlowDefinition200>;
486
- declare const getDeleteFlowDefinitionUrl: (id: string) => string;
487
- /**
488
- * Delete a flow definition by id.
489
- If the flow definition is currently being used by a flow, the deletion will fail.
490
- If the flow definition is the last active flow definition for a given purpose, the deletion will fail to prevent disruption of new flows being started for that purpose.
491
-
492
- * @summary Delete a flow definition by id
493
- */
494
- declare const deleteFlowDefinition: (id: string, options?: RequestInit) => Promise<void>;
495
515
  declare const getCreateTeamUrl: (params: CreateTeamParams) => string;
496
516
  /**
497
517
  * @summary Create team
@@ -522,6 +542,11 @@ users whose lifecycle it owns are deactivated with it.
522
542
  The request is idempotent. Deleting a team that is already deactivated
523
543
  or doesn't exist succeeds without changing anything.
524
544
 
545
+ A team that still owns a project is refused with `409
546
+ team.owns_project`: deactivating it would leave the project owned by a
547
+ dead team and so unmanageable. No endpoint releases that ownership yet,
548
+ so such a team cannot currently be deactivated through the API.
549
+
525
550
  * @summary Delete team
526
551
  */
527
552
  declare const deleteTeam: (teamId: string, options?: RequestInit) => Promise<void>;
@@ -553,8 +578,7 @@ declare const getCreateBrandingUrl: (params: CreateBrandingParams) => string;
553
578
  /**
554
579
  * Publishes a new immutable branding revision for the project. Branding
555
580
  revisions cannot be updated or deleted; every edit publishes a new
556
- revision, and flow responses resolve the latest revision per project
557
- (see ADR 040).
581
+ revision, and flow responses resolve the latest revision per project.
558
582
 
559
583
  The `liquid_template` is validated lexically on save (size, encoding,
560
584
  banned patterns such as `<script>` tags, inline event handlers, and the
@@ -568,9 +592,9 @@ declare const getListBrandingUrl: (params: ListBrandingParams) => string;
568
592
  /**
569
593
  * Lists branding revisions for the project, newest first, capped at the
570
594
  100 most recent. The first entry is the revision flow responses
571
- currently resolve. Deliberately unpaginated in v1 — list endpoints
572
- gain a real query mechanism together (ADR 031); advertising pagination
573
- parameters the server ignores would be worse than none.
595
+ currently resolve. Deliberately unpaginated in v1 — list endpoints gain a
596
+ real query mechanism together; advertising pagination parameters the
597
+ server ignores would be worse than none.
574
598
 
575
599
  * @summary List branding revisions
576
600
  */
@@ -581,6 +605,72 @@ declare const getGetBrandingByIdUrl: (id: string) => string;
581
605
  * @summary Get a branding revision by ID
582
606
  */
583
607
  declare const getBrandingById: (id: string, options?: RequestInit) => Promise<GetBrandingById200>;
608
+ declare const getCreateIdpUrl: (params: CreateIdpParams) => string;
609
+ /**
610
+ * Creates or revises a connection document. If the slug does not already
611
+ exist, a new connection is created. If a connection with that slug already
612
+ exists, a revision is created.
613
+
614
+ A revision gets a new `revision_id` and does not modify the connection
615
+ `id`, so identity links that reference the connection keep resolving while
616
+ releases and auth attempts stay pinned to the revision they captured.
617
+
618
+ Identity fields are fixed for the life of the connection and a revision
619
+ that changes one is rejected: `protocol`, `subject_claim`, and the
620
+ endpoints that name the authority (`issuer` for OIDC, `token_endpoint`
621
+ and `userinfo_endpoint` for OAuth 2.0). Their values decide which provider
622
+ account a stored subject belongs to, so changing one would silently
623
+ repoint existing identities at a different provider.
624
+
625
+ `subject_claim` is optional for OIDC and required for OAuth 2.0. For an
626
+ OIDC connection, `sub` is used as the default value. If a revision updates
627
+ `subject_claim` to a different value than the one set during creation, the
628
+ request is rejected.
629
+
630
+ The document is validated against the `idp-connection.json` schema before
631
+ anything is stored.
632
+
633
+ * @summary Create or revise an identity provider connection
634
+ */
635
+ declare const createIdp: (createIdpBody: CreateIdpBody, params: CreateIdpParams, options?: RequestInit) => Promise<CreateIdp200 | CreateIdp201>;
636
+ declare const getQueryIdpsUrl: (params: QueryIdpsParams) => string;
637
+ /**
638
+ * Returns the identity provider connections of a project, paginated with a
639
+ cursor. One row per connection, carrying its newest revision.
640
+
641
+ * @summary Query identity provider connections
642
+ */
643
+ declare const queryIdps: (queryIdpsBody: QueryIdpsBody, params: QueryIdpsParams, options?: RequestInit) => Promise<QueryIdps200>;
644
+ declare const getGetIdpByIdUrl: (id: string, params: GetIdpByIdParams) => string;
645
+ /**
646
+ * Reads a connection by its id, at its newest revision.
647
+ `GET /idps/{id}/revisions` lists every revision of the connection.
648
+
649
+ The lookup is scoped to the project in `project_id`.
650
+
651
+ * @summary Get an identity provider connection by id
652
+ */
653
+ declare const getIdpById: (id: string, params: GetIdpByIdParams, options?: RequestInit) => Promise<GetIdpById200>;
654
+ declare const getListIdpRevisionsUrl: (id: string, params: ListIdpRevisionsParams) => string;
655
+ /**
656
+ * Returns every revision of one connection, newest first, paginated with a
657
+ cursor. The order is fixed, so there is no `sorting`.
658
+
659
+ The lookup is scoped to the project in `project_id`.
660
+
661
+ * @summary List the revisions of an identity provider connection
662
+ */
663
+ declare const listIdpRevisions: (id: string, params: ListIdpRevisionsParams, options?: RequestInit) => Promise<ListIdpRevisions200>;
664
+ declare const getGetIdpRevisionByIdUrl: (revisionId: string, params: GetIdpRevisionByIdParams) => string;
665
+ /**
666
+ * Reads one revision of a connection by its `revision_id`, the value an auth
667
+ attempt or a release pins.
668
+
669
+ The lookup is scoped to the project in `project_id`.
670
+
671
+ * @summary Get one revision of an identity provider connection
672
+ */
673
+ declare const getIdpRevisionById: (revisionId: string, params: GetIdpRevisionByIdParams, options?: RequestInit) => Promise<GetIdpRevisionById200>;
584
674
  declare const getCreateReleaseUrl: (params: CreateReleaseParams) => string;
585
675
  /**
586
676
  * Bundles a release from revisions that already exist, supplied as
@@ -632,14 +722,27 @@ declare const getCreateGrantUrl: (params: CreateGrantParams) => string;
632
722
  /**
633
723
  * Bind a user or team to `project.viewer`, `project.editor`, or
634
724
  `project.admin` on the project identified by the `project-id` header.
635
- IDs are `asgn_<opaque>`. Owning-team (`project.team`) grants are not
636
- created here — claim owns that path. An unrevoked grant with the same
637
- principal and relation occupies the unique key even after `expires_at`;
638
- DELETE it before re-creating.
725
+ Name the principal with `user` (`user_id` or `identifier`) or `team`
726
+ (`team_id` or `name`). IDs are `asgn_<opaque>`. Owning-team
727
+ (`project.team`) grants are not created here — claim owns that path. An
728
+ unrevoked grant with the same principal and relation occupies the unique
729
+ key even after `expires_at`; DELETE it before re-creating.
730
+ Create does not accept `expand`. The `user_id` and team locators
731
+ return 201, whose `user` / `team` carry only `user_id` / `team_id`,
732
+ and still 404 / 409 when the principal is missing or the tuple
733
+ already exists. Creating by `user.identifier` answers 202 with no
734
+ body on every outcome. Granting the session caller's own user is
735
+ `grant.invalid` on either user locator. Read the grant back for
736
+ identifier and display.
737
+
738
+ Accepts either a project secret (`oauth2`) or a user-bound Console
739
+ session cookie (`nextgenSession`). Session callers are authorized as
740
+ the human against the target project (home may differ). CSRF/Origin
741
+ for cookie mutations is a follow-up (#1140).
639
742
 
640
743
  * @summary Create grant
641
744
  */
642
- declare const createGrant: (createGrantBody: CreateGrantBody, params: CreateGrantParams, options?: RequestInit) => Promise<CreateGrant201>;
745
+ declare const createGrant: (createGrantBody: CreateGrantBody, params: CreateGrantParams, options?: RequestInit) => Promise<CreateGrant201 | void>;
643
746
  declare const getQueryGrantsUrl: (params: QueryGrantsParams) => string;
644
747
  /**
645
748
  * Returns the collaboration grants of a project, paginated with a cursor.
@@ -648,10 +751,16 @@ viewer, editor, or admin), including expired grants so a client can
648
751
  DELETE before re-granting. Project-secret setup (`sk_proj`) and
649
752
  owning-team (`relation=team`) rows are not returned. Grants are not in
650
753
  `resource_scope_index`; project scope is required on the query (same as
651
- get). Requires `project.read`. `expand: ["principal"]` additionally
652
- requires `user.read` and `team.read` (documented on the expand enum;
653
- those scopes cannot be ANDed onto this security block because they are
654
- body-conditional).
754
+ get). Requires `project.read`. `expand: ["principal"]` adds envelope
755
+ fields on `user` / `team` and additionally requires `user.read` and
756
+ `team.read` for project secrets (documented on the expand enum; those
757
+ scopes cannot be ANDed onto this security block because they are
758
+ body-conditional). A user-bound Console session that already passed
759
+ the project Check may expand without those scopes.
760
+
761
+ Accepts either a project secret (`oauth2`) or a user-bound Console
762
+ session cookie (`nextgenSession`). CSRF/Origin for cookie mutations
763
+ is a follow-up (#1140).
655
764
 
656
765
  * @summary Query grants
657
766
  */
@@ -666,6 +775,14 @@ still ignores expired grants. Grants are not registered in
666
775
  `resource_scope_index`; project scope is required on the query (same as
667
776
  events). Misses, revoked rows, project-secret setup (`sk_proj`),
668
777
  owning-team (`relation=team`) rows, and cross-project ids return 404.
778
+ `expand=principal` adds envelope fields on `user` or `team` and requires
779
+ `user.read` and `team.read` in addition to `project.read` for project
780
+ secrets. A user-bound Console session that already passed the project
781
+ Check may expand without those scopes.
782
+
783
+ Accepts either a project secret (`oauth2`) or a user-bound Console
784
+ session cookie (`nextgenSession`). CSRF/Origin for cookie mutations
785
+ is a follow-up (#1140).
669
786
 
670
787
  * @summary Get grant
671
788
  */
@@ -677,6 +794,10 @@ Already-revoked, missing, project-secret setup, and owning-team grants
677
794
  return 404. The row is not un-revoked. Expired grants can still be
678
795
  revoked so the unique binding can be reused.
679
796
 
797
+ Accepts either a project secret (`oauth2`) or a user-bound Console
798
+ session cookie (`nextgenSession`). CSRF/Origin for cookie mutations
799
+ is a follow-up (#1140).
800
+
680
801
  * @summary Revoke grant
681
802
  */
682
803
  declare const deleteGrant: (id: string, params: DeleteGrantParams, options?: RequestInit) => Promise<void>;
@@ -707,7 +828,70 @@ Pre-claim projects return 404 (stored events stay invisible until claim).
707
828
 
708
829
  * @summary Get event by ID
709
830
  */
710
- declare const getEvent: (id: string, params: GetEventParams, options?: RequestInit) => Promise<GetEvent200>; //#endregion
831
+ declare const getEvent: (id: string, params: GetEventParams, options?: RequestInit) => Promise<GetEvent200>;
832
+ declare const getGetVariablesUrl: (params: GetVariablesParams) => string;
833
+ /**
834
+ * Returns the variables entered at the owner this request addresses, keyed by
835
+ name — one environment of the project with `environment_name`, the project
836
+ level itself without it.
837
+
838
+ Owners are separate, not a ladder: an environment does not inherit the
839
+ project's variables and the project does not see its environments'. Reading
840
+ everything a project holds therefore means reading each owner in turn.
841
+
842
+ Secret values are not returned. A secret appears as `{"secret": true}`,
843
+ which says a value is held without disclosing it.
844
+
845
+ * @summary Get variables
846
+ */
847
+ declare const getVariables: (params: GetVariablesParams, options?: RequestInit) => Promise<GetVariables200>;
848
+ declare const getUpdateVariablesUrl: (params: UpdateVariablesParams) => string;
849
+ /**
850
+ * Enters, replaces and removes variables at the owner this request
851
+ addresses.
852
+
853
+ Every name in the body is applied at exactly that owner — the project, or
854
+ the environment named by `environment_name` — and reaches no other. Names
855
+ not in the body are untouched.
856
+
857
+ A bare scalar enters a non-secret value. `{"value": …, "secret": true}`
858
+ stores the value encrypted under the project's active `secret` key, after
859
+ which it can be referenced but not read back. `null` removes the name from
860
+ this owner (RFC 7386), which is how several variables are removed in one
861
+ request; removing a name this owner does not hold is a no-op rather than an
862
+ error.
863
+
864
+ The body is applied whole or not at all, so a rejected request leaves the
865
+ owner exactly as it was. Writing the same name and owner twice replaces the
866
+ value rather than duplicating it, which makes a retry safe.
867
+
868
+ * @summary Update variables
869
+ */
870
+ declare const updateVariables: (updateVariablesBody: UpdateVariablesBody, params: UpdateVariablesParams, options?: RequestInit) => Promise<UpdateVariables200>;
871
+ declare const getGetVariableUrl: (variableName: string, params: GetVariableParams) => string;
872
+ /**
873
+ * Reads one variable by name from the owner this request addresses — one
874
+ environment of the project with `environment_name`, the project level
875
+ itself without it.
876
+
877
+ A name that owner has not entered answers `var.not_found`, even when
878
+ another owner of the same project holds it: nothing is inherited. A secret
879
+ is found but not disclosed: the response is `{"secret": true}`.
880
+
881
+ * @summary Get a variable
882
+ */
883
+ declare const getVariable: (variableName: string, params: GetVariableParams, options?: RequestInit) => Promise<GetVariable200>;
884
+ declare const getDeleteVariableUrl: (variableName: string, params: DeleteVariableParams) => string;
885
+ /**
886
+ * Removes the variable this owner entered under this name.
887
+
888
+ A variable is deletable only by the owner that entered it. Deleting a name
889
+ another owner of the same project holds answers `var.not_found` and leaves
890
+ that owner's value standing.
891
+
892
+ * @summary Delete a variable
893
+ */
894
+ declare const deleteVariable: (variableName: string, params: DeleteVariableParams, options?: RequestInit) => Promise<void>; //#endregion
711
895
  //#endregion
712
896
  //#region ../api/dist/runtime/api-factory.d.mts
713
897
  //#region src/runtime/api-factory.d.ts
@@ -779,63 +963,40 @@ declare const builtinLocales: Readonly<Record<string, Locale>>;
779
963
  //#endregion
780
964
  //#region src/orchestrator/branding.d.ts
781
965
  type FlowLayout = CreateFlow201BrandingLayout;
782
- type BrandingPalette = {
783
- primary?: string;
784
- on_primary?: string;
785
- background?: string;
786
- surface?: string;
787
- muted?: string;
788
- border?: string;
789
- text?: string;
790
- text_muted?: string;
791
- link?: string;
792
- success?: string;
793
- warning?: string;
794
- error?: string;
795
- };
796
- type BrandingTypography = {
797
- font_family?: string;
798
- /**
799
- * Display face for card titles and labels. Optional: without it a tenant's
800
- * `font_family` sets the headings too, which is the single-font look most
801
- * brands want. Naming it is how a brand keeps a separate display face.
802
- */
803
- font_family_heading?: string;
804
- font_family_mono?: string;
805
- scale?: number;
806
- };
807
- type BrandingShape = {
808
- radius?: "none" | "sm" | "md" | "lg" | "full";
809
- density?: "compact" | "regular" | "comfortable";
810
- };
811
- type BrandingTheme = {
812
- mode?: "light" | "dark" | "auto";
813
- dark?: {
814
- palette?: BrandingPalette;
815
- };
816
- };
817
- type BrandingAssets = {
818
- logo_dark?: string;
819
- favicon?: string;
820
- background_image?: string;
821
- };
966
+ type BrandingPalette = CreateFlow201BrandingThemeLightPalette;
967
+ /**
968
+ * One complete surface. Light and dark carry the same fields and neither
969
+ * inherits from the other, so the two sides share one type.
970
+ */
971
+ type BrandingThemeSide = CreateFlow201BrandingThemeLight;
972
+ type BrandingTheme = CreateFlow201BrandingTheme;
973
+ type BrandingTypography = CreateFlow201BrandingTypography;
974
+ type BrandingShape = CreateFlow201BrandingShape;
975
+ /** The published sides a revision offers, in the order the surface prefers them. */
976
+ type PublishedSides = readonly ResolvableSide[];
977
+ type ResolvableSide = "light" | "dark";
978
+ /**
979
+ * Which sides the revision actually publishes. A side is published when the
980
+ * revision names it at all — an empty side object still says "this surface is
981
+ * mine", it just takes the maintained defaults for every key.
982
+ */
983
+ declare function publishedSides(branding: Branding | undefined): PublishedSides;
822
984
  /**
823
- * Wire shape (`CreateFlow201Branding`) plus the v2 client-only extension.
824
- * Structurally a superset, so any `CreateFlow201Branding` payload from the
825
- * wire is assignable to `Branding` without a cast.
985
+ * The mark for the resolved surface. A logo is pixels and is never recoloured,
986
+ * so a side without its own file shows no mark rather than borrowing the other
987
+ * side's. The legacy top-level `logo_url` is a single-mark fallback and applies
988
+ * only when neither side names one.
989
+ */
990
+ declare function resolveLogoUrl(branding: Branding | undefined, theme: ResolvableSide): string | undefined;
991
+ /**
992
+ * Wire shape plus the embedding-owned attribution block.
826
993
  *
827
994
  * `attribution.show_zitadel` controls the "Secured with Zitadel" pill in
828
995
  * the orchestrator footer. Tenants set it to `false` only when they have a
829
996
  * licence that permits removing attribution (community / OSS deployments
830
- * always show it). The flag intentionally lives on `Branding` so it can
831
- * be overridden per-flow alongside the rest of the visual surface.
997
+ * always show it).
832
998
  */
833
999
  type Branding = CreateFlow201Branding & {
834
- palette?: BrandingPalette;
835
- typography?: BrandingTypography;
836
- shape?: BrandingShape;
837
- assets?: BrandingAssets;
838
- theme?: BrandingTheme;
839
1000
  attribution?: BrandingAttribution;
840
1001
  };
841
1002
  type BrandingAttribution = {
@@ -867,7 +1028,10 @@ declare class ThemeController implements ReactiveController {
867
1028
  * element nor the branding payload names a mode. Precedence, strongest
868
1029
  * first: element `theme` property → `branding.theme.mode` → fallback. The
869
1030
  * element wins because the page embedding the widget knows its own surface
870
- * better than the tenant's stored branding does.
1031
+ * better than the tenant's stored branding does — but it selects among the
1032
+ * sides the revision published, and cannot reach one it did not. A revision
1033
+ * with a single published side therefore ignores this property: an embedder
1034
+ * pinning `theme="light"` against a dark-only revision gets dark.
871
1035
  */
872
1036
  setModePreference(explicit: ThemeMode | undefined, fallback: ThemeMode): void;
873
1037
  hostConnected(): void;
@@ -1044,6 +1208,13 @@ declare class ZitadelLogin extends ZitadelSurface {
1044
1208
  private accessor startupError;
1045
1209
  private accessor formValues;
1046
1210
  private engine;
1211
+ /**
1212
+ * The theme the last commit rendered with. The template output carries the
1213
+ * resolved side's mark, so a theme change rewrites the string and
1214
+ * `unsafeHTML` rebuilds the form — which drops what the visitor had typed
1215
+ * unless it is put back.
1216
+ */
1217
+ private lastRenderedTheme;
1047
1218
  private readonly sanitise;
1048
1219
  /**
1049
1220
  * Cached compiled tenant template, keyed by source string. Re-rendering on
@@ -1108,6 +1279,12 @@ declare class ZitadelLogin extends ZitadelSurface {
1108
1279
  * swaps are user-initiated, so focus moves in both modes.
1109
1280
  */
1110
1281
  private hydrateStepAfterRender;
1282
+ /**
1283
+ * Put captured values back once the rebuilt subtree has rendered. Awaits the
1284
+ * child atoms' own first render before touching them, rather than guessing a
1285
+ * frame with `requestAnimationFrame`.
1286
+ */
1287
+ private restoreValuesAfterRender;
1111
1288
  render(): _$lit.TemplateResult<1>;
1112
1289
  /**
1113
1290
  * Inject the attribution badge into the rendered template's
@@ -1122,6 +1299,13 @@ declare class ZitadelLogin extends ZitadelSurface {
1122
1299
  * any tenant-supplied values (`custom_link`) are escaped via `escapeHtml`.
1123
1300
  */
1124
1301
  private injectAttribution;
1302
+ /**
1303
+ * The branding a template renders against, with `logo_url` already resolved
1304
+ * to the mark for the active side. Templates read one logo field and get the
1305
+ * right file per surface; the per-side URLs stay on `theme` for a template
1306
+ * that wants to reach them itself.
1307
+ */
1308
+ private brandingForTemplate;
1125
1309
  /**
1126
1310
  * "Secured with Zitadel" attribution chrome injected into every
1127
1311
  * template's page-shell footer slot. Controlled by
@@ -1418,7 +1602,7 @@ declare global {
1418
1602
  /**
1419
1603
  * `<zitadel-session>` — the "signed in" card.
1420
1604
  *
1421
- * Renders the post-sign-in confirmation surface (Figma `7355:8959`): a
1605
+ * Renders the post-sign-in confirmation surface: a
1422
1606
  * centred auth card reading "Signed in as {identity}" with a **Sign out**
1423
1607
  * action. Composed from the same `<zl-page-shell>` / `<zl-card>` /
1424
1608
  * `<zl-button>` atoms as the `<zitadel-login>` orchestrator, so it inherits
@@ -1510,15 +1694,20 @@ declare global {
1510
1694
  } //# sourceMappingURL=zitadel-session.d.ts.map
1511
1695
  //#endregion
1512
1696
  //#region src/orchestrator/branding-to-tokens.d.ts
1513
- type BrandingToTokensOptions = {
1514
- resolvedTheme?: ResolvedTheme;
1515
- };
1516
1697
  /**
1517
1698
  * Build a CSS string of `:host { --zl-* }` declarations from a Branding
1518
- * payload. Light values land on `:host`; dark overrides land on
1519
- * `:host([data-theme="dark"])`.
1699
+ * payload. Shape and typography are shared across the sides and land on the
1700
+ * shared selector; each side's palette lands only under its own `data-theme`
1701
+ * selector, and nowhere else.
1702
+ *
1703
+ * No copy of the resolved side goes on the shared selector. That copy would
1704
+ * reach `[data-theme="light"]` as well, so a key set on the dark side and not
1705
+ * the light one would paint on both, with nothing in the light block to
1706
+ * override it. Callers stamp `data-theme` on the host — `applySurfaceTheme`
1707
+ * does it in the same update that adopts this sheet — so the per-side block is
1708
+ * already matching by the time anything paints.
1520
1709
  */
1521
- declare function buildBrandingStylesheet(branding: Branding | undefined, options?: BrandingToTokensOptions): string;
1710
+ declare function buildBrandingStylesheet(branding: Branding | undefined): string;
1522
1711
  /**
1523
1712
  * Apply a branding payload as a `--zl-*` overrides layer on top of the base
1524
1713
  * token sheet. Subsequent calls replace the previous override sheet so a new
@@ -1527,7 +1716,7 @@ declare function buildBrandingStylesheet(branding: Branding | undefined, options
1527
1716
  * Callers should run `applyBaseTokens(shadowRoot)` first (once per shadow
1528
1717
  * root) so the base values exist before branding patches them.
1529
1718
  */
1530
- declare function applyBrandingTokens(shadowRoot: ShadowRoot, branding: Branding | undefined, resolvedTheme: ResolvedTheme): void;
1719
+ declare function applyBrandingTokens(shadowRoot: ShadowRoot, branding: Branding | undefined): void;
1531
1720
  /**
1532
1721
  * Standalone branding→theme resolution for callers outside the orchestrator
1533
1722
  * (SSR, tests, embedders composing atoms by hand). `<zitadel-login>` itself
@@ -1535,13 +1724,13 @@ declare function applyBrandingTokens(shadowRoot: ShadowRoot, branding: Branding
1535
1724
  * and a variant-derived fallback on top of the same branding input.
1536
1725
  *
1537
1726
  * Defaults to dark: the design system's primary surface, and the mode a
1538
- * hosted login page renders when a tenant states no preference.
1727
+ * hosted login page renders when a revision states no preference.
1539
1728
  */
1540
1729
  declare function resolveTheme(branding: Branding | undefined): ResolvedTheme;
1541
1730
  //#endregion
1542
1731
  //#region src/orchestrator/font-loader.d.ts
1543
1732
  /**
1544
- * Inject the tenant's `branding.font_url` stylesheet. Pass `null`/`undefined`
1733
+ * Inject the tenant's `branding.typography.font_url` stylesheet. Pass `null`/`undefined`
1545
1734
  * to withdraw this surface's registration (e.g. when a flow resolves with no
1546
1735
  * tenant font); the link disappears once no surface registers a URL.
1547
1736
  */
@@ -1635,5 +1824,5 @@ type LiquidContext = {
1635
1824
  loading: boolean;
1636
1825
  };
1637
1826
  //#endregion
1638
- export { BrandingPalette as A, en as B, ZitadelLogin as C, Branding as D, ThemeMode as E, builtinLocales as F, businessLocales as I, it as L, BrandingTheme as M, BrandingTypography as N, BrandingAssets as O, FlowLayout as P, de as R, ZitadelLogout as S, ThemeController as T, applyFontUrl as _, LiquidContext as a, resolveTheme as b, validateBranding as c, submitStep as d, createSanitiser as f, TEMPLATE_NAMES as g, patchMandatoryGates as h, FlowMessage as i, BrandingShape as j, BrandingAttribution as k, getCurrentStep as l, mandatoryGatesMarkerComment as m, FlowError as n, BrandingValidationContext as o, MANDATORY_GATES_MARKER as p, FlowIdentity as r, BrandingValidationResult as s, layoutChromeCss as t, startFlow as u, applyBrandingTokens as v, ResolvedTheme as w, ZitadelSession as x, buildBrandingStylesheet as y, Locale as z };
1639
- //# sourceMappingURL=index-BaS893QZ.d.mts.map
1827
+ export { BrandingShape as A, businessLocales as B, ZitadelLogin as C, Branding as D, ThemeMode as E, PublishedSides as F, de as H, ResolvableSide as I, publishedSides as L, BrandingThemeSide as M, BrandingTypography as N, BrandingAttribution as O, FlowLayout as P, resolveLogoUrl as R, ZitadelLogout as S, ThemeController as T, Locale as U, it as V, en as W, applyFontUrl as _, LiquidContext as a, resolveTheme as b, validateBranding as c, submitStep as d, createSanitiser as f, TEMPLATE_NAMES as g, patchMandatoryGates as h, FlowMessage as i, BrandingTheme as j, BrandingPalette as k, getCurrentStep as l, mandatoryGatesMarkerComment as m, FlowError as n, BrandingValidationContext as o, MANDATORY_GATES_MARKER as p, FlowIdentity as r, BrandingValidationResult as s, layoutChromeCss as t, startFlow as u, applyBrandingTokens as v, ResolvedTheme as w, ZitadelSession as x, buildBrandingStylesheet as y, builtinLocales as z };
1828
+ //# sourceMappingURL=index-1PzVwdYA.d.mts.map