@unstoppabledomains/ud-cli 0.1.23 → 0.1.25

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.
@@ -170,19 +170,6 @@
170
170
  "schema": {
171
171
  "type": "object",
172
172
  "properties": {
173
- "page": {
174
- "type": "number",
175
- "minimum": 1,
176
- "description": "Page number, 1-indexed (default: 1)",
177
- "example": 1
178
- },
179
- "pageSize": {
180
- "type": "number",
181
- "minimum": 1,
182
- "maximum": 100,
183
- "description": "Number of domains per page, 1-100 (default: 50)",
184
- "example": 50
185
- },
186
173
  "searchTerm": {
187
174
  "type": "string",
188
175
  "description": "Optional search term to filter domains by name"
@@ -261,6 +248,19 @@
261
248
  "desc"
262
249
  ],
263
250
  "description": "Sort direction: \"asc\" (ascending, default) or \"desc\" (descending)"
251
+ },
252
+ "offset": {
253
+ "type": "number",
254
+ "minimum": 0,
255
+ "description": "Number of items to skip for pagination (default: 0)",
256
+ "example": 0
257
+ },
258
+ "limit": {
259
+ "type": "number",
260
+ "minimum": 1,
261
+ "maximum": 100,
262
+ "description": "Maximum number of items to return (1-100, default: 50)",
263
+ "example": 50
264
264
  }
265
265
  }
266
266
  }
@@ -1448,9 +1448,18 @@
1448
1448
  ],
1449
1449
  "description": "Filter by group: \"active\" (pending) or \"sold\" (completed)"
1450
1450
  },
1451
- "page": {
1451
+ "offset": {
1452
+ "type": "number",
1453
+ "minimum": 0,
1454
+ "description": "Number of items to skip for pagination (default: 0)",
1455
+ "example": 0
1456
+ },
1457
+ "limit": {
1452
1458
  "type": "number",
1453
- "description": "Page number (1-indexed)"
1459
+ "minimum": 1,
1460
+ "maximum": 100,
1461
+ "description": "Maximum number of items to return (1-100, default: 50)",
1462
+ "example": 50
1454
1463
  }
1455
1464
  }
1456
1465
  }
@@ -1573,18 +1582,18 @@
1573
1582
  "description": "Skip conversations with no messages (default: true)",
1574
1583
  "default": true
1575
1584
  },
1576
- "skip": {
1577
- "type": "integer",
1578
- "description": "Number of conversations to skip (pagination offset, default: 0)",
1579
- "default": 0,
1580
- "minimum": 0
1585
+ "offset": {
1586
+ "type": "number",
1587
+ "minimum": 0,
1588
+ "description": "Number of items to skip for pagination (default: 0)",
1589
+ "example": 0
1581
1590
  },
1582
- "take": {
1583
- "type": "integer",
1584
- "description": "Number of conversations to return (1-100, default: 20)",
1585
- "default": 20,
1591
+ "limit": {
1592
+ "type": "number",
1586
1593
  "minimum": 1,
1587
- "maximum": 100
1594
+ "maximum": 100,
1595
+ "description": "Maximum number of items to return (1-100, default: 20)",
1596
+ "example": 20
1588
1597
  }
1589
1598
  }
1590
1599
  }
@@ -2340,7 +2349,7 @@
2340
2349
  "post": {
2341
2350
  "operationId": "dnsHostingList",
2342
2351
  "summary": "List hosting configurations",
2343
- "description": "List hosting/forwarding configurations (UD Profile, redirects).",
2352
+ "description": "List hosting/forwarding configurations (redirects, reverse proxy, hosted sites, UD Profile).",
2344
2353
  "tags": [
2345
2354
  "DNS Management"
2346
2355
  ],
@@ -2393,7 +2402,7 @@
2393
2402
  "post": {
2394
2403
  "operationId": "dnsHostingAdd",
2395
2404
  "summary": "Add hosting configuration (bulk)",
2396
- "description": "Configure hosting for one or more domains: for-sale listing page, permanent redirect (301), or temporary redirect (302). Supports up to 50 domains per request.",
2405
+ "description": "Configure hosting for one or more domains: for-sale listing page, permanent redirect (301), temporary redirect (302), or reverse proxy. Supports up to 50 domains per request.",
2397
2406
  "tags": [
2398
2407
  "DNS Management"
2399
2408
  ],
@@ -2430,13 +2439,14 @@
2430
2439
  "enum": [
2431
2440
  "LISTING_PAGE",
2432
2441
  "REDIRECT_301",
2433
- "REDIRECT_302"
2442
+ "REDIRECT_302",
2443
+ "REVERSE_PROXY"
2434
2444
  ],
2435
2445
  "description": "Hosting type"
2436
2446
  },
2437
2447
  "targetUrl": {
2438
2448
  "type": "string",
2439
- "description": "Redirect URL (required for redirects)"
2449
+ "description": "Destination URL (required for REDIRECT_301, REDIRECT_302, REVERSE_PROXY)"
2440
2450
  },
2441
2451
  "subName": {
2442
2452
  "type": "string",
@@ -3050,6 +3060,11 @@
3050
3060
  "minItems": 1,
3051
3061
  "maxItems": 50,
3052
3062
  "description": "Array of domains (1-50)"
3063
+ },
3064
+ "instructions": {
3065
+ "type": "string",
3066
+ "maxLength": 2000,
3067
+ "description": "Optional custom instructions to guide AI generation (e.g., tone, color scheme, content focus). Applied to all domains in the request."
3053
3068
  }
3054
3069
  }
