@rathnasgala2/schemas 3.3.0 → 3.5.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,174 @@ 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."
1362
+ enum:
1363
+ - ADD
1364
+ - REMOVE
1365
+ type: string
1366
+ DnsPlanAction:
1367
+ 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)."
1368
+ enum:
1369
+ - CREATE
1370
+ - KEEP
1371
+ - REPLACE
1372
+ - DELETE
1373
+ type: string
1374
+ DnsPlanEntry:
1375
+ additionalProperties: false
1376
+ 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."
1377
+ properties:
1378
+ action:
1379
+ $ref: "#/components/schemas/DnsPlanAction"
1380
+ existing:
1381
+ additionalProperties: false
1382
+ properties:
1383
+ proxied:
1384
+ type: boolean
1385
+ type:
1386
+ maxLength: 16
1387
+ minLength: 1
1388
+ pattern: ^[A-Z][A-Z0-9]*$
1389
+ type: string
1390
+ value:
1391
+ maxLength: 4096
1392
+ minLength: 1
1393
+ type: string
1394
+ required:
1395
+ - type
1396
+ - value
1397
+ - proxied
1398
+ type: object
1399
+ record:
1400
+ $ref: "#/components/schemas/DomainDnsRecord"
1401
+ required:
1402
+ - action
1403
+ - record
1404
+ type: object
1405
+ DnsProvider:
1406
+ description: Where a domain's DNS records live. `CLOUDFLARE` today; a further provider is an additive value.
1407
+ enum:
1408
+ - CLOUDFLARE
1409
+ type: string
1410
+ DnsProviderOffer:
1411
+ additionalProperties: false
1412
+ description: A provider this environment can connect to for this binding, and what it can do now.
1413
+ properties:
1414
+ intents:
1415
+ items:
1416
+ $ref: "#/components/schemas/DnsIntent"
1417
+ maxItems: 2
1418
+ minItems: 1
1419
+ type: array
1420
+ uniqueItems: true
1421
+ provider:
1422
+ $ref: "#/components/schemas/DnsProvider"
1423
+ required:
1424
+ - provider
1425
+ - intents
1426
+ type: object
1259
1427
  DomainBinding:
1260
1428
  additionalProperties: false
1261
1429
  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 +1439,13 @@ components:
1271
1439
  properties:
1272
1440
  observed:
1273
1441
  $ref: "#/components/schemas/DomainDnsObservation"
