@rathnasgala2/schemas 3.4.0 → 3.6.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.
@@ -1256,6 +1256,176 @@ components:
1256
1256
  - RECONCILING
1257
1257
  - INCONCLUSIVE
1258
1258
  type: string
1259
+ DnsConnection:
1260
+ additionalProperties: false
1261
+ description: One attempt to add or remove a domain's DNS records at the person's DNS provider (SCHEMA-3.5.0). `outcome` is present when `phase` is `CANCELLED`, `FAILED` or `EXPIRED`; `plan` when `NEEDS_CONFIRMATION` or `APPLIED`; `applied` when `APPLIED`. The provider's access is used within one request chain (or held encrypted for at most `expiresAt` on `NEEDS_CONFIRMATION`) and revoked afterwards; Galascribe keeps none.
1262
+ properties:
1263
+ applied:
1264
+ additionalProperties: false
1265
+ properties:
1266
+ at:
1267
+ $ref: "#/components/schemas/PortableProblemRfc3339"
1268
+ created:
1269
+ minimum: 0
1270
+ type: integer
1271
+ deleted:
1272
+ minimum: 0
1273
+ type: integer
1274
+ replaced:
1275
+ minimum: 0
1276
+ type: integer
1277
+ required:
1278
+ - at
1279
+ - created
1280
+ - replaced
1281
+ - deleted
1282
+ type: object
1283
+ connectionId:
1284
+ format: uuid
1285
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
1286
+ type: string
1287
+ createdAt:
1288
+ $ref: "#/components/schemas/PortableProblemRfc3339"
1289
+ expiresAt:
1290
+ $ref: "#/components/schemas/PortableProblemRfc3339"
1291
+ intent:
1292
+ $ref: "#/components/schemas/DnsIntent"
1293
+ outcome:
1294
+ additionalProperties: false
1295
+ properties:
1296
+ code:
1297
+ $ref: "#/components/schemas/DnsConnectionOutcomeCode"
1298
+ detail:
1299
+ maxLength: 500
1300
+ minLength: 1
1301
+ type: string
1302
+ required:
1303
+ - code
1304
+ - detail
1305
+ type: object
1306
+ phase:
1307
+ $ref: "#/components/schemas/DnsConnectionPhase"
1308
+ plan:
1309
+ items:
1310
+ $ref: "#/components/schemas/DnsPlanEntry"
1311
+ maxItems: 32
1312
+ minItems: 0
1313
+ type: array
1314
+ provider:
1315
+ $ref: "#/components/schemas/DnsProvider"
1316
+ zone:
1317
+ additionalProperties: false
1318
+ properties:
1319
+ accountName:
1320
+ maxLength: 255
1321
+ minLength: 1
1322
+ type: string
1323
+ name:
1324
+ maxLength: 253
1325
+ minLength: 1
1326
+ type: string
1327
+ required:
1328
+ - name
1329
+ - accountName
1330
+ type: object
1331
+ required:
1332
+ - connectionId
1333
+ - provider
1334
+ - intent
1335
+ - phase
1336
+ - createdAt
1337
+ - expiresAt
1338
+ type: object
1339
+ DnsConnectionOutcomeCode:
1340
+ description: "Why a connection ended without success: `CANCELLED` (consent denied or plan discarded); `ZONE_NOT_FOUND` (the domain is not in the provider account chosen); `ZONE_AMBIGUOUS` (more than one active zone of that name across the accounts granted); `SCOPE_DECLINED` (the person did not grant what was needed); `PROVIDER_FAILED` (the provider failed or refused); `STATE_INVALID` (the return from the provider could not be matched to this connection); `EXPIRED`."
1341
+ enum:
1342
+ - CANCELLED
1343
+ - ZONE_NOT_FOUND
1344
+ - ZONE_AMBIGUOUS
1345
+ - SCOPE_DECLINED
1346
+ - PROVIDER_FAILED
1347
+ - STATE_INVALID
1348
+ - EXPIRED
1349
+ type: string
1350
+ DnsConnectionPhase:
1351
+ description: "`STARTED` (waiting for the person at the provider); `NEEDS_CONFIRMATION` (something would be replaced, nothing touched yet); `APPLIED`; `CANCELLED` (the person declined, or discarded the plan); `FAILED`; `EXPIRED` (the person did not finish in time)."
1352
+ enum:
1353
+ - STARTED
1354
+ - NEEDS_CONFIRMATION
1355
+ - APPLIED
1356
+ - CANCELLED
1357
+ - FAILED
1358
+ - EXPIRED
1359
+ type: string
1360
+ DnsIntent:
1361
+ description: "`ADD` writes the domain's records at the provider; `REMOVE` deletes only the records whose values are Galascribe's targets, never anything else at that name; `PROXY` (SCHEMA-3.6.0) turns the provider's proxy on for exactly the records Galascribe wrote, and is offered only once the domain is live with an issued certificate."
1362
+ enum:
1363
+ - ADD
1364
+ - REMOVE
1365
+ - PROXY
1366
+ type: string
1367
+ DnsPlanAction:
1368
+ description: "`CREATE` a record that is not there; `KEEP` one already identical; `REPLACE` one of the same type, or a CNAME where an A/AAAA must go (or the reverse), that differs; `DELETE` a record carrying a Galascribe target value (`REMOVE` only); `PROXY_ON` (SCHEMA-3.6.0, `PROXY` only) the record exists DNS-only and will be set to proxied."
1369
+ enum:
1370
+ - CREATE
1371
+ - KEEP
1372
+ - REPLACE
1373
+ - DELETE
1374
+ - PROXY_ON
1375
+ type: string
1376
+ DnsPlanEntry:
1377
+ additionalProperties: false
1378
+ description: "One record in a connection's plan. `record` is what Galascribe wants at that name; `existing` is what the provider has there now (absent for `CREATE`). Records are always written DNS-only (`proxied: false`) so GitHub can issue the certificate."
1379
+ properties:
1380
+ action:
1381
+ $ref: "#/components/schemas/DnsPlanAction"
1382
+ existing:
1383
+ additionalProperties: false
1384
+ properties:
1385
+ proxied:
1386
+ type: boolean
1387
+ type:
1388
+ maxLength: 16
1389
+ minLength: 1
1390
+ pattern: ^[A-Z][A-Z0-9]*$
1391
+ type: string
1392
+ value:
1393
+ maxLength: 4096
1394
+ minLength: 1
1395
+ type: string
1396
+ required:
1397
+ - type
1398
+ - value
1399
+ - proxied
1400
+ type: object
1401
+ record:
1402
+ $ref: "#/components/schemas/DomainDnsRecord"
1403
+ required:
1404
+ - action
1405
+ - record
1406
+ type: object
1407
+ DnsProvider:
1408
+ description: Where a domain's DNS records live. `CLOUDFLARE` today; a further provider is an additive value.
1409
+ enum:
1410
+ - CLOUDFLARE
1411
+ type: string
1412
+ DnsProviderOffer:
1413
+ additionalProperties: false
1414
+ description: A provider this environment can connect to for this binding, and what it can do now.
1415
+ properties:
1416
+ intents:
1417
+ items:
1418
+ $ref: "#/components/schemas/DnsIntent"
1419
+ maxItems: 3
1420
+ minItems: 1
1421
+ type: array
1422
+ uniqueItems: true
1423
+ provider:
1424
+ $ref: "#/components/schemas/DnsProvider"
1425
+ required:
1426
+ - provider
1427
+ - intents
1428
+ type: object
1259
1429
  DomainBinding:
1260
1430
  additionalProperties: false
