@faable/auth-sdk 2.5.79 → 2.5.80

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.
@@ -45,6 +45,14 @@ export declare class FaableAuthApi extends GeneratedFaableAuthApi {
45
45
  welcome_email_enabled: boolean;
46
46
  verify_email_auto_send: boolean;
47
47
  };
48
+ welcome_email?: {
49
+ cta_url?: string | null | undefined;
50
+ body?: string | null | undefined;
51
+ social_links?: {
52
+ label: string;
53
+ url: string;
54
+ }[] | null | undefined;
55
+ } | null | undefined;
48
56
  email_change_verification_mode?: "new_only" | "old_and_new" | undefined;
49
57
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | undefined;
50
58
  login_methods?: {
@@ -41,6 +41,14 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
41
41
  welcome_email_enabled: boolean;
42
42
  verify_email_auto_send: boolean;
43
43
  };
44
+ welcome_email?: {
45
+ cta_url?: string | null | undefined;
46
+ body?: string | null | undefined;
47
+ social_links?: {
48
+ label: string;
49
+ url: string;
50
+ }[] | null | undefined;
51
+ } | null | undefined;
44
52
  email_change_verification_mode?: "new_only" | "old_and_new" | undefined;
45
53
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | undefined;
46
54
  login_methods?: {
@@ -88,6 +96,14 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
88
96
  welcome_email_enabled: boolean;
89
97
  verify_email_auto_send: boolean;
90
98
  };
99
+ welcome_email?: {
100
+ cta_url?: string | null | undefined;
101
+ body?: string | null | undefined;
102
+ social_links?: {
103
+ label: string;
104
+ url: string;
105
+ }[] | null | undefined;
106
+ } | null | undefined;
91
107
  email_change_verification_mode?: "new_only" | "old_and_new" | undefined;
92
108
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | undefined;
93
109
  login_methods?: {
@@ -141,6 +157,14 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
141
157
  welcome_email_enabled: boolean;
142
158
  verify_email_auto_send: boolean;
143
159
  };
160
+ welcome_email?: {
161
+ cta_url?: string | null | undefined;
162
+ body?: string | null | undefined;
163
+ social_links?: {
164
+ label: string;
165
+ url: string;
166
+ }[] | null | undefined;
167
+ } | null | undefined;
144
168
  email_change_verification_mode?: "new_only" | "old_and_new" | undefined;
145
169
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | undefined;
146
170
  login_methods?: {
@@ -199,6 +223,14 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
199
223
  welcome_email_enabled: boolean;
200
224
  verify_email_auto_send: boolean;
201
225
  };
226
+ welcome_email?: {
227
+ cta_url?: string | null | undefined;
228
+ body?: string | null | undefined;
229
+ social_links?: {
230
+ label: string;
231
+ url: string;
232
+ }[] | null | undefined;
233
+ } | null | undefined;
202
234
  email_change_verification_mode?: "new_only" | "old_and_new" | undefined;
203
235
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | undefined;
204
236
  login_methods?: {
@@ -241,6 +273,14 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
241
273
  welcome_email_enabled: boolean;
242
274
  verify_email_auto_send: boolean;
243
275
  };
276
+ welcome_email?: {
277
+ cta_url?: string | null | undefined;
278
+ body?: string | null | undefined;
279
+ social_links?: {
280
+ label: string;
281
+ url: string;
282
+ }[] | null | undefined;
283
+ } | null | undefined;
244
284
  email_change_verification_mode?: "new_only" | "old_and_new" | undefined;
245
285
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | undefined;
246
286
  login_methods?: {
@@ -286,6 +326,14 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
286
326
  welcome_email_enabled: boolean;
287
327
  verify_email_auto_send: boolean;
288
328
  };
329
+ welcome_email?: {
330
+ cta_url?: string | null | undefined;
331
+ body?: string | null | undefined;
332
+ social_links?: {
333
+ label: string;
334
+ url: string;
335
+ }[] | null | undefined;
336
+ } | null | undefined;
289
337
  email_change_verification_mode?: "new_only" | "old_and_new" | undefined;