3055
3070
  }
@@ -3105,7 +3120,7 @@
3105
3120
  "post": {
3106
3121
  "operationId": "landerStatus",
3107
3122
  "summary": "Check AI lander generation status",
3108
- "description": "Check the status of AI landing page generation for one or more domains. Returns pending, generating, hosted, failed, or none.",
3123
+ "description": "Check the status of AI landing page generation for one or more domains. Returns pending, generating, processing, hosted, failed, or none.",
3109
3124
  "tags": [
3110
3125
  "AI Lander"
3111
3126
  ],
@@ -3169,6 +3184,7 @@
3169
3184
  "enum": [
3170
3185
  "pending",
3171
3186
  "generating",
3187
+ "processing",
3172
3188
  "hosted",
3173
3189
  "failed",
3174
3190
  "none"
@@ -3194,6 +3210,217 @@
3194
3210
  }
3195
3211
  }
3196
3212
  },
3213
+ "/mcp/v1/actions/ud_domain_upload_lander": {
3214
+ "post": {
3215
+ "operationId": "uploadLander",
3216
+ "summary": "Upload custom landing page content to domains",
3217
+ "description": "Upload custom landing page content for one or more domains. Accepts either raw HTML (htmlContent) for single-page landers or base64-encoded zip files (zipContent) for multi-file sites. Existing lander content is replaced.",
3218
+ "tags": [
3219
+ "AI Lander"
3220
+ ],
3221
+ "security": [
3222
+ {
3223
+ "bearerAuth": []
3224
+ }
3225
+ ],
3226
+ "requestBody": {
3227
+ "required": true,
3228
+ "content": {
3229
+ "application/json": {
3230
+ "schema": {
3231
+ "type": "object",
3232
+ "required": [
3233
+ "domains"
3234
+ ],
3235
+ "properties": {
3236
+ "domains": {
3237
+ "type": "array",
3238
+ "items": {
3239
+ "type": "object",
3240
+ "required": [
3241
+ "name"
3242
+ ],
3243
+ "properties": {
3244
+ "name": {
3245
+ "type": "string",
3246
+ "minLength": 1,
3247
+ "description": "Domain name to upload lander content for (e.g., \"example.com\")"
3248
+ },
3249
+ "htmlContent": {
3250
+ "type": "string",
3251
+ "minLength": 1,
3252
+ "description": "Raw HTML string for a single-page lander (max 1MB). Preferred for AI-generated content. Provide this OR zipContent."
3253
+ },
3254
+ "zipContent": {
3255
+ "type": "string",
3256
+ "minLength": 1,
3257
+ "description": "Base64-encoded zip file containing lander content (max ~1MB). Provide this OR htmlContent."
3258
+ }
3259
+ }
3260
+ },
3261
+ "minItems": 1,
3262
+ "maxItems": 50,
3263
+ "description": "Array of domains with content (1-50). Each domain must have exactly one of htmlContent or zipContent."
3264
+ }
3265
+ }
3266
+ }
3267
+ }
3268
+ }
3269
+ },
3270
+ "responses": {
3271
+ "200": {
3272
+ "description": "Upload results",
3273
+ "content": {
3274
+ "application/json": {
3275
+ "schema": {
3276
+ "type": "object",
3277
+ "properties": {
3278
+ "results": {
3279
+ "type": "array",
3280
+ "items": {
3281
+ "type": "object",
3282
+ "properties": {
3283
+ "domain": {
3284
+ "type": "string"
3285
+ },
3286
+ "success": {
3287
+ "type": "boolean"
3288
+ },
3289
+ "status": {
3290
+ "type": "string",
3291
+ "enum": [
3292
+ "processing"
3293
+ ],
3294
+ "description": "Status after upload. \"processing\" means content is uploaded and hosting config is propagating."
3295
+ },
3296
+ "error": {
3297
+ "type": "string"
3298
+ }
3299
+ }
3300
+ }
3301
+ },
3302
+ "successCount": {
3303
+ "type": "number"
3304
+ },
3305
+ "failureCount": {
3306
+ "type": "number"
3307
+ }
3308
+ }
3309
+ }
3310
+ }
3311
+ }
3312
+ },
3313
+ "401": {
3314
+ "description": "Authentication required"
3315
+ }
3316
+ }
3317
+ }
3318
+ },
3319
+ "/mcp/v1/actions/ud_domain_download_lander": {
3320
+ "post": {
3321
+ "operationId": "downloadLander",
3322
+ "summary": "Download landing page content from domains",
3323
+ "description": "Download existing hosted lander files from one or more domains. Single-page landers return raw HTML (htmlContent); multi-file sites return a base64-encoded zip (zipContent).",
3324
+ "tags": [
3325
+ "AI Lander"
3326
+ ],
3327
+ "security": [
3328
+ {
3329
+ "bearerAuth": []
3330
+ }
3331
+ ],
3332
+ "requestBody": {
3333
+ "required": true,
3334
+ "content": {
3335
+ "application/json": {
3336
+ "schema": {
3337
+ "type": "object",
3338
+ "required": [
3339
+ "domains"
3340
+ ],
3341
+ "properties": {
3342
+ "domains": {
3343
+ "type": "array",
3344
+ "items": {
3345
+ "type": "object",
3346
+ "required": [
3347
+ "name"
3348
+ ],
3349
+ "properties": {
3350
+ "name": {
3351
+ "type": "string",
3352
+ "minLength": 1,
3353
+ "description": "Domain name to download lander content for (e.g., \"example.com\")"
3354
+ }
3355
+ }
3356
+ },
3357
+ "minItems": 1,
3358
+ "maxItems": 50,
3359
+ "description": "Array of domains (1-50)"
3360
+ }
3361
+ }
3362
+ }
3363
+ }
3364
+ }
3365
+ },
3366
+ "responses": {
3367
+ "200": {
3368
+ "description": "Download results",
3369
+ "content": {
3370
+ "application/json": {
3371
+ "schema": {
3372
+ "type": "object",
3373
+ "properties": {
3374
+ "results": {
3375
+ "type": "array",
3376
+ "items": {
3377
+ "type": "object",
3378
+ "properties": {
3379
+ "domain": {
3380
+ "type": "string"
3381
+ },
3382
+ "success": {
3383
+ "type": "boolean"
3384
+ },
3385
+ "format": {
3386
+ "type": "string",
3387
+ "enum": [
3388
+ "html",
3389
+ "zip"
3390
+ ],
3391
+ "description": "Content format: \"html\" for single-page landers, \"zip\" for multi-file sites"
3392
+ },
3393
+ "htmlContent": {
3394
+ "type": "string",
3395
+ "description": "Raw HTML string (when format is \"html\")"
3396
+ },
3397
+ "zipContent": {
3398
+ "type": "string",
3399
+ "description": "Base64-encoded zip file (when format is \"zip\")"
3400
+ },
3401
+ "error": {
3402
+ "type": "string"
3403
+ }
3404
+ }
3405
+ }
3406
+ },
3407
+ "successCount": {
3408
+ "type": "number"
3409
+ },
3410
+ "failureCount": {
3411
+ "type": "number"
3412
+ }
3413
+ }
3414
+ }
3415
+ }
3416
+ }
3417
+ },
3418
+ "401": {
3419
+ "description": "Authentication required"
3420
+ }
3421
+ }
3422
+ }
3423
+ },
3197
3424
  "/mcp/v1/actions/ud_domain_remove_lander": {
3198
3425
  "post": {
3199
3426
  "operationId": "removeLander",
@@ -3285,6 +3512,144 @@
3285
3512
  }
3286
3513
  }