1261
1431
  description: A custom domain on GitHub Pages for one publication (SCHEMA-3.3.0). `dns.records` are exactly the records to add at the registrar (a CNAME to `<owner>.github.io` for a subdomain; GitHub's four A and four AAAA records for an apex). Galascribe checks DNS before it sets the Pages custom domain, then waits for GitHub's certificate and routing; `ACTIVE` proposes the change that moves `canonicalBase` to the domain, and the site moves at the next publish. `expiresAt` is set while `OWNERSHIP_PENDING` (7 days).
@@ -1271,6 +1441,13 @@ components:
1271
1441
  properties:
1272
1442
  observed:
1273
1443
  $ref: "#/components/schemas/DomainDnsObservation"
1444
+ providers:
1445
+ description: The DNS providers Galascribe can connect to for this binding right now (SCHEMA-3.5.0). Present only when the provider is configured in this environment and the binding's state has records to add, or (`REMOVE`) to remove. A client shows a connect button exactly when this names the provider and intent; it never decides from `nextStep`.
1446
+ items:
1447
+ $ref: "#/components/schemas/DnsProviderOffer"
1448
+ maxItems: 4
1449
+ minItems: 0
1450
+ type: array
1274
1451
  records:
1275
1452
  items:
1276
1453
  $ref: "#/components/schemas/DomainDnsRecord"
@@ -1297,6 +1474,18 @@ components:
1297
1474
  $ref: "#/components/schemas/DomainKind"
1298
1475
  nextStep:
1299
1476
  $ref: "#/components/schemas/DomainNextStep"
1477
+ proxy:
1478
+ additionalProperties: false
1479
+ description: Present once Galascribe turned the provider's proxy on for this binding through a connection (SCHEMA-3.6.0). Absent while the records are DNS-only.
1480
+ properties:
1481
+ provider:
1482
+ $ref: "#/components/schemas/DnsProvider"
1483
+ since:
1484
+ $ref: "#/components/schemas/PortableProblemRfc3339"
1485
+ required:
1486
+ - provider
1487
+ - since
1488
+ type: object
1300
1489
  routing:
1301
1490
  $ref: "#/components/schemas/DomainRouting"
1302
1491
  state:
@@ -1372,11 +1561,13 @@ components:
1372
1561
  expiresAt:
1373
1562
  $ref: "#/components/schemas/PortableProblemRfc3339"
1374
1563
  state:
1564
+ description: "`PROXIED` (SCHEMA-3.6.0): the provider's edge terminates TLS; GitHub's own certificate is not renewed while proxied."
1375
1565
  enum:
1376
1566
  - NONE
1377
1567
  - PENDING
1378
1568
  - ISSUED
1379
1569
  - ERRORED
1570
+ - PROXIED
1380
1571
  type: string
1381
1572
  required:
1382
1573
  - state
@@ -1400,9 +1591,13 @@ components:
1400
1591
  minLength: 1
1401
1592
  type: string
1402
1593
  pointsToGithub:
1594
+ description: True when the hostname resolves to GitHub Pages. It stays false while the binding is proxied, because the name then resolves to the provider's proxy; `viaProxy` carries that case.
1403
1595
  type: boolean
1404
1596
  resolves:
1405
1597
  type: boolean
1598
+ viaProxy:
1599
+ description: True when the hostname resolves to the provider's proxy rather than to GitHub and the binding is proxied (`proxy` is present); the routing probe is then the proof of life (SCHEMA-3.6.0). Absent when the binding is not proxied.
1600
+ type: boolean
1406
1601
  required:
1407
1602
  - resolves
1408
1603
  - pointsToGithub
@@ -1439,7 +1634,7 @@ components:
1439
1634
  type: string
1440
1635
  DomainNextStep:
1441
1636
  additionalProperties: false
1442
- description: What is being waited on, or what the author should do next. Known codes include `ADD_DNS_RECORDS`, `WAIT_FOR_DNS`, `WAIT_FOR_CERTIFICATE`, `WAIT_FOR_ROUTING`, `PUBLISH_TO_SWITCH`, `FIX_DNS_RECORD`, `REMOVE_DNS_RECORDS` and `NONE`; a client shows `detail` for codes it does not know.
1637
+ description: What is being waited on, or what the author should do next. Known codes include `ADD_DNS_RECORDS`, `WAIT_FOR_DNS`, `WAIT_FOR_CERTIFICATE`, `WAIT_FOR_ROUTING`, `PUBLISH_TO_SWITCH`, `FIX_DNS_RECORD`, `REMOVE_DNS_RECORDS`, `TURN_ON_CLOUDFLARE_PROXY` (SCHEMA-3.6.0, the certificate is issued and the author may let Cloudflare proxy the site) and `NONE`; a client shows `detail` for codes it does not know.
1443
1638
  properties:
1444
1639
  code:
1445
1640
  maxLength: 80
@@ -2340,6 +2535,9 @@ components:
2340
2535
  - version
2341
2536
  - state
2342
2537
  type: object
2538
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdResponse:
2539
+ allOf:
2540
+ - $ref: "#/components/schemas/DnsConnection"
2343
2541
  GetOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdResponse:
2344
2542
  allOf:
2345
2543
  - $ref: "#/components/schemas/DomainBinding"
@@ -11569,6 +11767,10 @@ components:
11569
11767
  - REAUTH
11570
11768
  - RECOVERY
11571
11769
  type: string
11770
+ selectAccount:
11771
+ default: false
11772
+ description: Ask GitHub to show its account picker (`prompt=select_account`) instead of reusing the browser's GitHub session (SCHEMA-3.6.0).
11773
+ type: boolean
11572
11774
  required:
11573
11775
  - purpose
11574
11776
  type: object
@@ -12450,6 +12652,44 @@ components:
12450
12652
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDetachResponse:
12451
12653
  allOf:
12452
12654
  - $ref: "#/components/schemas/DomainBinding"
12655
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdApplyResponse:
12656
+ allOf:
12657
+ - $ref: "#/components/schemas/DnsConnection"
12658
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdDiscardResponse:
12659
+ allOf:
12660
+ - $ref: "#/components/schemas/DnsConnection"
12661
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsRequest:
12662
+ additionalProperties: false
12663
+ properties:
12664
+ intent:
12665
+ $ref: "#/components/schemas/DnsIntent"
12666
+ provider:
12667
+ $ref: "#/components/schemas/DnsProvider"
12668
+ required:
12669
+ - provider
12670
+ - intent
12671
+ type: object
12672
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsResponse:
12673
+ additionalProperties: false
12674
+ properties:
12675
+ authorizationUrl:
12676
+ description: The provider's consent address. A client navigates to it only when it is an `https` address on the provider's own host.
12677
+ format: uri
12678
+ maxLength: 4096
12679
+ minLength: 1
12680
+ pattern: ^https://[^\s]+$
12681
+ type: string
12682
+ connectionId:
12683
+ format: uuid
12684
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
12685
+ type: string
12686
+ expiresAt:
12687
+ $ref: "#/components/schemas/PortableProblemRfc3339"
12688
+ required:
12689
+ - connectionId
12690
+ - authorizationUrl
12691
+ - expiresAt
12692
+ type: object
12453
12693
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsRequest:
12454
12694
  additionalProperties: false
12455
12695
  properties:
@@ -12906,6 +13146,11 @@ components:
12906
13146
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdReviewsByReviewIdDecideRequest:
12907
13147
  additionalProperties: false
12908
13148
  properties:
13149
+ comment:
13150
+ description: Optional plain-text note from the reviewer, 1 to 4000 characters (SCHEMA-3.6.0). A longer or empty comment is `VALIDATION_FAILED` with pointer `/comment`.
13151
+ maxLength: 4000
13152
+ minLength: 1
13153
+ type: string
12909
13154
  decision:
12910
13155
  enum:
12911
13156
  - APPROVE
@@ -12922,9 +13167,22 @@ components:
12922
13167
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdReviewsByReviewIdDecideResponse:
12923
13168
  additionalProperties: false
12924
13169
  properties:
13170
+ comment:
13171
+ description: The newest decision's reviewer comment (SCHEMA-3.6.0). Absent when the decision carried none.
13172
+ maxLength: 4000
13173
+ minLength: 1
13174
+ type: string
13175
+ decidedAt:
13176
+ $ref: "#/components/schemas/PortableProblemRfc3339"
13177
+ decidedBy:
13178
+ $ref: "#/components/schemas/SiteActor"
12925
13179
  findingsDigest:
12926
13180
  pattern: ^sha256:[0-9a-f]{64}$
12927
13181
  type: string
13182
+ requestedAt:
13183
+ $ref: "#/components/schemas/PortableProblemRfc3339"
13184
+ requestedBy:
13185
+ $ref: "#/components/schemas/SiteActor"
12928
13186
  reviewId:
12929
13187
  format: uuid
12930
13188
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
@@ -15615,9 +15873,22 @@ components:
15615
15873
  review read returns, so a list row and a read of that row never
15616
15874
  disagree.
15617
15875
  properties:
15876
+ comment:
15877
+ description: The newest decision's reviewer comment (SCHEMA-3.6.0). Absent when the decision carried none.
15878
+ maxLength: 4000
15879
+ minLength: 1
15880
+ type: string
15881
+ decidedAt:
15882
+ $ref: "#/components/schemas/PortableProblemRfc3339"
15883
+ decidedBy:
15884
+ $ref: "#/components/schemas/SiteActor"
15618
15885
  findingsDigest:
15619
15886
  pattern: ^sha256:[0-9a-f]{64}$
15620
15887
  type: string
15888
+ requestedAt:
15889
+ $ref: "#/components/schemas/PortableProblemRfc3339"
15890
+ requestedBy:
15891
+ $ref: "#/components/schemas/SiteActor"
15621
15892
  reviewId:
15622
15893
  format: uuid
15623
15894
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
@@ -15936,14 +16207,29 @@ components:
15936
16207
  maxLength: 512
15937
16208
  minLength: 1
15938
16209
  type: string
16210
+ pullRequestUrl:
16211
+ description: The mirror of this change on GitHub (SCHEMA-3.6.0), the canonical GitHub pull-request URL, as `GithubPullRequestSummary.url`. Absent until a pull request is recorded.
16212
+ format: uri
16213
+ pattern: ^https://github[.]com/[A-Za-z0-9][A-Za-z0-9-]{0,38}/[A-Za-z0-9_.-]{1,100}/pull/[1-9][0-9]*$
16214
+ type: string
15939
16215
  review:
15940
- description: "`NOT_REQUIRED` when the publication does not require review; otherwise `WAITING`, `APPROVED` or `CHANGES_REQUESTED`."
16216
+ description: "`NOT_REQUIRED` when the publication does not require review; otherwise `WAITING`, `APPROVED` or `CHANGES_REQUESTED`. `NEEDS_RE_REVIEW` (SCHEMA-3.6.0): the reviewed revision was replaced by a newer one and the author requests review again."
15941
16217
  enum:
15942
16218
  - NOT_REQUIRED
15943
16219
  - WAITING
15944
16220
  - APPROVED
15945
16221
  - CHANGES_REQUESTED
16222
+ - NEEDS_RE_REVIEW
15946
16223
  type: string
16224
+ reviewComment:
16225
+ description: The newest decision's comment (SCHEMA-3.6.0), shown to the author next to the change. Absent when none.
16226
+ maxLength: 4000
16227
+ minLength: 1
16228
+ type: string
16229
+ reviewDecidedAt:
16230
+ $ref: "#/components/schemas/PortableProblemRfc3339"
16231
+ reviewDecidedBy:
16232
+ $ref: "#/components/schemas/SiteActor"
15947
16233
  reviewId:
15948
16234
  description: The review a reviewer decides through `POST .../reviews/{reviewId}:decide`. Present when a review exists.
15949
16235
  format: uuid
@@ -16791,6 +17077,77 @@ paths:
16791
17077
  - NONE
16792
17078
  x-gala-success-category: protocol
16793
17079
  x-gala-tenant-scope: NONE
17080
+ /v2/callbacks/cloudflare/oauth:
17081
+ get:
17082
+ description: |
17083
+ The address Cloudflare sends the person back to after the consent screen. It never answers with a problem document for what the provider sends: every outcome, including a denied consent or an unknown `state`, is a `303` to the Domain page with `?dns=<connectionId>` (or without it when the connection cannot be identified), and `GET .../dns-connections/{connectionId}` says what happened. `code`, `state`, `error` and `iss` are never logged or echoed. Only a value longer than its limit is refused as `400 VALIDATION_FAILED`, before any connection is touched.
17084
+ operationId: getCallbacksCloudflareOauth
17085
+ parameters:
17086
+ - $ref: "#/components/parameters/XCorrelationId"
17087
+ - example: example
17088
+ in: query
17089
+ name: code
17090
+ required: false
17091
+ schema:
17092
+ maxLength: 8192
17093
+ minLength: 1
17094
+ type: string
17095
+ - example: example
17096
+ in: query
17097
+ name: state
17098
+ required: false
17099
+ schema:
17100
+ maxLength: 8192
17101
+ minLength: 1
17102
+ type: string
17103
+ - example: example
17104
+ in: query
17105
+ name: error
17106
+ required: false
17107
+ schema:
17108
+ maxLength: 512
17109
+ minLength: 1
17110
+ type: string
17111
+ - example: example
17112
+ in: query
17113
+ name: iss
17114
+ required: false
17115
+ schema:
17116
+ maxLength: 2048
17117
+ minLength: 1
17118
+ type: string
17119
+ responses:
17120
+ "303":
17121
+ description: consume the exact Cloudflare OAuth callback transaction succeeded
17122
+ headers:
17123
+ Cache-Control:
17124
+ $ref: "#/components/headers/CacheControlNoStore"
17125
+ Location:
17126
+ $ref: "#/components/headers/Location"
17127
+ X-Correlation-Id:
17128
+ $ref: "#/components/headers/XCorrelationId"
17129
+ "400":
17130
+ $ref: "#/components/responses/ValidationFailed"
17131
+ security: []
17132
+ summary: consume the exact Cloudflare OAuth callback transaction
17133
+ tags:
17134
+ - callbacks
17135
+ x-gala-activation-gate: MVP
17136
+ x-gala-activation-guards:
17137
+ - NONE
17138
+ x-gala-capability-key: null
17139
+ x-gala-concurrency: single-use-transaction
17140
+ x-gala-conditional-capabilities: []
17141
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
17142
+ x-gala-nullability: required-and-nullable-are-explicit
17143
+ x-gala-purpose: consume the exact Cloudflare OAuth callback transaction
17144
+ x-gala-reachable-problems:
17145
+ - VALIDATION_FAILED
17146
+ x-gala-replay-identity: oauth-state
17147
+ x-gala-state-guards:
17148
+ - NONE
17149
+ x-gala-success-category: oauth-callback
17150
+ x-gala-tenant-scope: NONE
16794
17151
  /v2/callbacks/github/app:
16795
17152
  post:
16796
17153
  operationId: postCallbacksGithubApp
@@ -32122,13 +32479,11 @@ paths:
32122
32479
  - NONE
32123
32480
  x-gala-success-category: query
32124
32481
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
32125
- /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}:check:
32482
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}/dns-connections:
32126
32483
  post:
32127
32484
  description: |
32128
- Runs the checks for the binding's current state now (DNS, certificate,
32129
- routing) instead of waiting for the next automatic check, and returns
32130
- the binding. At most once a minute per binding (`429 RATE_LIMITED`).
32131
- operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdCheck
32485
+ Starts a connection to the person's DNS provider so Galascribe can add (`ADD`) or remove (`REMOVE`) the domain's DNS records there, and returns the provider's consent address (`authorizationUrl`); the App navigates the whole page to it. The provider sends the person back to the Domain page, where `GET .../dns-connections/{connectionId}` says what happened. Only offered when `dns.providers` on the binding lists the provider and the intent. `409 DNS_CONNECTION_NOT_APPLICABLE` when the binding's state has no records to add or remove; `503 DNS_PROVIDER_NOT_CONFIGURED` when this environment has no connection to that provider; `429 RATE_LIMITED` after one start per domain per minute. The connection is valid until `expiresAt`.
32486
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnections
32132
32487
  parameters:
32133
32488
  - $ref: "#/components/parameters/XCorrelationId"
32134
32489
  - example: 018f0000-0000-7000-8000-000000000001
@@ -32157,58 +32512,56 @@ paths:
32157
32512
  type: string
32158
32513
  - $ref: "#/components/parameters/IdempotencyKey"
32159
32514
  - $ref: "#/components/parameters/XCsrfToken"
32515
+ requestBody:
32516
+ content:
32517
+ application/json:
32518
+ examples:
32519
+ nominal:
32520
+ summary: Nominal valid request
32521
+ value:
32522
+ intent: ADD
32523
+ provider: CLOUDFLARE
32524
+ schema:
32525
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsRequest"
32526
+ required: true
32160
32527
  responses:
32161
- "200":
32528
+ "201":
32162
32529
  content:
32163
32530
  application/json:
32164
32531
  examples:
32165
32532
  nominal:
32166
32533
  summary: Nominal successful response
32167
32534
  value:
32168
- canonicalBase:
32169
- current: https://rathnastest.github.io/g11/
32170
- published: false
32171
- target: https://blog.maya.dev/
32172
- certificate:
32173
- state: PENDING
32174
- createdAt: "2026-10-09T12:00:00.000Z"
32175
- dns:
32176
- observed:
32177
- addresses: []
32178
- checkedAt: "2026-10-09T12:00:00.000Z"
32179
- cnameTarget: rathnastest.github.io
32180
- pointsToGithub: true
32181
- resolves: true
32182
- records:
32183
- - name: blog
32184
- type: CNAME
32185
- value: rathnastest.github.io
32186
- domainId: 018f0000-0000-7000-8000-000000000001
32187
- expiresAt: "2026-10-16T12:00:00.000Z"
32188
- hostname: blog.maya.dev
32189
- kind: SUBDOMAIN
32190
- nextStep:
32191
- code: WAIT_FOR_CERTIFICATE
32192
- detail: GitHub is issuing the certificate; this can take up to 24 hours.
32193
- routing:
32194
- httpsEnforced: false
32195
- probeOk: false
32196
- servedByPages: false
32197
- state: CERTIFICATE_PENDING
32198
- updatedAt: "2026-10-09T12:00:00.000Z"
32199
- version: 3
32535
+ authorizationUrl: https://dash.cloudflare.com/oauth2/auth?client_id=example&response_type=code&state=example
32536
+ connectionId: 018f0000-0000-7000-8000-000000000001
32537
+ expiresAt: "2026-10-10T12:10:00.000Z"
32200
32538
  schema:
32201
- $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdCheckResponse"
32202
- description: check a custom domain now succeeded
32539
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsResponse"
32540
+ description: start adding (or removing) a domain's DNS records at the person's DNS provider succeeded
32203
32541
  headers:
32204
32542
  Cache-Control:
32205
32543
  $ref: "#/components/headers/CacheControlNoStore"
32544
+ Location:
32545
+ $ref: "#/components/headers/Location"
32206
32546
  X-Correlation-Id:
32207
32547
  $ref: "#/components/headers/XCorrelationId"
32208
32548
  "400":
32209
32549
  content:
32210
32550
  application/problem+json:
32211
32551
  examples:
32552
+ REQUEST_FIELD_UNKNOWN:
32553
+ summary: REQUEST_FIELD_UNKNOWN
32554
+ value:
32555
+ code: REQUEST_FIELD_UNKNOWN
32556
+ correlationId: 018f0000-0000-7000-8000-000000000001
32557
+ detail: See the operation contract.
32558
+ errors: []
32559
+ retryable: false
32560
+ schemaId: urn:gala:schema:problem:2.0.0
32561
+ schemaVersion: 2.0.0
32562
+ status: 400
32563
+ title: REQUEST_FIELD_UNKNOWN
32564
+ type: urn:gala:problem:request-field-unknown
32212
32565
  VALIDATION_FAILED:
32213
32566
  summary: VALIDATION_FAILED
32214
32567
  value:
@@ -32224,7 +32577,1245 @@ paths:
32224
32577
  type: urn:gala:problem:validation-failed
32225
32578
  schema:
32226
32579
  $ref: "#/components/schemas/Problem"