290
338
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | undefined;
291
339
  login_methods?: {
@@ -346,6 +394,14 @@ export declare abstract class GeneratedFaableAuthApi extends FaableApi {
346
394
  welcome_email_enabled: boolean;
347
395
  verify_email_auto_send: boolean;
348
396
  };
397
+ welcome_email?: {
398
+ cta_url?: string | null | undefined;
399
+ body?: string | null | undefined;
400
+ social_links?: {
401
+ label: string;
402
+ url: string;
403
+ }[] | null | undefined;
404
+ } | null | undefined;
349
405
  email_change_verification_mode?: "new_only" | "old_and_new" | undefined;
350
406
  email_oauth_sync_policy?: "preserve_manual" | "always_sync" | undefined;
351
407
  login_methods?: {
@@ -2728,6 +2728,21 @@ export interface components {
2728
2728
  */
2729
2729
  verify_email_auto_send: boolean;
2730
2730
  };
2731
+ welcome_email?: {
2732
+ /**
2733
+ * Format: uri
2734
+ * @description Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.
2735
+ */
2736
+ cta_url?: string | null;
2737
+ /** @description Replaces the default one-line body ("Your account on … is ready to go."). Plain text, sent verbatim in every enabled locale. */
2738
+ body?: string | null;
2739
+ /** @description Rendered as a "Follow <account>" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block. */
2740
+ social_links?: {
2741
+ label: string;
2742
+ /** Format: uri */
2743
+ url: string;
2744
+ }[] | null;
2745
+ } | null;
2731
2746
  /** @description Policy for the user email-change flow. `new_only` (default) sends a single confirmation link to the new email. `old_and_new` requires the user to also click a link sent to the previous email before the swap takes effect — stricter, useful for tenants with higher-risk users. */
2732
2747
  email_change_verification_mode?: "new_only" | "old_and_new";
2733
2748
  /**
@@ -4567,6 +4582,21 @@ export interface components {
4567
4582
  */
4568
4583
  verify_email_auto_send: boolean;
4569
4584
  };
4585
+ welcome_email?: {
4586
+ /**
4587
+ * Format: uri
4588
+ * @description Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.
4589
+ */
4590
+ cta_url?: string | null;
4591
+ /** @description Replaces the default one-line body ("Your account on … is ready to go."). Plain text, sent verbatim in every enabled locale. */
4592
+ body?: string | null;
4593
+ /** @description Rendered as a "Follow <account>" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block. */
4594
+ social_links?: {
4595
+ label: string;
4596
+ /** Format: uri */
4597
+ url: string;
4598
+ }[] | null;
4599
+ } | null;
4570
4600
  login_methods?: {
4571
4601
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
4572
4602
  order?: string[];
@@ -4730,6 +4760,21 @@ export interface operations {
4730
4760
  */
4731
4761
  verify_email_auto_send: boolean;
4732
4762
  };
4763
+ welcome_email?: {
4764
+ /**
4765
+ * Format: uri
4766
+ * @description Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.
4767
+ */
4768
+ cta_url?: string | null;
4769
+ /** @description Replaces the default one-line body ("Your account on … is ready to go."). Plain text, sent verbatim in every enabled locale. */
4770
+ body?: string | null;
4771
+ /** @description Rendered as a "Follow <account>" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block. */
4772
+ social_links?: {
4773
+ label: string;
4774
+ /** Format: uri */
4775
+ url: string;
4776
+ }[] | null;
4777
+ } | null;
4733
4778
  /** @description Policy for the user email-change flow. `new_only` (default) sends a single confirmation link to the new email. `old_and_new` requires the user to also click a link sent to the previous email before the swap takes effect — stricter, useful for tenants with higher-risk users. */
4734
4779
  email_change_verification_mode?: "new_only" | "old_and_new";
4735
4780
  /**
@@ -4880,6 +4925,21 @@ export interface operations {
4880
4925
  */
4881
4926
  verify_email_auto_send: boolean;
4882
4927
  };
4928
+ welcome_email?: {
4929
+ /**
4930
+ * Format: uri
4931
+ * @description Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.
4932
+ */
4933
+ cta_url?: string | null;
4934
+ /** @description Replaces the default one-line body ("Your account on … is ready to go."). Plain text, sent verbatim in every enabled locale. */
4935
+ body?: string | null;
4936
+ /** @description Rendered as a "Follow <account>" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block. */
4937
+ social_links?: {
4938
+ label: string;
4939
+ /** Format: uri */
4940
+ url: string;
4941
+ }[] | null;
4942
+ } | null;
4883
4943
  /** @description Policy for the user email-change flow. `new_only` (default) sends a single confirmation link to the new email. `old_and_new` requires the user to also click a link sent to the previous email before the swap takes effect — stricter, useful for tenants with higher-risk users. */
4884
4944
  email_change_verification_mode?: "new_only" | "old_and_new";
4885
4945
  /**
@@ -4984,6 +5044,21 @@ export interface operations {
4984
5044
  */
4985
5045
  verify_email_auto_send: boolean;
4986
5046
  };