3287
3514
  }
3515
+ },
3516
+ "/api/oauth/signup": {
3517
+ "post": {
3518
+ "operationId": "oauthSignup",
3519
+ "summary": "Create an account via email and password (headless)",
3520
+ "description": "Step 1 of headless account creation. Registers a new user with email and password, sends a verification code via email, and returns a signup_session_token. Use POST /api/oauth/signup/verify with the token and code to get OAuth tokens. Returns identical responses for new and existing users to prevent account enumeration.",
3521
+ "tags": [
3522
+ "Account"
3523
+ ],
3524
+ "security": [],
3525
+ "requestBody": {
3526
+ "required": true,
3527
+ "content": {
3528
+ "application/json": {
3529
+ "schema": {
3530
+ "type": "object",
3531
+ "required": [
3532
+ "email",
3533
+ "password"
3534
+ ],
3535
+ "properties": {
3536
+ "email": {
3537
+ "type": "string",
3538
+ "format": "email",
3539
+ "description": "Email address for the new account"
3540
+ },
3541
+ "password": {
3542
+ "type": "string",
3543
+ "minLength": 8,
3544
+ "description": "Password with at least 8 characters, one uppercase, one lowercase, one digit, and one special character"
3545
+ }
3546
+ }
3547
+ }
3548
+ }
3549
+ }
3550
+ },
3551
+ "responses": {
3552
+ "200": {
3553
+ "description": "Signup session created",
3554
+ "content": {
3555
+ "application/json": {
3556
+ "schema": {
3557
+ "type": "object",
3558
+ "properties": {
3559
+ "signup_session_token": {
3560
+ "type": "string",
3561
+ "description": "Token to use with /api/oauth/signup/verify"
3562
+ },
3563
+ "expires_in": {
3564
+ "type": "number",
3565
+ "description": "Session TTL in seconds (900)"
3566
+ }
3567
+ }
3568
+ }
3569
+ }
3570
+ }
3571
+ },
3572
+ "400": {
3573
+ "description": "Invalid email, password, or disposable email"
3574
+ },
3575
+ "429": {
3576
+ "description": "Rate limit exceeded"
3577
+ }
3578
+ }
3579
+ }
3580
+ },
3581
+ "/api/oauth/signup/verify": {
3582
+ "post": {
3583
+ "operationId": "oauthSignupVerify",
3584
+ "summary": "Verify signup code and get OAuth tokens",
3585
+ "description": "Step 2 of headless account creation. Exchanges the signup_session_token and the 6-character verification code (sent via email) for OAuth access and refresh tokens.",
3586
+ "tags": [
3587
+ "Account"
3588
+ ],
3589
+ "security": [],
3590
+ "requestBody": {
3591
+ "required": true,
3592
+ "content": {
3593
+ "application/json": {
3594
+ "schema": {
3595
+ "type": "object",
3596
+ "required": [
3597
+ "signup_session_token",
3598
+ "verification_code"
3599
+ ],
3600
+ "properties": {
3601
+ "signup_session_token": {
3602
+ "type": "string",
3603
+ "description": "Token from POST /api/oauth/signup"
3604
+ },
3605
+ "verification_code": {
3606
+ "type": "string",
3607
+ "description": "6-character alphanumeric code from the verification email"
3608
+ }
3609
+ }
3610
+ }
3611
+ }
3612
+ }
3613
+ },
3614
+ "responses": {
3615
+ "200": {
3616
+ "description": "OAuth tokens issued",
3617
+ "content": {
3618
+ "application/json": {
3619
+ "schema": {
3620
+ "type": "object",
3621
+ "properties": {
3622
+ "access_token": {
3623
+ "type": "string"
3624
+ },
3625
+ "token_type": {
3626
+ "type": "string",
3627
+ "enum": [
3628
+ "Bearer"
3629
+ ]
3630
+ },
3631
+ "expires_in": {
3632
+ "type": "number"
3633
+ },
3634
+ "refresh_token": {
3635
+ "type": "string"
3636
+ },
3637
+ "scope": {
3638
+ "type": "string"
3639
+ }
3640
+ }
3641
+ }
3642
+ }
3643
+ }
3644
+ },
3645
+ "400": {
3646
+ "description": "Invalid or expired session, wrong code, or too many attempts"
3647
+ },
3648
+ "429": {
3649
+ "description": "Rate limit exceeded"
3650
+ }
3651
+ }
3652
+ }
3288
3653
  }