32227
- description: VALIDATION_FAILED
32580
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
32581
+ headers:
32582
+ Cache-Control:
32583
+ $ref: "#/components/headers/CacheControlNoStore"
32584
+ X-Correlation-Id:
32585
+ $ref: "#/components/headers/XCorrelationId"
32586
+ x-gala-problem-codes:
32587
+ - REQUEST_FIELD_UNKNOWN
32588
+ - VALIDATION_FAILED
32589
+ "401":
32590
+ content:
32591
+ application/problem+json:
32592
+ examples:
32593
+ AUTHENTICATION_REQUIRED:
32594
+ summary: AUTHENTICATION_REQUIRED
32595
+ value:
32596
+ code: AUTHENTICATION_REQUIRED
32597
+ correlationId: 018f0000-0000-7000-8000-000000000001
32598
+ detail: See the operation contract.
32599
+ errors: []
32600
+ retryable: false
32601
+ schemaId: urn:gala:schema:problem:2.0.0
32602
+ schemaVersion: 2.0.0
32603
+ status: 401
32604
+ title: AUTHENTICATION_REQUIRED
32605
+ type: urn:gala:problem:authentication-required
32606
+ schema:
32607
+ $ref: "#/components/schemas/Problem"
32608
+ description: AUTHENTICATION_REQUIRED
32609
+ headers:
32610
+ Cache-Control:
32611
+ $ref: "#/components/headers/CacheControlNoStore"
32612
+ X-Correlation-Id:
32613
+ $ref: "#/components/headers/XCorrelationId"
32614
+ x-gala-problem-codes:
32615
+ - AUTHENTICATION_REQUIRED
32616
+ "403":
32617
+ content:
32618
+ application/problem+json:
32619
+ examples:
32620
+ AUTHORIZATION_DENIED:
32621
+ summary: AUTHORIZATION_DENIED
32622
+ value:
32623
+ code: AUTHORIZATION_DENIED
32624
+ correlationId: 018f0000-0000-7000-8000-000000000001
32625
+ detail: See the operation contract.
32626
+ errors: []
32627
+ retryable: false
32628
+ schemaId: urn:gala:schema:problem:2.0.0
32629
+ schemaVersion: 2.0.0
32630
+ status: 403
32631
+ title: AUTHORIZATION_DENIED
32632
+ type: urn:gala:problem:authorization-denied
32633
+ schema:
32634
+ $ref: "#/components/schemas/Problem"
32635
+ description: AUTHORIZATION_DENIED
32636
+ headers:
32637
+ Cache-Control:
32638
+ $ref: "#/components/headers/CacheControlNoStore"
32639
+ X-Correlation-Id:
32640
+ $ref: "#/components/headers/XCorrelationId"
32641
+ x-gala-problem-codes:
32642
+ - AUTHORIZATION_DENIED
32643
+ "404":
32644
+ content:
32645
+ application/problem+json:
32646
+ examples:
32647
+ RESOURCE_NOT_FOUND:
32648
+ summary: RESOURCE_NOT_FOUND
32649
+ value:
32650
+ code: RESOURCE_NOT_FOUND
32651
+ correlationId: 018f0000-0000-7000-8000-000000000001
32652
+ detail: See the operation contract.
32653
+ errors: []
32654
+ retryable: false
32655
+ schemaId: urn:gala:schema:problem:2.0.0
32656
+ schemaVersion: 2.0.0
32657
+ status: 404
32658
+ title: RESOURCE_NOT_FOUND
32659
+ type: urn:gala:problem:resource-not-found
32660
+ schema:
32661
+ $ref: "#/components/schemas/Problem"
32662
+ description: RESOURCE_NOT_FOUND
32663
+ headers:
32664
+ Cache-Control:
32665
+ $ref: "#/components/headers/CacheControlNoStore"
32666
+ X-Correlation-Id:
32667
+ $ref: "#/components/headers/XCorrelationId"
32668
+ x-gala-problem-codes:
32669
+ - RESOURCE_NOT_FOUND
32670
+ "409":
32671
+ content:
32672
+ application/problem+json:
32673
+ examples:
32674
+ COMMAND_REPLAY_CONFLICT:
32675
+ summary: COMMAND_REPLAY_CONFLICT
32676
+ value:
32677
+ code: COMMAND_REPLAY_CONFLICT
32678
+ correlationId: 018f0000-0000-7000-8000-000000000001
32679
+ detail: See the operation contract.
32680
+ errors: []
32681
+ retryable: false
32682
+ schemaId: urn:gala:schema:problem:2.0.0
32683
+ schemaVersion: 2.0.0
32684
+ status: 409
32685
+ title: COMMAND_REPLAY_CONFLICT
32686
+ type: urn:gala:problem:command-replay-conflict
32687
+ DNS_CONNECTION_NOT_APPLICABLE:
32688
+ summary: DNS_CONNECTION_NOT_APPLICABLE
32689
+ value:
32690
+ code: DNS_CONNECTION_NOT_APPLICABLE
32691
+ correlationId: 018f0000-0000-7000-8000-000000000001
32692
+ detail: See the operation contract.
32693
+ errors: []
32694
+ retryable: false
32695
+ schemaId: urn:gala:schema:problem:2.0.0
32696
+ schemaVersion: 2.0.0
32697
+ status: 409
32698
+ title: DNS_CONNECTION_NOT_APPLICABLE
32699
+ type: urn:gala:problem:dns-connection-not-applicable
32700
+ schema:
32701
+ $ref: "#/components/schemas/Problem"
32702
+ description: COMMAND_REPLAY_CONFLICT, DNS_CONNECTION_NOT_APPLICABLE
32703
+ headers:
32704
+ Cache-Control:
32705
+ $ref: "#/components/headers/CacheControlNoStore"
32706
+ X-Correlation-Id:
32707
+ $ref: "#/components/headers/XCorrelationId"
32708
+ x-gala-problem-codes:
32709
+ - COMMAND_REPLAY_CONFLICT
32710
+ - DNS_CONNECTION_NOT_APPLICABLE
32711
+ "429":
32712
+ content:
32713
+ application/problem+json:
32714
+ examples:
32715
+ RATE_LIMITED:
32716
+ summary: RATE_LIMITED
32717
+ value:
32718
+ code: RATE_LIMITED
32719
+ correlationId: 018f0000-0000-7000-8000-000000000001
32720
+ detail: See the operation contract.
32721
+ errors: []
32722
+ retryable: true
32723
+ schemaId: urn:gala:schema:problem:2.0.0
32724
+ schemaVersion: 2.0.0
32725
+ status: 429
32726
+ title: RATE_LIMITED
32727
+ type: urn:gala:problem:rate-limited
32728
+ schema:
32729
+ $ref: "#/components/schemas/Problem"
32730
+ description: RATE_LIMITED
32731
+ headers:
32732
+ Cache-Control:
32733
+ $ref: "#/components/headers/CacheControlNoStore"
32734
+ Retry-After:
32735
+ $ref: "#/components/headers/RetryAfter"
32736
+ X-Correlation-Id:
32737
+ $ref: "#/components/headers/XCorrelationId"
32738
+ x-gala-problem-codes:
32739
+ - RATE_LIMITED
32740
+ "503":
32741
+ content:
32742
+ application/problem+json:
32743
+ examples:
32744
+ DNS_PROVIDER_NOT_CONFIGURED:
32745
+ summary: DNS_PROVIDER_NOT_CONFIGURED
32746
+ value:
32747
+ code: DNS_PROVIDER_NOT_CONFIGURED
32748
+ correlationId: 018f0000-0000-7000-8000-000000000001
32749
+ detail: See the operation contract.
32750
+ errors: []
32751
+ retryable: false
32752
+ schemaId: urn:gala:schema:problem:2.0.0
32753
+ schemaVersion: 2.0.0
32754
+ status: 503
32755
+ title: DNS_PROVIDER_NOT_CONFIGURED
32756
+ type: urn:gala:problem:dns-provider-not-configured
32757
+ schema:
32758
+ $ref: "#/components/schemas/Problem"
32759
+ description: DNS_PROVIDER_NOT_CONFIGURED
32760
+ headers:
32761
+ Cache-Control:
32762
+ $ref: "#/components/headers/CacheControlNoStore"
32763
+ X-Correlation-Id:
32764
+ $ref: "#/components/headers/XCorrelationId"
32765
+ x-gala-problem-codes:
32766
+ - DNS_PROVIDER_NOT_CONFIGURED
32767
+ security:
32768
+ - browserSession: []
32769
+ summary: start adding (or removing) a domain's DNS records at the person's DNS provider
32770
+ tags:
32771
+ - domains
32772
+ x-gala-activation-gate: MVP
32773
+ x-gala-activation-guards:
32774
+ - NONE
32775
+ x-gala-capability-key: publication.settings.manage
32776
+ x-gala-concurrency: domain-binding-version
32777
+ x-gala-conditional-capabilities: []
32778
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
32779
+ x-gala-nullability: required-and-nullable-are-explicit
32780
+ x-gala-purpose: start adding (or removing) a domain's DNS records at the person's DNS provider
32781
+ x-gala-reachable-problems:
32782
+ - AUTHENTICATION_REQUIRED
32783
+ - AUTHORIZATION_DENIED
32784
+ - COMMAND_REPLAY_CONFLICT
32785
+ - DNS_CONNECTION_NOT_APPLICABLE
32786
+ - DNS_PROVIDER_NOT_CONFIGURED
32787
+ - RATE_LIMITED
32788
+ - REQUEST_FIELD_UNKNOWN
32789
+ - RESOURCE_NOT_FOUND
32790
+ - VALIDATION_FAILED
32791
+ x-gala-replay-identity: idempotency-key
32792
+ x-gala-state-guards:
32793
+ - NONE
32794
+ x-gala-success-category: create
32795
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
32796
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}/dns-connections/{connectionId}:
32797
+ get:
32798
+ description: |
32799
+ One DNS connection of this domain: where it stands (`phase`), what it will or did change (`plan`, `applied`) and, when it ended without success, why (`outcome`). `NEEDS_CONFIRMATION` means something at the provider would be replaced and nothing has been touched yet: `:apply` writes the plan, `:discard` leaves everything as it was. `404 DNS_CONNECTION_NOT_FOUND` for an unknown connection.
32800
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionId
32801
+ parameters:
32802
+ - $ref: "#/components/parameters/XCorrelationId"
32803
+ - example: 018f0000-0000-7000-8000-000000000001
32804
+ in: path
32805
+ name: organizationId
32806
+ required: true
32807
+ schema:
32808
+ format: uuid
32809
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32810
+ type: string
32811
+ - example: 018f0000-0000-7000-8000-000000000001
32812
+ in: path
32813
+ name: publicationId
32814
+ required: true
32815
+ schema:
32816
+ format: uuid
32817
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32818
+ type: string
32819
+ - example: 018f0000-0000-7000-8000-000000000001
32820
+ in: path
32821
+ name: domainId
32822
+ required: true
32823
+ schema:
32824
+ format: uuid
32825
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32826
+ type: string
32827
+ - example: 018f0000-0000-7000-8000-000000000001
32828
+ in: path
32829
+ name: connectionId
32830
+ required: true
32831
+ schema:
32832
+ format: uuid
32833
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32834
+ type: string
32835
+ responses:
32836
+ "200":
32837
+ content:
32838
+ application/json:
32839
+ examples:
32840
+ nominal:
32841
+ summary: Nominal successful response
32842
+ value:
32843
+ connectionId: 018f0000-0000-7000-8000-000000000001
32844
+ createdAt: "2026-10-10T12:00:00.000Z"
32845
+ expiresAt: "2026-10-10T12:10:00.000Z"
32846
+ intent: ADD
32847
+ phase: NEEDS_CONFIRMATION
32848
+ plan:
32849
+ - action: REPLACE
32850
+ existing:
32851
+ proxied: true
32852
+ type: A
32853
+ value: 203.0.113.7
32854
+ record:
32855
+ name: "@"
32856
+ type: A
32857
+ value: 185.199.108.153
32858
+ - action: KEEP
32859
+ existing:
32860
+ proxied: false
32861
+ type: A
32862
+ value: 185.199.109.153
32863
+ record:
32864
+ name: "@"
32865
+ type: A
32866
+ value: 185.199.109.153
32867
+ provider: CLOUDFLARE
32868
+ zone:
32869
+ accountName: Maya Personal
32870
+ name: maya.dev
32871
+ schema:
32872
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdResponse"
32873
+ description: read a DNS connection succeeded
32874
+ headers:
32875
+ Cache-Control:
32876
+ $ref: "#/components/headers/CacheControlNoStore"
32877
+ X-Correlation-Id:
32878
+ $ref: "#/components/headers/XCorrelationId"
32879
+ "400":
32880
+ content:
32881
+ application/problem+json:
32882
+ examples:
32883
+ VALIDATION_FAILED:
32884
+ summary: VALIDATION_FAILED
32885
+ value:
32886
+ code: VALIDATION_FAILED
32887
+ correlationId: 018f0000-0000-7000-8000-000000000001
32888
+ detail: See the operation contract.
32889
+ errors: []
32890
+ retryable: false
32891
+ schemaId: urn:gala:schema:problem:2.0.0
32892
+ schemaVersion: 2.0.0
32893
+ status: 400
32894
+ title: VALIDATION_FAILED
32895
+ type: urn:gala:problem:validation-failed
32896
+ schema:
32897
+ $ref: "#/components/schemas/Problem"
32898
+ description: VALIDATION_FAILED
32899
+ headers:
32900
+ Cache-Control:
32901
+ $ref: "#/components/headers/CacheControlNoStore"
32902
+ X-Correlation-Id:
32903
+ $ref: "#/components/headers/XCorrelationId"
32904
+ x-gala-problem-codes:
32905
+ - VALIDATION_FAILED
32906
+ "401":
32907
+ content:
32908
+ application/problem+json:
32909
+ examples:
32910
+ AUTHENTICATION_REQUIRED:
32911
+ summary: AUTHENTICATION_REQUIRED
32912
+ value:
32913
+ code: AUTHENTICATION_REQUIRED
32914
+ correlationId: 018f0000-0000-7000-8000-000000000001
32915
+ detail: See the operation contract.
32916
+ errors: []
32917
+ retryable: false
32918
+ schemaId: urn:gala:schema:problem:2.0.0
32919
+ schemaVersion: 2.0.0
32920
+ status: 401
32921
+ title: AUTHENTICATION_REQUIRED
32922
+ type: urn:gala:problem:authentication-required
32923
+ schema:
32924
+ $ref: "#/components/schemas/Problem"
32925
+ description: AUTHENTICATION_REQUIRED
32926
+ headers:
32927
+ Cache-Control:
32928
+ $ref: "#/components/headers/CacheControlNoStore"
32929
+ X-Correlation-Id:
32930
+ $ref: "#/components/headers/XCorrelationId"
32931
+ x-gala-problem-codes:
32932
+ - AUTHENTICATION_REQUIRED
32933
+ "403":
32934
+ content:
32935
+ application/problem+json:
32936
+ examples:
32937
+ AUTHORIZATION_DENIED:
32938
+ summary: AUTHORIZATION_DENIED
32939
+ value:
32940
+ code: AUTHORIZATION_DENIED
32941
+ correlationId: 018f0000-0000-7000-8000-000000000001
32942
+ detail: See the operation contract.
32943
+ errors: []
32944
+ retryable: false
32945
+ schemaId: urn:gala:schema:problem:2.0.0
32946
+ schemaVersion: 2.0.0
32947
+ status: 403
32948
+ title: AUTHORIZATION_DENIED
32949
+ type: urn:gala:problem:authorization-denied
32950
+ schema:
32951
+ $ref: "#/components/schemas/Problem"
32952
+ description: AUTHORIZATION_DENIED
32953
+ headers:
32954
+ Cache-Control:
32955
+ $ref: "#/components/headers/CacheControlNoStore"
32956
+ X-Correlation-Id:
32957
+ $ref: "#/components/headers/XCorrelationId"
32958
+ x-gala-problem-codes:
32959
+ - AUTHORIZATION_DENIED
32960
+ "404":
32961
+ content:
32962
+ application/problem+json:
32963
+ examples:
32964
+ DNS_CONNECTION_NOT_FOUND:
32965
+ summary: DNS_CONNECTION_NOT_FOUND
32966
+ value:
32967
+ code: DNS_CONNECTION_NOT_FOUND
32968
+ correlationId: 018f0000-0000-7000-8000-000000000001
32969
+ detail: See the operation contract.
32970
+ errors: []
32971
+ retryable: false
32972
+ schemaId: urn:gala:schema:problem:2.0.0
32973
+ schemaVersion: 2.0.0
32974
+ status: 404
32975
+ title: DNS_CONNECTION_NOT_FOUND
32976
+ type: urn:gala:problem:dns-connection-not-found
32977
+ RESOURCE_NOT_FOUND:
32978
+ summary: RESOURCE_NOT_FOUND
32979
+ value:
32980
+ code: RESOURCE_NOT_FOUND
32981
+ correlationId: 018f0000-0000-7000-8000-000000000001
32982
+ detail: See the operation contract.
32983
+ errors: []
32984
+ retryable: false
32985
+ schemaId: urn:gala:schema:problem:2.0.0
32986
+ schemaVersion: 2.0.0
32987
+ status: 404
32988
+ title: RESOURCE_NOT_FOUND
32989
+ type: urn:gala:problem:resource-not-found
32990
+ schema:
32991
+ $ref: "#/components/schemas/Problem"
32992
+ description: DNS_CONNECTION_NOT_FOUND, RESOURCE_NOT_FOUND
32993
+ headers:
32994
+ Cache-Control:
32995
+ $ref: "#/components/headers/CacheControlNoStore"
32996
+ X-Correlation-Id:
32997
+ $ref: "#/components/headers/XCorrelationId"
32998
+ x-gala-problem-codes:
32999
+ - DNS_CONNECTION_NOT_FOUND
33000
+ - RESOURCE_NOT_FOUND
33001
+ security:
33002
+ - browserSession: []
33003
+ summary: read a DNS connection
33004
+ tags:
33005
+ - domains
33006
+ x-gala-activation-gate: MVP
33007
+ x-gala-activation-guards:
33008
+ - NONE
33009
+ x-gala-capability-key: publication.view
33010
+ x-gala-concurrency: domain-binding-version
33011
+ x-gala-conditional-capabilities: []
33012
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
33013
+ x-gala-nullability: required-and-nullable-are-explicit
33014
+ x-gala-purpose: read a DNS connection
33015
+ x-gala-reachable-problems:
33016
+ - AUTHENTICATION_REQUIRED
33017
+ - AUTHORIZATION_DENIED
33018
+ - DNS_CONNECTION_NOT_FOUND
33019
+ - RESOURCE_NOT_FOUND
33020
+ - VALIDATION_FAILED
33021
+ x-gala-replay-identity: safe-query
33022
+ x-gala-state-guards:
33023
+ - NONE
33024
+ x-gala-success-category: query
33025
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
33026
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}/dns-connections/{connectionId}:apply:
33027
+ post:
33028
+ description: |
33029
+ Writes the records in the connection's `plan` at the provider, ends the provider's access, runs the domain's DNS check, and returns the connection as `APPLIED`. `409 DNS_CONNECTION_NOT_CONFIRMABLE` unless the connection is `NEEDS_CONFIRMATION`; `410 DNS_CONNECTION_EXPIRED` when the held access has lapsed (the connection is then `EXPIRED`); `502 DNS_PROVIDER_REJECTED` when the provider refused the change (nothing is half-applied).
33030
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdApply
33031
+ parameters:
33032
+ - $ref: "#/components/parameters/XCorrelationId"
33033
+ - example: 018f0000-0000-7000-8000-000000000001
33034
+ in: path
33035
+ name: organizationId
33036
+ required: true
33037
+ schema:
33038
+ format: uuid
33039
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33040
+ type: string
33041
+ - example: 018f0000-0000-7000-8000-000000000001
33042
+ in: path
33043
+ name: publicationId
33044
+ required: true
33045
+ schema:
33046
+ format: uuid
33047
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33048
+ type: string
33049
+ - example: 018f0000-0000-7000-8000-000000000001
33050
+ in: path
33051
+ name: domainId
33052
+ required: true
33053
+ schema:
33054
+ format: uuid
33055
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33056
+ type: string
33057
+ - example: 018f0000-0000-7000-8000-000000000001
33058
+ in: path
33059
+ name: connectionId
33060
+ required: true
33061
+ schema:
33062
+ format: uuid
33063
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33064
+ type: string
33065
+ - $ref: "#/components/parameters/IdempotencyKey"
33066
+ - $ref: "#/components/parameters/XCsrfToken"
33067
+ responses:
33068
+ "200":
33069
+ content:
33070
+ application/json:
33071
+ examples:
33072
+ nominal:
33073
+ summary: Nominal successful response
33074
+ value:
33075
+ applied:
33076
+ at: "2026-10-10T12:03:00.000Z"
33077
+ created: 0
33078
+ deleted: 0
33079
+ replaced: 1
33080
+ connectionId: 018f0000-0000-7000-8000-000000000001
33081
+ createdAt: "2026-10-10T12:00:00.000Z"
33082
+ expiresAt: "2026-10-10T12:10:00.000Z"
33083
+ intent: ADD
33084
+ phase: APPLIED
33085
+ plan:
33086
+ - action: REPLACE
33087
+ existing:
33088
+ proxied: true
33089
+ type: A
33090
+ value: 203.0.113.7
33091
+ record:
33092
+ name: "@"
33093
+ type: A
33094
+ value: 185.199.108.153
33095
+ - action: KEEP
33096
+ existing:
33097
+ proxied: false
33098
+ type: A
33099
+ value: 185.199.109.153
33100
+ record:
33101
+ name: "@"
33102
+ type: A
33103
+ value: 185.199.109.153
33104
+ provider: CLOUDFLARE
33105
+ zone:
33106
+ accountName: Maya Personal
33107
+ name: maya.dev
33108
+ schema:
33109
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdApplyResponse"
33110
+ description: apply the DNS changes a connection is waiting to make succeeded
33111
+ headers:
33112
+ Cache-Control:
33113
+ $ref: "#/components/headers/CacheControlNoStore"
33114
+ X-Correlation-Id:
33115
+ $ref: "#/components/headers/XCorrelationId"
33116
+ "400":
33117
+ content:
33118
+ application/problem+json:
33119
+ examples:
33120
+ VALIDATION_FAILED:
33121
+ summary: VALIDATION_FAILED
33122
+ value:
33123
+ code: VALIDATION_FAILED
33124
+ correlationId: 018f0000-0000-7000-8000-000000000001
33125
+ detail: See the operation contract.
33126
+ errors: []
33127
+ retryable: false
33128
+ schemaId: urn:gala:schema:problem:2.0.0
33129
+ schemaVersion: 2.0.0
33130
+ status: 400
33131
+ title: VALIDATION_FAILED
33132
+ type: urn:gala:problem:validation-failed
33133
+ schema:
33134
+ $ref: "#/components/schemas/Problem"
33135
+ description: VALIDATION_FAILED
33136
+ headers:
33137
+ Cache-Control:
33138
+ $ref: "#/components/headers/CacheControlNoStore"
33139
+ X-Correlation-Id:
33140
+ $ref: "#/components/headers/XCorrelationId"
33141
+ x-gala-problem-codes:
33142
+ - VALIDATION_FAILED
33143
+ "401":
33144
+ content:
33145
+ application/problem+json:
33146
+ examples:
33147
+ AUTHENTICATION_REQUIRED:
33148
+ summary: AUTHENTICATION_REQUIRED
33149
+ value:
33150
+ code: AUTHENTICATION_REQUIRED
33151
+ correlationId: 018f0000-0000-7000-8000-000000000001
33152
+ detail: See the operation contract.
33153
+ errors: []
33154
+ retryable: false
33155
+ schemaId: urn:gala:schema:problem:2.0.0
33156
+ schemaVersion: 2.0.0
33157
+ status: 401
33158
+ title: AUTHENTICATION_REQUIRED
33159
+ type: urn:gala:problem:authentication-required
33160
+ schema:
33161
+ $ref: "#/components/schemas/Problem"
33162
+ description: AUTHENTICATION_REQUIRED
33163
+ headers:
33164
+ Cache-Control:
33165
+ $ref: "#/components/headers/CacheControlNoStore"
33166
+ X-Correlation-Id:
33167
+ $ref: "#/components/headers/XCorrelationId"
33168
+ x-gala-problem-codes:
33169
+ - AUTHENTICATION_REQUIRED
33170
+ "403":
33171
+ content:
33172
+ application/problem+json:
33173
+ examples:
33174
+ AUTHORIZATION_DENIED:
33175
+ summary: AUTHORIZATION_DENIED
33176
+ value:
33177
+ code: AUTHORIZATION_DENIED
33178
+ correlationId: 018f0000-0000-7000-8000-000000000001
33179
+ detail: See the operation contract.
33180
+ errors: []
33181
+ retryable: false
33182
+ schemaId: urn:gala:schema:problem:2.0.0
33183
+ schemaVersion: 2.0.0
33184
+ status: 403
33185
+ title: AUTHORIZATION_DENIED
33186
+ type: urn:gala:problem:authorization-denied
33187
+ schema:
33188
+ $ref: "#/components/schemas/Problem"
33189
+ description: AUTHORIZATION_DENIED
33190
+ headers:
33191
+ Cache-Control:
33192
+ $ref: "#/components/headers/CacheControlNoStore"
33193
+ X-Correlation-Id:
33194
+ $ref: "#/components/headers/XCorrelationId"
33195
+ x-gala-problem-codes:
33196
+ - AUTHORIZATION_DENIED
33197
+ "404":
33198
+ content:
33199
+ application/problem+json:
33200
+ examples:
33201
+ DNS_CONNECTION_NOT_FOUND:
33202
+ summary: DNS_CONNECTION_NOT_FOUND
33203
+ value:
33204
+ code: DNS_CONNECTION_NOT_FOUND
33205
+ correlationId: 018f0000-0000-7000-8000-000000000001
33206
+ detail: See the operation contract.
33207
+ errors: []
33208
+ retryable: false
33209
+ schemaId: urn:gala:schema:problem:2.0.0
33210
+ schemaVersion: 2.0.0
33211
+ status: 404
33212
+ title: DNS_CONNECTION_NOT_FOUND
33213
+ type: urn:gala:problem:dns-connection-not-found
33214
+ RESOURCE_NOT_FOUND:
33215
+ summary: RESOURCE_NOT_FOUND
33216
+ value:
33217
+ code: RESOURCE_NOT_FOUND
33218
+ correlationId: 018f0000-0000-7000-8000-000000000001
33219
+ detail: See the operation contract.
33220
+ errors: []
33221
+ retryable: false
33222
+ schemaId: urn:gala:schema:problem:2.0.0
33223
+ schemaVersion: 2.0.0
33224
+ status: 404
33225
+ title: RESOURCE_NOT_FOUND
33226
+ type: urn:gala:problem:resource-not-found
33227
+ schema:
33228
+ $ref: "#/components/schemas/Problem"
33229
+ description: DNS_CONNECTION_NOT_FOUND, RESOURCE_NOT_FOUND
33230
+ headers:
33231
+ Cache-Control:
33232
+ $ref: "#/components/headers/CacheControlNoStore"
33233
+ X-Correlation-Id:
33234
+ $ref: "#/components/headers/XCorrelationId"
33235
+ x-gala-problem-codes:
33236
+ - DNS_CONNECTION_NOT_FOUND
33237
+ - RESOURCE_NOT_FOUND
33238
+ "409":
33239
+ content:
33240
+ application/problem+json:
33241
+ examples:
33242
+ COMMAND_REPLAY_CONFLICT:
33243
+ summary: COMMAND_REPLAY_CONFLICT
33244
+ value:
33245
+ code: COMMAND_REPLAY_CONFLICT
33246
+ correlationId: 018f0000-0000-7000-8000-000000000001
33247
+ detail: See the operation contract.
33248
+ errors: []
33249
+ retryable: false
33250
+ schemaId: urn:gala:schema:problem:2.0.0
33251
+ schemaVersion: 2.0.0
33252
+ status: 409
33253
+ title: COMMAND_REPLAY_CONFLICT
33254
+ type: urn:gala:problem:command-replay-conflict
33255
+ DNS_CONNECTION_NOT_CONFIRMABLE:
33256
+ summary: DNS_CONNECTION_NOT_CONFIRMABLE
33257
+ value:
33258
+ code: DNS_CONNECTION_NOT_CONFIRMABLE
33259
+ correlationId: 018f0000-0000-7000-8000-000000000001
33260
+ detail: See the operation contract.
33261
+ errors: []
33262
+ retryable: false
33263
+ schemaId: urn:gala:schema:problem:2.0.0
33264
+ schemaVersion: 2.0.0
33265
+ status: 409
33266
+ title: DNS_CONNECTION_NOT_CONFIRMABLE
33267
+ type: urn:gala:problem:dns-connection-not-confirmable
33268
+ schema:
33269
+ $ref: "#/components/schemas/Problem"
33270
+ description: COMMAND_REPLAY_CONFLICT, DNS_CONNECTION_NOT_CONFIRMABLE
33271
+ headers:
33272
+ Cache-Control:
33273
+ $ref: "#/components/headers/CacheControlNoStore"
33274
+ X-Correlation-Id:
33275
+ $ref: "#/components/headers/XCorrelationId"
33276
+ x-gala-problem-codes:
33277
+ - COMMAND_REPLAY_CONFLICT
33278
+ - DNS_CONNECTION_NOT_CONFIRMABLE
33279
+ "410":
33280
+ content:
33281
+ application/problem+json:
33282
+ examples:
33283
+ DNS_CONNECTION_EXPIRED:
33284
+ summary: DNS_CONNECTION_EXPIRED
33285
+ value:
33286
+ code: DNS_CONNECTION_EXPIRED
33287
+ correlationId: 018f0000-0000-7000-8000-000000000001
33288
+ detail: See the operation contract.
33289
+ errors: []
33290
+ retryable: false
33291
+ schemaId: urn:gala:schema:problem:2.0.0
33292
+ schemaVersion: 2.0.0
33293
+ status: 410
33294
+ title: DNS_CONNECTION_EXPIRED
33295
+ type: urn:gala:problem:dns-connection-expired
33296
+ schema:
33297
+ $ref: "#/components/schemas/Problem"
33298
+ description: DNS_CONNECTION_EXPIRED
33299
+ headers:
33300
+ Cache-Control:
33301
+ $ref: "#/components/headers/CacheControlNoStore"
33302
+ X-Correlation-Id:
33303
+ $ref: "#/components/headers/XCorrelationId"
33304
+ x-gala-problem-codes:
33305
+ - DNS_CONNECTION_EXPIRED
33306
+ "502":
33307
+ content:
33308
+ application/problem+json:
33309
+ examples:
33310
+ DNS_PROVIDER_REJECTED:
33311
+ summary: DNS_PROVIDER_REJECTED
33312
+ value:
33313
+ code: DNS_PROVIDER_REJECTED
33314
+ correlationId: 018f0000-0000-7000-8000-000000000001
33315
+ detail: See the operation contract.
33316
+ errors: []
33317
+ retryable: true
33318
+ schemaId: urn:gala:schema:problem:2.0.0
33319
+ schemaVersion: 2.0.0
33320
+ status: 502
33321
+ title: DNS_PROVIDER_REJECTED
33322
+ type: urn:gala:problem:dns-provider-rejected
33323
+ schema:
33324
+ $ref: "#/components/schemas/Problem"
33325
+ description: DNS_PROVIDER_REJECTED
33326
+ headers:
33327
+ Cache-Control:
33328
+ $ref: "#/components/headers/CacheControlNoStore"
33329
+ X-Correlation-Id:
33330
+ $ref: "#/components/headers/XCorrelationId"
33331
+ x-gala-problem-codes:
33332
+ - DNS_PROVIDER_REJECTED
33333
+ security:
33334
+ - browserSession: []
33335
+ summary: apply the DNS changes a connection is waiting to make
33336
+ tags:
33337
+ - domains
33338
+ x-gala-activation-gate: MVP
33339
+ x-gala-activation-guards:
33340
+ - NONE
33341
+ x-gala-capability-key: publication.settings.manage
33342
+ x-gala-concurrency: domain-binding-version
33343
+ x-gala-conditional-capabilities: []
33344
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
33345
+ x-gala-nullability: required-and-nullable-are-explicit
33346
+ x-gala-purpose: apply the DNS changes a connection is waiting to make
33347
+ x-gala-reachable-problems:
33348
+ - AUTHENTICATION_REQUIRED
33349
+ - AUTHORIZATION_DENIED
33350
+ - COMMAND_REPLAY_CONFLICT
33351
+ - DNS_CONNECTION_EXPIRED
33352
+ - DNS_CONNECTION_NOT_CONFIRMABLE
33353
+ - DNS_CONNECTION_NOT_FOUND
33354
+ - DNS_PROVIDER_REJECTED
33355
+ - RESOURCE_NOT_FOUND
33356
+ - VALIDATION_FAILED
33357
+ x-gala-replay-identity: idempotency-key
33358
+ x-gala-state-guards:
33359
+ - NONE
33360
+ x-gala-success-category: protocol
33361
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
33362
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}/dns-connections/{connectionId}:discard:
33363
+ post:
33364
+ description: |
33365
+ Ends a connection that is waiting for confirmation without changing anything at the provider, ends the provider's access, and returns the connection as `CANCELLED`. `409 DNS_CONNECTION_NOT_CONFIRMABLE` unless the connection is `NEEDS_CONFIRMATION`.
33366
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdDiscard
33367
+ parameters:
33368
+ - $ref: "#/components/parameters/XCorrelationId"
33369
+ - example: 018f0000-0000-7000-8000-000000000001
33370
+ in: path
33371
+ name: organizationId
33372
+ required: true
33373
+ schema:
33374
+ format: uuid
33375
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33376
+ type: string
33377
+ - example: 018f0000-0000-7000-8000-000000000001
33378
+ in: path
33379
+ name: publicationId
33380
+ required: true
33381
+ schema:
33382
+ format: uuid
33383
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33384
+ type: string
33385
+ - example: 018f0000-0000-7000-8000-000000000001
33386
+ in: path
33387
+ name: domainId
33388
+ required: true
33389
+ schema:
33390
+ format: uuid
33391
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33392
+ type: string
33393
+ - example: 018f0000-0000-7000-8000-000000000001
33394
+ in: path
33395
+ name: connectionId
33396
+ required: true
33397
+ schema:
33398
+ format: uuid
33399
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33400
+ type: string
33401
+ - $ref: "#/components/parameters/IdempotencyKey"
33402
+ - $ref: "#/components/parameters/XCsrfToken"
33403
+ responses:
33404
+ "200":
33405
+ content:
33406
+ application/json:
33407
+ examples:
33408
+ nominal:
33409
+ summary: Nominal successful response
33410
+ value:
33411
+ connectionId: 018f0000-0000-7000-8000-000000000001
33412
+ createdAt: "2026-10-10T12:00:00.000Z"
33413
+ expiresAt: "2026-10-10T12:10:00.000Z"
33414
+ intent: ADD
33415
+ outcome:
33416
+ code: CANCELLED
33417
+ detail: The records were left as they were.
33418
+ phase: CANCELLED
33419
+ plan:
33420
+ - action: REPLACE
33421
+ existing:
33422
+ proxied: true
33423
+ type: A
33424
+ value: 203.0.113.7
33425
+ record:
33426
+ name: "@"
33427
+ type: A
33428
+ value: 185.199.108.153
33429
+ - action: KEEP
33430
+ existing:
33431
+ proxied: false
33432
+ type: A
33433
+ value: 185.199.109.153
33434
+ record:
33435
+ name: "@"
33436
+ type: A
33437
+ value: 185.199.109.153
33438
+ provider: CLOUDFLARE
33439
+ zone:
33440
+ accountName: Maya Personal
33441
+ name: maya.dev
33442
+ schema:
33443
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdDiscardResponse"
33444
+ description: leave the provider's DNS records as they are and end a connection succeeded
33445
+ headers:
33446
+ Cache-Control:
33447
+ $ref: "#/components/headers/CacheControlNoStore"
33448
+ X-Correlation-Id:
33449
+ $ref: "#/components/headers/XCorrelationId"
33450
+ "400":
33451
+ content:
33452
+ application/problem+json:
33453
+ examples:
33454
+ VALIDATION_FAILED:
33455
+ summary: VALIDATION_FAILED
33456
+ value:
33457
+ code: VALIDATION_FAILED
33458
+ correlationId: 018f0000-0000-7000-8000-000000000001
33459
+ detail: See the operation contract.
33460
+ errors: []
33461
+ retryable: false
33462
+ schemaId: urn:gala:schema:problem:2.0.0
33463
+ schemaVersion: 2.0.0
33464
+ status: 400
33465
+ title: VALIDATION_FAILED
33466
+ type: urn:gala:problem:validation-failed
33467
+ schema:
33468
+ $ref: "#/components/schemas/Problem"
33469
+ description: VALIDATION_FAILED
33470
+ headers:
33471
+ Cache-Control:
33472
+ $ref: "#/components/headers/CacheControlNoStore"
33473
+ X-Correlation-Id:
33474
+ $ref: "#/components/headers/XCorrelationId"
33475
+ x-gala-problem-codes:
33476
+ - VALIDATION_FAILED
33477
+ "401":
33478
+ content:
33479
+ application/problem+json:
33480
+ examples:
33481
+ AUTHENTICATION_REQUIRED:
33482
+ summary: AUTHENTICATION_REQUIRED
33483
+ value:
33484
+ code: AUTHENTICATION_REQUIRED
33485
+ correlationId: 018f0000-0000-7000-8000-000000000001
33486
+ detail: See the operation contract.
33487
+ errors: []
33488
+ retryable: false
33489
+ schemaId: urn:gala:schema:problem:2.0.0
33490
+ schemaVersion: 2.0.0
33491
+ status: 401
33492
+ title: AUTHENTICATION_REQUIRED
33493
+ type: urn:gala:problem:authentication-required
33494
+ schema:
33495
+ $ref: "#/components/schemas/Problem"
33496
+ description: AUTHENTICATION_REQUIRED
33497
+ headers:
33498
+ Cache-Control:
33499
+ $ref: "#/components/headers/CacheControlNoStore"
33500
+ X-Correlation-Id:
33501
+ $ref: "#/components/headers/XCorrelationId"
33502
+ x-gala-problem-codes:
33503
+ - AUTHENTICATION_REQUIRED
33504
+ "403":
33505
+ content:
33506
+ application/problem+json:
33507
+ examples:
33508
+ AUTHORIZATION_DENIED:
33509
+ summary: AUTHORIZATION_DENIED
33510
+ value:
33511
+ code: AUTHORIZATION_DENIED
33512
+ correlationId: 018f0000-0000-7000-8000-000000000001
33513
+ detail: See the operation contract.
33514
+ errors: []
33515
+ retryable: false
33516
+ schemaId: urn:gala:schema:problem:2.0.0
33517
+ schemaVersion: 2.0.0
33518
+ status: 403
33519
+ title: AUTHORIZATION_DENIED
33520
+ type: urn:gala:problem:authorization-denied
33521
+ schema:
33522
+ $ref: "#/components/schemas/Problem"
33523
+ description: AUTHORIZATION_DENIED
33524
+ headers:
33525
+ Cache-Control:
33526
+ $ref: "#/components/headers/CacheControlNoStore"
33527
+ X-Correlation-Id:
33528
+ $ref: "#/components/headers/XCorrelationId"
33529
+ x-gala-problem-codes:
33530
+ - AUTHORIZATION_DENIED
33531
+ "404":
33532
+ content:
33533
+ application/problem+json:
33534
+ examples:
33535
+ DNS_CONNECTION_NOT_FOUND:
33536
+ summary: DNS_CONNECTION_NOT_FOUND
33537
+ value:
33538
+ code: DNS_CONNECTION_NOT_FOUND
33539
+ correlationId: 018f0000-0000-7000-8000-000000000001
33540
+ detail: See the operation contract.
33541
+ errors: []
33542
+ retryable: false
33543
+ schemaId: urn:gala:schema:problem:2.0.0
33544
+ schemaVersion: 2.0.0
33545
+ status: 404
33546
+ title: DNS_CONNECTION_NOT_FOUND
33547
+ type: urn:gala:problem:dns-connection-not-found
33548
+ RESOURCE_NOT_FOUND:
33549
+ summary: RESOURCE_NOT_FOUND
33550
+ value:
33551
+ code: RESOURCE_NOT_FOUND
33552
+ correlationId: 018f0000-0000-7000-8000-000000000001
33553
+ detail: See the operation contract.
33554
+ errors: []
33555
+ retryable: false
33556
+ schemaId: urn:gala:schema:problem:2.0.0
33557
+ schemaVersion: 2.0.0
33558
+ status: 404
33559
+ title: RESOURCE_NOT_FOUND
33560
+ type: urn:gala:problem:resource-not-found
33561
+ schema:
33562
+ $ref: "#/components/schemas/Problem"
33563
+ description: DNS_CONNECTION_NOT_FOUND, RESOURCE_NOT_FOUND
33564
+ headers:
33565
+ Cache-Control:
33566
+ $ref: "#/components/headers/CacheControlNoStore"
33567
+ X-Correlation-Id:
33568
+ $ref: "#/components/headers/XCorrelationId"
33569
+ x-gala-problem-codes:
33570
+ - DNS_CONNECTION_NOT_FOUND
33571
+ - RESOURCE_NOT_FOUND
33572
+ "409":
33573
+ content:
33574
+ application/problem+json:
33575
+ examples:
33576
+ COMMAND_REPLAY_CONFLICT:
33577
+ summary: COMMAND_REPLAY_CONFLICT
33578
+ value:
33579
+ code: COMMAND_REPLAY_CONFLICT
33580
+ correlationId: 018f0000-0000-7000-8000-000000000001
33581
+ detail: See the operation contract.
33582
+ errors: []
33583
+ retryable: false
33584
+ schemaId: urn:gala:schema:problem:2.0.0
33585
+ schemaVersion: 2.0.0
33586
+ status: 409
33587
+ title: COMMAND_REPLAY_CONFLICT
33588
+ type: urn:gala:problem:command-replay-conflict
33589
+ DNS_CONNECTION_NOT_CONFIRMABLE:
33590
+ summary: DNS_CONNECTION_NOT_CONFIRMABLE
33591
+ value:
33592
+ code: DNS_CONNECTION_NOT_CONFIRMABLE
33593
+ correlationId: 018f0000-0000-7000-8000-000000000001
33594
+ detail: See the operation contract.
33595
+ errors: []
33596
+ retryable: false
33597
+ schemaId: urn:gala:schema:problem:2.0.0
33598
+ schemaVersion: 2.0.0
33599
+ status: 409
33600
+ title: DNS_CONNECTION_NOT_CONFIRMABLE
33601
+ type: urn:gala:problem:dns-connection-not-confirmable
33602
+ schema:
33603
+ $ref: "#/components/schemas/Problem"
33604
+ description: COMMAND_REPLAY_CONFLICT, DNS_CONNECTION_NOT_CONFIRMABLE
33605
+ headers:
33606
+ Cache-Control:
33607
+ $ref: "#/components/headers/CacheControlNoStore"
33608
+ X-Correlation-Id:
33609
+ $ref: "#/components/headers/XCorrelationId"
33610
+ x-gala-problem-codes:
33611
+ - COMMAND_REPLAY_CONFLICT
33612
+ - DNS_CONNECTION_NOT_CONFIRMABLE
33613
+ security:
33614
+ - browserSession: []
33615
+ summary: leave the provider's DNS records as they are and end a connection
33616
+ tags:
33617
+ - domains
33618
+ x-gala-activation-gate: MVP
33619
+ x-gala-activation-guards:
33620
+ - NONE
33621
+ x-gala-capability-key: publication.settings.manage
33622
+ x-gala-concurrency: domain-binding-version
33623
+ x-gala-conditional-capabilities: []
33624
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
33625
+ x-gala-nullability: required-and-nullable-are-explicit
33626
+ x-gala-purpose: leave the provider's DNS records as they are and end a connection
33627
+ x-gala-reachable-problems:
33628
+ - AUTHENTICATION_REQUIRED
33629
+ - AUTHORIZATION_DENIED
33630
+ - COMMAND_REPLAY_CONFLICT
33631
+ - DNS_CONNECTION_NOT_CONFIRMABLE
33632
+ - DNS_CONNECTION_NOT_FOUND
33633
+ - RESOURCE_NOT_FOUND
33634
+ - VALIDATION_FAILED
33635
+ x-gala-replay-identity: idempotency-key
33636
+ x-gala-state-guards:
33637
+ - NONE
33638
+ x-gala-success-category: protocol
33639
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
33640
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}:check:
33641
+ post:
33642
+ description: |
33643
+ Runs the checks for the binding's current state now (DNS, certificate,
33644
+ routing) instead of waiting for the next automatic check, and returns
33645
+ the binding. At most once a minute per binding (`429 RATE_LIMITED`).
33646
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdCheck
33647
+ parameters:
33648
+ - $ref: "#/components/parameters/XCorrelationId"
33649
+ - example: 018f0000-0000-7000-8000-000000000001
33650
+ in: path
33651
+ name: organizationId
33652
+ required: true
33653
+ schema:
33654
+ format: uuid
33655
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33656
+ type: string
33657
+ - example: 018f0000-0000-7000-8000-000000000001
33658
+ in: path
33659
+ name: publicationId
33660
+ required: true
33661
+ schema:
33662
+ format: uuid
33663
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33664
+ type: string
33665
+ - example: 018f0000-0000-7000-8000-000000000001
33666
+ in: path
33667
+ name: domainId
33668
+ required: true
33669
+ schema:
33670
+ format: uuid
33671
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33672
+ type: string
33673
+ - $ref: "#/components/parameters/IdempotencyKey"
33674
+ - $ref: "#/components/parameters/XCsrfToken"
33675
+ responses:
33676
+ "200":
33677
+ content:
33678
+ application/json:
33679
+ examples:
33680
+ nominal:
33681
+ summary: Nominal successful response
33682
+ value:
33683
+ canonicalBase:
33684
+ current: https://rathnastest.github.io/g11/
33685
+ published: false
33686
+ target: https://blog.maya.dev/
33687
+ certificate:
33688
+ state: PENDING
33689
+ createdAt: "2026-10-09T12:00:00.000Z"
33690
+ dns:
33691
+ observed:
33692
+ addresses: []
33693
+ checkedAt: "2026-10-09T12:00:00.000Z"
33694
+ cnameTarget: rathnastest.github.io
33695
+ pointsToGithub: true
33696
+ resolves: true
33697
+ records:
33698
+ - name: blog
33699
+ type: CNAME
33700
+ value: rathnastest.github.io
33701
+ domainId: 018f0000-0000-7000-8000-000000000001
33702
+ expiresAt: "2026-10-16T12:00:00.000Z"
33703
+ hostname: blog.maya.dev
33704
+ kind: SUBDOMAIN
33705
+ nextStep:
33706
+ code: WAIT_FOR_CERTIFICATE
33707
+ detail: GitHub is issuing the certificate; this can take up to 24 hours.
33708
+ routing:
33709
+ httpsEnforced: false
33710
+ probeOk: false
33711
+ servedByPages: false
33712
+ state: CERTIFICATE_PENDING
33713
+ updatedAt: "2026-10-09T12:00:00.000Z"
33714
+ version: 3
33715
+ proxied:
33716
+ summary: Live behind Cloudflare's proxy
33717
+ value:
33718
+ canonicalBase:
33719
+ current: https://blog.maya.dev/
33720
+ published: true
33721
+ target: https://blog.maya.dev/
33722
+ certificate:
33723
+ state: PROXIED
33724
+ createdAt: "2026-10-09T12:00:00.000Z"
33725
+ dns:
33726
+ observed:
33727
+ addresses:
33728
+ - 104.21.0.1
33729
+ checkedAt: "2026-10-10T12:00:00.000Z"
33730
+ pointsToGithub: false
33731
+ resolves: true
33732
+ viaProxy: true
33733
+ records:
33734
+ - name: blog
33735
+ type: CNAME
33736
+ value: rathnastest.github.io
33737
+ domainId: 018f0000-0000-7000-8000-000000000001
33738
+ hostname: blog.maya.dev
33739
+ kind: SUBDOMAIN
33740
+ nextStep:
33741
+ code: NONE
33742
+ detail: Your site is live behind Cloudflare's proxy.
33743
+ proxy:
33744
+ provider: CLOUDFLARE
33745
+ since: "2026-10-10T12:00:00.000Z"
33746
+ routing:
33747
+ httpsEnforced: false
33748
+ probeOk: true
33749
+ servedByPages: true
33750
+ state: ACTIVE
33751
+ updatedAt: "2026-10-10T12:00:00.000Z"
33752
+ version: 9
33753
+ stage2Offer:
33754
+ summary: Certificate issued; the proxy can be turned on
33755
+ value:
33756
+ canonicalBase:
33757
+ current: https://blog.maya.dev/
33758
+ published: true
33759
+ target: https://blog.maya.dev/
33760
+ certificate:
33761
+ state: ISSUED
33762
+ createdAt: "2026-10-09T12:00:00.000Z"
33763
+ dns:
33764
+ observed:
33765
+ addresses: []
33766
+ checkedAt: "2026-10-10T12:00:00.000Z"
33767
+ cnameTarget: rathnastest.github.io
33768
+ pointsToGithub: true
33769
+ resolves: true
33770
+ providers:
33771
+ - intents:
33772
+ - PROXY
33773
+ provider: CLOUDFLARE
33774
+ records:
33775
+ - name: blog
33776
+ type: CNAME
33777
+ value: rathnastest.github.io
33778
+ domainId: 018f0000-0000-7000-8000-000000000001
33779
+ hostname: blog.maya.dev
33780
+ kind: SUBDOMAIN
33781
+ nextStep:
33782
+ code: TURN_ON_CLOUDFLARE_PROXY
33783
+ detail: Your certificate is issued. You can now let Cloudflare proxy the site.
33784
+ routing:
33785
+ httpsEnforced: true
33786
+ probeOk: true
33787
+ servedByPages: true
33788
+ state: ACTIVE
33789
+ updatedAt: "2026-10-10T12:00:00.000Z"
33790
+ version: 8
33791
+ schema:
33792
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdCheckResponse"
33793
+ description: check a custom domain now succeeded
33794
+ headers:
33795
+ Cache-Control:
33796
+ $ref: "#/components/headers/CacheControlNoStore"
33797
+ X-Correlation-Id:
33798
+ $ref: "#/components/headers/XCorrelationId"
33799
+ "400":
33800
+ content:
33801
+ application/problem+json:
33802
+ examples:
33803
+ VALIDATION_FAILED:
33804
+ summary: VALIDATION_FAILED
33805
+ value:
33806
+ code: VALIDATION_FAILED
33807
+ correlationId: 018f0000-0000-7000-8000-000000000001
33808
+ detail: See the operation contract.
33809
+ errors: []
33810
+ retryable: false
33811
+ schemaId: urn:gala:schema:problem:2.0.0
33812
+ schemaVersion: 2.0.0
33813
+ status: 400
33814
+ title: VALIDATION_FAILED
33815
+ type: urn:gala:problem:validation-failed
33816
+ schema:
33817
+ $ref: "#/components/schemas/Problem"
33818
+ description: VALIDATION_FAILED
32228
33819
  headers:
32229
33820
  Cache-Control:
32230
33821
  $ref: "#/components/headers/CacheControlNoStore"
@@ -40425,6 +42016,8 @@ paths:
40425
42016
  Authenticated server-sent notification stream for review state changes.
40426
42017
  Events carry no authority or canonical state; a client re-reads the
40427
42018
  ordinary review and repository-change resources after each signal.
42019
+ SCHEMA-3.6.0: the comment, decision time and actor, request time and
42020
+ actor (`ReviewSummary`) arrive on that re-read, never in the event.
40428
42021
  operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdReviewsEvents
40429
42022
  parameters:
40430
42023
  - $ref: "#/components/parameters/XCorrelationId"
@@ -40776,7 +42369,8 @@ paths:
40776
42369
  nominal:
40777
42370
  summary: Nominal valid request
40778
42371
  value:
40779
- decision: APPROVE
42372
+ comment: Please soften the second paragraph.
42373
+ decision: REJECT
40780
42374
  reasonCode: example
40781
42375
  schema:
40782
42376
  $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdReviewsByReviewIdDecideRequest"
@@ -40789,10 +42383,17 @@ paths:
40789
42383
  nominal:
40790
42384
  summary: Nominal successful response
40791
42385
  value:
42386
+ comment: Please soften the second paragraph.
42387
+ decidedAt: "2026-10-10T12:00:00.000Z"
42388
+ decidedBy:
42389
+ displayName: Maya Rao
42390
+ requestedAt: "2026-10-10T11:00:00.000Z"
42391
+ requestedBy:
42392
+ displayName: Sam Lee
40792
42393
  reviewId: 018f0000-0000-7000-8000-000000000001
40793
42394
  sourceRevision: sha1:0000000000000000000000000000000000000000
40794
- state: REQUESTED
40795
- version: 0
42395
+ state: REJECTED
42396
+ version: 1
40796
42397
  schema:
40797
42398
  $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdReviewsByReviewIdDecideResponse"
40798
42399
  description: approve or reject exact reviewed revision succeeded
@@ -41140,7 +42741,12 @@ paths:
41140
42741
  changeId: 018f0000-0000-7000-8000-000000000002
41141
42742
  kind: POST
41142
42743
  path: content/articles/hello.md
41143
- review: NOT_REQUIRED
42744
+ pullRequestUrl: https://github.com/rathnastest/g11/pull/7
42745
+ review: NEEDS_RE_REVIEW
42746
+ reviewComment: Please soften the second paragraph.
42747
+ reviewDecidedAt: "2026-10-05T09:00:00Z"
42748
+ reviewDecidedBy:
42749
+ displayName: Maya Rao
41144
42750
  title: Hello, world
41145
42751
  updatedAt: "2026-10-05T09:30:00Z"
41146
42752
  - action: CHANGE