5047
+ welcome_email?: {
5048
+ /**
5049
+ * Format: uri
5050
+ * @description Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.
5051
+ */
5052
+ cta_url?: string | null;
5053
+ /** @description Replaces the default one-line body ("Your account on … is ready to go."). Plain text, sent verbatim in every enabled locale. */
5054
+ body?: string | null;
5055
+ /** @description Rendered as a "Follow <account>" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block. */
5056
+ social_links?: {
5057
+ label: string;
5058
+ /** Format: uri */
5059
+ url: string;
5060
+ }[] | null;
5061
+ } | null;
4987
5062
  /** @description Policy for the user email-change flow. `new_only` (default) sends a single confirmation link to the new email. `old_and_new` requires the user to also click a link sent to the previous email before the swap takes effect — stricter, useful for tenants with higher-risk users. */
4988
5063
  email_change_verification_mode?: "new_only" | "old_and_new";
4989
5064
  /**
@@ -5070,6 +5145,21 @@ export interface operations {
5070
5145
  */
5071
5146
  verify_email_auto_send?: boolean;
5072
5147
  };
5148
+ welcome_email?: {
5149
+ /**
5150
+ * Format: uri
5151
+ * @description Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.
5152
+ */
5153
+ cta_url?: string | null;
5154
+ /** @description Replaces the default one-line body ("Your account on … is ready to go."). Plain text, sent verbatim in every enabled locale. */
5155
+ body?: string | null;
5156
+ /** @description Rendered as a "Follow <account>" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block. */
5157
+ social_links?: {
5158
+ label: string;
5159
+ /** Format: uri */
5160
+ url: string;
5161
+ }[] | null;
5162
+ } | null;
5073
5163
  login_methods?: {
5074
5164
  /** @description Order in which the hosted login screen renders the available methods. Entries are Connection resource ids (`connection_xxx`) or the literal `passkey`. Methods not listed keep the built-in order (passwordless, database, social) after the listed ones; ids that no longer resolve are ignored. Listing an `oidc` connection here is also the only way to surface it on the login screen — see resolveLoginMethods(). */
5075
5165
  order?: string[];
@@ -5142,6 +5232,21 @@ export interface operations {
5142
5232
  */
5143
5233
  verify_email_auto_send: boolean;
5144
5234
  };
5235
+ welcome_email?: {
5236
+ /**
5237
+ * Format: uri
5238
+ * @description Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.
5239
+ */
5240
+ cta_url?: string | null;
5241
+ /** @description Replaces the default one-line body ("Your account on … is ready to go."). Plain text, sent verbatim in every enabled locale. */
5242
+ body?: string | null;
5243
+ /** @description Rendered as a "Follow <account>" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block. */
5244
+ social_links?: {
5245
+ label: string;
5246
+ /** Format: uri */
5247
+ url: string;
5248
+ }[] | null;
5249
+ } | null;
5145
5250
  /** @description Policy for the user email-change flow. `new_only` (default) sends a single confirmation link to the new email. `old_and_new` requires the user to also click a link sent to the previous email before the swap takes effect — stricter, useful for tenants with higher-risk users. */
5146
5251
  email_change_verification_mode?: "new_only" | "old_and_new";
5147
5252
  /**
@@ -5255,6 +5360,21 @@ export interface operations {
5255
5360
  */
5256
5361
  verify_email_auto_send: boolean;
5257
5362
  };
5363
+ welcome_email?: {
5364
+ /**
5365
+ * Format: uri
5366
+ * @description Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.
5367
+ */
5368
+ cta_url?: string | null;
5369
+ /** @description Replaces the default one-line body ("Your account on … is ready to go."). Plain text, sent verbatim in every enabled locale. */
5370
+ body?: string | null;
5371
+ /** @description Rendered as a "Follow <account>" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block. */
5372
+ social_links?: {
5373
+ label: string;
5374
+ /** Format: uri */
5375
+ url: string;
5376
+ }[] | null;
5377
+ } | null;
5258
5378
  /** @description Policy for the user email-change flow. `new_only` (default) sends a single confirmation link to the new email. `old_and_new` requires the user to also click a link sent to the previous email before the swap takes effect — stricter, useful for tenants with higher-risk users. */