3289
3654
  },
3290
3655
  "components": {
@@ -4125,6 +4490,10 @@
4125
4490
  "checkoutUrl": {
4126
4491
  "type": "string"
4127
4492
  },
4493
+ "expiresIn": {
4494
+ "type": "number",
4495
+ "description": "Seconds until the magic link expires (URL is single-use)"
4496
+ },
4128
4497
  "cartSummary": {
4129
4498
  "type": "object",
4130
4499
  "properties": {
@@ -4161,7 +4530,11 @@
4161
4530
  "properties": {
4162
4531
  "url": {
4163
4532
  "type": "string",
4164
- "description": "URL to the payment management page"
4533
+ "description": "Authenticated magic link URL to the payment management page (single-use, valid for 60 seconds)"
4534
+ },
4535
+ "expiresIn": {
4536
+ "type": "number",
4537
+ "description": "Seconds until the magic link expires (URL is single-use)"
4165
4538
  },
4166
4539
  "instructions": {
4167
4540
  "type": "string",
@@ -4273,32 +4646,32 @@
4273
4646
  "pagination": {
4274
4647
  "type": "object",
4275
4648
  "properties": {
4276
- "page": {
4649
+ "total": {
4277
4650
  "type": "number",
4278
- "description": "Current page number"
4651
+ "description": "Total number of matching items"
4279
4652
  },
4280
- "pageSize": {
4653
+ "count": {
4281
4654
  "type": "number",
4282
- "description": "Items per page"
4655
+ "description": "Number of items returned in this response"
4283
4656
  },
4284
- "totalPages": {
4657
+ "offset": {
4285
4658
  "type": "number",
4286
- "description": "Total number of pages"
4659
+ "description": "Current offset"
4287
4660
  },
4288
- "total": {
4661
+ "limit": {
4289
4662
  "type": "number",
4290
- "description": "Total number of domains"
4663
+ "description": "Maximum items per response"
4291
4664
  },
4292
4665
  "hasMore": {
4293
4666
  "type": "boolean",
4294
- "description": "Whether more pages exist"
4667
+ "description": "Whether more results are available"
4295
4668
  },
4296
- "nextPage": {
4669
+ "nextOffset": {
4297
4670
  "type": [
4298
4671
  "number",
4299
4672
  "null"
4300
4673
  ],
4301
- "description": "Next page number if more results exist, null otherwise"
4674
+ "description": "Offset for next page, null if no more pages"
4302
4675
  }
4303
4676
  }
4304
4677
  },
@@ -4735,7 +5108,7 @@
4735
5108
  },
4736
5109
  "transferStatus": {
4737
5110
  "type": "string",
4738
- "description": "Domain transfer status:\n \"none\" - No active transfer\n \"pending\" - Transfer in progress"
5111
+ "description": "Domain transfer status:\n\u2022 \"none\" - No active transfer\n\u2022 \"pending\" - Transfer in progress"
4739
5112
  },
4740
5113
  "isExternallyOwned": {
4741
5114
  "type": "boolean",
@@ -4781,7 +5154,7 @@
4781
5154
  },
4782
5155
  "status": {
4783
5156
  "type": "string",
4784
- "description": "Listing status:\n \"open\" - Live on marketplace, ready for purchase (user-custodied domains)\n \"open-not-signed\" - Live on marketplace, ready for purchase (UD-custodied domains, no user action needed)\n \"open-on-request\" - Accepting offers only, no fixed price\n \"draft\" - Not yet published\n \"waiting-for-approval\" - Pending wallet signature from owner\n \"pending-admin-approval\" - Under review (high-value listings)\n \"pending\" - Sale in progress\n \"canceled\" - Listing was canceled\nNote: Both \"open\" and \"open-not-signed\" mean the listing is active and purchasable."
5157
+ "description": "Listing status:\n\u2022 \"open\" - Live on marketplace, ready for purchase (user-custodied domains)\n\u2022 \"open-not-signed\" - Live on marketplace, ready for purchase (UD-custodied domains, no user action needed)\n\u2022 \"open-on-request\" - Accepting offers only, no fixed price\n\u2022 \"draft\" - Not yet published\n\u2022 \"waiting-for-approval\" - Pending wallet signature from owner\n\u2022 \"pending-admin-approval\" - Under review (high-value listings)\n\u2022 \"pending\" - Sale in progress\n\u2022 \"canceled\" - Listing was canceled\nNote: Both \"open\" and \"open-not-signed\" mean the listing is active and purchasable."
4785
5158
  },
4786
5159
  "createdAt": {
4787
5160
  "type": "string",
@@ -4806,7 +5179,7 @@
4806
5179
  "properties": {
4807
5180
  "status": {
4808
5181
  "type": "string",
4809
- "description": "Auto-renewal subscription status:\n \"active\" - Subscription active, will auto-renew\n \"pending\" - Payment collected, waiting for domain registration\n \"update_required\" - Payment method needs updating (card expired/declined)\n \"expired\" - Subscription expired, domain renewal overdue\n \"cancelled\" - Subscription cancelled, will not auto-renew"
5182
+ "description": "Auto-renewal subscription status:\n\u2022 \"active\" - Subscription active, will auto-renew\n\u2022 \"pending\" - Payment collected, waiting for domain registration\n\u2022 \"update_required\" - Payment method needs updating (card expired/declined)\n\u2022 \"expired\" - Subscription expired, domain renewal overdue\n\u2022 \"cancelled\" - Subscription cancelled, will not auto-renew"
4810
5183
  },
4811
5184
  "expiresAt": {
4812
5185
  "type": [
@@ -4990,20 +5363,32 @@
4990
5363
  "pagination": {
4991
5364
  "type": "object",
4992
5365
  "properties": {
4993
- "page": {
4994
- "type": "number"
5366
+ "total": {
5367
+ "type": "number",
5368
+ "description": "Total number of matching items"
4995
5369
  },
4996
- "pageSize": {
4997
- "type": "number"
5370
+ "count": {
5371
+ "type": "number",
5372
+ "description": "Number of items returned in this response"
4998
5373
  },
4999
- "totalPages": {
5000
- "type": "number"
5374
+ "offset": {
5375
+ "type": "number",
5376
+ "description": "Current offset"
5001
5377
  },
5002
- "total": {
5003
- "type": "number"
5378
+ "limit": {
5379
+ "type": "number",
5380
+ "description": "Maximum items per response"
5004
5381
  },
5005
5382
  "hasMore": {
5006
- "type": "boolean"
5383
+ "type": "boolean",
5384
+ "description": "Whether more results are available"
5385
+ },
5386
+ "nextOffset": {
5387
+ "type": [
5388
+ "number",
5389
+ "null"
5390
+ ],
5391
+ "description": "Offset for next page, null if no more pages"
5007
5392
  }
5008
5393
  }
5009
5394
  },
@@ -5129,13 +5514,37 @@
5129
5514
  "type": "number",
5130
5515
  "description": "Total number of conversations matching filters"
5131
5516
  },
5132
- "skip": {
5133
- "type": "number",
5134
- "description": "Number of items skipped"
5135
- },
5136
- "take": {
5137
- "type": "number",
5138
- "description": "Number of items returned"
5517
+ "pagination": {
5518
+ "type": "object",
5519
+ "properties": {
5520
+ "total": {
5521
+ "type": "number",
5522
+ "description": "Total number of matching items"
5523
+ },
5524
+ "count": {
5525
+ "type": "number",
5526
+ "description": "Number of items returned in this response"
5527
+ },
5528
+ "offset": {
5529
+ "type": "number",
5530
+ "description": "Current offset"
5531
+ },
5532
+ "limit": {
5533
+ "type": "number",
5534
+ "description": "Maximum items per response"
5535
+ },
5536
+ "hasMore": {
5537
+ "type": "boolean",
5538
+ "description": "Whether more results are available"
5539
+ },
5540
+ "nextOffset": {
5541
+ "type": [
5542
+ "number",
5543
+ "null"
5544
+ ],
5545
+ "description": "Offset for next page, null if no more pages"
5546
+ }
5547
+ }
5139
5548
  }
5140
5549
  }
5141
5550
  },
@@ -5500,9 +5909,11 @@
5500
5909
  "type": {
5501
5910
  "type": "string",
5502
5911
  "enum": [
5912
+ "GCS_HOSTED",
5503
5913
  "LISTING_PAGE",
5504
5914
  "REDIRECT_301",
5505
5915
  "REDIRECT_302",
5916
+ "REVERSE_PROXY",
5506
5917
  "UD_PROFILE",
5507
5918
  "STOREFRONT"
5508
5919
  ]
@@ -5519,7 +5930,7 @@
5519
5930
  "string",
5520
5931
  "null"
5521
5932
  ],
5522
- "description": "Redirect target URL"
5933
+ "description": "Destination URL (for redirects and reverse proxy)"
5523
5934
  },
5524
5935
  "status": {
5525
5936
  "type": "string"