1442
+ providers:
1443
+ 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`.
1444
+ items:
1445
+ $ref: "#/components/schemas/DnsProviderOffer"
1446
+ maxItems: 4
1447
+ minItems: 0
1448
+ type: array
1274
1449
  records:
1275
1450
  items:
1276
1451
  $ref: "#/components/schemas/DomainDnsRecord"
@@ -1587,6 +1762,58 @@ components:
1587
1762
  required:
1588
1763
  - status
1589
1764
  type: object
1765
+ GetMembershipInvitationsByTokenResponse:
1766
+ additionalProperties: false
1767
+ allOf:
1768
+ - else:
1769
+ not:
1770
+ required:
1771
+ - publicationName
1772
+ if:
1773
+ properties:
1774
+ scope:
1775
+ pattern: ^PUBLICATION$
1776
+ type: string
1777
+ x-gala-const: PUBLICATION
1778
+ required:
1779
+ - scope
1780
+ then:
1781
+ required:
1782
+ - publicationName
1783
+ properties:
1784
+ expiresAt:
1785
+ $ref: "#/components/schemas/PortableProblemRfc3339"
1786
+ invitedBy:
1787
+ $ref: "#/components/schemas/SiteActor"
1788
+ organizationName:
1789
+ maxLength: 80
1790
+ minLength: 1
1791
+ type: string
1792
+ publicationName:
1793
+ maxLength: 80
1794
+ minLength: 1
1795
+ type: string
1796
+ roleName:
1797
+ maxLength: 80
1798
+ minLength: 1
1799
+ type: string
1800
+ scope:
1801
+ enum:
1802
+ - ORGANIZATION
1803
+ - PUBLICATION
1804
+ type: string
1805
+ state:
1806
+ enum:
1807
+ - PENDING
1808
+ type: string
1809
+ required:
1810
+ - organizationName
1811
+ - roleName
1812
+ - scope
1813
+ - invitedBy
1814
+ - expiresAt
1815
+ - state
1816
+ type: object
1590
1817
  GetOrganizationsByOrganizationIdCapabilitiesResponse:
1591
1818
  additionalProperties: false
1592
1819
  properties:
@@ -1601,6 +1828,7 @@ components:
1601
1828
  type: object
1602
1829
  GetOrganizationsByOrganizationIdMembershipInvitationsByInvitationIdResponse:
1603
1830
  additionalProperties: false
1831
+ description: "One pending or settled invitation, in exactly the shape the single-invitation read returns, so a client renders a row and its detail view from the same fields. SCHEMA-3.4.0 adds what a People page needs to show a pending row: `recipient` (the inviter's own unverified label, absent for older invitations), the invited role (`roleKey`, `roleName`), its publication when the invitation is publication-scoped (`publicationId`, `publicationName`), and who sent it (`invitedBy`)."
1604
1832
  properties:
1605
1833
  expiresAt:
1606
1834
  $ref: "#/components/schemas/PortableProblemRfc3339"
@@ -1608,10 +1836,34 @@ components:
1608
1836
  format: uuid
1609
1837
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
1610
1838
  type: string
1839
+ invitedBy:
1840
+ $ref: "#/components/schemas/SiteActor"
1841
+ publicationId:
1842
+ format: uuid
1843
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
1844
+ type: string
1845
+ publicationName:
1846
+ maxLength: 80
1847
+ minLength: 1
1848
+ type: string
1849
+ recipient:
1850
+ description: "The label the inviter typed when creating the invitation (an email address), shown so the inviter recognises the row. It is not a verified identity: acceptance is possession-based and this value is never matched against whoever accepts (LOCAL-34 G6). Absent for invitations created before the label was stored."
1851
+ maxLength: 320
1852
+ minLength: 1
1853
+ type: string
1611
1854
  roleId:
1612
1855
  format: uuid
1613
1856
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
1614
1857
  type: string
1858
+ roleKey:
1859
+ maxLength: 80
1860
+ minLength: 1
1861
+ pattern: ^[a-z][a-z0-9_]*$
1862
+ type: string
1863
+ roleName:
1864
+ maxLength: 80
1865
+ minLength: 1
1866
+ type: string
1615
1867
  state:
1616
1868
  $ref: "#/components/schemas/MembershipInvitationState"
1617
1869
  version:
@@ -1624,6 +1876,9 @@ components:
1624
1876
  - state
1625
1877
  - roleId
1626
1878
  - expiresAt
1879
+ - roleKey
1880
+ - roleName
1881
+ - invitedBy
1627
1882
  type: object
1628
1883
  GetOrganizationsByOrganizationIdMembershipInvitationsResponse:
1629
1884
  additionalProperties: false
@@ -2260,6 +2515,9 @@ components:
2260
2515
  - version
2261
2516
  - state
2262
2517
  type: object
2518
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdResponse:
2519
+ allOf:
2520
+ - $ref: "#/components/schemas/DnsConnection"
2263
2521
  GetOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdResponse:
2264
2522
  allOf:
2265
2523
  - $ref: "#/components/schemas/DomainBinding"
@@ -4668,7 +4926,7 @@ components:
4668
4926
  type: string
4669
4927
  MembershipInvitationSummary:
4670
4928
  additionalProperties: false
4671
- description: One pending or settled invitation, in exactly the shape the single-invitation read returns, so a client renders a row and its detail view from the same fields. `recipient` is deliberately absent, as it is from the single read, because acceptance is possession-based and the label an inviter typed is never a verified identity (LOCAL-34 G6).
4929
+ description: "One pending or settled invitation, in exactly the shape the single-invitation read returns, so a client renders a row and its detail view from the same fields. SCHEMA-3.4.0 adds what a People page needs to show a pending row: `recipient` (the inviter's own unverified label, absent for older invitations), the invited role (`roleKey`, `roleName`), its publication when the invitation is publication-scoped (`publicationId`, `publicationName`), and who sent it (`invitedBy`)."
4672
4930
  properties:
4673
4931
  expiresAt:
4674
4932
  $ref: "#/components/schemas/PortableProblemRfc3339"
@@ -4676,10 +4934,34 @@ components:
4676
4934
  format: uuid
4677
4935
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
4678
4936
  type: string
4937
+ invitedBy:
4938
+ $ref: "#/components/schemas/SiteActor"
4939
+ publicationId:
4940
+ format: uuid
4941
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
4942
+ type: string
4943
+ publicationName:
4944
+ maxLength: 80
4945
+ minLength: 1
4946
+ type: string
4947
+ recipient:
4948
+ description: "The label the inviter typed when creating the invitation (an email address), shown so the inviter recognises the row. It is not a verified identity: acceptance is possession-based and this value is never matched against whoever accepts (LOCAL-34 G6). Absent for invitations created before the label was stored."
4949
+ maxLength: 320
4950
+ minLength: 1
4951
+ type: string
4679
4952
  roleId:
4680
4953
  format: uuid
4681
4954
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
4682
4955
  type: string
4956
+ roleKey:
4957
+ maxLength: 80
4958
+ minLength: 1
4959
+ pattern: ^[a-z][a-z0-9_]*$
4960
+ type: string
4961
+ roleName:
4962
+ maxLength: 80
4963
+ minLength: 1
4964
+ type: string
4683
4965
  state:
4684
4966
  $ref: "#/components/schemas/MembershipInvitationState"
4685
4967
  version:
@@ -4692,6 +4974,9 @@ components:
4692
4974
  - state
4693
4975
  - roleId
4694
4976
  - expiresAt
4977
+ - roleKey
4978
+ - roleName
4979
+ - invitedBy
4695
4980
  type: object
4696
4981
  MembershipState:
4697
4982
  enum:
@@ -11834,7 +12119,7 @@ components:
11834
12119
  - string
11835
12120
  - "null"
11836
12121
  recipient:
11837
- description: Label recording who the inviter meant to invite. Acceptance is possession-based, so whoever presents the invitation token joins with the invited role, and this value is never matched against the accepting principal's verified identity. It exists so the inviter can recognize the invitation in a list; treat it as a note, not a binding (LOCAL-34 G6). Recipient binding is revisited when verified email exists.
12122
+ description: An email address (at most 320 characters; anything else, a GitHub login included, is `400 VALIDATION_FAILED`). The server trims and lower-cases it. It records who the inviter meant to invite and is shown back on the invitation rows; acceptance is possession-based, so whoever presents the invitation token joins with the invited role and this value is never matched against the accepting principal's verified identity -- treat it as a note, not a binding (LOCAL-34 G6).
11838
12123
  format: email
11839
12124
  maxLength: 320
11840
12125
  type: string
@@ -12343,6 +12628,44 @@ components:
12343
12628
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDetachResponse:
12344
12629
  allOf:
12345
12630
  - $ref: "#/components/schemas/DomainBinding"
12631
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdApplyResponse:
12632
+ allOf:
12633
+ - $ref: "#/components/schemas/DnsConnection"
12634
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdDiscardResponse:
12635
+ allOf:
12636
+ - $ref: "#/components/schemas/DnsConnection"
12637
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsRequest:
12638
+ additionalProperties: false
12639
+ properties:
12640
+ intent:
12641
+ $ref: "#/components/schemas/DnsIntent"
12642
+ provider:
12643
+ $ref: "#/components/schemas/DnsProvider"
12644
+ required:
12645
+ - provider
12646
+ - intent
12647
+ type: object
12648
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsResponse:
12649
+ additionalProperties: false
12650
+ properties:
12651
+ authorizationUrl:
12652
+ description: The provider's consent address. A client navigates to it only when it is an `https` address on the provider's own host.
12653
+ format: uri
12654
+ maxLength: 4096
12655
+ minLength: 1
12656
+ pattern: ^https://[^\s]+$
12657
+ type: string
12658
+ connectionId:
12659
+ format: uuid
12660
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
12661
+ type: string
12662
+ expiresAt:
12663
+ $ref: "#/components/schemas/PortableProblemRfc3339"
12664
+ required:
12665
+ - connectionId
12666
+ - authorizationUrl
12667
+ - expiresAt
12668
+ type: object
12346
12669
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsRequest:
12347
12670
  additionalProperties: false
12348
12671
  properties:
@@ -16684,33 +17007,104 @@ paths:
16684
17007
  - NONE
16685
17008
  x-gala-success-category: protocol
16686
17009
  x-gala-tenant-scope: NONE
16687
- /v2/callbacks/github/app:
16688
- post:
16689
- operationId: postCallbacksGithubApp
17010
+ /v2/callbacks/cloudflare/oauth:
17011
+ get:
17012
+ description: |
17013
+ 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.
17014
+ operationId: getCallbacksCloudflareOauth
16690
17015
  parameters:
16691
17016
  - $ref: "#/components/parameters/XCorrelationId"
16692
- - example: 018f0000-0000-7000-8000-000000000001
16693
- in: header
16694
- name: X-GitHub-Delivery
16695
- required: true
17017
+ - example: example
17018
+ in: query
17019
+ name: code
17020
+ required: false
16696
17021
  schema:
16697
- format: uuid
17022
+ maxLength: 8192
17023
+ minLength: 1
16698
17024
  type: string
16699
- - example: push
16700
- in: header
16701
- name: X-GitHub-Event
16702
- required: true
17025
+ - example: example
17026
+ in: query
17027
+ name: state
17028
+ required: false
16703
17029
  schema:
16704
- enum:
16705
- - installation
16706
- - installation_repositories
16707
- - push
16708
- - workflow_run
17030
+ maxLength: 8192
17031
+ minLength: 1
16709
17032
  type: string
16710
- requestBody:
16711
- content:
16712
- application/json:
16713
- examples:
17033
+ - example: example
17034
+ in: query
17035
+ name: error
17036
+ required: false
17037
+ schema:
17038
+ maxLength: 512
17039
+ minLength: 1
17040
+ type: string
17041
+ - example: example
17042
+ in: query
17043
+ name: iss
17044
+ required: false
17045
+ schema:
17046
+ maxLength: 2048
17047
+ minLength: 1
17048
+ type: string
17049
+ responses:
17050
+ "303":
17051
+ description: consume the exact Cloudflare OAuth callback transaction succeeded
17052
+ headers:
17053
+ Cache-Control:
17054
+ $ref: "#/components/headers/CacheControlNoStore"
17055
+ Location:
17056
+ $ref: "#/components/headers/Location"
17057
+ X-Correlation-Id:
17058
+ $ref: "#/components/headers/XCorrelationId"
17059
+ "400":
17060
+ $ref: "#/components/responses/ValidationFailed"
17061
+ security: []
17062
+ summary: consume the exact Cloudflare OAuth callback transaction
17063
+ tags:
17064
+ - callbacks
17065
+ x-gala-activation-gate: MVP
17066
+ x-gala-activation-guards:
17067
+ - NONE
17068
+ x-gala-capability-key: null
17069
+ x-gala-concurrency: single-use-transaction
17070
+ x-gala-conditional-capabilities: []
17071
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
17072
+ x-gala-nullability: required-and-nullable-are-explicit
17073
+ x-gala-purpose: consume the exact Cloudflare OAuth callback transaction
17074
+ x-gala-reachable-problems:
17075
+ - VALIDATION_FAILED
17076
+ x-gala-replay-identity: oauth-state
17077
+ x-gala-state-guards:
17078
+ - NONE
17079
+ x-gala-success-category: oauth-callback
17080
+ x-gala-tenant-scope: NONE
17081
+ /v2/callbacks/github/app:
17082
+ post:
17083
+ operationId: postCallbacksGithubApp
17084
+ parameters:
17085
+ - $ref: "#/components/parameters/XCorrelationId"
17086
+ - example: 018f0000-0000-7000-8000-000000000001
17087
+ in: header
17088
+ name: X-GitHub-Delivery
17089
+ required: true
17090
+ schema:
17091
+ format: uuid
17092
+ type: string
17093
+ - example: push
17094
+ in: header
17095
+ name: X-GitHub-Event
17096
+ required: true
17097
+ schema:
17098
+ enum:
17099
+ - installation
17100
+ - installation_repositories
17101
+ - push
17102
+ - workflow_run
17103
+ type: string
17104
+ requestBody:
17105
+ content:
17106
+ application/json:
17107
+ examples:
16714
17108
  nominal:
16715
17109
  summary: Nominal valid request
16716
17110
  value: {}
@@ -17782,6 +18176,126 @@ paths:
17782
18176
  - GithubRepository:name unclaimed on the resolved account
17783
18177
  x-gala-success-category: create
17784
18178
  x-gala-tenant-scope: NONE
18179
+ /v2/membership-invitations/{token}:
18180
+ get:
18181
+ description: |
18182
+ Lets the page an invitation link opens show what it offers before the
18183
+ person signs in to accept it: the organization, the role, the
18184
+ publication for a publication-scoped invitation, who sent it and when it
18185
+ expires. No session is needed; the token is the capability. Any unknown,
18186
+ expired, accepted or revoked token answers `404 RESOURCE_NOT_FOUND`
18187
+ (non-enumerating). Accepting stays `POST
18188
+ /v2/membership-invitations/{token}:accept` after sign-in.
18189
+ operationId: getMembershipInvitationsByToken
18190
+ parameters:
18191
+ - $ref: "#/components/parameters/XCorrelationId"
18192
+ - example: examplexxxxxxxxxxxxxxxxxxxxxxxxx
18193
+ in: path
18194
+ name: token
18195
+ required: true
18196
+ schema:
18197
+ maxLength: 256
18198
+ minLength: 32
18199
+ type: string
18200
+ responses:
18201
+ "200":
18202
+ content:
18203
+ application/json:
18204
+ examples:
18205
+ nominal:
18206
+ summary: Nominal successful response
18207
+ value:
18208
+ expiresAt: "2026-10-16T12:00:00.000Z"
18209
+ invitedBy:
18210
+ displayName: Dev
18211
+ organizationName: Northwind Press
18212
+ publicationName: Maya's blog
18213
+ roleName: Editor
18214
+ scope: PUBLICATION
18215
+ state: PENDING
18216
+ schema:
18217
+ $ref: "#/components/schemas/GetMembershipInvitationsByTokenResponse"
18218
+ description: read what an invitation link offers succeeded
18219
+ headers:
18220
+ Cache-Control:
18221
+ $ref: "#/components/headers/CacheControlNoStore"
18222
+ X-Correlation-Id:
18223
+ $ref: "#/components/headers/XCorrelationId"
18224
+ "400":
18225
+ content:
18226
+ application/problem+json:
18227
+ examples:
18228
+ VALIDATION_FAILED:
18229
+ summary: VALIDATION_FAILED
18230
+ value:
18231
+ code: VALIDATION_FAILED
18232
+ correlationId: 018f0000-0000-7000-8000-000000000001
18233
+ detail: See the operation contract.
18234
+ errors: []
18235
+ retryable: false
18236
+ schemaId: urn:gala:schema:problem:2.0.0
18237
+ schemaVersion: 2.0.0
18238
+ status: 400
18239
+ title: VALIDATION_FAILED
18240
+ type: urn:gala:problem:validation-failed
18241
+ schema:
18242
+ $ref: "#/components/schemas/Problem"
18243
+ description: VALIDATION_FAILED
18244
+ headers:
18245
+ Cache-Control:
18246
+ $ref: "#/components/headers/CacheControlNoStore"
18247
+ X-Correlation-Id:
18248
+ $ref: "#/components/headers/XCorrelationId"
18249
+ x-gala-problem-codes:
18250
+ - VALIDATION_FAILED
18251
+ "404":
18252
+ content:
18253
+ application/problem+json:
18254
+ examples:
18255
+ RESOURCE_NOT_FOUND:
18256
+ summary: RESOURCE_NOT_FOUND
18257
+ value:
18258
+ code: RESOURCE_NOT_FOUND
18259
+ correlationId: 018f0000-0000-7000-8000-000000000001
18260
+ detail: See the operation contract.
18261
+ errors: []
18262
+ retryable: false
18263
+ schemaId: urn:gala:schema:problem:2.0.0
18264
+ schemaVersion: 2.0.0
18265
+ status: 404
18266
+ title: RESOURCE_NOT_FOUND
18267
+ type: urn:gala:problem:resource-not-found
18268
+ schema:
18269
+ $ref: "#/components/schemas/Problem"
18270
+ description: RESOURCE_NOT_FOUND
18271
+ headers:
18272
+ Cache-Control:
18273
+ $ref: "#/components/headers/CacheControlNoStore"
18274
+ X-Correlation-Id:
18275
+ $ref: "#/components/headers/XCorrelationId"
18276
+ x-gala-problem-codes:
18277
+ - RESOURCE_NOT_FOUND
18278
+ security: []
18279
+ summary: read what an invitation link offers
18280
+ tags:
18281
+ - membership-invitations
18282
+ x-gala-activation-gate: MVP
18283
+ x-gala-activation-guards:
18284
+ - NONE
18285
+ x-gala-capability-key: null
18286
+ x-gala-concurrency: none
18287
+ x-gala-conditional-capabilities: []
18288
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
18289
+ x-gala-nullability: required-and-nullable-are-explicit
18290
+ x-gala-purpose: read what an invitation link offers
18291
+ x-gala-reachable-problems:
18292
+ - RESOURCE_NOT_FOUND
18293
+ - VALIDATION_FAILED
18294
+ x-gala-replay-identity: safe-query
18295
+ x-gala-state-guards:
18296
+ - NONE
18297
+ x-gala-success-category: query
18298
+ x-gala-tenant-scope: NONE
17785
18299
  /v2/membership-invitations/{token}:accept:
17786
18300
  post:
17787
18301
  description: |
@@ -19605,7 +20119,14 @@ paths:
19605
20119
  value:
19606
20120
  expiresAt: "2026-09-06T00:00:00.000Z"
19607
20121
  invitationId: 018f0000-0000-7000-8000-000000000001
20122
+ invitedBy:
20123
+ displayName: Dev
20124
+ publicationId: 018f0000-0000-7000-8000-000000000001
20125
+ publicationName: Maya's blog
20126
+ recipient: priya@example.com
19608
20127
  roleId: 018f0000-0000-7000-8000-000000000001
20128
+ roleKey: editor
20129
+ roleName: Editor
19609
20130
  state: PENDING
19610
20131
  version: 0
19611
20132
  schema:
@@ -31888,6 +32409,1164 @@ paths:
31888
32409
  - NONE
31889
32410
  x-gala-success-category: query
31890
32411
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
32412
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}/dns-connections:
32413
+ post:
32414
+ description: |
32415
+ 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`.
32416
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnections
32417
+ parameters:
32418
+ - $ref: "#/components/parameters/XCorrelationId"
32419
+ - example: 018f0000-0000-7000-8000-000000000001
32420
+ in: path
32421
+ name: organizationId
32422
+ required: true
32423
+ schema:
32424
+ format: uuid
32425
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32426
+ type: string
32427
+ - example: 018f0000-0000-7000-8000-000000000001
32428
+ in: path
32429
+ name: publicationId
32430
+ required: true
32431
+ schema:
32432
+ format: uuid
32433
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32434
+ type: string
32435
+ - example: 018f0000-0000-7000-8000-000000000001
32436
+ in: path
32437
+ name: domainId
32438
+ required: true
32439
+ schema:
32440
+ format: uuid
32441
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32442
+ type: string
32443
+ - $ref: "#/components/parameters/IdempotencyKey"
32444
+ - $ref: "#/components/parameters/XCsrfToken"
32445
+ requestBody:
32446
+ content:
32447
+ application/json:
32448
+ examples:
32449
+ nominal:
32450
+ summary: Nominal valid request
32451
+ value:
32452
+ intent: ADD
32453
+ provider: CLOUDFLARE
32454
+ schema:
32455
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsRequest"
32456
+ required: true
32457
+ responses:
32458
+ "201":
32459
+ content:
32460
+ application/json:
32461
+ examples:
32462
+ nominal:
32463
+ summary: Nominal successful response
32464
+ value:
32465
+ authorizationUrl: https://dash.cloudflare.com/oauth2/auth?client_id=example&response_type=code&state=example
32466
+ connectionId: 018f0000-0000-7000-8000-000000000001
32467
+ expiresAt: "2026-10-10T12:10:00.000Z"
32468
+ schema:
32469
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsResponse"
32470
+ description: start adding (or removing) a domain's DNS records at the person's DNS provider succeeded
32471
+ headers:
32472
+ Cache-Control:
32473
+ $ref: "#/components/headers/CacheControlNoStore"
32474
+ Location:
32475
+ $ref: "#/components/headers/Location"
32476
+ X-Correlation-Id:
32477
+ $ref: "#/components/headers/XCorrelationId"
32478
+ "400":
32479
+ content:
32480
+ application/problem+json:
32481
+ examples:
32482
+ REQUEST_FIELD_UNKNOWN:
32483
+ summary: REQUEST_FIELD_UNKNOWN
32484
+ value:
32485
+ code: REQUEST_FIELD_UNKNOWN
32486
+ correlationId: 018f0000-0000-7000-8000-000000000001
32487
+ detail: See the operation contract.
32488
+ errors: []
32489
+ retryable: false
32490
+ schemaId: urn:gala:schema:problem:2.0.0
32491
+ schemaVersion: 2.0.0
32492
+ status: 400
32493
+ title: REQUEST_FIELD_UNKNOWN
32494
+ type: urn:gala:problem:request-field-unknown
32495
+ VALIDATION_FAILED:
32496
+ summary: VALIDATION_FAILED
32497
+ value:
32498
+ code: VALIDATION_FAILED
32499
+ correlationId: 018f0000-0000-7000-8000-000000000001
32500
+ detail: See the operation contract.
32501
+ errors: []
32502
+ retryable: false
32503
+ schemaId: urn:gala:schema:problem:2.0.0
32504
+ schemaVersion: 2.0.0
32505
+ status: 400
32506
+ title: VALIDATION_FAILED
32507
+ type: urn:gala:problem:validation-failed
32508
+ schema:
32509
+ $ref: "#/components/schemas/Problem"
32510
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
32511
+ headers:
32512
+ Cache-Control:
32513
+ $ref: "#/components/headers/CacheControlNoStore"
32514
+ X-Correlation-Id:
32515
+ $ref: "#/components/headers/XCorrelationId"
32516
+ x-gala-problem-codes:
32517
+ - REQUEST_FIELD_UNKNOWN
32518
+ - VALIDATION_FAILED
32519
+ "401":
32520
+ content:
32521
+ application/problem+json:
32522
+ examples:
32523
+ AUTHENTICATION_REQUIRED:
32524
+ summary: AUTHENTICATION_REQUIRED
32525
+ value:
32526
+ code: AUTHENTICATION_REQUIRED
32527
+ correlationId: 018f0000-0000-7000-8000-000000000001
32528
+ detail: See the operation contract.
32529
+ errors: []
32530
+ retryable: false
32531
+ schemaId: urn:gala:schema:problem:2.0.0
32532
+ schemaVersion: 2.0.0
32533
+ status: 401
32534
+ title: AUTHENTICATION_REQUIRED
32535
+ type: urn:gala:problem:authentication-required
32536
+ schema:
32537
+ $ref: "#/components/schemas/Problem"
32538
+ description: AUTHENTICATION_REQUIRED
32539
+ headers:
32540
+ Cache-Control:
32541
+ $ref: "#/components/headers/CacheControlNoStore"
32542
+ X-Correlation-Id:
32543
+ $ref: "#/components/headers/XCorrelationId"
32544
+ x-gala-problem-codes:
32545
+ - AUTHENTICATION_REQUIRED
32546
+ "403":
32547
+ content:
32548
+ application/problem+json:
32549
+ examples:
32550
+ AUTHORIZATION_DENIED:
32551
+ summary: AUTHORIZATION_DENIED
32552
+ value:
32553
+ code: AUTHORIZATION_DENIED
32554
+ correlationId: 018f0000-0000-7000-8000-000000000001
32555
+ detail: See the operation contract.
32556
+ errors: []
32557
+ retryable: false
32558
+ schemaId: urn:gala:schema:problem:2.0.0
32559
+ schemaVersion: 2.0.0
32560
+ status: 403
32561
+ title: AUTHORIZATION_DENIED
32562
+ type: urn:gala:problem:authorization-denied
32563
+ schema:
32564
+ $ref: "#/components/schemas/Problem"
32565
+ description: AUTHORIZATION_DENIED
32566
+ headers:
32567
+ Cache-Control:
32568
+ $ref: "#/components/headers/CacheControlNoStore"
32569
+ X-Correlation-Id:
32570
+ $ref: "#/components/headers/XCorrelationId"
32571
+ x-gala-problem-codes:
32572
+ - AUTHORIZATION_DENIED
32573
+ "404":
32574
+ content:
32575
+ application/problem+json:
32576
+ examples:
32577
+ RESOURCE_NOT_FOUND:
32578
+ summary: RESOURCE_NOT_FOUND
32579
+ value:
32580
+ code: RESOURCE_NOT_FOUND
32581
+ correlationId: 018f0000-0000-7000-8000-000000000001
32582
+ detail: See the operation contract.
32583
+ errors: []
32584
+ retryable: false
32585
+ schemaId: urn:gala:schema:problem:2.0.0
32586
+ schemaVersion: 2.0.0
32587
+ status: 404
32588
+ title: RESOURCE_NOT_FOUND
32589
+ type: urn:gala:problem:resource-not-found
32590
+ schema:
32591
+ $ref: "#/components/schemas/Problem"
32592
+ description: RESOURCE_NOT_FOUND
32593
+ headers:
32594
+ Cache-Control:
32595
+ $ref: "#/components/headers/CacheControlNoStore"
32596
+ X-Correlation-Id:
32597
+ $ref: "#/components/headers/XCorrelationId"
32598
+ x-gala-problem-codes:
32599
+ - RESOURCE_NOT_FOUND
32600
+ "409":
32601
+ content:
32602
+ application/problem+json:
32603
+ examples:
32604
+ COMMAND_REPLAY_CONFLICT:
32605
+ summary: COMMAND_REPLAY_CONFLICT
32606
+ value:
32607
+ code: COMMAND_REPLAY_CONFLICT
32608
+ correlationId: 018f0000-0000-7000-8000-000000000001
32609
+ detail: See the operation contract.
32610
+ errors: []
32611
+ retryable: false
32612
+ schemaId: urn:gala:schema:problem:2.0.0
32613
+ schemaVersion: 2.0.0
32614
+ status: 409
32615
+ title: COMMAND_REPLAY_CONFLICT
32616
+ type: urn:gala:problem:command-replay-conflict
32617
+ DNS_CONNECTION_NOT_APPLICABLE:
32618
+ summary: DNS_CONNECTION_NOT_APPLICABLE
32619
+ value:
32620
+ code: DNS_CONNECTION_NOT_APPLICABLE
32621
+ correlationId: 018f0000-0000-7000-8000-000000000001
32622
+ detail: See the operation contract.
32623
+ errors: []
32624
+ retryable: false
32625
+ schemaId: urn:gala:schema:problem:2.0.0
32626
+ schemaVersion: 2.0.0
32627
+ status: 409
32628
+ title: DNS_CONNECTION_NOT_APPLICABLE
32629
+ type: urn:gala:problem:dns-connection-not-applicable
32630
+ schema:
32631
+ $ref: "#/components/schemas/Problem"
32632
+ description: COMMAND_REPLAY_CONFLICT, DNS_CONNECTION_NOT_APPLICABLE
32633
+ headers:
32634
+ Cache-Control:
32635
+ $ref: "#/components/headers/CacheControlNoStore"
32636
+ X-Correlation-Id:
32637
+ $ref: "#/components/headers/XCorrelationId"
32638
+ x-gala-problem-codes:
32639
+ - COMMAND_REPLAY_CONFLICT
32640
+ - DNS_CONNECTION_NOT_APPLICABLE
32641
+ "429":
32642
+ content:
32643
+ application/problem+json:
32644
+ examples:
32645
+ RATE_LIMITED:
32646
+ summary: RATE_LIMITED
32647
+ value:
32648
+ code: RATE_LIMITED
32649
+ correlationId: 018f0000-0000-7000-8000-000000000001
32650
+ detail: See the operation contract.
32651
+ errors: []
32652
+ retryable: true
32653
+ schemaId: urn:gala:schema:problem:2.0.0
32654
+ schemaVersion: 2.0.0
32655
+ status: 429
32656
+ title: RATE_LIMITED
32657
+ type: urn:gala:problem:rate-limited
32658
+ schema:
32659
+ $ref: "#/components/schemas/Problem"
32660
+ description: RATE_LIMITED
32661
+ headers:
32662
+ Cache-Control:
32663
+ $ref: "#/components/headers/CacheControlNoStore"
32664
+ Retry-After:
32665
+ $ref: "#/components/headers/RetryAfter"
32666
+ X-Correlation-Id:
32667
+ $ref: "#/components/headers/XCorrelationId"
32668
+ x-gala-problem-codes:
32669
+ - RATE_LIMITED
32670
+ "503":
32671
+ content:
32672
+ application/problem+json:
32673
+ examples:
32674
+ DNS_PROVIDER_NOT_CONFIGURED:
32675
+ summary: DNS_PROVIDER_NOT_CONFIGURED
32676
+ value:
32677
+ code: DNS_PROVIDER_NOT_CONFIGURED
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: 503
32685
+ title: DNS_PROVIDER_NOT_CONFIGURED
32686
+ type: urn:gala:problem:dns-provider-not-configured
32687
+ schema:
32688
+ $ref: "#/components/schemas/Problem"
32689
+ description: DNS_PROVIDER_NOT_CONFIGURED
32690
+ headers:
32691
+ Cache-Control:
32692
+ $ref: "#/components/headers/CacheControlNoStore"
32693
+ X-Correlation-Id:
32694
+ $ref: "#/components/headers/XCorrelationId"
32695
+ x-gala-problem-codes:
32696
+ - DNS_PROVIDER_NOT_CONFIGURED
32697
+ security:
32698
+ - browserSession: []
32699
+ summary: start adding (or removing) a domain's DNS records at the person's DNS provider
32700
+ tags:
32701
+ - domains
32702
+ x-gala-activation-gate: MVP
32703
+ x-gala-activation-guards:
32704
+ - NONE
32705
+ x-gala-capability-key: publication.settings.manage
32706
+ x-gala-concurrency: domain-binding-version
32707
+ x-gala-conditional-capabilities: []
32708
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
32709
+ x-gala-nullability: required-and-nullable-are-explicit
32710
+ x-gala-purpose: start adding (or removing) a domain's DNS records at the person's DNS provider
32711
+ x-gala-reachable-problems:
32712
+ - AUTHENTICATION_REQUIRED
32713
+ - AUTHORIZATION_DENIED
32714
+ - COMMAND_REPLAY_CONFLICT
32715
+ - DNS_CONNECTION_NOT_APPLICABLE
32716
+ - DNS_PROVIDER_NOT_CONFIGURED
32717
+ - RATE_LIMITED
32718
+ - REQUEST_FIELD_UNKNOWN
32719
+ - RESOURCE_NOT_FOUND
32720
+ - VALIDATION_FAILED
32721
+ x-gala-replay-identity: idempotency-key
32722
+ x-gala-state-guards:
32723
+ - NONE
32724
+ x-gala-success-category: create
32725
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
32726
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}/dns-connections/{connectionId}:
32727
+ get:
32728
+ description: |
32729
+ 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.
32730
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionId
32731
+ parameters:
32732
+ - $ref: "#/components/parameters/XCorrelationId"
32733
+ - example: 018f0000-0000-7000-8000-000000000001
32734
+ in: path
32735
+ name: organizationId
32736
+ required: true
32737
+ schema:
32738
+ format: uuid
32739
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32740
+ type: string
32741
+ - example: 018f0000-0000-7000-8000-000000000001
32742
+ in: path
32743
+ name: publicationId
32744
+ required: true
32745
+ schema:
32746
+ format: uuid
32747
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32748
+ type: string
32749
+ - example: 018f0000-0000-7000-8000-000000000001
32750
+ in: path
32751
+ name: domainId
32752
+ required: true
32753
+ schema:
32754
+ format: uuid
32755
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32756
+ type: string
32757
+ - example: 018f0000-0000-7000-8000-000000000001
32758
+ in: path
32759
+ name: connectionId
32760
+ required: true
32761
+ schema:
32762
+ format: uuid
32763
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32764
+ type: string
32765
+ responses:
32766
+ "200":
32767
+ content:
32768
+ application/json:
32769
+ examples:
32770
+ nominal:
32771
+ summary: Nominal successful response
32772
+ value:
32773
+ connectionId: 018f0000-0000-7000-8000-000000000001
32774
+ createdAt: "2026-10-10T12:00:00.000Z"
32775
+ expiresAt: "2026-10-10T12:10:00.000Z"
32776
+ intent: ADD
32777
+ phase: NEEDS_CONFIRMATION
32778
+ plan:
32779
+ - action: REPLACE
32780
+ existing:
32781
+ proxied: true
32782
+ type: A
32783
+ value: 203.0.113.7
32784
+ record:
32785
+ name: "@"
32786
+ type: A
32787
+ value: 185.199.108.153
32788
+ - action: KEEP
32789
+ existing:
32790
+ proxied: false
32791
+ type: A
32792
+ value: 185.199.109.153
32793
+ record:
32794
+ name: "@"
32795
+ type: A
32796
+ value: 185.199.109.153
32797
+ provider: CLOUDFLARE
32798
+ zone:
32799
+ accountName: Maya Personal
32800
+ name: maya.dev
32801
+ schema:
32802
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdResponse"
32803
+ description: read a DNS connection succeeded
32804
+ headers:
32805
+ Cache-Control:
32806
+ $ref: "#/components/headers/CacheControlNoStore"
32807
+ X-Correlation-Id:
32808
+ $ref: "#/components/headers/XCorrelationId"
32809
+ "400":
32810
+ content:
32811
+ application/problem+json:
32812
+ examples:
32813
+ VALIDATION_FAILED:
32814
+ summary: VALIDATION_FAILED
32815
+ value:
32816
+ code: VALIDATION_FAILED
32817
+ correlationId: 018f0000-0000-7000-8000-000000000001
32818
+ detail: See the operation contract.
32819
+ errors: []
32820
+ retryable: false
32821
+ schemaId: urn:gala:schema:problem:2.0.0
32822
+ schemaVersion: 2.0.0
32823
+ status: 400
32824
+ title: VALIDATION_FAILED
32825
+ type: urn:gala:problem:validation-failed
32826
+ schema:
32827
+ $ref: "#/components/schemas/Problem"
32828
+ description: VALIDATION_FAILED
32829
+ headers:
32830
+ Cache-Control:
32831
+ $ref: "#/components/headers/CacheControlNoStore"
32832
+ X-Correlation-Id:
32833
+ $ref: "#/components/headers/XCorrelationId"
32834
+ x-gala-problem-codes:
32835
+ - VALIDATION_FAILED
32836
+ "401":
32837
+ content:
32838
+ application/problem+json:
32839
+ examples:
32840
+ AUTHENTICATION_REQUIRED:
32841
+ summary: AUTHENTICATION_REQUIRED
32842
+ value:
32843
+ code: AUTHENTICATION_REQUIRED
32844
+ correlationId: 018f0000-0000-7000-8000-000000000001
32845
+ detail: See the operation contract.
32846
+ errors: []
32847
+ retryable: false
32848
+ schemaId: urn:gala:schema:problem:2.0.0
32849
+ schemaVersion: 2.0.0
32850
+ status: 401
32851
+ title: AUTHENTICATION_REQUIRED
32852
+ type: urn:gala:problem:authentication-required
32853
+ schema:
32854
+ $ref: "#/components/schemas/Problem"
32855
+ description: AUTHENTICATION_REQUIRED
32856
+ headers:
32857
+ Cache-Control:
32858
+ $ref: "#/components/headers/CacheControlNoStore"
32859
+ X-Correlation-Id:
32860
+ $ref: "#/components/headers/XCorrelationId"
32861
+ x-gala-problem-codes:
32862
+ - AUTHENTICATION_REQUIRED
32863
+ "403":
32864
+ content:
32865
+ application/problem+json:
32866
+ examples:
32867
+ AUTHORIZATION_DENIED:
32868
+ summary: AUTHORIZATION_DENIED
32869
+ value:
32870
+ code: AUTHORIZATION_DENIED
32871
+ correlationId: 018f0000-0000-7000-8000-000000000001
32872
+ detail: See the operation contract.
32873
+ errors: []
32874
+ retryable: false
32875
+ schemaId: urn:gala:schema:problem:2.0.0
32876
+ schemaVersion: 2.0.0
32877
+ status: 403
32878
+ title: AUTHORIZATION_DENIED
32879
+ type: urn:gala:problem:authorization-denied
32880
+ schema:
32881
+ $ref: "#/components/schemas/Problem"
32882
+ description: AUTHORIZATION_DENIED
32883
+ headers:
32884
+ Cache-Control:
32885
+ $ref: "#/components/headers/CacheControlNoStore"
32886
+ X-Correlation-Id:
32887
+ $ref: "#/components/headers/XCorrelationId"
32888
+ x-gala-problem-codes:
32889
+ - AUTHORIZATION_DENIED
32890
+ "404":
32891
+ content:
32892
+ application/problem+json:
32893
+ examples:
32894
+ DNS_CONNECTION_NOT_FOUND:
32895
+ summary: DNS_CONNECTION_NOT_FOUND
32896
+ value:
32897
+ code: DNS_CONNECTION_NOT_FOUND
32898
+ correlationId: 018f0000-0000-7000-8000-000000000001
32899
+ detail: See the operation contract.
32900
+ errors: []
32901
+ retryable: false
32902
+ schemaId: urn:gala:schema:problem:2.0.0
32903
+ schemaVersion: 2.0.0
32904
+ status: 404
32905
+ title: DNS_CONNECTION_NOT_FOUND
32906
+ type: urn:gala:problem:dns-connection-not-found
32907
+ RESOURCE_NOT_FOUND:
32908
+ summary: RESOURCE_NOT_FOUND
32909
+ value:
32910
+ code: RESOURCE_NOT_FOUND
32911
+ correlationId: 018f0000-0000-7000-8000-000000000001
32912
+ detail: See the operation contract.
32913
+ errors: []
32914
+ retryable: false
32915
+ schemaId: urn:gala:schema:problem:2.0.0
32916
+ schemaVersion: 2.0.0
32917
+ status: 404
32918
+ title: RESOURCE_NOT_FOUND
32919
+ type: urn:gala:problem:resource-not-found
32920
+ schema:
32921
+ $ref: "#/components/schemas/Problem"
32922
+ description: DNS_CONNECTION_NOT_FOUND, RESOURCE_NOT_FOUND
32923
+ headers:
32924
+ Cache-Control:
32925
+ $ref: "#/components/headers/CacheControlNoStore"
32926
+ X-Correlation-Id:
32927
+ $ref: "#/components/headers/XCorrelationId"
32928
+ x-gala-problem-codes:
32929
+ - DNS_CONNECTION_NOT_FOUND
32930
+ - RESOURCE_NOT_FOUND
32931
+ security:
32932
+ - browserSession: []
32933
+ summary: read a DNS connection
32934
+ tags:
32935
+ - domains
32936
+ x-gala-activation-gate: MVP
32937
+ x-gala-activation-guards:
32938
+ - NONE
32939
+ x-gala-capability-key: publication.view
32940
+ x-gala-concurrency: domain-binding-version
32941
+ x-gala-conditional-capabilities: []
32942
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
32943
+ x-gala-nullability: required-and-nullable-are-explicit
32944
+ x-gala-purpose: read a DNS connection
32945
+ x-gala-reachable-problems:
32946
+ - AUTHENTICATION_REQUIRED
32947
+ - AUTHORIZATION_DENIED
32948
+ - DNS_CONNECTION_NOT_FOUND
32949
+ - RESOURCE_NOT_FOUND
32950
+ - VALIDATION_FAILED
32951
+ x-gala-replay-identity: safe-query
32952
+ x-gala-state-guards:
32953
+ - NONE
32954
+ x-gala-success-category: query
32955
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
32956
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}/dns-connections/{connectionId}:apply:
32957
+ post:
32958
+ description: |
32959
+ 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).
32960
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdApply
32961
+ parameters:
32962
+ - $ref: "#/components/parameters/XCorrelationId"
32963
+ - example: 018f0000-0000-7000-8000-000000000001
32964
+ in: path
32965
+ name: organizationId
32966
+ required: true
32967
+ schema:
32968
+ format: uuid
32969
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32970
+ type: string
32971
+ - example: 018f0000-0000-7000-8000-000000000001
32972
+ in: path
32973
+ name: publicationId
32974
+ required: true
32975
+ schema:
32976
+ format: uuid
32977
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32978
+ type: string
32979
+ - example: 018f0000-0000-7000-8000-000000000001
32980
+ in: path
32981
+ name: domainId
32982
+ required: true
32983
+ schema:
32984
+ format: uuid
32985
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32986
+ type: string
32987
+ - example: 018f0000-0000-7000-8000-000000000001
32988
+ in: path
32989
+ name: connectionId
32990
+ required: true
32991
+ schema:
32992
+ format: uuid
32993
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
32994
+ type: string
32995
+ - $ref: "#/components/parameters/IdempotencyKey"
32996
+ - $ref: "#/components/parameters/XCsrfToken"
32997
+ responses:
32998
+ "200":
32999
+ content:
33000
+ application/json:
33001
+ examples:
33002
+ nominal:
33003
+ summary: Nominal successful response
33004
+ value:
33005
+ applied:
33006
+ at: "2026-10-10T12:03:00.000Z"
33007
+ created: 0
33008
+ deleted: 0
33009
+ replaced: 1
33010
+ connectionId: 018f0000-0000-7000-8000-000000000001
33011
+ createdAt: "2026-10-10T12:00:00.000Z"
33012
+ expiresAt: "2026-10-10T12:10:00.000Z"
33013
+ intent: ADD
33014
+ phase: APPLIED
33015
+ plan:
33016
+ - action: REPLACE
33017
+ existing:
33018
+ proxied: true
33019
+ type: A
33020
+ value: 203.0.113.7
33021
+ record:
33022
+ name: "@"
33023
+ type: A
33024
+ value: 185.199.108.153
33025
+ - action: KEEP
33026
+ existing:
33027
+ proxied: false
33028
+ type: A
33029
+ value: 185.199.109.153
33030
+ record:
33031
+ name: "@"
33032
+ type: A
33033
+ value: 185.199.109.153
33034
+ provider: CLOUDFLARE
33035
+ zone:
33036
+ accountName: Maya Personal
33037
+ name: maya.dev
33038
+ schema:
33039
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdApplyResponse"
33040
+ description: apply the DNS changes a connection is waiting to make succeeded
33041
+ headers:
33042
+ Cache-Control:
33043
+ $ref: "#/components/headers/CacheControlNoStore"
33044
+ X-Correlation-Id:
33045
+ $ref: "#/components/headers/XCorrelationId"
33046
+ "400":
33047
+ content:
33048
+ application/problem+json:
33049
+ examples:
33050
+ VALIDATION_FAILED:
33051
+ summary: VALIDATION_FAILED
33052
+ value:
33053
+ code: VALIDATION_FAILED
33054
+ correlationId: 018f0000-0000-7000-8000-000000000001
33055
+ detail: See the operation contract.
33056
+ errors: []
33057
+ retryable: false
33058
+ schemaId: urn:gala:schema:problem:2.0.0
33059
+ schemaVersion: 2.0.0
33060
+ status: 400
33061
+ title: VALIDATION_FAILED
33062
+ type: urn:gala:problem:validation-failed
33063
+ schema:
33064
+ $ref: "#/components/schemas/Problem"
33065
+ description: VALIDATION_FAILED
33066
+ headers:
33067
+ Cache-Control:
33068
+ $ref: "#/components/headers/CacheControlNoStore"
33069
+ X-Correlation-Id:
33070
+ $ref: "#/components/headers/XCorrelationId"
33071
+ x-gala-problem-codes:
33072
+ - VALIDATION_FAILED
33073
+ "401":
33074
+ content:
33075
+ application/problem+json:
33076
+ examples:
33077
+ AUTHENTICATION_REQUIRED:
33078
+ summary: AUTHENTICATION_REQUIRED
33079
+ value:
33080
+ code: AUTHENTICATION_REQUIRED
33081
+ correlationId: 018f0000-0000-7000-8000-000000000001
33082
+ detail: See the operation contract.
33083
+ errors: []
33084
+ retryable: false
33085
+ schemaId: urn:gala:schema:problem:2.0.0
33086
+ schemaVersion: 2.0.0
33087
+ status: 401
33088
+ title: AUTHENTICATION_REQUIRED
33089
+ type: urn:gala:problem:authentication-required
33090
+ schema:
33091
+ $ref: "#/components/schemas/Problem"
33092
+ description: AUTHENTICATION_REQUIRED
33093
+ headers:
33094
+ Cache-Control:
33095
+ $ref: "#/components/headers/CacheControlNoStore"
33096
+ X-Correlation-Id:
33097
+ $ref: "#/components/headers/XCorrelationId"
33098
+ x-gala-problem-codes:
33099
+ - AUTHENTICATION_REQUIRED
33100
+ "403":
33101
+ content:
33102
+ application/problem+json:
33103
+ examples:
33104
+ AUTHORIZATION_DENIED:
33105
+ summary: AUTHORIZATION_DENIED
33106
+ value:
33107
+ code: AUTHORIZATION_DENIED
33108
+ correlationId: 018f0000-0000-7000-8000-000000000001
33109
+ detail: See the operation contract.
33110
+ errors: []
33111
+ retryable: false
33112
+ schemaId: urn:gala:schema:problem:2.0.0
33113
+ schemaVersion: 2.0.0
33114
+ status: 403
33115
+ title: AUTHORIZATION_DENIED
33116
+ type: urn:gala:problem:authorization-denied
33117
+ schema:
33118
+ $ref: "#/components/schemas/Problem"
33119
+ description: AUTHORIZATION_DENIED
33120
+ headers:
33121
+ Cache-Control:
33122
+ $ref: "#/components/headers/CacheControlNoStore"
33123
+ X-Correlation-Id:
33124
+ $ref: "#/components/headers/XCorrelationId"
33125
+ x-gala-problem-codes:
33126
+ - AUTHORIZATION_DENIED
33127
+ "404":
33128
+ content:
33129
+ application/problem+json:
33130
+ examples:
33131
+ DNS_CONNECTION_NOT_FOUND:
33132
+ summary: DNS_CONNECTION_NOT_FOUND
33133
+ value:
33134
+ code: DNS_CONNECTION_NOT_FOUND
33135
+ correlationId: 018f0000-0000-7000-8000-000000000001
33136
+ detail: See the operation contract.
33137
+ errors: []
33138
+ retryable: false
33139
+ schemaId: urn:gala:schema:problem:2.0.0
33140
+ schemaVersion: 2.0.0
33141
+ status: 404
33142
+ title: DNS_CONNECTION_NOT_FOUND
33143
+ type: urn:gala:problem:dns-connection-not-found
33144
+ RESOURCE_NOT_FOUND:
33145
+ summary: RESOURCE_NOT_FOUND
33146
+ value:
33147
+ code: RESOURCE_NOT_FOUND
33148
+ correlationId: 018f0000-0000-7000-8000-000000000001
33149
+ detail: See the operation contract.
33150
+ errors: []
33151
+ retryable: false
33152
+ schemaId: urn:gala:schema:problem:2.0.0
33153
+ schemaVersion: 2.0.0
33154
+ status: 404
33155
+ title: RESOURCE_NOT_FOUND
33156
+ type: urn:gala:problem:resource-not-found
33157
+ schema:
33158
+ $ref: "#/components/schemas/Problem"
33159
+ description: DNS_CONNECTION_NOT_FOUND, RESOURCE_NOT_FOUND
33160
+ headers:
33161
+ Cache-Control:
33162
+ $ref: "#/components/headers/CacheControlNoStore"
33163
+ X-Correlation-Id:
33164
+ $ref: "#/components/headers/XCorrelationId"
33165
+ x-gala-problem-codes:
33166
+ - DNS_CONNECTION_NOT_FOUND
33167
+ - RESOURCE_NOT_FOUND
33168
+ "409":
33169
+ content:
33170
+ application/problem+json:
33171
+ examples:
33172
+ COMMAND_REPLAY_CONFLICT:
33173
+ summary: COMMAND_REPLAY_CONFLICT
33174
+ value:
33175
+ code: COMMAND_REPLAY_CONFLICT
33176
+ correlationId: 018f0000-0000-7000-8000-000000000001
33177
+ detail: See the operation contract.
33178
+ errors: []
33179
+ retryable: false
33180
+ schemaId: urn:gala:schema:problem:2.0.0
33181
+ schemaVersion: 2.0.0
33182
+ status: 409
33183
+ title: COMMAND_REPLAY_CONFLICT
33184
+ type: urn:gala:problem:command-replay-conflict
33185
+ DNS_CONNECTION_NOT_CONFIRMABLE:
33186
+ summary: DNS_CONNECTION_NOT_CONFIRMABLE
33187
+ value:
33188
+ code: DNS_CONNECTION_NOT_CONFIRMABLE
33189
+ correlationId: 018f0000-0000-7000-8000-000000000001
33190
+ detail: See the operation contract.
33191
+ errors: []
33192
+ retryable: false
33193
+ schemaId: urn:gala:schema:problem:2.0.0
33194
+ schemaVersion: 2.0.0
33195
+ status: 409
33196
+ title: DNS_CONNECTION_NOT_CONFIRMABLE
33197
+ type: urn:gala:problem:dns-connection-not-confirmable
33198
+ schema:
33199
+ $ref: "#/components/schemas/Problem"
33200
+ description: COMMAND_REPLAY_CONFLICT, DNS_CONNECTION_NOT_CONFIRMABLE
33201
+ headers:
33202
+ Cache-Control:
33203
+ $ref: "#/components/headers/CacheControlNoStore"
33204
+ X-Correlation-Id:
33205
+ $ref: "#/components/headers/XCorrelationId"
33206
+ x-gala-problem-codes:
33207
+ - COMMAND_REPLAY_CONFLICT
33208
+ - DNS_CONNECTION_NOT_CONFIRMABLE
33209
+ "410":
33210
+ content:
33211
+ application/problem+json:
33212
+ examples:
33213
+ DNS_CONNECTION_EXPIRED:
33214
+ summary: DNS_CONNECTION_EXPIRED
33215
+ value:
33216
+ code: DNS_CONNECTION_EXPIRED
33217
+ correlationId: 018f0000-0000-7000-8000-000000000001
33218
+ detail: See the operation contract.
33219
+ errors: []
33220
+ retryable: false
33221
+ schemaId: urn:gala:schema:problem:2.0.0
33222
+ schemaVersion: 2.0.0
33223
+ status: 410
33224
+ title: DNS_CONNECTION_EXPIRED
33225
+ type: urn:gala:problem:dns-connection-expired
33226
+ schema:
33227
+ $ref: "#/components/schemas/Problem"
33228
+ description: DNS_CONNECTION_EXPIRED
33229
+ headers:
33230
+ Cache-Control:
33231
+ $ref: "#/components/headers/CacheControlNoStore"
33232
+ X-Correlation-Id:
33233
+ $ref: "#/components/headers/XCorrelationId"
33234
+ x-gala-problem-codes:
33235
+ - DNS_CONNECTION_EXPIRED
33236
+ "502":
33237
+ content:
33238
+ application/problem+json:
33239
+ examples:
33240
+ DNS_PROVIDER_REJECTED:
33241
+ summary: DNS_PROVIDER_REJECTED
33242
+ value:
33243
+ code: DNS_PROVIDER_REJECTED
33244
+ correlationId: 018f0000-0000-7000-8000-000000000001
33245
+ detail: See the operation contract.
33246
+ errors: []
33247
+ retryable: true
33248
+ schemaId: urn:gala:schema:problem:2.0.0
33249
+ schemaVersion: 2.0.0
33250
+ status: 502
33251
+ title: DNS_PROVIDER_REJECTED
33252
+ type: urn:gala:problem:dns-provider-rejected
33253
+ schema:
33254
+ $ref: "#/components/schemas/Problem"
33255
+ description: DNS_PROVIDER_REJECTED
33256
+ headers:
33257
+ Cache-Control:
33258
+ $ref: "#/components/headers/CacheControlNoStore"
33259
+ X-Correlation-Id:
33260
+ $ref: "#/components/headers/XCorrelationId"
33261
+ x-gala-problem-codes:
33262
+ - DNS_PROVIDER_REJECTED
33263
+ security:
33264
+ - browserSession: []
33265
+ summary: apply the DNS changes a connection is waiting to make
33266
+ tags:
33267
+ - domains
33268
+ x-gala-activation-gate: MVP
33269
+ x-gala-activation-guards:
33270
+ - NONE
33271
+ x-gala-capability-key: publication.settings.manage
33272
+ x-gala-concurrency: domain-binding-version
33273
+ x-gala-conditional-capabilities: []
33274
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
33275
+ x-gala-nullability: required-and-nullable-are-explicit
33276
+ x-gala-purpose: apply the DNS changes a connection is waiting to make
33277
+ x-gala-reachable-problems:
33278
+ - AUTHENTICATION_REQUIRED
33279
+ - AUTHORIZATION_DENIED
33280
+ - COMMAND_REPLAY_CONFLICT
33281
+ - DNS_CONNECTION_EXPIRED
33282
+ - DNS_CONNECTION_NOT_CONFIRMABLE
33283
+ - DNS_CONNECTION_NOT_FOUND
33284
+ - DNS_PROVIDER_REJECTED
33285
+ - RESOURCE_NOT_FOUND
33286
+ - VALIDATION_FAILED
33287
+ x-gala-replay-identity: idempotency-key
33288
+ x-gala-state-guards:
33289
+ - NONE
33290
+ x-gala-success-category: protocol
33291
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
33292
+ /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}/dns-connections/{connectionId}:discard:
33293
+ post:
33294
+ description: |
33295
+ 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`.
33296
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdDiscard
33297
+ parameters:
33298
+ - $ref: "#/components/parameters/XCorrelationId"
33299
+ - example: 018f0000-0000-7000-8000-000000000001
33300
+ in: path
33301
+ name: organizationId
33302
+ required: true
33303
+ schema:
33304
+ format: uuid
33305
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33306
+ type: string
33307
+ - example: 018f0000-0000-7000-8000-000000000001
33308
+ in: path
33309
+ name: publicationId
33310
+ required: true
33311
+ schema:
33312
+ format: uuid
33313
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33314
+ type: string
33315
+ - example: 018f0000-0000-7000-8000-000000000001
33316
+ in: path
33317
+ name: domainId
33318
+ required: true
33319
+ schema:
33320
+ format: uuid
33321
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33322
+ type: string
33323
+ - example: 018f0000-0000-7000-8000-000000000001
33324
+ in: path
33325
+ name: connectionId
33326
+ required: true
33327
+ schema:
33328
+ format: uuid
33329
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
33330
+ type: string
33331
+ - $ref: "#/components/parameters/IdempotencyKey"
33332
+ - $ref: "#/components/parameters/XCsrfToken"
33333
+ responses:
33334
+ "200":
33335
+ content:
33336
+ application/json:
33337
+ examples:
33338
+ nominal:
33339
+ summary: Nominal successful response
33340
+ value:
33341
+ connectionId: 018f0000-0000-7000-8000-000000000001
33342
+ createdAt: "2026-10-10T12:00:00.000Z"
33343
+ expiresAt: "2026-10-10T12:10:00.000Z"
33344
+ intent: ADD
33345
+ outcome:
33346
+ code: CANCELLED
33347
+ detail: The records were left as they were.
33348
+ phase: CANCELLED
33349
+ plan:
33350
+ - action: REPLACE
33351
+ existing:
33352
+ proxied: true
33353
+ type: A
33354
+ value: 203.0.113.7
33355
+ record:
33356
+ name: "@"
33357
+ type: A
33358
+ value: 185.199.108.153
33359
+ - action: KEEP
33360
+ existing:
33361
+ proxied: false
33362
+ type: A
33363
+ value: 185.199.109.153
33364
+ record:
33365
+ name: "@"
33366
+ type: A
33367
+ value: 185.199.109.153
33368
+ provider: CLOUDFLARE
33369
+ zone:
33370
+ accountName: Maya Personal
33371
+ name: maya.dev
33372
+ schema:
33373
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdDomainsByDomainIdDnsConnectionsByConnectionIdDiscardResponse"
33374
+ description: leave the provider's DNS records as they are and end a connection succeeded
33375
+ headers:
33376
+ Cache-Control:
33377
+ $ref: "#/components/headers/CacheControlNoStore"
33378
+ X-Correlation-Id:
33379
+ $ref: "#/components/headers/XCorrelationId"
33380
+ "400":
33381
+ content:
33382
+ application/problem+json:
33383
+ examples:
33384
+ VALIDATION_FAILED:
33385
+ summary: VALIDATION_FAILED
33386
+ value:
33387
+ code: VALIDATION_FAILED
33388
+ correlationId: 018f0000-0000-7000-8000-000000000001
33389
+ detail: See the operation contract.
33390
+ errors: []
33391
+ retryable: false
33392
+ schemaId: urn:gala:schema:problem:2.0.0
33393
+ schemaVersion: 2.0.0
33394
+ status: 400
33395
+ title: VALIDATION_FAILED
33396
+ type: urn:gala:problem:validation-failed
33397
+ schema:
33398
+ $ref: "#/components/schemas/Problem"
33399
+ description: VALIDATION_FAILED
33400
+ headers:
33401
+ Cache-Control:
33402
+ $ref: "#/components/headers/CacheControlNoStore"
33403
+ X-Correlation-Id:
33404
+ $ref: "#/components/headers/XCorrelationId"
33405
+ x-gala-problem-codes:
33406
+ - VALIDATION_FAILED
33407
+ "401":
33408
+ content:
33409
+ application/problem+json:
33410
+ examples:
33411
+ AUTHENTICATION_REQUIRED:
33412
+ summary: AUTHENTICATION_REQUIRED
33413
+ value:
33414
+ code: AUTHENTICATION_REQUIRED
33415
+ correlationId: 018f0000-0000-7000-8000-000000000001
33416
+ detail: See the operation contract.
33417
+ errors: []
33418
+ retryable: false
33419
+ schemaId: urn:gala:schema:problem:2.0.0
33420
+ schemaVersion: 2.0.0
33421
+ status: 401
33422
+ title: AUTHENTICATION_REQUIRED
33423
+ type: urn:gala:problem:authentication-required
33424
+ schema:
33425
+ $ref: "#/components/schemas/Problem"
33426
+ description: AUTHENTICATION_REQUIRED
33427
+ headers:
33428
+ Cache-Control:
33429
+ $ref: "#/components/headers/CacheControlNoStore"
33430
+ X-Correlation-Id:
33431
+ $ref: "#/components/headers/XCorrelationId"
33432
+ x-gala-problem-codes:
33433
+ - AUTHENTICATION_REQUIRED
33434
+ "403":
33435
+ content:
33436
+ application/problem+json:
33437
+ examples:
33438
+ AUTHORIZATION_DENIED:
33439
+ summary: AUTHORIZATION_DENIED
33440
+ value:
33441
+ code: AUTHORIZATION_DENIED
33442
+ correlationId: 018f0000-0000-7000-8000-000000000001
33443
+ detail: See the operation contract.
33444
+ errors: []
33445
+ retryable: false
33446
+ schemaId: urn:gala:schema:problem:2.0.0
33447
+ schemaVersion: 2.0.0
33448
+ status: 403
33449
+ title: AUTHORIZATION_DENIED
33450
+ type: urn:gala:problem:authorization-denied
33451
+ schema:
33452
+ $ref: "#/components/schemas/Problem"
33453
+ description: AUTHORIZATION_DENIED
33454
+ headers:
33455
+ Cache-Control:
33456
+ $ref: "#/components/headers/CacheControlNoStore"
33457
+ X-Correlation-Id:
33458
+ $ref: "#/components/headers/XCorrelationId"
33459
+ x-gala-problem-codes:
33460
+ - AUTHORIZATION_DENIED
33461
+ "404":
33462
+ content:
33463
+ application/problem+json:
33464
+ examples:
33465
+ DNS_CONNECTION_NOT_FOUND:
33466
+ summary: DNS_CONNECTION_NOT_FOUND
33467
+ value:
33468
+ code: DNS_CONNECTION_NOT_FOUND
33469
+ correlationId: 018f0000-0000-7000-8000-000000000001
33470
+ detail: See the operation contract.
33471
+ errors: []
33472
+ retryable: false
33473
+ schemaId: urn:gala:schema:problem:2.0.0
33474
+ schemaVersion: 2.0.0
33475
+ status: 404
33476
+ title: DNS_CONNECTION_NOT_FOUND
33477
+ type: urn:gala:problem:dns-connection-not-found
33478
+ RESOURCE_NOT_FOUND:
33479
+ summary: RESOURCE_NOT_FOUND
33480
+ value:
33481
+ code: RESOURCE_NOT_FOUND
33482
+ correlationId: 018f0000-0000-7000-8000-000000000001
33483
+ detail: See the operation contract.
33484
+ errors: []
33485
+ retryable: false
33486
+ schemaId: urn:gala:schema:problem:2.0.0
33487
+ schemaVersion: 2.0.0
33488
+ status: 404
33489
+ title: RESOURCE_NOT_FOUND
33490
+ type: urn:gala:problem:resource-not-found
33491
+ schema:
33492
+ $ref: "#/components/schemas/Problem"
33493
+ description: DNS_CONNECTION_NOT_FOUND, RESOURCE_NOT_FOUND
33494
+ headers:
33495
+ Cache-Control:
33496
+ $ref: "#/components/headers/CacheControlNoStore"
33497
+ X-Correlation-Id:
33498
+ $ref: "#/components/headers/XCorrelationId"
33499
+ x-gala-problem-codes:
33500
+ - DNS_CONNECTION_NOT_FOUND
33501
+ - RESOURCE_NOT_FOUND
33502
+ "409":
33503
+ content:
33504
+ application/problem+json:
33505
+ examples:
33506
+ COMMAND_REPLAY_CONFLICT:
33507
+ summary: COMMAND_REPLAY_CONFLICT
33508
+ value:
33509
+ code: COMMAND_REPLAY_CONFLICT
33510
+ correlationId: 018f0000-0000-7000-8000-000000000001
33511
+ detail: See the operation contract.
33512
+ errors: []
33513
+ retryable: false
33514
+ schemaId: urn:gala:schema:problem:2.0.0
33515
+ schemaVersion: 2.0.0
33516
+ status: 409
33517
+ title: COMMAND_REPLAY_CONFLICT
33518
+ type: urn:gala:problem:command-replay-conflict
33519
+ DNS_CONNECTION_NOT_CONFIRMABLE:
33520
+ summary: DNS_CONNECTION_NOT_CONFIRMABLE
33521
+ value:
33522
+ code: DNS_CONNECTION_NOT_CONFIRMABLE
33523
+ correlationId: 018f0000-0000-7000-8000-000000000001
33524
+ detail: See the operation contract.
33525
+ errors: []
33526
+ retryable: false
33527
+ schemaId: urn:gala:schema:problem:2.0.0
33528
+ schemaVersion: 2.0.0
33529
+ status: 409
33530
+ title: DNS_CONNECTION_NOT_CONFIRMABLE
33531
+ type: urn:gala:problem:dns-connection-not-confirmable
33532
+ schema:
33533
+ $ref: "#/components/schemas/Problem"
33534
+ description: COMMAND_REPLAY_CONFLICT, DNS_CONNECTION_NOT_CONFIRMABLE
33535
+ headers:
33536
+ Cache-Control:
33537
+ $ref: "#/components/headers/CacheControlNoStore"
33538
+ X-Correlation-Id:
33539
+ $ref: "#/components/headers/XCorrelationId"
33540
+ x-gala-problem-codes:
33541
+ - COMMAND_REPLAY_CONFLICT
33542
+ - DNS_CONNECTION_NOT_CONFIRMABLE
33543
+ security:
33544
+ - browserSession: []
33545
+ summary: leave the provider's DNS records as they are and end a connection
33546
+ tags:
33547
+ - domains
33548
+ x-gala-activation-gate: MVP
33549
+ x-gala-activation-guards:
33550
+ - NONE
33551
+ x-gala-capability-key: publication.settings.manage
33552
+ x-gala-concurrency: domain-binding-version
33553
+ x-gala-conditional-capabilities: []
33554
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
33555
+ x-gala-nullability: required-and-nullable-are-explicit
33556
+ x-gala-purpose: leave the provider's DNS records as they are and end a connection
33557
+ x-gala-reachable-problems:
33558
+ - AUTHENTICATION_REQUIRED
33559
+ - AUTHORIZATION_DENIED
33560
+ - COMMAND_REPLAY_CONFLICT
33561
+ - DNS_CONNECTION_NOT_CONFIRMABLE
33562
+ - DNS_CONNECTION_NOT_FOUND
33563
+ - RESOURCE_NOT_FOUND
33564
+ - VALIDATION_FAILED
33565
+ x-gala-replay-identity: idempotency-key
33566
+ x-gala-state-guards:
33567
+ - NONE
33568
+ x-gala-success-category: protocol
33569
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
31891
33570
  /v2/organizations/{organizationId}/publications/{publicationId}/domains/{domainId}:check:
31892
33571
  post:
31893
33572
  description: |