5259
5379
  email_change_verification_mode?: "new_only" | "old_and_new";
5260
5380
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faable/auth-sdk",
3
- "version": "2.5.79",
3
+ "version": "2.5.80",
4
4
  "author": "Marc Pomar <marc@faable.com>",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/spec/openapi.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "info": {
4
4
  "title": "@faablecloud/auth",
5
5
  "description": "Auth Platform made by Faable. Manage Users and Roles",
6
- "version": "2.5.1",
6
+ "version": "2.6.0",
7
7
  "license": {
8
8
  "name": "private",
9
9
  "url": "https://faable.com/docs/platform/privacy-policy"
@@ -141,6 +141,52 @@
141
141
  },
142
142
  "additionalProperties": false
143
143
  },
144
+ "welcome_email": {
145
+ "type": "object",
146
+ "properties": {
147
+ "cta_url": {
148
+ "type": "string",
149
+ "format": "uri",
150
+ "maxLength": 500,
151
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
152
+ "nullable": true
153
+ },
154
+ "body": {
155
+ "type": "string",
156
+ "maxLength": 600,
157
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
158
+ "nullable": true
159
+ },
160
+ "social_links": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "object",
164
+ "required": [
165
+ "label",
166
+ "url"
167
+ ],
168
+ "properties": {
169
+ "label": {
170
+ "type": "string",
171
+ "minLength": 1,
172
+ "maxLength": 40
173
+ },
174
+ "url": {
175
+ "type": "string",
176
+ "format": "uri",
177
+ "maxLength": 500
178
+ }
179
+ },
180
+ "additionalProperties": false
181
+ },
182
+ "maxItems": 6,
183
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
184
+ "nullable": true
185
+ }
186
+ },
187
+ "additionalProperties": false,
188
+ "nullable": true
189
+ },
144
190
  "email_change_verification_mode": {
145
191
  "anyOf": [
146
192
  {
@@ -5765,6 +5811,58 @@
5765
5811
  }
5766
5812
  }
5767
5813
  },
