@meshery/schemas 1.3.49 → 1.3.51

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.
@@ -0,0 +1,1220 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+
6
+ export interface paths {
7
+ "/api/identity/orgs/{orgId}/smtp-configuration": {
8
+ parameters: {
9
+ query?: never;
10
+ header?: never;
11
+ path?: never;
12
+ cookie?: never;
13
+ };
14
+ /**
15
+ * Get an organization's SMTP configuration
16
+ * @description Returns the organization's mail server configuration, including its current health and from-domain verification state. The password is always the redaction sentinel `***`.
17
+ */
18
+ get: operations["getOrganizationSmtpConfiguration"];
19
+ /**
20
+ * Create or replace an organization's SMTP configuration
21
+ * @description Writes the organization's single mail server configuration, creating it if absent. The whole document is replaced, with one exception: a `password` of `***` or an empty string preserves the stored password, so a client may edit an unrelated field after a read without erasing the credential.
22
+ * Changing the from address resets from-domain verification, and `enabled` is refused while the from domain is unverified.
23
+ */
24
+ put: operations["upsertOrganizationSmtpConfiguration"];
25
+ post?: never;
26
+ /**
27
+ * Remove an organization's SMTP configuration
28
+ * @description Removes the configuration and its stored credential. The organization's mail reverts to the provider's shared relay.
29
+ */
30
+ delete: operations["deleteOrganizationSmtpConfiguration"];
31
+ options?: never;
32
+ head?: never;
33
+ patch?: never;
34
+ trace?: never;
35
+ };
36
+ "/api/identity/orgs/{orgId}/smtp-configuration/test": {
37
+ parameters: {
38
+ query?: never;
39
+ header?: never;
40
+ path?: never;
41
+ cookie?: never;
42
+ };
43
+ get?: never;
44
+ put?: never;
45
+ /**
46
+ * Send a test message through an organization's SMTP configuration
47
+ * @description Delivers a real message through the configured server and reports a classified outcome. A real delivery rather than a connection probe on purpose: a server that connects and authenticates but refuses the sender or the recipient is the most common misconfiguration, and a probe reports it healthy.
48
+ * The recipient defaults to the calling administrator's own address. The outcome is a classification, never the remote server's own text.
49
+ */
50
+ post: operations["testOrganizationSmtpConfiguration"];
51
+ delete?: never;
52
+ options?: never;
53
+ head?: never;
54
+ patch?: never;
55
+ trace?: never;
56
+ };
57
+ "/api/identity/orgs/{orgId}/smtp-configuration/domain-verification": {
58
+ parameters: {
59
+ query?: never;
60
+ header?: never;
61
+ path?: never;
62
+ cookie?: never;
63
+ };
64
+ /**
65
+ * Get the from-domain verification challenge
66
+ * @description Returns the DNS record the organization must publish to prove control of its from domain, together with the current verification state. A from domain that matches the organization's own registered custom domain is already proven and needs no record.
67
+ */
68
+ get: operations["getOrganizationSmtpDomainVerification"];
69
+ put?: never;
70
+ /**
71
+ * Check the from-domain verification challenge
72
+ * @description Resolves the challenge record and records the result. Proving the domain is what permits the configuration to be enabled.
73
+ */
74
+ post: operations["verifyOrganizationSmtpDomain"];
75
+ delete?: never;
76
+ options?: never;
77
+ head?: never;
78
+ patch?: never;
79
+ trace?: never;
80
+ };
81
+ }
82
+ export type webhooks = Record<string, never>;
83
+ export interface components {
84
+ schemas: {
85
+ /**
86
+ * OrganizationSmtpConfiguration
87
+ * @description An organization's own outbound mail server. When present and enabled, every transactional email whose reader belongs to this organization - application notifications and identity-flow mail (account verification, password recovery) alike - is delivered through this server rather than through the provider's shared relay, so the message leaves from the organization's own domain. At most one live configuration exists per organization. The SMTP password is encrypted at rest and is never returned; reads always carry the redaction sentinel instead.
88
+ * @example {
89
+ * "id": "00000000-0000-0000-0000-000000000000",
90
+ * "organizationId": "00000000-0000-0000-0000-000000000000",
91
+ * "host": "smtp.example.com",
92
+ * "port": 587,
93
+ * "encryption": "starttls",
94
+ * "authMechanism": "plain",
95
+ * "username": "no-reply@example.com",
96
+ * "password": "***",
97
+ * "fromAddress": "no-reply@example.com",
98
+ * "fromDisplayName": "Example Corp",
99
+ * "replyToAddress": "support@example.com",
100
+ * "enabled": true,
101
+ * "fallbackToProvider": true,
102
+ * "fromDomain": "example.com",
103
+ * "fromDomainVerificationToken": "0f6a5d2c9b1e4a7f8c3d6b0e2a4f7c19",
104
+ * "fromDomainVerifiedAt": null,
105
+ * "verificationState": "unverified",
106
+ * "lastSuccessAt": null,
107
+ * "lastFailureAt": null,
108
+ * "lastFailureReason": null,
109
+ * "consecutiveFailures": 0,
110
+ * "createdBy": "00000000-0000-0000-0000-000000000000",
111
+ * "createdAt": "0001-01-01T00:00:00Z",
112
+ * "updatedAt": "0001-01-01T00:00:00Z",
113
+ * "deletedAt": null
114
+ * }
115
+ */
116
+ OrganizationSmtpConfiguration: {
117
+ /**
118
+ * Format: uuid
119
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
120
+ */
121
+ id: string;
122
+ /**
123
+ * Format: uuid
124
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
125
+ */
126
+ organizationId: string;
127
+ /** @description Hostname of the organization's SMTP server. */
128
+ host: string;
129
+ /**
130
+ * @description TCP port the organization's SMTP server listens on.
131
+ * @default 587
132
+ */
133
+ port: number;
134
+ /**
135
+ * @description Transport encryption to negotiate. `starttls` upgrades a cleartext connection (typically port 587), `tls` opens an implicit TLS connection (typically port 465), and `none` sends in cleartext and is intended only for an internal relay on a trusted network.
136
+ * @default starttls
137
+ * @enum {string}
138
+ */
139
+ encryption: "starttls" | "tls" | "none";
140
+ /**
141
+ * @description SMTP authentication mechanism. `none` is permitted only for a relay that authorizes by source address; a configuration using any other mechanism must carry both a username and a password.
142
+ * @default plain
143
+ * @enum {string}
144
+ */
145
+ authMechanism: "plain" | "cram-md5" | "none";
146
+ /** @description Username presented to the organization's SMTP server. */
147
+ username?: string;
148
+ /** @description Password presented to the organization's SMTP server. Write-only. A read always returns the redaction sentinel `***`; the stored value is encrypted at rest and is never projected into a response. Writing `***` or an empty string preserves the stored password, so a client may round-trip a read without erasing the credential. */
149
+ password?: string;
150
+ /**
151
+ * Format: email
152
+ * @description Address the organization's mail is sent from. Its domain must be verified before the configuration can be enabled.
153
+ */
154
+ fromAddress: string;
155
+ /** @description Display name shown alongside the from address in the message header. */
156
+ fromDisplayName?: string;
157
+ /**
158
+ * Format: email
159
+ * @description Address replies are directed to. It is also the address carried when a message falls back to the provider relay, which rewrites the from address to the provider's own so the message stays aligned for SPF and DMARC.
160
+ */
161
+ replyToAddress?: string;
162
+ /**
163
+ * @description Whether mail is routed through this server. Cannot be set while the from domain is unverified.
164
+ * @default false
165
+ */
166
+ enabled: boolean;
167
+ /**
168
+ * @description Whether a message that this server fails to accept is re-sent through the provider's shared relay. Disabling it means the organization owns delivery entirely and a failure is a dropped message, including account verification and password recovery.
169
+ * @default true
170
+ */
171
+ fallbackToProvider: boolean;
172
+ /** @description Registrable domain of the from address, held separately as the unit that ownership is proven for. */
173
+ fromDomain?: string;
174
+ /** @description Token the organization publishes in DNS to prove control of the from domain. Not a credential - it authorizes nothing and grants no access. */
175
+ fromDomainVerificationToken?: string;
176
+ /**
177
+ * Format: date-time
178
+ * @description Timestamp at which control of the from domain was last proven. Null while unproven.
179
+ */
180
+ fromDomainVerifiedAt?: string | null;
181
+ /**
182
+ * @description Health of the configuration. `unverified` means it has never delivered a test message, `verified` means the last delivery attempt succeeded, and `failing` means consecutive failures have opened the circuit and mail is being handled under the fallback setting without dialling this server.
183
+ * @default unverified
184
+ * @enum {string}
185
+ */
186
+ verificationState: "unverified" | "verified" | "failing";
187
+ /**
188
+ * Format: date-time
189
+ * @description Timestamp of the last message this server accepted.
190
+ */
191
+ lastSuccessAt?: string | null;
192
+ /**
193
+ * Format: date-time
194
+ * @description Timestamp of the last delivery attempt this server rejected or failed to accept.
195
+ */
196
+ lastFailureAt?: string | null;
197
+ /**
198
+ * @description Classification of the last failure. Always a classification, never the remote server's own message: the set is closed on purpose, because reporting a remote server's text back to a caller would turn a refusal into an oracle for what the network can reach.
199
+ * @enum {string}
200
+ */
201
+ lastFailureReason?: "blocked_target" | "connect_refused" | "connect_timeout" | "tls_failed" | "starttls_unsupported" | "auth_rejected" | "relay_rejected_sender" | "relay_rejected_recipient" | "delivery_failed" | "credential_unreadable";
202
+ /**
203
+ * @description Delivery failures since the last success. Drives the circuit that stops dialling a persistently unreachable server.
204
+ * @default 0
205
+ */
206
+ consecutiveFailures: number;
207
+ /**
208
+ * Format: uuid
209
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
210
+ */
211
+ createdBy?: string | null;
212
+ /**
213
+ * Format: date-time
214
+ * @description Timestamp when the configuration was created.
215
+ */
216
+ createdAt: string;
217
+ /**
218
+ * Format: date-time
219
+ * @description Timestamp when the configuration was last changed.
220
+ */
221
+ updatedAt: string;
222
+ /**
223
+ * Format: date-time
224
+ * @description Timestamp when the configuration was soft deleted. Null while it remains active.
225
+ */
226
+ deletedAt?: string | null;
227
+ };
228
+ /** @description Client-settable fields of an organization's mail server configuration. Health, verification state and timestamps are server-owned and are not accepted here. */
229
+ OrganizationSmtpConfigurationPayload: {
230
+ /**
231
+ * Format: uuid
232
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
233
+ */
234
+ id?: string;
235
+ /** @description Hostname of the organization's SMTP server. */
236
+ host: string;
237
+ /**
238
+ * @description TCP port the organization's SMTP server listens on.
239
+ * @default 587
240
+ */
241
+ port: number;
242
+ /**
243
+ * @description Transport encryption to negotiate. `starttls` upgrades a cleartext connection (typically port 587), `tls` opens an implicit TLS connection (typically port 465), and `none` sends in cleartext.
244
+ * @default starttls
245
+ * @enum {string}
246
+ */
247
+ encryption: "starttls" | "tls" | "none";
248
+ /**
249
+ * @description SMTP authentication mechanism. Any mechanism other than `none` requires both a username and a password.
250
+ * @default plain
251
+ * @enum {string}
252
+ */
253
+ authMechanism: "plain" | "cram-md5" | "none";
254
+ /** @description Username presented to the organization's SMTP server. */
255
+ username?: string;
256
+ /** @description Password presented to the organization's SMTP server. Write-only. `***` or an empty string preserves the stored password, so a client may round-trip a read without erasing the credential. */
257
+ password?: string;
258
+ /**
259
+ * Format: email
260
+ * @description Address the organization's mail is sent from. Changing it resets from-domain verification.
261
+ */
262
+ fromAddress: string;
263
+ /** @description Display name shown alongside the from address. */
264
+ fromDisplayName?: string;
265
+ /**
266
+ * Format: email
267
+ * @description Address replies are directed to.
268
+ */
269
+ replyToAddress?: string;
270
+ /**
271
+ * @description Whether mail is routed through this server. Refused while the from domain is unverified.
272
+ * @default false
273
+ */
274
+ enabled: boolean;
275
+ /**
276
+ * @description Whether a message this server fails to accept is re-sent through the provider's shared relay. Disabling it means a failure is a dropped message, account verification and password recovery included.
277
+ * @default true
278
+ */
279
+ fallbackToProvider: boolean;
280
+ };
281
+ /** @description Options for a test delivery. */
282
+ OrganizationSmtpTestRequest: {
283
+ /**
284
+ * Format: email
285
+ * @description Recipient of the test message. Defaults to the calling administrator's own address.
286
+ */
287
+ to?: string;
288
+ };
289
+ /** @description Classified outcome of a test delivery. Carries no text from the remote server, so a refusal reveals nothing about what the network can reach. */
290
+ OrganizationSmtpTestResult: {
291
+ /**
292
+ * @description What happened. `delivered` means the server accepted the message; every other value names the stage that refused it.
293
+ * @enum {string}
294
+ */
295
+ outcome: "delivered" | "blocked_target" | "connect_refused" | "connect_timeout" | "tls_failed" | "starttls_unsupported" | "auth_rejected" | "relay_rejected_sender" | "relay_rejected_recipient" | "delivery_failed" | "credential_unreadable";
296
+ /** @description Human-readable summary of the outcome, drawn from a fixed set of phrasings. */
297
+ message?: string;
298
+ /**
299
+ * Format: email
300
+ * @description Address the test message was addressed to.
301
+ */
302
+ sentTo?: string;
303
+ /**
304
+ * Format: date-time
305
+ * @description When the delivery was attempted.
306
+ */
307
+ testedAt: string;
308
+ };
309
+ /** @description The DNS record proving control of an organization's from domain, and the current state of that proof. */
310
+ OrganizationSmtpDomainChallenge: {
311
+ /** @description Registrable domain the proof applies to. */
312
+ domain: string;
313
+ /**
314
+ * @description How the domain is proven. `custom-domain` means it matches the organization's own registered custom domain and needs no record; `dns-txt` means the record below must be published.
315
+ * @enum {string}
316
+ */
317
+ method: "custom-domain" | "dns-txt";
318
+ /** @description Fully qualified name of the TXT record to publish. */
319
+ recordName?: string;
320
+ /** @description Value the TXT record must carry. */
321
+ recordValue?: string;
322
+ /** @description Whether control of the domain is currently proven. */
323
+ verified: boolean;
324
+ /**
325
+ * Format: date-time
326
+ * @description When control was last proven. Null while unproven.
327
+ */
328
+ verifiedAt?: string | null;
329
+ /**
330
+ * @description Why the last check did not prove control.
331
+ * @enum {string}
332
+ */
333
+ failureReason?: "record_not_found" | "record_mismatch" | "lookup_failed" | "domain_reserved";
334
+ };
335
+ };
336
+ responses: {
337
+ /** @description Invalid request body or request param */
338
+ 400: {
339
+ headers: {
340
+ [name: string]: unknown;
341
+ };
342
+ content: {
343
+ "text/plain": string;
344
+ };
345
+ };
346
+ /** @description Expired JWT token used or insufficient privilege */
347
+ 401: {
348
+ headers: {
349
+ [name: string]: unknown;
350
+ };
351
+ content: {
352
+ "text/plain": string;
353
+ };
354
+ };
355
+ /** @description Caller lacks the permission key required for this organization */
356
+ 403: {
357
+ headers: {
358
+ [name: string]: unknown;
359
+ };
360
+ content: {
361
+ "text/plain": string;
362
+ };
363
+ };
364
+ /** @description Result not found */
365
+ 404: {
366
+ headers: {
367
+ [name: string]: unknown;
368
+ };
369
+ content: {
370
+ "text/plain": string;
371
+ };
372
+ };
373
+ /** @description Too many attempts for this organization */
374
+ 429: {
375
+ headers: {
376
+ [name: string]: unknown;
377
+ };
378
+ content: {
379
+ "text/plain": string;
380
+ };
381
+ };
382
+ /** @description Internal server error */
383
+ 500: {
384
+ headers: {
385
+ [name: string]: unknown;
386
+ };
387
+ content: {
388
+ "text/plain": string;
389
+ };
390
+ };
391
+ };
392
+ parameters: {
393
+ /** @description Organization ID */
394
+ orgId: string;
395
+ };
396
+ requestBodies: {
397
+ organizationSmtpConfigurationPayload: {
398
+ content: {
399
+ "application/json": {
400
+ /**
401
+ * Format: uuid
402
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
403
+ */
404
+ id?: string;
405
+ /** @description Hostname of the organization's SMTP server. */
406
+ host: string;
407
+ /**
408
+ * @description TCP port the organization's SMTP server listens on.
409
+ * @default 587
410
+ */
411
+ port: number;
412
+ /**
413
+ * @description Transport encryption to negotiate. `starttls` upgrades a cleartext connection (typically port 587), `tls` opens an implicit TLS connection (typically port 465), and `none` sends in cleartext.
414
+ * @default starttls
415
+ * @enum {string}
416
+ */
417
+ encryption?: "starttls" | "tls" | "none";
418
+ /**
419
+ * @description SMTP authentication mechanism. Any mechanism other than `none` requires both a username and a password.
420
+ * @default plain
421
+ * @enum {string}
422
+ */
423
+ authMechanism?: "plain" | "cram-md5" | "none";
424
+ /** @description Username presented to the organization's SMTP server. */
425
+ username?: string;
426
+ /** @description Password presented to the organization's SMTP server. Write-only. `***` or an empty string preserves the stored password, so a client may round-trip a read without erasing the credential. */
427
+ password?: string;
428
+ /**
429
+ * Format: email
430
+ * @description Address the organization's mail is sent from. Changing it resets from-domain verification.
431
+ */
432
+ fromAddress: string;
433
+ /** @description Display name shown alongside the from address. */
434
+ fromDisplayName?: string;
435
+ /**
436
+ * Format: email
437
+ * @description Address replies are directed to.
438
+ */
439
+ replyToAddress?: string;
440
+ /**
441
+ * @description Whether mail is routed through this server. Refused while the from domain is unverified.
442
+ * @default false
443
+ */
444
+ enabled?: boolean;
445
+ /**
446
+ * @description Whether a message this server fails to accept is re-sent through the provider's shared relay. Disabling it means a failure is a dropped message, account verification and password recovery included.
447
+ * @default true
448
+ */
449
+ fallbackToProvider?: boolean;
450
+ };
451
+ };
452
+ };
453
+ organizationSmtpTestRequest: {
454
+ content: {
455
+ "application/json": {
456
+ /**
457
+ * Format: email
458
+ * @description Recipient of the test message. Defaults to the calling administrator's own address.
459
+ */
460
+ to?: string;
461
+ };
462
+ };
463
+ };
464
+ };
465
+ headers: never;
466
+ pathItems: never;
467
+ }
468
+ export type $defs = Record<string, never>;
469
+ export interface operations {
470
+ getOrganizationSmtpConfiguration: {
471
+ parameters: {
472
+ query?: never;
473
+ header?: never;
474
+ path: {
475
+ /** @description Organization ID */
476
+ orgId: string;
477
+ };
478
+ cookie?: never;
479
+ };
480
+ requestBody?: never;
481
+ responses: {
482
+ /** @description The organization's SMTP configuration. */
483
+ 200: {
484
+ headers: {
485
+ [name: string]: unknown;
486
+ };
487
+ content: {
488
+ "application/json": {
489
+ /**
490
+ * Format: uuid
491
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
492
+ */
493
+ id: string;
494
+ /**
495
+ * Format: uuid
496
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
497
+ */
498
+ organizationId: string;
499
+ /** @description Hostname of the organization's SMTP server. */
500
+ host: string;
501
+ /**
502
+ * @description TCP port the organization's SMTP server listens on.
503
+ * @default 587
504
+ */
505
+ port: number;
506
+ /**
507
+ * @description Transport encryption to negotiate. `starttls` upgrades a cleartext connection (typically port 587), `tls` opens an implicit TLS connection (typically port 465), and `none` sends in cleartext and is intended only for an internal relay on a trusted network.
508
+ * @default starttls
509
+ * @enum {string}
510
+ */
511
+ encryption: "starttls" | "tls" | "none";
512
+ /**
513
+ * @description SMTP authentication mechanism. `none` is permitted only for a relay that authorizes by source address; a configuration using any other mechanism must carry both a username and a password.
514
+ * @default plain
515
+ * @enum {string}
516
+ */
517
+ authMechanism: "plain" | "cram-md5" | "none";
518
+ /** @description Username presented to the organization's SMTP server. */
519
+ username?: string;
520
+ /** @description Password presented to the organization's SMTP server. Write-only. A read always returns the redaction sentinel `***`; the stored value is encrypted at rest and is never projected into a response. Writing `***` or an empty string preserves the stored password, so a client may round-trip a read without erasing the credential. */
521
+ password?: string;
522
+ /**
523
+ * Format: email
524
+ * @description Address the organization's mail is sent from. Its domain must be verified before the configuration can be enabled.
525
+ */
526
+ fromAddress: string;
527
+ /** @description Display name shown alongside the from address in the message header. */
528
+ fromDisplayName?: string;
529
+ /**
530
+ * Format: email
531
+ * @description Address replies are directed to. It is also the address carried when a message falls back to the provider relay, which rewrites the from address to the provider's own so the message stays aligned for SPF and DMARC.
532
+ */
533
+ replyToAddress?: string;
534
+ /**
535
+ * @description Whether mail is routed through this server. Cannot be set while the from domain is unverified.
536
+ * @default false
537
+ */
538
+ enabled: boolean;
539
+ /**
540
+ * @description Whether a message that this server fails to accept is re-sent through the provider's shared relay. Disabling it means the organization owns delivery entirely and a failure is a dropped message, including account verification and password recovery.
541
+ * @default true
542
+ */
543
+ fallbackToProvider: boolean;
544
+ /** @description Registrable domain of the from address, held separately as the unit that ownership is proven for. */
545
+ fromDomain?: string;
546
+ /** @description Token the organization publishes in DNS to prove control of the from domain. Not a credential - it authorizes nothing and grants no access. */
547
+ fromDomainVerificationToken?: string;
548
+ /**
549
+ * Format: date-time
550
+ * @description Timestamp at which control of the from domain was last proven. Null while unproven.
551
+ */
552
+ fromDomainVerifiedAt?: string | null;
553
+ /**
554
+ * @description Health of the configuration. `unverified` means it has never delivered a test message, `verified` means the last delivery attempt succeeded, and `failing` means consecutive failures have opened the circuit and mail is being handled under the fallback setting without dialling this server.
555
+ * @default unverified
556
+ * @enum {string}
557
+ */
558
+ verificationState: "unverified" | "verified" | "failing";
559
+ /**
560
+ * Format: date-time
561
+ * @description Timestamp of the last message this server accepted.
562
+ */
563
+ lastSuccessAt?: string | null;
564
+ /**
565
+ * Format: date-time
566
+ * @description Timestamp of the last delivery attempt this server rejected or failed to accept.
567
+ */
568
+ lastFailureAt?: string | null;
569
+ /**
570
+ * @description Classification of the last failure. Always a classification, never the remote server's own message: the set is closed on purpose, because reporting a remote server's text back to a caller would turn a refusal into an oracle for what the network can reach.
571
+ * @enum {string}
572
+ */
573
+ lastFailureReason?: "blocked_target" | "connect_refused" | "connect_timeout" | "tls_failed" | "starttls_unsupported" | "auth_rejected" | "relay_rejected_sender" | "relay_rejected_recipient" | "delivery_failed" | "credential_unreadable";
574
+ /**
575
+ * @description Delivery failures since the last success. Drives the circuit that stops dialling a persistently unreachable server.
576
+ * @default 0
577
+ */
578
+ consecutiveFailures: number;
579
+ /**
580
+ * Format: uuid
581
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
582
+ */
583
+ createdBy?: string | null;
584
+ /**
585
+ * Format: date-time
586
+ * @description Timestamp when the configuration was created.
587
+ */
588
+ createdAt: string;
589
+ /**
590
+ * Format: date-time
591
+ * @description Timestamp when the configuration was last changed.
592
+ */
593
+ updatedAt: string;
594
+ /**
595
+ * Format: date-time
596
+ * @description Timestamp when the configuration was soft deleted. Null while it remains active.
597
+ */
598
+ deletedAt?: string | null;
599
+ };
600
+ };
601
+ };
602
+ /** @description Expired JWT token used or insufficient privilege */
603
+ 401: {
604
+ headers: {
605
+ [name: string]: unknown;
606
+ };
607
+ content: {
608
+ "text/plain": string;
609
+ };
610
+ };
611
+ /** @description Caller lacks the permission key required for this organization */
612
+ 403: {
613
+ headers: {
614
+ [name: string]: unknown;
615
+ };
616
+ content: {
617
+ "text/plain": string;
618
+ };
619
+ };
620
+ /** @description Result not found */
621
+ 404: {
622
+ headers: {
623
+ [name: string]: unknown;
624
+ };
625
+ content: {
626
+ "text/plain": string;
627
+ };
628
+ };
629
+ /** @description Internal server error */
630
+ 500: {
631
+ headers: {
632
+ [name: string]: unknown;
633
+ };
634
+ content: {
635
+ "text/plain": string;
636
+ };
637
+ };
638
+ };
639
+ };
640
+ upsertOrganizationSmtpConfiguration: {
641
+ parameters: {
642
+ query?: never;
643
+ header?: never;
644
+ path: {
645
+ /** @description Organization ID */
646
+ orgId: string;
647
+ };
648
+ cookie?: never;
649
+ };
650
+ requestBody: {
651
+ content: {
652
+ "application/json": {
653
+ /**
654
+ * Format: uuid
655
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
656
+ */
657
+ id?: string;
658
+ /** @description Hostname of the organization's SMTP server. */
659
+ host: string;
660
+ /**
661
+ * @description TCP port the organization's SMTP server listens on.
662
+ * @default 587
663
+ */
664
+ port: number;
665
+ /**
666
+ * @description Transport encryption to negotiate. `starttls` upgrades a cleartext connection (typically port 587), `tls` opens an implicit TLS connection (typically port 465), and `none` sends in cleartext.
667
+ * @default starttls
668
+ * @enum {string}
669
+ */
670
+ encryption?: "starttls" | "tls" | "none";
671
+ /**
672
+ * @description SMTP authentication mechanism. Any mechanism other than `none` requires both a username and a password.
673
+ * @default plain
674
+ * @enum {string}
675
+ */
676
+ authMechanism?: "plain" | "cram-md5" | "none";
677
+ /** @description Username presented to the organization's SMTP server. */
678
+ username?: string;
679
+ /** @description Password presented to the organization's SMTP server. Write-only. `***` or an empty string preserves the stored password, so a client may round-trip a read without erasing the credential. */
680
+ password?: string;
681
+ /**
682
+ * Format: email
683
+ * @description Address the organization's mail is sent from. Changing it resets from-domain verification.
684
+ */
685
+ fromAddress: string;
686
+ /** @description Display name shown alongside the from address. */
687
+ fromDisplayName?: string;
688
+ /**
689
+ * Format: email
690
+ * @description Address replies are directed to.
691
+ */
692
+ replyToAddress?: string;
693
+ /**
694
+ * @description Whether mail is routed through this server. Refused while the from domain is unverified.
695
+ * @default false
696
+ */
697
+ enabled?: boolean;
698
+ /**
699
+ * @description Whether a message this server fails to accept is re-sent through the provider's shared relay. Disabling it means a failure is a dropped message, account verification and password recovery included.
700
+ * @default true
701
+ */
702
+ fallbackToProvider?: boolean;
703
+ };
704
+ };
705
+ };
706
+ responses: {
707
+ /** @description The stored SMTP configuration. */
708
+ 200: {
709
+ headers: {
710
+ [name: string]: unknown;
711
+ };
712
+ content: {
713
+ "application/json": {
714
+ /**
715
+ * Format: uuid
716
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
717
+ */
718
+ id: string;
719
+ /**
720
+ * Format: uuid
721
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
722
+ */
723
+ organizationId: string;
724
+ /** @description Hostname of the organization's SMTP server. */
725
+ host: string;
726
+ /**
727
+ * @description TCP port the organization's SMTP server listens on.
728
+ * @default 587
729
+ */
730
+ port: number;
731
+ /**
732
+ * @description Transport encryption to negotiate. `starttls` upgrades a cleartext connection (typically port 587), `tls` opens an implicit TLS connection (typically port 465), and `none` sends in cleartext and is intended only for an internal relay on a trusted network.
733
+ * @default starttls
734
+ * @enum {string}
735
+ */
736
+ encryption: "starttls" | "tls" | "none";
737
+ /**
738
+ * @description SMTP authentication mechanism. `none` is permitted only for a relay that authorizes by source address; a configuration using any other mechanism must carry both a username and a password.
739
+ * @default plain
740
+ * @enum {string}
741
+ */
742
+ authMechanism: "plain" | "cram-md5" | "none";
743
+ /** @description Username presented to the organization's SMTP server. */
744
+ username?: string;
745
+ /** @description Password presented to the organization's SMTP server. Write-only. A read always returns the redaction sentinel `***`; the stored value is encrypted at rest and is never projected into a response. Writing `***` or an empty string preserves the stored password, so a client may round-trip a read without erasing the credential. */
746
+ password?: string;
747
+ /**
748
+ * Format: email
749
+ * @description Address the organization's mail is sent from. Its domain must be verified before the configuration can be enabled.
750
+ */
751
+ fromAddress: string;
752
+ /** @description Display name shown alongside the from address in the message header. */
753
+ fromDisplayName?: string;
754
+ /**
755
+ * Format: email
756
+ * @description Address replies are directed to. It is also the address carried when a message falls back to the provider relay, which rewrites the from address to the provider's own so the message stays aligned for SPF and DMARC.
757
+ */
758
+ replyToAddress?: string;
759
+ /**
760
+ * @description Whether mail is routed through this server. Cannot be set while the from domain is unverified.
761
+ * @default false
762
+ */
763
+ enabled: boolean;
764
+ /**
765
+ * @description Whether a message that this server fails to accept is re-sent through the provider's shared relay. Disabling it means the organization owns delivery entirely and a failure is a dropped message, including account verification and password recovery.
766
+ * @default true
767
+ */
768
+ fallbackToProvider: boolean;
769
+ /** @description Registrable domain of the from address, held separately as the unit that ownership is proven for. */
770
+ fromDomain?: string;
771
+ /** @description Token the organization publishes in DNS to prove control of the from domain. Not a credential - it authorizes nothing and grants no access. */
772
+ fromDomainVerificationToken?: string;
773
+ /**
774
+ * Format: date-time
775
+ * @description Timestamp at which control of the from domain was last proven. Null while unproven.
776
+ */
777
+ fromDomainVerifiedAt?: string | null;
778
+ /**
779
+ * @description Health of the configuration. `unverified` means it has never delivered a test message, `verified` means the last delivery attempt succeeded, and `failing` means consecutive failures have opened the circuit and mail is being handled under the fallback setting without dialling this server.
780
+ * @default unverified
781
+ * @enum {string}
782
+ */
783
+ verificationState: "unverified" | "verified" | "failing";
784
+ /**
785
+ * Format: date-time
786
+ * @description Timestamp of the last message this server accepted.
787
+ */
788
+ lastSuccessAt?: string | null;
789
+ /**
790
+ * Format: date-time
791
+ * @description Timestamp of the last delivery attempt this server rejected or failed to accept.
792
+ */
793
+ lastFailureAt?: string | null;
794
+ /**
795
+ * @description Classification of the last failure. Always a classification, never the remote server's own message: the set is closed on purpose, because reporting a remote server's text back to a caller would turn a refusal into an oracle for what the network can reach.
796
+ * @enum {string}
797
+ */
798
+ lastFailureReason?: "blocked_target" | "connect_refused" | "connect_timeout" | "tls_failed" | "starttls_unsupported" | "auth_rejected" | "relay_rejected_sender" | "relay_rejected_recipient" | "delivery_failed" | "credential_unreadable";
799
+ /**
800
+ * @description Delivery failures since the last success. Drives the circuit that stops dialling a persistently unreachable server.
801
+ * @default 0
802
+ */
803
+ consecutiveFailures: number;
804
+ /**
805
+ * Format: uuid
806
+ * @description A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
807
+ */
808
+ createdBy?: string | null;
809
+ /**
810
+ * Format: date-time
811
+ * @description Timestamp when the configuration was created.
812
+ */
813
+ createdAt: string;
814
+ /**
815
+ * Format: date-time
816
+ * @description Timestamp when the configuration was last changed.
817
+ */
818
+ updatedAt: string;
819
+ /**
820
+ * Format: date-time
821
+ * @description Timestamp when the configuration was soft deleted. Null while it remains active.
822
+ */
823
+ deletedAt?: string | null;
824
+ };
825
+ };
826
+ };
827
+ /** @description Invalid request body or request param */
828
+ 400: {
829
+ headers: {
830
+ [name: string]: unknown;
831
+ };
832
+ content: {
833
+ "text/plain": string;
834
+ };
835
+ };
836
+ /** @description Expired JWT token used or insufficient privilege */
837
+ 401: {
838
+ headers: {
839
+ [name: string]: unknown;
840
+ };
841
+ content: {
842
+ "text/plain": string;
843
+ };
844
+ };
845
+ /** @description Caller lacks the permission key required for this organization */
846
+ 403: {
847
+ headers: {
848
+ [name: string]: unknown;
849
+ };
850
+ content: {
851
+ "text/plain": string;
852
+ };
853
+ };
854
+ /** @description Result not found */
855
+ 404: {
856
+ headers: {
857
+ [name: string]: unknown;
858
+ };
859
+ content: {
860
+ "text/plain": string;
861
+ };
862
+ };
863
+ /** @description Internal server error */
864
+ 500: {
865
+ headers: {
866
+ [name: string]: unknown;
867
+ };
868
+ content: {
869
+ "text/plain": string;
870
+ };
871
+ };
872
+ };
873
+ };
874
+ deleteOrganizationSmtpConfiguration: {
875
+ parameters: {
876
+ query?: never;
877
+ header?: never;
878
+ path: {
879
+ /** @description Organization ID */
880
+ orgId: string;
881
+ };
882
+ cookie?: never;
883
+ };
884
+ requestBody?: never;
885
+ responses: {
886
+ /** @description The configuration was removed. */
887
+ 204: {
888
+ headers: {
889
+ [name: string]: unknown;
890
+ };
891
+ content?: never;
892
+ };
893
+ /** @description Expired JWT token used or insufficient privilege */
894
+ 401: {
895
+ headers: {
896
+ [name: string]: unknown;
897
+ };
898
+ content: {
899
+ "text/plain": string;
900
+ };
901
+ };
902
+ /** @description Caller lacks the permission key required for this organization */
903
+ 403: {
904
+ headers: {
905
+ [name: string]: unknown;
906
+ };
907
+ content: {
908
+ "text/plain": string;
909
+ };
910
+ };
911
+ /** @description Result not found */
912
+ 404: {
913
+ headers: {
914
+ [name: string]: unknown;
915
+ };
916
+ content: {
917
+ "text/plain": string;
918
+ };
919
+ };
920
+ /** @description Internal server error */
921
+ 500: {
922
+ headers: {
923
+ [name: string]: unknown;
924
+ };
925
+ content: {
926
+ "text/plain": string;
927
+ };
928
+ };
929
+ };
930
+ };
931
+ testOrganizationSmtpConfiguration: {
932
+ parameters: {
933
+ query?: never;
934
+ header?: never;
935
+ path: {
936
+ /** @description Organization ID */
937
+ orgId: string;
938
+ };
939
+ cookie?: never;
940
+ };
941
+ requestBody?: {
942
+ content: {
943
+ "application/json": {
944
+ /**
945
+ * Format: email
946
+ * @description Recipient of the test message. Defaults to the calling administrator's own address.
947
+ */
948
+ to?: string;
949
+ };
950
+ };
951
+ };
952
+ responses: {
953
+ /** @description The classified outcome of the delivery attempt. */
954
+ 200: {
955
+ headers: {
956
+ [name: string]: unknown;
957
+ };
958
+ content: {
959
+ "application/json": {
960
+ /**
961
+ * @description What happened. `delivered` means the server accepted the message; every other value names the stage that refused it.
962
+ * @enum {string}
963
+ */
964
+ outcome: "delivered" | "blocked_target" | "connect_refused" | "connect_timeout" | "tls_failed" | "starttls_unsupported" | "auth_rejected" | "relay_rejected_sender" | "relay_rejected_recipient" | "delivery_failed" | "credential_unreadable";
965
+ /** @description Human-readable summary of the outcome, drawn from a fixed set of phrasings. */
966
+ message?: string;
967
+ /**
968
+ * Format: email
969
+ * @description Address the test message was addressed to.
970
+ */
971
+ sentTo?: string;
972
+ /**
973
+ * Format: date-time
974
+ * @description When the delivery was attempted.
975
+ */
976
+ testedAt: string;
977
+ };
978
+ };
979
+ };
980
+ /** @description Invalid request body or request param */
981
+ 400: {
982
+ headers: {
983
+ [name: string]: unknown;
984
+ };
985
+ content: {
986
+ "text/plain": string;
987
+ };
988
+ };
989
+ /** @description Expired JWT token used or insufficient privilege */
990
+ 401: {
991
+ headers: {
992
+ [name: string]: unknown;
993
+ };
994
+ content: {
995
+ "text/plain": string;
996
+ };
997
+ };
998
+ /** @description Caller lacks the permission key required for this organization */
999
+ 403: {
1000
+ headers: {
1001
+ [name: string]: unknown;
1002
+ };
1003
+ content: {
1004
+ "text/plain": string;
1005
+ };
1006
+ };
1007
+ /** @description Result not found */
1008
+ 404: {
1009
+ headers: {
1010
+ [name: string]: unknown;
1011
+ };
1012
+ content: {
1013
+ "text/plain": string;
1014
+ };
1015
+ };
1016
+ /** @description Too many attempts for this organization */
1017
+ 429: {
1018
+ headers: {
1019
+ [name: string]: unknown;
1020
+ };
1021
+ content: {
1022
+ "text/plain": string;
1023
+ };
1024
+ };
1025
+ /** @description Internal server error */
1026
+ 500: {
1027
+ headers: {
1028
+ [name: string]: unknown;
1029
+ };
1030
+ content: {
1031
+ "text/plain": string;
1032
+ };
1033
+ };
1034
+ };
1035
+ };
1036
+ getOrganizationSmtpDomainVerification: {
1037
+ parameters: {
1038
+ query?: never;
1039
+ header?: never;
1040
+ path: {
1041
+ /** @description Organization ID */
1042
+ orgId: string;
1043
+ };
1044
+ cookie?: never;
1045
+ };
1046
+ requestBody?: never;
1047
+ responses: {
1048
+ /** @description The verification challenge and its current state. */
1049
+ 200: {
1050
+ headers: {
1051
+ [name: string]: unknown;
1052
+ };
1053
+ content: {
1054
+ "application/json": {
1055
+ /** @description Registrable domain the proof applies to. */
1056
+ domain: string;
1057
+ /**
1058
+ * @description How the domain is proven. `custom-domain` means it matches the organization's own registered custom domain and needs no record; `dns-txt` means the record below must be published.
1059
+ * @enum {string}
1060
+ */
1061
+ method: "custom-domain" | "dns-txt";
1062
+ /** @description Fully qualified name of the TXT record to publish. */
1063
+ recordName?: string;
1064
+ /** @description Value the TXT record must carry. */
1065
+ recordValue?: string;
1066
+ /** @description Whether control of the domain is currently proven. */
1067
+ verified: boolean;
1068
+ /**
1069
+ * Format: date-time
1070
+ * @description When control was last proven. Null while unproven.
1071
+ */
1072
+ verifiedAt?: string | null;
1073
+ /**
1074
+ * @description Why the last check did not prove control.
1075
+ * @enum {string}
1076
+ */
1077
+ failureReason?: "record_not_found" | "record_mismatch" | "lookup_failed" | "domain_reserved";
1078
+ };
1079
+ };
1080
+ };
1081
+ /** @description Expired JWT token used or insufficient privilege */
1082
+ 401: {
1083
+ headers: {
1084
+ [name: string]: unknown;
1085
+ };
1086
+ content: {
1087
+ "text/plain": string;
1088
+ };
1089
+ };
1090
+ /** @description Caller lacks the permission key required for this organization */
1091
+ 403: {
1092
+ headers: {
1093
+ [name: string]: unknown;
1094
+ };
1095
+ content: {
1096
+ "text/plain": string;
1097
+ };
1098
+ };
1099
+ /** @description Result not found */
1100
+ 404: {
1101
+ headers: {
1102
+ [name: string]: unknown;
1103
+ };
1104
+ content: {
1105
+ "text/plain": string;
1106
+ };
1107
+ };
1108
+ /** @description Internal server error */
1109
+ 500: {
1110
+ headers: {
1111
+ [name: string]: unknown;
1112
+ };
1113
+ content: {
1114
+ "text/plain": string;
1115
+ };
1116
+ };
1117
+ };
1118
+ };
1119
+ verifyOrganizationSmtpDomain: {
1120
+ parameters: {
1121
+ query?: never;
1122
+ header?: never;
1123
+ path: {
1124
+ /** @description Organization ID */
1125
+ orgId: string;
1126
+ };
1127
+ cookie?: never;
1128
+ };
1129
+ requestBody?: never;
1130
+ responses: {
1131
+ /** @description The outcome of the verification check. */
1132
+ 200: {
1133
+ headers: {
1134
+ [name: string]: unknown;
1135
+ };
1136
+ content: {
1137
+ "application/json": {
1138
+ /** @description Registrable domain the proof applies to. */
1139
+ domain: string;
1140
+ /**
1141
+ * @description How the domain is proven. `custom-domain` means it matches the organization's own registered custom domain and needs no record; `dns-txt` means the record below must be published.
1142
+ * @enum {string}
1143
+ */
1144
+ method: "custom-domain" | "dns-txt";
1145
+ /** @description Fully qualified name of the TXT record to publish. */
1146
+ recordName?: string;
1147
+ /** @description Value the TXT record must carry. */
1148
+ recordValue?: string;
1149
+ /** @description Whether control of the domain is currently proven. */
1150
+ verified: boolean;
1151
+ /**
1152
+ * Format: date-time
1153
+ * @description When control was last proven. Null while unproven.
1154
+ */
1155
+ verifiedAt?: string | null;
1156
+ /**
1157
+ * @description Why the last check did not prove control.
1158
+ * @enum {string}
1159
+ */
1160
+ failureReason?: "record_not_found" | "record_mismatch" | "lookup_failed" | "domain_reserved";
1161
+ };
1162
+ };
1163
+ };
1164
+ /** @description Invalid request body or request param */
1165
+ 400: {
1166
+ headers: {
1167
+ [name: string]: unknown;
1168
+ };
1169
+ content: {
1170
+ "text/plain": string;
1171
+ };
1172
+ };
1173
+ /** @description Expired JWT token used or insufficient privilege */
1174
+ 401: {
1175
+ headers: {
1176
+ [name: string]: unknown;
1177
+ };
1178
+ content: {
1179
+ "text/plain": string;
1180
+ };
1181
+ };
1182
+ /** @description Caller lacks the permission key required for this organization */
1183
+ 403: {
1184
+ headers: {
1185
+ [name: string]: unknown;
1186
+ };
1187
+ content: {
1188
+ "text/plain": string;
1189
+ };
1190
+ };
1191
+ /** @description Result not found */
1192
+ 404: {
1193
+ headers: {
1194
+ [name: string]: unknown;
1195
+ };
1196
+ content: {
1197
+ "text/plain": string;
1198
+ };
1199
+ };
1200
+ /** @description Too many attempts for this organization */
1201
+ 429: {
1202
+ headers: {
1203
+ [name: string]: unknown;
1204
+ };
1205
+ content: {
1206
+ "text/plain": string;
1207
+ };
1208
+ };
1209
+ /** @description Internal server error */
1210
+ 500: {
1211
+ headers: {
1212
+ [name: string]: unknown;
1213
+ };
1214
+ content: {
1215
+ "text/plain": string;
1216
+ };
1217
+ };
1218
+ };
1219
+ };
1220
+ }