@opusdns/api 1.159.0 → 1.160.0

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.
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "@opusdns/api-spec-ts-generator": "^1.5.0"
4
4
  },
5
5
  "name": "@opusdns/api",
6
- "version": "1.159.0",
6
+ "version": "1.160.0",
7
7
  "description": "TypeScript types for the OpusDNS OpenAPI specification",
8
8
  "main": "./src/index.ts",
9
9
  "module": "./src/index.ts",
@@ -147,6 +147,9 @@ export const VANITY_NAMESERVER_SETS_BY_SET_ID_RESTORE_ENDPOINT = '/v1/vanity-nam
147
147
  export const VANITY_NAMESERVER_SETS_BY_SET_ID_RETRY_ENDPOINT = '/v1/vanity-nameserver-sets/{set_id}/retry';
148
148
  export const VANITY_NAMESERVER_SETS_BY_SET_ID_ZONES_ENDPOINT = '/v1/vanity-nameserver-sets/{set_id}/zones';
149
149
  export const WHITELABEL_BRANDING_ENDPOINT = '/v1/whitelabel-branding';
150
+ export const WHITELABEL_BRANDING_ASSETS_ENDPOINT = '/v1/whitelabel-branding/assets';
151
+ export const WHITELABEL_BRANDING_ASSETS_BY_ASSET_ID_ENDPOINT = '/v1/whitelabel-branding/assets/{asset_id}';
152
+ export const WHITELABEL_BRANDING_DOCUMENT_ENDPOINT = '/v1/whitelabel-branding/document';
150
153
  export const WHITELABEL_BRANDING_EMAIL_PREVIEW_ENDPOINT = '/v1/whitelabel-branding/email/preview';
151
154
  export const WHITELABEL_BRANDING_EMAIL_TEMPLATES_ENDPOINT = '/v1/whitelabel-branding/email/templates';
152
155
  export const WHITELABEL_BRANDING_RECHECK_ENDPOINT = '/v1/whitelabel-branding/recheck';
@@ -303,6 +306,9 @@ export type Endpoint =
303
306
  | typeof VANITY_NAMESERVER_SETS_BY_SET_ID_RETRY_ENDPOINT
304
307
  | typeof VANITY_NAMESERVER_SETS_BY_SET_ID_ZONES_ENDPOINT
305
308
  | typeof WHITELABEL_BRANDING_ENDPOINT
309
+ | typeof WHITELABEL_BRANDING_ASSETS_ENDPOINT
310
+ | typeof WHITELABEL_BRANDING_ASSETS_BY_ASSET_ID_ENDPOINT
311
+ | typeof WHITELABEL_BRANDING_DOCUMENT_ENDPOINT
306
312
  | typeof WHITELABEL_BRANDING_EMAIL_PREVIEW_ENDPOINT
307
313
  | typeof WHITELABEL_BRANDING_EMAIL_TEMPLATES_ENDPOINT
308
314
  | typeof WHITELABEL_BRANDING_RECHECK_ENDPOINT