5814
+ "welcome_email": {
5815
+ "anyOf": [
5816
+ {
5817
+ "type": "object",
5818
+ "properties": {
5819
+ "cta_url": {
5820
+ "type": "string",
5821
+ "format": "uri",
5822
+ "maxLength": 500,
5823
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
5824
+ "nullable": true
5825
+ },
5826
+ "body": {
5827
+ "type": "string",
5828
+ "maxLength": 600,
5829
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
5830
+ "nullable": true
5831
+ },
5832
+ "social_links": {
5833
+ "type": "array",
5834
+ "items": {
5835
+ "type": "object",
5836
+ "required": [
5837
+ "label",
5838
+ "url"
5839
+ ],
5840
+ "properties": {
5841
+ "label": {
5842
+ "type": "string",
5843
+ "minLength": 1,
5844
+ "maxLength": 40
5845
+ },
5846
+ "url": {
5847
+ "type": "string",
5848
+ "format": "uri",
5849
+ "maxLength": 500
5850
+ }
5851
+ },
5852
+ "additionalProperties": false
5853
+ },
5854
+ "maxItems": 6,
5855
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
5856
+ "nullable": true
5857
+ }
5858
+ },
5859
+ "additionalProperties": false
5860
+ },
5861
+ {
5862
+ "type": "null"
5863
+ }
5864
+ ]
5865
+ },
5768
5866
  "login_methods": {
5769
5867
  "anyOf": [
5770
5868
  {
@@ -6380,6 +6478,52 @@
6380
6478
  },
6381
6479
  "additionalProperties": false
6382
6480
  },
6481
+ "welcome_email": {
6482
+ "type": "object",
6483
+ "properties": {
6484
+ "cta_url": {
6485
+ "type": "string",
6486
+ "format": "uri",
6487
+ "maxLength": 500,
6488
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
6489
+ "nullable": true
6490
+ },
6491
+ "body": {
6492
+ "type": "string",
6493
+ "maxLength": 600,
6494
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
6495
+ "nullable": true
6496
+ },
6497
+ "social_links": {
6498
+ "type": "array",
6499
+ "items": {
6500
+ "type": "object",
6501
+ "required": [
6502
+ "label",
6503
+ "url"
6504
+ ],
6505
+ "properties": {
6506
+ "label": {
6507
+ "type": "string",
6508
+ "minLength": 1,
6509
+ "maxLength": 40
6510
+ },
6511
+ "url": {
6512
+ "type": "string",
6513
+ "format": "uri",
6514
+ "maxLength": 500
6515
+ }
6516
+ },
6517
+ "additionalProperties": false
6518
+ },
6519
+ "maxItems": 6,
6520
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
6521
+ "nullable": true
6522
+ }
6523
+ },
6524
+ "additionalProperties": false,
6525
+ "nullable": true
6526
+ },
6383
6527
  "email_change_verification_mode": {
6384
6528
  "anyOf": [
6385
6529
  {
@@ -6765,6 +6909,52 @@
6765
6909
  },
6766
6910
  "additionalProperties": false
6767
6911
  },
6912
+ "welcome_email": {
6913
+ "type": "object",
6914
+ "properties": {
6915
+ "cta_url": {
6916
+ "type": "string",
6917
+ "format": "uri",
6918
+ "maxLength": 500,
6919
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
6920
+ "nullable": true
6921
+ },
6922
+ "body": {
6923
+ "type": "string",
6924
+ "maxLength": 600,
6925
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
6926
+ "nullable": true
6927
+ },
6928
+ "social_links": {
6929
+ "type": "array",
6930
+ "items": {
6931
+ "type": "object",
6932
+ "required": [
6933
+ "label",
6934
+ "url"
6935
+ ],
6936
+ "properties": {
6937
+ "label": {
6938
+ "type": "string",
6939
+ "minLength": 1,
6940
+ "maxLength": 40
6941
+ },
6942
+ "url": {
6943
+ "type": "string",
6944
+ "format": "uri",
6945
+ "maxLength": 500
6946
+ }
6947
+ },
6948
+ "additionalProperties": false
6949
+ },
6950
+ "maxItems": 6,
6951
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
6952
+ "nullable": true
6953
+ }
6954
+ },
6955
+ "additionalProperties": false,
6956
+ "nullable": true
6957
+ },
6768
6958
  "email_change_verification_mode": {
6769
6959
  "anyOf": [
6770
6960
  {
@@ -7204,6 +7394,52 @@
7204
7394
  },
7205
7395
  "additionalProperties": false
7206
7396
  },
7397
+ "welcome_email": {
7398
+ "type": "object",
7399
+ "properties": {
7400
+ "cta_url": {
7401
+ "type": "string",
7402
+ "format": "uri",
7403
+ "maxLength": 500,
7404
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
7405
+ "nullable": true
7406
+ },
7407
+ "body": {
7408
+ "type": "string",
7409
+ "maxLength": 600,
7410
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
7411
+ "nullable": true
7412
+ },
7413
+ "social_links": {
7414
+ "type": "array",
7415
+ "items": {
7416
+ "type": "object",
7417
+ "required": [
7418
+ "label",
7419
+ "url"
7420
+ ],
7421
+ "properties": {
7422
+ "label": {
7423
+ "type": "string",
7424
+ "minLength": 1,
7425
+ "maxLength": 40
7426
+ },
7427
+ "url": {
7428
+ "type": "string",
7429
+ "format": "uri",
7430
+ "maxLength": 500
7431
+ }
7432
+ },
7433
+ "additionalProperties": false
7434
+ },
7435
+ "maxItems": 6,
7436
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
7437
+ "nullable": true
7438
+ }
7439
+ },
7440
+ "additionalProperties": false,
7441
+ "nullable": true
7442
+ },
7207
7443
  "email_change_verification_mode": {
7208
7444
  "anyOf": [
7209
7445
  {
@@ -7475,6 +7711,58 @@
7475
7711
  }
7476
7712
  }
7477
7713
  },
7714
+ "welcome_email": {
7715
+ "anyOf": [
7716
+ {
7717
+ "type": "object",
7718
+ "properties": {
7719
+ "cta_url": {
7720
+ "type": "string",
7721
+ "format": "uri",
7722
+ "maxLength": 500,
7723
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
7724
+ "nullable": true
7725
+ },
7726
+ "body": {
7727
+ "type": "string",
7728
+ "maxLength": 600,
7729
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
7730
+ "nullable": true
7731
+ },
7732
+ "social_links": {
7733
+ "type": "array",
7734
+ "items": {
7735
+ "type": "object",
7736
+ "required": [
7737
+ "label",
7738
+ "url"
7739
+ ],
7740
+ "properties": {
7741
+ "label": {
7742
+ "type": "string",
7743
+ "minLength": 1,
7744
+ "maxLength": 40
7745
+ },
7746
+ "url": {
7747
+ "type": "string",
7748
+ "format": "uri",
7749
+ "maxLength": 500
7750
+ }
7751
+ },
7752
+ "additionalProperties": false
7753
+ },
7754
+ "maxItems": 6,
7755
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
7756
+ "nullable": true
7757
+ }
7758
+ },
7759
+ "additionalProperties": false
7760
+ },
7761
+ {
7762
+ "type": "null"
7763
+ }
7764
+ ]
7765
+ },
7478
7766
  "login_methods": {
7479
7767
  "anyOf": [
7480
7768
  {
@@ -7775,6 +8063,52 @@
7775
8063
  },
7776
8064
  "additionalProperties": false
7777
8065
  },
8066
+ "welcome_email": {
8067
+ "type": "object",
8068
+ "properties": {
8069
+ "cta_url": {
8070
+ "type": "string",
8071
+ "format": "uri",
8072
+ "maxLength": 500,
8073
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
8074
+ "nullable": true
8075
+ },
8076
+ "body": {
8077
+ "type": "string",
8078
+ "maxLength": 600,
8079
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
8080
+ "nullable": true
8081
+ },
8082
+ "social_links": {
8083
+ "type": "array",
8084
+ "items": {
8085
+ "type": "object",
8086
+ "required": [
8087
+ "label",
8088
+ "url"
8089
+ ],
8090
+ "properties": {
8091
+ "label": {
8092
+ "type": "string",
8093
+ "minLength": 1,
8094
+ "maxLength": 40
8095
+ },
8096
+ "url": {
8097
+ "type": "string",
8098
+ "format": "uri",
8099
+ "maxLength": 500
8100
+ }
8101
+ },
8102
+ "additionalProperties": false
8103
+ },
8104
+ "maxItems": 6,
8105
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
8106
+ "nullable": true
8107
+ }
8108
+ },
8109
+ "additionalProperties": false,
8110
+ "nullable": true
8111
+ },
7778
8112
  "email_change_verification_mode": {
7779
8113
  "anyOf": [
7780
8114
  {
@@ -8133,6 +8467,52 @@
8133
8467
  },
8134
8468
  "additionalProperties": false
8135
8469
  },
8470
+ "welcome_email": {
8471
+ "type": "object",
8472
+ "properties": {
8473
+ "cta_url": {
8474
+ "type": "string",
8475
+ "format": "uri",
8476
+ "maxLength": 500,
8477
+ "description": "Where the welcome button sends the user. Defaults to `https://<first callback hostname>`. Point it at your app (not your marketing site) so a fresh user lands somewhere useful.",
8478
+ "nullable": true
8479
+ },
8480
+ "body": {
8481
+ "type": "string",
8482
+ "maxLength": 600,
8483
+ "description": "Replaces the default one-line body (\"Your account on … is ready to go.\"). Plain text, sent verbatim in every enabled locale.",
8484
+ "nullable": true
8485
+ },
8486
+ "social_links": {
8487
+ "type": "array",
8488
+ "items": {
8489
+ "type": "object",
8490
+ "required": [
8491
+ "label",
8492
+ "url"
8493
+ ],
8494
+ "properties": {
8495
+ "label": {
8496
+ "type": "string",
8497
+ "minLength": 1,
8498
+ "maxLength": 40
8499
+ },
8500
+ "url": {
8501
+ "type": "string",
8502
+ "format": "uri",
8503
+ "maxLength": 500
8504
+ }
8505
+ },
8506
+ "additionalProperties": false
8507
+ },
8508
+ "maxItems": 6,
8509
+ "description": "Rendered as a \"Follow <account>\" block after the button — GitHub, LinkedIn, X, YouTube… Empty or absent hides the block.",
8510
+ "nullable": true
8511
+ }
8512
+ },
8513
+ "additionalProperties": false,
8514
+ "nullable": true
8515
+ },
8136
8516
  "email_change_verification_mode": {
8137
8517
  "anyOf": [
8138
8518
  {