@@ -13,7 +13,9 @@ import type {
13
13
  Auth,
14
14
  BillingMetadata,
15
15
  BillingTransaction,
16
+ Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post,
16
17
  Brand,
18
+ BrandingAsset,
17
19
  BrandingDocument,
18
20
  BrowserStatsBucket,
19
21
  BulkObjectTagChanges,
@@ -281,6 +283,7 @@ import type {
281
283
  LaunchPhasesBase,
282
284
  Legal,
283
285
  LegalRequirementBase,
286
+ ListBrandingAssets,
284
287
  ListVanityNameserverSetsRes,
285
288
  ListZonesReferencingSetRes,
286
289
  LocalPresenceBase,
@@ -645,6 +648,12 @@ export const KEYS_BILLING_TRANSACTION = [
645
648
  KEY_BILLING_TRANSACTION_VOLUME,
646
649
  ] as const satisfies (keyof BillingTransaction)[];
647
650
 
651
+ export const KEY_BODY_UPLOAD_WHITELABEL_ASSET_V1_WHITELABEL_BRANDING_ASSETS_POST_FILE = 'file' satisfies keyof Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post;
652
+
653
+ export const KEYS_BODY_UPLOAD_WHITELABEL_ASSET_V1_WHITELABEL_BRANDING_ASSETS_POST = [
654
+ KEY_BODY_UPLOAD_WHITELABEL_ASSET_V1_WHITELABEL_BRANDING_ASSETS_POST_FILE,
655
+ ] as const satisfies (keyof Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post)[];
656
+
648
657
  export const KEY_BRAND_LOGO = 'logo' satisfies keyof Brand;
649
658
  export const KEY_BRAND_NAME = 'name' satisfies keyof Brand;
650
659
 
@@ -653,6 +662,20 @@ export const KEYS_BRAND = [
653
662
  KEY_BRAND_NAME,
654
663
  ] as const satisfies (keyof Brand)[];
655
664
 
665
+ export const KEY_BRANDING_ASSET_ASSET_ID = 'asset_id' satisfies keyof BrandingAsset;
666
+ export const KEY_BRANDING_ASSET_ASSET_URL = 'asset_url' satisfies keyof BrandingAsset;
667
+ export const KEY_BRANDING_ASSET_CONTENT_TYPE = 'content_type' satisfies keyof BrandingAsset;
668
+ export const KEY_BRANDING_ASSET_SIZE_BYTES = 'size_bytes' satisfies keyof BrandingAsset;
669
+ export const KEY_BRANDING_ASSET_UPDATED_ON = 'updated_on' satisfies keyof BrandingAsset;
670
+
671
+ export const KEYS_BRANDING_ASSET = [
672
+ KEY_BRANDING_ASSET_ASSET_ID,
673
+ KEY_BRANDING_ASSET_ASSET_URL,
674
+ KEY_BRANDING_ASSET_CONTENT_TYPE,
675
+ KEY_BRANDING_ASSET_SIZE_BYTES,
676
+ KEY_BRANDING_ASSET_UPDATED_ON,
677
+ ] as const satisfies (keyof BrandingAsset)[];
678
+
656
679
  export const KEY_BRANDING_DOCUMENT_AUTH = 'auth' satisfies keyof BrandingDocument;
657
680
  export const KEY_BRANDING_DOCUMENT_BRAND = 'brand' satisfies keyof BrandingDocument;
658
681
  export const KEY_BRANDING_DOCUMENT_CONTENT = 'content' satisfies keyof BrandingDocument;
@@ -3911,6 +3934,12 @@ export const KEYS_LEGAL_REQUIREMENT_BASE = [
3911
3934
  KEY_LEGAL_REQUIREMENT_BASE_URL,
3912
3935
  ] as const satisfies (keyof LegalRequirementBase)[];
3913
3936
 
3937
+ export const KEY_LIST_BRANDING_ASSETS_ASSETS = 'assets' satisfies keyof ListBrandingAssets;
3938
+
3939
+ export const KEYS_LIST_BRANDING_ASSETS = [
3940
+ KEY_LIST_BRANDING_ASSETS_ASSETS,
3941
+ ] as const satisfies (keyof ListBrandingAssets)[];
3942
+
3914
3943
  export const KEY_LIST_VANITY_NAMESERVER_SETS_RES_PAGINATION = 'pagination' satisfies keyof ListVanityNameserverSetsRes;
3915
3944
  export const KEY_LIST_VANITY_NAMESERVER_SETS_RES_RESULTS = 'results' satisfies keyof ListVanityNameserverSetsRes;
3916
3945
 
@@ -150,6 +150,9 @@ import {
150
150
  VANITY_NAMESERVER_SETS_CHECK_ENDPOINT,
151
151
  VANITY_NAMESERVER_SETS_DEFAULT_ENDPOINT,
152
152
  VANITY_NAMESERVER_SETS_ENDPOINT,
153
+ WHITELABEL_BRANDING_ASSETS_BY_ASSET_ID_ENDPOINT,
154
+ WHITELABEL_BRANDING_ASSETS_ENDPOINT,
155
+ WHITELABEL_BRANDING_DOCUMENT_ENDPOINT,
153
156
  WHITELABEL_BRANDING_EMAIL_PREVIEW_ENDPOINT,
154
157
  WHITELABEL_BRANDING_EMAIL_TEMPLATES_ENDPOINT,
155
158
  WHITELABEL_BRANDING_ENDPOINT,
@@ -1260,6 +1263,27 @@ export const REQUIRED_PERMISSIONS = {
1260
1263
  patch: [],
1261
1264
  delete: [],
1262
1265
  },
1266
+ [WHITELABEL_BRANDING_ASSETS_BY_ASSET_ID_ENDPOINT]: {
1267
+ get: [],
1268
+ post: [],
1269
+ put: [],
1270
+ patch: [],
1271
+ delete: [PUBLIC_PERMISSION.WHITELABEL_BRANDING_MANAGE],
1272
+ },
1273
+ [WHITELABEL_BRANDING_ASSETS_ENDPOINT]: {
1274
+ get: [PUBLIC_PERMISSION.WHITELABEL_BRANDING_READ],
1275
+ post: [PUBLIC_PERMISSION.WHITELABEL_BRANDING_MANAGE],
1276
+ put: [],
1277
+ patch: [],
1278
+ delete: [],
1279
+ },
1280
+ [WHITELABEL_BRANDING_DOCUMENT_ENDPOINT]: {
1281
+ get: [PUBLIC_PERMISSION.WHITELABEL_BRANDING_READ],
1282
+ post: [PUBLIC_PERMISSION.WHITELABEL_BRANDING_MANAGE],
1283
+ put: [PUBLIC_PERMISSION.WHITELABEL_BRANDING_MANAGE],
1284
+ patch: [],
1285
+ delete: [],
1286
+ },
1263
1287
  [WHITELABEL_BRANDING_EMAIL_PREVIEW_ENDPOINT]: {
1264
1288
  get: [],
1265
1289
  post: [PUBLIC_PERMISSION.WHITELABEL_BRANDING_MANAGE],
@@ -1,5 +1,6 @@
1
1
  import type { operations } from '../schema';
2
2
  import type {
3
+ BrandingDocument,
3
4
  BulkObjectTagChanges,
4
5
  ClaimsNoticesRequest,
5
6
  ContactAttestReq,
@@ -1191,6 +1192,30 @@ export type PATCH_WhitelabelBranding_Request_Body = PATCH_WhitelabelBranding_Req
1191
1192
  export type POST_WhitelabelBranding_Request = {
1192
1193
  };
1193
1194
 
1195
+ export type GET_WhitelabelBrandingAssets_Request = {
1196
+ };
1197
+
1198
+ export type POST_WhitelabelBrandingAssets_Request = {
1199
+ };
1200
+
1201
+ export type DELETE_WhitelabelBrandingAssetsByAssetId_Request = {
1202
+ parameters: operations['delete_whitelabel_asset_v1_whitelabel_branding_assets__asset_id__delete']['parameters'];
1203
+ };
1204
+ export type DELETE_WhitelabelBrandingAssetsByAssetId_Request_Path = DELETE_WhitelabelBrandingAssetsByAssetId_Request['parameters']['path'];
1205
+
1206
+ export type GET_WhitelabelBrandingDocument_Request = {
1207
+ };
1208
+
1209
+ export type POST_WhitelabelBrandingDocument_Request = {
1210
+ requestBody: BrandingDocument;
1211
+ };
1212
+ export type POST_WhitelabelBrandingDocument_Request_Body = POST_WhitelabelBrandingDocument_Request['requestBody'];
1213
+
1214
+ export type PUT_WhitelabelBrandingDocument_Request = {
1215
+ requestBody: BrandingDocument;
1216
+ };
1217
+ export type PUT_WhitelabelBrandingDocument_Request_Body = PUT_WhitelabelBrandingDocument_Request['requestBody'];
1218
+
1194
1219
  export type POST_WhitelabelBrandingEmailPreview_Request = {
1195
1220
  requestBody: PreviewMailReq;
1196
1221
  };
@@ -2,6 +2,8 @@ import type {
2
2
  AiInferenceUsageSeries,
3
3
  AiInferenceUsageSummary,
4
4
  BillingTransaction,
5
+ BrandingAsset,
6
+ BrandingDocument,
5
7
  ClaimsNotices,
6
8
  ClearVanityNameserverSetDefaultRes,
7
9
  Contact,
@@ -51,6 +53,7 @@ import type {
51
53
  Job,
52
54
  JobBatchRetry,
53
55
  JobBatchStatus,
56
+ ListBrandingAssets,
54
57
  ListVanityNameserverSetsRes,
55
58
  ListZonesReferencingSetRes,
56
59
  MailTemplateCatalogRes,
@@ -256,6 +259,10 @@ export type DELETE_VanityNameserverSetsDefault_Response = DELETE_VanityNameserve
256
259
  export type DELETE_VanityNameserverSetsDefault_Response_200 = ClearVanityNameserverSetDefaultRes;
257
260
  export type DELETE_VanityNameserverSetsDefault_Response_422 = HTTPValidationError;
258
261
 
262
+ export type DELETE_WhitelabelBrandingAssetsByAssetId_Response = DELETE_WhitelabelBrandingAssetsByAssetId_Response_422;
263
+
264
+ export type DELETE_WhitelabelBrandingAssetsByAssetId_Response_422 = HTTPValidationError;
265
+
259
266
  export type GET_AiConciergeContextsByContextId_Response = GET_AiConciergeContextsByContextId_Response_401 | GET_AiConciergeContextsByContextId_Response_404 | GET_AiConciergeContextsByContextId_Response_422 | GET_AiConciergeContextsByContextId_Response_502;
260
267
 
261
268
  export type GET_AiConciergeContextsByContextId_Response_401 = Problem;
@@ -875,6 +882,16 @@ export type GET_WhitelabelBranding_Response = GET_WhitelabelBranding_Response_20
875
882
  export type GET_WhitelabelBranding_Response_200 = WhitelabelBranding;
876
883
  export type GET_WhitelabelBranding_Response_422 = HTTPValidationError;
877
884
 
885
+ export type GET_WhitelabelBrandingAssets_Response = GET_WhitelabelBrandingAssets_Response_200 | GET_WhitelabelBrandingAssets_Response_422;
886
+
887
+ export type GET_WhitelabelBrandingAssets_Response_200 = ListBrandingAssets;
888
+ export type GET_WhitelabelBrandingAssets_Response_422 = HTTPValidationError;
889
+
890
+ export type GET_WhitelabelBrandingDocument_Response = GET_WhitelabelBrandingDocument_Response_200 | GET_WhitelabelBrandingDocument_Response_422;
891
+
892
+ export type GET_WhitelabelBrandingDocument_Response_200 = BrandingDocument;
893
+ export type GET_WhitelabelBrandingDocument_Response_422 = HTTPValidationError;
894
+
878
895
  export type GET_WhitelabelBrandingEmailTemplates_Response = GET_WhitelabelBrandingEmailTemplates_Response_200 | GET_WhitelabelBrandingEmailTemplates_Response_422;
879
896
 
880
897
  export type GET_WhitelabelBrandingEmailTemplates_Response_200 = MailTemplateCatalogRes;
@@ -1446,6 +1463,16 @@ export type POST_WhitelabelBranding_Response = POST_WhitelabelBranding_Response_
1446
1463
  export type POST_WhitelabelBranding_Response_202 = ProductCreateRes;
1447
1464
  export type POST_WhitelabelBranding_Response_422 = HTTPValidationError;
1448
1465
 
1466
+ export type POST_WhitelabelBrandingAssets_Response = POST_WhitelabelBrandingAssets_Response_200 | POST_WhitelabelBrandingAssets_Response_422;
1467
+
1468
+ export type POST_WhitelabelBrandingAssets_Response_200 = BrandingAsset;
1469
+ export type POST_WhitelabelBrandingAssets_Response_422 = HTTPValidationError;
1470
+
1471
+ export type POST_WhitelabelBrandingDocument_Response = POST_WhitelabelBrandingDocument_Response_200 | POST_WhitelabelBrandingDocument_Response_422;
1472
+
1473
+ export type POST_WhitelabelBrandingDocument_Response_200 = BrandingDocument;
1474
+ export type POST_WhitelabelBrandingDocument_Response_422 = HTTPValidationError;
1475
+
1449
1476
  export type POST_WhitelabelBrandingEmailPreview_Response = POST_WhitelabelBrandingEmailPreview_Response_200 | POST_WhitelabelBrandingEmailPreview_Response_422;
1450
1477
 
1451
1478
  export type POST_WhitelabelBrandingEmailPreview_Response_200 = PreviewMailRes;
@@ -1529,3 +1556,8 @@ export type PUT_UsersByUserIdRole_Response_200 = PublicRoleAssignment;
1529
1556
  export type PUT_UsersByUserIdRole_Response_403 = Problem;
1530
1557
  export type PUT_UsersByUserIdRole_Response_404 = Problem;
1531
1558
  export type PUT_UsersByUserIdRole_Response_422 = HTTPValidationError;
1559
+
1560
+ export type PUT_WhitelabelBrandingDocument_Response = PUT_WhitelabelBrandingDocument_Response_200 | PUT_WhitelabelBrandingDocument_Response_422;
1561
+
1562
+ export type PUT_WhitelabelBrandingDocument_Response_200 = BrandingDocument;
1563
+ export type PUT_WhitelabelBrandingDocument_Response_422 = HTTPValidationError;
@@ -25,7 +25,9 @@ export type BillingTransactionProductType = components['schemas']['BillingTransa
25
25
  export type BillingTransaction = components['schemas']['BillingTransactionResponse'];
26
26
  export type BillingTransactionSortField = components['schemas']['BillingTransactionSortField'];
27
27
  export type BillingTransactionStatus = components['schemas']['BillingTransactionStatus'];
28
+ export type Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post = components['schemas']['Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post'];
28
29
  export type Brand = components['schemas']['Brand'];
30
+ export type BrandingAsset = components['schemas']['BrandingAsset'];
29
31
  export type BrandingDocument = components['schemas']['BrandingDocument'];
30
32
  export type BrowserStatsBucket = components['schemas']['BrowserStatsBucket'];
31
33
  export type BulkObjectTagChanges = components['schemas']['BulkObjectTagChanges'];
@@ -352,6 +354,7 @@ export type Legal = components['schemas']['Legal'];
352
354
  export type LegalRequirementBase = components['schemas']['LegalRequirementBase'];
353
355
  export type LegalRequirementOperationType = components['schemas']['LegalRequirementOperationType'];
354
356
  export type LegalRequirementType = components['schemas']['LegalRequirementType'];
357
+ export type ListBrandingAssets = components['schemas']['ListBrandingAssetsResponse'];
355
358
  export type ListVanityNameserverSetsRes = components['schemas']['ListVanityNameserverSetsRes'];
356
359
  export type ListZonesReferencingSetRes = components['schemas']['ListZonesReferencingSetRes'];
357
360
  export type LocalPresenceBase = components['schemas']['LocalPresenceBase'];
package/src/openapi.yaml CHANGED
@@ -536,6 +536,17 @@ components:
536
536
  - canceled
537
537
  title: BillingTransactionStatus
538
538
  type: string
539
+ Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post:
540
+ properties:
541
+ file:
542
+ contentMediaType: application/octet-stream
543
+ description: Asset file (image/font)
544
+ title: File
545
+ type: string
546
+ required:
547
+ - file
548
+ title: Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post
549
+ type: object
539
550
  Brand:
540
551
  properties:
541
552
  logo:
@@ -551,6 +562,38 @@ components:
551
562
  title: Name
552
563
  title: Brand
553
564
  type: object
565
+ BrandingAsset:
566
+ properties:
567
+ asset_id:
568
+ description: Opaque handle used to delete or reference the asset
569
+ title: Asset Id
570
+ type: string
571
+ asset_url:
572
+ description: Public URL of the asset
573
+ title: Asset Url
574
+ type: string
575
+ content_type:
576
+ anyOf:
577
+ - type: string
578
+ - type: 'null'
579
+ description: MIME type of the asset
580
+ title: Content Type
581
+ size_bytes:
582
+ description: Asset size in bytes
583
+ title: Size Bytes
584
+ type: integer
585
+ updated_on:
586
+ description: Last-modified timestamp
587
+ format: date-time
588
+ title: Updated On
589
+ type: string
590
+ required:
591
+ - asset_id
592
+ - asset_url
593
+ - size_bytes
594
+ - updated_on
595
+ title: BrandingAsset
596
+ type: object
554
597
  BrandingDocument:
555
598
  properties:
556
599
  auth:
@@ -9421,6 +9464,16 @@ components:
9421
9464
  - confirmation
9422
9465
  title: LegalRequirementType
9423
9466
  type: string
9467
+ ListBrandingAssetsResponse:
9468
+ properties:
9469
+ assets:
9470
+ description: Uploaded assets, most recent first
9471
+ items:
9472
+ $ref: '#/components/schemas/BrandingAsset'
9473
+ title: Assets
9474
+ type: array
9475
+ title: ListBrandingAssetsResponse
9476
+ type: object
9424
9477
  ListVanityNameserverSetsRes:
9425
9478
  properties:
9426
9479
  pagination:
@@ -9525,12 +9578,7 @@ components:
9525
9578
  title: Logo
9526
9579
  type: object
9527
9580
  MailTemplate:
9528
- description: 'One editable transactional email template. This is the public
9529
- catalog entry:
9530
-
9531
- mail-service''s operational fields (engine, internal, whitelabel, brand_defaults)
9532
-
9533
- are deliberately not declared, so the response model drops them.'
9581
+ description: One editable transactional email template in the catalog.
9534
9582
  properties:
9535
9583
  blocks:
9536
9584
  additionalProperties:
@@ -9604,12 +9652,8 @@ components:
9604
9652
  title: MailTemplateCatalogRes
9605
9653
  type: object
9606
9654
  MailTemplateCategory:
9607
- description: 'Category a template is grouped under in the editor. mail-service
9608
- owns the set
9609
-
9610
- and validates it; a value it adds before this enum is updated decodes to UNKNOWN
9611
-
9612
- rather than failing the catalog (see MailTemplate._coerce_category).'
9655
+ description: Category a template is grouped under in the editor. An unrecognised
9656
+ value decodes to `unknown`.
9613
9657
  enum:
9614
9658
  - organization
9615
9659
  - billing
@@ -12180,10 +12224,16 @@ components:
12180
12224
  anyOf:
12181
12225
  - $ref: '#/components/schemas/BrandingDocument'
12182
12226
  - type: 'null'
12227
+ description: Draft branding document to render the preview with; omit to
12228
+ preview with the default OpusDNS branding. Only the fields the template
12229
+ uses are applied, the rest are ignored.
12183
12230
  language_code:
12231
+ description: Locale to render in (e.g. en); falls back to the template's
12232
+ default
12184
12233
  title: Language Code
12185
12234
  type: string
12186
12235
  template_name:
12236
+ description: Template to render, as listed by the template catalog
12187
12237
  title: Template Name
12188
12238
  type: string
12189
12239
  required:
@@ -15299,14 +15349,13 @@ components:
15299
15349
  custom domain is untouched - it is re-pointed by its hostnames through recheck)
15300
15350
  and `enabled`
15301
15351
 
15302
- starts or stops serving - both applied asynchronously via the reconcile job,
15303
- neither a purchase.
15352
+ starts or stops serving - both applied asynchronously, neither a purchase.
15353
+ `renewal_mode` sets the
15304
15354
 
15305
- `renewal_mode` sets the subscription''s auto-renew intent synchronously (EXPIRE
15306
- = cancel at period
15355
+ subscription''s auto-renew intent synchronously (EXPIRE = cancel at period
15356
+ end, RENEW = un-cancel);
15307
15357
 
15308
- end, RENEW = un-cancel); it is not a purchase either - no price change. At
15309
- least one must be given.'
15358
+ it is not a purchase either - no price change. At least one must be given.'
15310
15359
  properties:
15311
15360
  enabled:
15312
15361
  anyOf:
@@ -15646,19 +15695,16 @@ components:
15646
15695
  title: WhitelabelRenewalMode
15647
15696
  type: string
15648
15697
  WhitelabelSubscriptionInfo:
15649
- description: 'The whitelabel''s billing-lifecycle state, a pass-through read
15650
- from the subscription at the api
15651
-
15652
- layer (product-service owns it; the branding row does not). Grouped into its
15653
- own object so it
15698
+ description: 'The whitelabel''s billing-lifecycle state, grouped into its own
15699
+ block: the parent''s
15654
15700
 
15655
- reads as one all-or-nothing block: the parent''s `subscription` is null when
15656
- the config has no live
15701
+ `subscription` is null when the config has no live subscription (still provisioning,
15702
+ or
15657
15703
 
15658
- subscription (still provisioning, or terminated). renewal_mode EXPIRE + expires_on
15659
- is how a
15704
+ terminated). A cancelled whitelabel reads as renewal_mode=expire with expires_on
15705
+ set to when
15660
15706
 
15661
- cancelled whitelabel reads: "cancelled, served until expires_on".'
15707
+ serving stops.'
15662
15708
  properties:
15663
15709
  expires_on:
15664
15710
  anyOf:
@@ -16250,7 +16296,7 @@ info:
16250
16296
  \n\n"
16251
16297
  summary: OpusDNS - your gateway to a seamless domain management experience.
16252
16298
  title: OpusDNS API
16253
- version: 2026-09-08-081758
16299
+ version: 2026-09-08-113838
16254
16300
  x-logo:
16255
16301
  altText: OpusDNS API Reference
16256
16302
  url: https://d24lr4zqs1tgqh.cloudfront.net/c9505a20-5ae1-406c-b060-d392569caebf.jpg
@@ -34054,6 +34100,179 @@ paths:
34054
34100
  - whitelabel
34055
34101
  x-required-permissions:
34056
34102
  - whitelabel_branding:manage
34103
+ /v1/whitelabel-branding/assets:
34104
+ get:
34105
+ operationId: list_whitelabel_assets_v1_whitelabel_branding_assets_get
34106
+ parameters:
34107
+ - $ref: '#/components/parameters/DatetimeFormatHeader'
34108
+ responses:
34109
+ '200':
34110
+ content:
34111
+ application/json:
34112
+ schema:
34113
+ $ref: '#/components/schemas/ListBrandingAssetsResponse'
34114
+ description: Successful Response
34115
+ '422':
34116
+ content:
34117
+ application/problem+json:
34118
+ schema:
34119
+ $ref: '#/components/schemas/HTTPValidationError'
34120
+ description: Validation Error
34121
+ security:
34122
+ - OAuth2PasswordBearer: []
34123
+ - APIKeyHeader: []
34124
+ summary: List uploaded branding assets
34125
+ tags:
34126
+ - whitelabel
34127
+ x-required-permissions:
34128
+ - whitelabel_branding:read
34129
+ post:
34130
+ operationId: upload_whitelabel_asset_v1_whitelabel_branding_assets_post
34131
+ parameters:
34132
+ - $ref: '#/components/parameters/DatetimeFormatHeader'
34133
+ requestBody:
34134
+ content:
34135
+ multipart/form-data:
34136
+ schema:
34137
+ $ref: '#/components/schemas/Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post'
34138
+ required: true
34139
+ responses:
34140
+ '200':
34141
+ content:
34142
+ application/json:
34143
+ schema:
34144
+ $ref: '#/components/schemas/BrandingAsset'
34145
+ description: Successful Response
34146
+ '422':
34147
+ content:
34148
+ application/problem+json:
34149
+ schema:
34150
+ $ref: '#/components/schemas/HTTPValidationError'
34151
+ description: Validation Error
34152
+ security:
34153
+ - OAuth2PasswordBearer: []
34154
+ - APIKeyHeader: []
34155
+ summary: Upload a branding asset
34156
+ tags:
34157
+ - whitelabel
34158
+ x-required-permissions:
34159
+ - whitelabel_branding:manage
34160
+ /v1/whitelabel-branding/assets/{asset_id}:
34161
+ delete:
34162
+ operationId: delete_whitelabel_asset_v1_whitelabel_branding_assets__asset_id__delete
34163
+ parameters:
34164
+ - in: path
34165
+ name: asset_id
34166
+ required: true
34167
+ schema:
34168
+ title: Asset Id
34169
+ type: string
34170
+ - $ref: '#/components/parameters/DatetimeFormatHeader'
34171
+ responses:
34172
+ '204':
34173
+ description: Successful Response
34174
+ '422':
34175
+ content:
34176
+ application/problem+json:
34177
+ schema:
34178
+ $ref: '#/components/schemas/HTTPValidationError'
34179
+ description: Validation Error
34180
+ security:
34181
+ - OAuth2PasswordBearer: []
34182
+ - APIKeyHeader: []
34183
+ summary: Delete an uploaded branding asset
34184
+ tags:
34185
+ - whitelabel
34186
+ x-required-permissions:
34187
+ - whitelabel_branding:manage
34188
+ /v1/whitelabel-branding/document:
34189
+ get:
34190
+ operationId: get_whitelabel_document_v1_whitelabel_branding_document_get
34191
+ parameters:
34192
+ - $ref: '#/components/parameters/DatetimeFormatHeader'
34193
+ responses:
34194
+ '200':
34195
+ content:
34196
+ application/json:
34197
+ schema:
34198
+ $ref: '#/components/schemas/BrandingDocument'
34199
+ description: Successful Response
34200
+ '422':
34201
+ content:
34202
+ application/problem+json:
34203
+ schema:
34204
+ $ref: '#/components/schemas/HTTPValidationError'
34205
+ description: Validation Error
34206
+ security:
34207
+ - OAuth2PasswordBearer: []
34208
+ - APIKeyHeader: []
34209
+ summary: Get the stored branding document
34210
+ tags:
34211
+ - whitelabel
34212
+ x-required-permissions:
34213
+ - whitelabel_branding:read
34214
+ post:
34215
+ operationId: put_whitelabel_document_v1_whitelabel_branding_document_post
34216
+ parameters:
34217
+ - $ref: '#/components/parameters/DatetimeFormatHeader'
34218
+ requestBody:
34219
+ content:
34220
+ application/json:
34221
+ schema:
34222
+ $ref: '#/components/schemas/BrandingDocument'
34223
+ required: true
34224
+ responses:
34225
+ '200':
34226
+ content:
34227
+ application/json:
34228
+ schema:
34229
+ $ref: '#/components/schemas/BrandingDocument'
34230
+ description: Successful Response
34231
+ '422':
34232
+ content:
34233
+ application/problem+json:
34234
+ schema:
34235
+ $ref: '#/components/schemas/HTTPValidationError'
34236
+ description: Validation Error
34237
+ security:
34238
+ - OAuth2PasswordBearer: []
34239
+ - APIKeyHeader: []
34240
+ summary: Upsert the branding document
34241
+ tags:
34242
+ - whitelabel
34243
+ x-required-permissions:
34244
+ - whitelabel_branding:manage
34245
+ put:
34246
+ operationId: put_whitelabel_document_v1_whitelabel_branding_document_put
34247
+ parameters:
34248
+ - $ref: '#/components/parameters/DatetimeFormatHeader'
34249
+ requestBody:
34250
+ content:
34251
+ application/json:
34252
+ schema:
34253
+ $ref: '#/components/schemas/BrandingDocument'
34254
+ required: true
34255
+ responses:
34256
+ '200':
34257
+ content:
34258
+ application/json:
34259
+ schema:
34260
+ $ref: '#/components/schemas/BrandingDocument'
34261
+ description: Successful Response
34262
+ '422':
34263
+ content:
34264
+ application/problem+json:
34265
+ schema:
34266
+ $ref: '#/components/schemas/HTTPValidationError'
34267
+ description: Validation Error
34268
+ security:
34269
+ - OAuth2PasswordBearer: []
34270
+ - APIKeyHeader: []
34271
+ summary: Upsert the branding document
34272
+ tags:
34273
+ - whitelabel
34274
+ x-required-permissions:
34275
+ - whitelabel_branding:manage
34057
34276
  /v1/whitelabel-branding/email/preview:
34058
34277
  post:
34059
34278
  operationId: preview_whitelabel_email_v1_whitelabel_branding_email_preview_post
@@ -34671,16 +34890,19 @@ tags:
34671
34890
  "auth_subdomain": "auth", "period": {...}}`.
34672
34891
 
34673
34892
  A `label` is required for both tiers: every whitelabel keeps a managed subdomain,
34674
- composed by branding-service as `<label>-<hash>.<base-tier suffix>` and `<label>-<hash>-auth.<base-tier
34675
- suffix>`, where the hash comes from a per-organization secret it alone holds.
34893
+ composed as `app.<label>.<base-tier suffix>` (dashboard) and `auth.<label>.<base-tier
34894
+ suffix>` (login).
34676
34895
 
34677
- For base, that composed pair is what gets served; onboarding skips DNS verification
34678
- and the edge CNAME, because that zone has wildcard DNS and a wildcard certificate.
34896
+ For base, that composed pair is what gets served: onboarding skips domain verification
34897
+ (the zone is OpusDNS-owned) but still points each host at the whitelabel edge,
34898
+ which issues a per-host certificate on demand.
34679
34899
 
34680
34900
  For plus, the customer''s own domain is served instead (omitting `dashboard_subdomain`
34681
34901
  serves the dashboard on the apex); the domain must be an OpusDNS-hosted zone owned
34682
34902
  by the organization, which onboarding verifies before pointing both hosts at the
34683
- whitelabel edge.
34903
+ whitelabel edge. Set `create_zone: true` to have onboarding stand the zone up
34904
+ if it does not already exist. The managed base pair is published alongside the
34905
+ custom domain as a backup address.
34684
34906
 
34685
34907
  Labels are validated on the way in, and branding-service additionally rejects
34686
34908
  reserved ones (that rejection surfaces as a 400).
@@ -34718,20 +34940,22 @@ tags:
34718
34940
 
34719
34941
 
34720
34942
  A disabled whitelabel answers 409 to both `/recheck` and `/tier`: re-enable it
34721
- first (`PATCH {"enabled": true}` alone re-runs the reconcile).
34943
+ first (`PATCH {"enabled": true}` alone re-runs onboarding).
34722
34944
 
34723
34945
 
34724
34946
  `PATCH /v1/whitelabel-branding` changes the config without touching its subscription
34725
34947
  or price.
34726
34948
 
34727
- `{"label": "newname"}` moves a base-tier whitelabel to a different subdomain,
34728
- accepted only before provisioning has started (a plus whitelabel has no served
34729
- label - it is re-pointed by its hostnames through recheck).
34949
+ `{"label": "newname"}` moves the managed subdomain to a different label at any
34950
+ time, including while the whitelabel is active. On base this changes the served
34951
+ host; on plus it moves the backup pair, leaving the custom domain unchanged (re-point
34952
+ that through recheck).
34730
34953
 
34731
34954
  `{"enabled": false}` stops serving the whitelabel: its login client is disabled
34732
- and OpusDNS withdraws its routing - the managed subdomain is unpublished for base,
34733
- the DNS edge records are removed for plus (a plus host whose DNS is pointed at
34734
- the edge manually keeps reaching the branded dashboard, but its login stays disabled).
34955
+ and OpusDNS withdraws its routing - the edge records for the served hosts are
34956
+ removed and the managed subdomain unpublished (a plus host whose DNS is still
34957
+ pointed at the edge keeps reaching the branded dashboard, but its login stays
34958
+ disabled).
34735
34959
 
34736
34960
  The configuration, the branding document and the provisioning history are kept,
34737
34961
  so `{"enabled": true}` brings it back without re-provisioning.
package/src/schema.d.ts CHANGED
@@ -3032,6 +3032,60 @@ export interface paths {
3032
3032
  patch: operations["patch_whitelabel_branding_v1_whitelabel_branding_patch"];
3033
3033
  trace?: never;
3034
3034
  };
3035
+ "/v1/whitelabel-branding/assets": {
3036
+ parameters: {
3037
+ query?: never;
3038
+ header?: never;
3039
+ path?: never;
3040
+ cookie?: never;
3041
+ };
3042
+ /** List uploaded branding assets */
3043
+ get: operations["list_whitelabel_assets_v1_whitelabel_branding_assets_get"];
3044
+ put?: never;
3045
+ /** Upload a branding asset */
3046
+ post: operations["upload_whitelabel_asset_v1_whitelabel_branding_assets_post"];
3047
+ delete?: never;
3048
+ options?: never;
3049
+ head?: never;
3050
+ patch?: never;
3051
+ trace?: never;
3052
+ };
3053
+ "/v1/whitelabel-branding/assets/{asset_id}": {
3054
+ parameters: {
3055
+ query?: never;
3056
+ header?: never;
3057
+ path?: never;
3058
+ cookie?: never;
3059
+ };
3060
+ get?: never;
3061
+ put?: never;
3062
+ post?: never;
3063
+ /** Delete an uploaded branding asset */
3064
+ delete: operations["delete_whitelabel_asset_v1_whitelabel_branding_assets__asset_id__delete"];
3065
+ options?: never;
3066
+ head?: never;
3067
+ patch?: never;
3068
+ trace?: never;
3069
+ };
3070
+ "/v1/whitelabel-branding/document": {
3071
+ parameters: {
3072
+ query?: never;
3073
+ header?: never;
3074
+ path?: never;
3075
+ cookie?: never;
3076
+ };
3077
+ /** Get the stored branding document */
3078
+ get: operations["get_whitelabel_document_v1_whitelabel_branding_document_get"];
3079
+ /** Upsert the branding document */
3080
+ put: operations["put_whitelabel_document_v1_whitelabel_branding_document_put"];
3081
+ /** Upsert the branding document */
3082
+ post: operations["put_whitelabel_document_v1_whitelabel_branding_document_post"];
3083
+ delete?: never;
3084
+ options?: never;
3085
+ head?: never;
3086
+ patch?: never;
3087
+ trace?: never;
3088
+ };
3035
3089
  "/v1/whitelabel-branding/email/preview": {
3036
3090
  parameters: {
3037
3091
  query?: never;
@@ -3456,12 +3510,49 @@ export interface components {
3456
3510
  * @enum {string}
3457
3511
  */
3458
3512
  BillingTransactionStatus: "pending" | "succeeded" | "failed" | "canceled";
3513
+ /** Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post */
3514
+ Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post: {
3515
+ /**
3516
+ * File
3517
+ * @description Asset file (image/font)
3518
+ */
3519
+ file: string;
3520
+ };
3459
3521
  /** Brand */
3460
3522
  Brand: {
3461
3523
  logo?: components["schemas"]["Logo"] | null;
3462
3524
  /** Name */
3463
3525
  name?: string | null;
3464
3526
  };
3527
+ /** BrandingAsset */
3528
+ BrandingAsset: {
3529
+ /**
3530
+ * Asset Id
3531
+ * @description Opaque handle used to delete or reference the asset
3532
+ */
3533
+ asset_id: string;
3534
+ /**
3535
+ * Asset Url
3536
+ * @description Public URL of the asset
3537
+ */
3538
+ asset_url: string;
3539
+ /**
3540
+ * Content Type
3541
+ * @description MIME type of the asset
3542
+ */
3543
+ content_type?: string | null;
3544
+ /**
3545
+ * Size Bytes
3546
+ * @description Asset size in bytes
3547
+ */
3548
+ size_bytes: number;
3549
+ /**
3550
+ * Updated On
3551
+ * Format: date-time
3552
+ * @description Last-modified timestamp
3553
+ */
3554
+ updated_on: Date;
3555
+ };
3465
3556
  /** BrandingDocument */
3466
3557
  BrandingDocument: {
3467
3558
  auth?: components["schemas"]["Auth"] | null;
@@ -9399,6 +9490,14 @@ export interface components {
9399
9490
  * @enum {string}
9400
9491
  */
9401
9492
  LegalRequirementType: "notice" | "confirmation";
9493
+ /** ListBrandingAssetsResponse */
9494
+ ListBrandingAssetsResponse: {
9495
+ /**
9496
+ * Assets
9497
+ * @description Uploaded assets, most recent first
9498
+ */
9499
+ assets?: components["schemas"]["BrandingAsset"][];
9500
+ };
9402
9501
  /** ListVanityNameserverSetsRes */
9403
9502
  ListVanityNameserverSetsRes: {
9404
9503
  /** @description Pagination metadata */
@@ -9462,9 +9561,7 @@ export interface components {
9462
9561
  };
9463
9562
  /**
9464
9563
  * MailTemplate
9465
- * @description One editable transactional email template. This is the public catalog entry:
9466
- * mail-service's operational fields (engine, internal, whitelabel, brand_defaults)
9467
- * are deliberately not declared, so the response model drops them.
9564
+ * @description One editable transactional email template in the catalog.
9468
9565
  */
9469
9566
  MailTemplate: {
9470
9567
  /**
@@ -9548,9 +9645,7 @@ export interface components {
9548
9645
  };
9549
9646
  /**
9550
9647
  * MailTemplateCategory
9551
- * @description Category a template is grouped under in the editor. mail-service owns the set
9552
- * and validates it; a value it adds before this enum is updated decodes to UNKNOWN
9553
- * rather than failing the catalog (see MailTemplate._coerce_category).
9648
+ * @description Category a template is grouped under in the editor. An unrecognised value decodes to `unknown`.
9554
9649
  * @enum {string}
9555
9650
  */
9556
9651
  MailTemplateCategory: "organization" | "billing" | "user_account" | "icann_policy" | "tld_specific" | "unknown";
@@ -11218,10 +11313,17 @@ export interface components {
11218
11313
  PremiumSourceType: "EPP" | "API" | "CSV" | "manual";
11219
11314
  /** PreviewMailReq */
11220
11315
  PreviewMailReq: {
11316
+ /** @description Draft branding document to render the preview with; omit to preview with the default OpusDNS branding. Only the fields the template uses are applied, the rest are ignored. */
11221
11317
  branding_document?: components["schemas"]["BrandingDocument"] | null;
11222
- /** Language Code */
11318
+ /**
11319
+ * Language Code
11320
+ * @description Locale to render in (e.g. en); falls back to the template's default
11321
+ */
11223
11322
  language_code: string;
11224
- /** Template Name */
11323
+ /**
11324
+ * Template Name
11325
+ * @description Template to render, as listed by the template catalog
11326
+ */
11225
11327
  template_name: string;
11226
11328
  };
11227
11329
  /** PreviewMailRes */
@@ -13256,9 +13358,9 @@ export interface components {
13256
13358
  * WhitelabelBrandingPatch
13257
13359
  * @description Public patch body. `label` moves the managed base subdomain to a different label (on plus the
13258
13360
  * custom domain is untouched - it is re-pointed by its hostnames through recheck) and `enabled`
13259
- * starts or stops serving - both applied asynchronously via the reconcile job, neither a purchase.
13260
- * `renewal_mode` sets the subscription's auto-renew intent synchronously (EXPIRE = cancel at period
13261
- * end, RENEW = un-cancel); it is not a purchase either - no price change. At least one must be given.
13361
+ * starts or stops serving - both applied asynchronously, neither a purchase. `renewal_mode` sets the
13362
+ * subscription's auto-renew intent synchronously (EXPIRE = cancel at period end, RENEW = un-cancel);
13363
+ * it is not a purchase either - no price change. At least one must be given.
13262
13364
  */
13263
13365
  WhitelabelBrandingPatch: {
13264
13366
  /**
@@ -13466,11 +13568,10 @@ export interface components {
13466
13568
  WhitelabelRenewalMode: "renew" | "expire";
13467
13569
  /**
13468
13570
  * WhitelabelSubscriptionInfo
13469
- * @description The whitelabel's billing-lifecycle state, a pass-through read from the subscription at the api
13470
- * layer (product-service owns it; the branding row does not). Grouped into its own object so it
13471
- * reads as one all-or-nothing block: the parent's `subscription` is null when the config has no live
13472
- * subscription (still provisioning, or terminated). renewal_mode EXPIRE + expires_on is how a
13473
- * cancelled whitelabel reads: "cancelled, served until expires_on".
13571
+ * @description The whitelabel's billing-lifecycle state, grouped into its own block: the parent's
13572
+ * `subscription` is null when the config has no live subscription (still provisioning, or
13573
+ * terminated). A cancelled whitelabel reads as renewal_mode=expire with expires_on set to when
13574
+ * serving stops.
13474
13575
  */
13475
13576
  WhitelabelSubscriptionInfo: {
13476
13577
  /**
@@ -28452,6 +28553,228 @@ export interface operations {
28452
28553
  };
28453
28554
  };
28454
28555
  };
28556
+ list_whitelabel_assets_v1_whitelabel_branding_assets_get: {
28557
+ parameters: {
28558
+ query?: never;
28559
+ header?: {
28560
+ /**
28561
+ * @description Opt in to RFC 3339 datetime serialization. When set to `rfc3339`, response datetimes are normalized to UTC and serialized with a `Z` suffix. This is opt-in until the announced default cutover date, after which RFC 3339 becomes the default and this header is accepted as a no-op. Any other value or omission uses the current default serialization.
28562
+ * @example rfc3339
28563
+ */
28564
+ "X-Datetime-Format"?: components["parameters"]["DatetimeFormatHeader"];
28565
+ };
28566
+ path?: never;
28567
+ cookie?: never;
28568
+ };
28569
+ requestBody?: never;
28570
+ responses: {
28571
+ /** @description Successful Response */
28572
+ 200: {
28573
+ headers: {
28574
+ [name: string]: unknown;
28575
+ };
28576
+ content: {
28577
+ "application/json": components["schemas"]["ListBrandingAssetsResponse"];
28578
+ };
28579
+ };
28580
+ /** @description Validation Error */
28581
+ 422: {
28582
+ headers: {
28583
+ [name: string]: unknown;
28584
+ };
28585
+ content: {
28586
+ "application/problem+json": components["schemas"]["HTTPValidationError"];
28587
+ };
28588
+ };
28589
+ };
28590
+ };
28591
+ upload_whitelabel_asset_v1_whitelabel_branding_assets_post: {
28592
+ parameters: {
28593
+ query?: never;
28594
+ header?: {
28595
+ /**
28596
+ * @description Opt in to RFC 3339 datetime serialization. When set to `rfc3339`, response datetimes are normalized to UTC and serialized with a `Z` suffix. This is opt-in until the announced default cutover date, after which RFC 3339 becomes the default and this header is accepted as a no-op. Any other value or omission uses the current default serialization.
28597
+ * @example rfc3339
28598
+ */
28599
+ "X-Datetime-Format"?: components["parameters"]["DatetimeFormatHeader"];
28600
+ };
28601
+ path?: never;
28602
+ cookie?: never;
28603
+ };
28604
+ requestBody: {
28605
+ content: {
28606
+ "multipart/form-data": components["schemas"]["Body_upload_whitelabel_asset_v1_whitelabel_branding_assets_post"];
28607
+ };
28608
+ };
28609
+ responses: {
28610
+ /** @description Successful Response */
28611
+ 200: {
28612
+ headers: {
28613
+ [name: string]: unknown;
28614
+ };
28615
+ content: {
28616
+ "application/json": components["schemas"]["BrandingAsset"];
28617
+ };
28618
+ };
28619
+ /** @description Validation Error */
28620
+ 422: {
28621
+ headers: {
28622
+ [name: string]: unknown;
28623
+ };
28624
+ content: {
28625
+ "application/problem+json": components["schemas"]["HTTPValidationError"];
28626
+ };
28627
+ };
28628
+ };
28629
+ };
28630
+ delete_whitelabel_asset_v1_whitelabel_branding_assets__asset_id__delete: {
28631
+ parameters: {
28632
+ query?: never;
28633
+ header?: {
28634
+ /**
28635
+ * @description Opt in to RFC 3339 datetime serialization. When set to `rfc3339`, response datetimes are normalized to UTC and serialized with a `Z` suffix. This is opt-in until the announced default cutover date, after which RFC 3339 becomes the default and this header is accepted as a no-op. Any other value or omission uses the current default serialization.
28636
+ * @example rfc3339
28637
+ */
28638
+ "X-Datetime-Format"?: components["parameters"]["DatetimeFormatHeader"];
28639
+ };
28640
+ path: {
28641
+ asset_id: string;
28642
+ };
28643
+ cookie?: never;
28644
+ };
28645
+ requestBody?: never;
28646
+ responses: {
28647
+ /** @description Successful Response */
28648
+ 204: {
28649
+ headers: {
28650
+ [name: string]: unknown;
28651
+ };
28652
+ content?: never;
28653
+ };
28654
+ /** @description Validation Error */
28655
+ 422: {
28656
+ headers: {
28657
+ [name: string]: unknown;
28658
+ };
28659
+ content: {
28660
+ "application/problem+json": components["schemas"]["HTTPValidationError"];
28661
+ };
28662
+ };
28663
+ };
28664
+ };
28665
+ get_whitelabel_document_v1_whitelabel_branding_document_get: {
28666
+ parameters: {
28667
+ query?: never;
28668
+ header?: {
28669
+ /**
28670
+ * @description Opt in to RFC 3339 datetime serialization. When set to `rfc3339`, response datetimes are normalized to UTC and serialized with a `Z` suffix. This is opt-in until the announced default cutover date, after which RFC 3339 becomes the default and this header is accepted as a no-op. Any other value or omission uses the current default serialization.
28671
+ * @example rfc3339
28672
+ */
28673
+ "X-Datetime-Format"?: components["parameters"]["DatetimeFormatHeader"];
28674
+ };
28675
+ path?: never;
28676
+ cookie?: never;
28677
+ };
28678
+ requestBody?: never;
28679
+ responses: {
28680
+ /** @description Successful Response */
28681
+ 200: {
28682
+ headers: {
28683
+ [name: string]: unknown;
28684
+ };
28685
+ content: {
28686
+ "application/json": components["schemas"]["BrandingDocument"];
28687
+ };
28688
+ };
28689
+ /** @description Validation Error */
28690
+ 422: {
28691
+ headers: {
28692
+ [name: string]: unknown;
28693
+ };
28694
+ content: {
28695
+ "application/problem+json": components["schemas"]["HTTPValidationError"];
28696
+ };
28697
+ };
28698
+ };
28699
+ };
28700
+ put_whitelabel_document_v1_whitelabel_branding_document_put: {
28701
+ parameters: {
28702
+ query?: never;
28703
+ header?: {
28704
+ /**
28705
+ * @description Opt in to RFC 3339 datetime serialization. When set to `rfc3339`, response datetimes are normalized to UTC and serialized with a `Z` suffix. This is opt-in until the announced default cutover date, after which RFC 3339 becomes the default and this header is accepted as a no-op. Any other value or omission uses the current default serialization.
28706
+ * @example rfc3339
28707
+ */
28708
+ "X-Datetime-Format"?: components["parameters"]["DatetimeFormatHeader"];
28709
+ };
28710
+ path?: never;
28711
+ cookie?: never;
28712
+ };
28713
+ requestBody: {
28714
+ content: {
28715
+ "application/json": components["schemas"]["BrandingDocument"];
28716
+ };
28717
+ };
28718
+ responses: {
28719
+ /** @description Successful Response */
28720
+ 200: {
28721
+ headers: {
28722
+ [name: string]: unknown;
28723
+ };
28724
+ content: {
28725
+ "application/json": components["schemas"]["BrandingDocument"];
28726
+ };
28727
+ };
28728
+ /** @description Validation Error */
28729
+ 422: {
28730
+ headers: {
28731
+ [name: string]: unknown;
28732
+ };
28733
+ content: {
28734
+ "application/problem+json": components["schemas"]["HTTPValidationError"];
28735
+ };
28736
+ };
28737
+ };
28738
+ };
28739
+ put_whitelabel_document_v1_whitelabel_branding_document_post: {
28740
+ parameters: {
28741
+ query?: never;
28742
+ header?: {
28743
+ /**
28744
+ * @description Opt in to RFC 3339 datetime serialization. When set to `rfc3339`, response datetimes are normalized to UTC and serialized with a `Z` suffix. This is opt-in until the announced default cutover date, after which RFC 3339 becomes the default and this header is accepted as a no-op. Any other value or omission uses the current default serialization.
28745
+ * @example rfc3339
28746
+ */
28747
+ "X-Datetime-Format"?: components["parameters"]["DatetimeFormatHeader"];
28748
+ };
28749
+ path?: never;
28750
+ cookie?: never;
28751
+ };
28752
+ requestBody: {
28753
+ content: {
28754
+ "application/json": components["schemas"]["BrandingDocument"];
28755
+ };
28756
+ };
28757
+ responses: {
28758
+ /** @description Successful Response */
28759
+ 200: {
28760
+ headers: {
28761
+ [name: string]: unknown;
28762
+ };
28763
+ content: {
28764
+ "application/json": components["schemas"]["BrandingDocument"];
28765
+ };
28766
+ };
28767
+ /** @description Validation Error */
28768
+ 422: {
28769
+ headers: {
28770
+ [name: string]: unknown;
28771
+ };
28772
+ content: {
28773
+ "application/problem+json": components["schemas"]["HTTPValidationError"];
28774
+ };
28775
+ };
28776
+ };
28777
+ };
28455
28778
  preview_whitelabel_email_v1_whitelabel_branding_email_preview_post: {
28456
28779
  parameters: {
28457
28780
  query?: never;