@rathnasgala2/schemas 3.16.0 → 3.18.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.
Files changed (53) hide show
  1. package/README.md +5 -3
  2. package/THIRD_PARTY_LICENSES.json +1 -1
  3. package/catalog-sources/internal-event-actions.json +1 -1
  4. package/diagnostics/diagnostic-map.json +57 -0
  5. package/docs/catalogs/internal-event-actions.json +2 -2
  6. package/docs/catalogs/schema-inventory.json +7 -7
  7. package/examples/valid/adapter-capability/rules.json +12 -0
  8. package/examples/valid/deployment-intent/rules.json +12 -0
  9. package/examples/valid/deployment-observation/rules.json +12 -0
  10. package/examples/valid/deployment-receipt/rules.json +12 -0
  11. package/examples/valid/problem/rules.json +39 -0
  12. package/fixtures/boundary/adapter-capability/rules.json +26 -0
  13. package/fixtures/boundary/deployment-intent/rules.json +26 -0
  14. package/fixtures/boundary/deployment-observation/rules.json +26 -0
  15. package/fixtures/boundary/deployment-receipt/rules.json +26 -0
  16. package/fixtures/boundary/problem/rules.json +81 -0
  17. package/fixtures/invalid/adapter-capability/SCHEMA_PATTERN_INVALID/cases.json +11 -0
  18. package/fixtures/invalid/adapter-capability/SCHEMA_STRING_TOO_LONG/cases.json +11 -0
  19. package/fixtures/invalid/adapter-capability/UTF8_BYTE_LENGTH_INVALID/cases.json +11 -0
  20. package/fixtures/invalid/deployment-intent/SCHEMA_PATTERN_INVALID/cases.json +11 -0
  21. package/fixtures/invalid/deployment-intent/SCHEMA_STRING_TOO_LONG/cases.json +11 -0
  22. package/fixtures/invalid/deployment-intent/UTF8_BYTE_LENGTH_INVALID/cases.json +11 -0
  23. package/fixtures/invalid/deployment-observation/SCHEMA_PATTERN_INVALID/cases.json +11 -0
  24. package/fixtures/invalid/deployment-observation/SCHEMA_STRING_TOO_LONG/cases.json +11 -0
  25. package/fixtures/invalid/deployment-observation/UTF8_BYTE_LENGTH_INVALID/cases.json +11 -0
  26. package/fixtures/invalid/deployment-receipt/SCHEMA_PATTERN_INVALID/cases.json +11 -0
  27. package/fixtures/invalid/deployment-receipt/SCHEMA_STRING_TOO_LONG/cases.json +11 -0
  28. package/fixtures/invalid/deployment-receipt/UTF8_BYTE_LENGTH_INVALID/cases.json +11 -0
  29. package/fixtures/invalid/problem/GRAPHEME_LENGTH_INVALID/cases.json +9 -0
  30. package/fixtures/invalid/problem/SCHEMA_STRING_TOO_LONG/cases.json +27 -0
  31. package/fixtures/invalid/problem/SCHEMA_STRING_TOO_SHORT/cases.json +9 -0
  32. package/fixtures/invalid/problem/SCHEMA_TYPE_INVALID/cases.json +18 -0
  33. package/fixtures/manifest.json +447 -10
  34. package/fixtures/unknown-field/adapter-capability/rules.json +3 -0
  35. package/fixtures/unknown-field/deployment-intent/rules.json +3 -0
  36. package/fixtures/unknown-field/deployment-observation/rules.json +3 -0
  37. package/fixtures/unknown-field/deployment-receipt/rules.json +3 -0
  38. package/fixtures/unknown-field/problem/rules.json +7 -0
  39. package/generated/browser/validator-core.mjs +2 -2
  40. package/generated/typescript/contracts/adapter-capability.d.ts +1 -0
  41. package/generated/typescript/contracts/deployment-intent.d.ts +1 -0
  42. package/generated/typescript/contracts/deployment-observation.d.ts +1 -0
  43. package/generated/typescript/contracts/deployment-receipt.d.ts +1 -0
  44. package/generated/typescript/contracts/problem.d.ts +4 -0
  45. package/openapi/http-catalog.json +16 -3
  46. package/openapi/openapi.yaml +526 -10
  47. package/package.json +1 -1
  48. package/sbom.cdx.json +23 -23
  49. package/schemas/adapter-capability.schema.json +7 -0
  50. package/schemas/deployment-intent.schema.json +7 -0
  51. package/schemas/deployment-observation.schema.json +7 -0
  52. package/schemas/deployment-receipt.schema.json +7 -0
  53. package/schemas/problem.schema.json +21 -0
@@ -1923,10 +1923,70 @@ components:
1923
1923
  - provider
1924
1924
  - intents
1925
1925
  type: object
1926
+ DomainBaseMove:
1927
+ additionalProperties: false
1928
+ description: |
1929
+ SCHEMA-3.17.0. Where the system's move of the site's canonical base
1930
+ (`gala/publication.json` `canonicalBase`) stands. Connecting a domain
1931
+ moves the base to the custom address and removing it moves the base
1932
+ back to the github.io address, each as a system operation
1933
+ (`domain_base_move`) that proposes the "Site address" change and
1934
+ publishes it, ordered so no address serves a build made for the other.
1935
+ A person never has to publish for it.
1936
+ properties:
1937
+ changeId:
1938
+ description: |
1939
+ The repository change that carries the base move, once proposed.
1940
+ format: uuid
1941
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
1942
+ type: string
1943
+ operationId:
1944
+ description: |
1945
+ The `domain_base_move` operation doing the work, once it exists;
1946
+ read it at `/v2/organizations/{organizationId}/operations/{operationId}`.
1947
+ format: uuid
1948
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
1949
+ type: string
1950
+ reason:
1951
+ description: |
1952
+ Why the move is not progressing, when it is not: a stable upper-case
1953
+ code. Known values: `MOVE_FAILED` (an attempt failed; the next check
1954
+ cycle retries), `MOVE_STUCK` (three attempts failed; the author's
1955
+ Check now retries), `MOVE_ABANDONED` (the move back to the github.io
1956
+ address on removal gave up) and `AUTHORITY_LAPSED` (the stored
1957
+ publish authority the move runs under could not be restated from the
1958
+ latest decision). Absent while the move is progressing or not
1959
+ needed. A client shows a generic sentence for a value it does not
1960
+ know.
1961
+ maxLength: 80
1962
+ minLength: 1
1963
+ type: string
1964
+ state:
1965
+ description: |
1966
+ `NOT_NEEDED`: the profile base already is the address the site is
1967
+ served from. `PENDING`: a move is required and has not started.
1968
+ `MOVING`: the move operation is running. `FAILED`: the last attempt
1969
+ failed (`reason` says how; it is retried until `MOVE_STUCK`).
1970
+ `PROPOSED`: the "Site address" change exists (`changeId`) and is not
1971
+ yet published. `PUBLISHED`: the move completed and the base is
1972
+ live.
1973
+ enum:
1974
+ - NOT_NEEDED
1975
+ - PENDING
1976
+ - MOVING
1977
+ - FAILED
1978
+ - PROPOSED
1979
+ - PUBLISHED
1980
+ type: string
1981
+ required:
1982
+ - state
1983
+ type: object
1926
1984
  DomainBinding:
1927
1985
  additionalProperties: false
1928
- 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).
1986
+ 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). SCHEMA-3.17.0 adds `redirectsFromProjectPath`, which says whether GitHub already redirects the project path to the domain (from the moment the Pages CNAME is set until it is removed) and so decides the address the site is served from and the base it must be built for, and `baseMove`, which says where the system's move of that base stands (the `WAIT_FOR_MOVE` next step is shown while it runs). Both are optional so a 3.16 body still validates.
1929
1987
  properties:
1988
+ baseMove:
1989
+ $ref: "#/components/schemas/DomainBaseMove"
1930
1990
  canonicalBase:
1931
1991
  $ref: "#/components/schemas/DomainCanonicalBase"
1932
1992
  certificate:
@@ -1983,6 +2043,17 @@ components:
1983
2043
  - provider
1984
2044
  - since
1985
2045
  type: object
2046
+ redirectsFromProjectPath:
2047
+ description: |
2048
+ SCHEMA-3.17.0. True while GitHub redirects the repository's
2049
+ github.io project path to this domain, which it does from the moment
2050
+ the Pages CNAME is set until it is removed. While it is true the
2051
+ site is served from the domain, so the canonical base it must carry
2052
+ is the domain's; while it is false the project path serves the site
2053
+ and the base is the github.io address. The server derives it from
2054
+ its own record of when the CNAME was set and removed, so a client
2055
+ reads the flag and does not infer it from `state`.
2056
+ type: boolean
1986
2057
  routing:
1987
2058
  $ref: "#/components/schemas/DomainRouting"
1988
2059
  state:
@@ -2131,7 +2202,7 @@ components:
2131
2202
  type: string
2132
2203
  DomainNextStep:
2133
2204
  additionalProperties: false
2134
- 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.
2205
+ 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), `WAIT_FOR_MOVE` (SCHEMA-3.17.0, Galascribe is moving the site's canonical base to or from the domain; `baseMove` says where it is and nothing is asked of the author) and `NONE`; a client shows `detail` for codes it does not know.
2135
2206
  properties:
2136
2207
  code:
2137
2208
  maxLength: 80
@@ -5139,7 +5210,7 @@ components:
5139
5210
  additionalProperties: false
5140
5211
  properties:
5141
5212
  reasonCode:
5142
- description: "A free string. Known values: RUN_NOT_STARTED, BUILD_FAILED, RUN_CANCELLED, RUN_TIMED_OUT, WORKFLOW_UNAVAILABLE, DEPLOY_FAILED, PAGES_NOT_AVAILABLE, REPORT_FAILED, LIVE_CHECK_FAILED, CHANGE_CLOSED_ON_GITHUB. Clients must tolerate other values."
5213
+ description: "A free string. Known values: RUN_NOT_STARTED, BUILD_FAILED, RUN_CANCELLED, RUN_TIMED_OUT, WORKFLOW_UNAVAILABLE, DEPLOY_FAILED, PAGES_NOT_AVAILABLE, REPORT_FAILED, LIVE_CHECK_FAILED, CHANGE_CLOSED_ON_GITHUB and, new in 3.17.0, DESTINATION_BUSY_TIMEOUT, DESTINATION_FENCE_EXPIRED, CANONICAL_BASE_MISMATCH, DOMAIN_NOT_READY (the same codes as `OperationReason`). Clients must tolerate other values."
5143
5214
  maxLength: 80
5144
5215
  minLength: 1
5145
5216
  type: string
@@ -5900,6 +5971,8 @@ components:
5900
5971
  type: string
5901
5972
  currentAttemptManagedReceipt:
5902
5973
  $ref: "#/components/schemas/PortableDeploymentReceiptDocument"
5974
+ held:
5975
+ $ref: "#/components/schemas/OperationHeld"
5903
5976
  kind:
5904
5977
  $ref: "#/components/schemas/OperationKind"
5905
5978
  managedReceipt:
@@ -5925,6 +5998,8 @@ components:
5925
5998
  type: string
5926
5999
  phase:
5927
6000
  $ref: "#/components/schemas/OperationPhase"
6001
+ reason:
6002
+ $ref: "#/components/schemas/OperationReason"
5928
6003
  recoveryActions:
5929
6004
  items:
5930
6005
  maxLength: 80
@@ -6459,6 +6534,8 @@ components:
6459
6534
  format: uuid
6460
6535
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6461
6536
  type: string
6537
+ held:
6538
+ $ref: "#/components/schemas/OperationHeld"
6462
6539
  kind:
6463
6540
  $ref: "#/components/schemas/OperationKind"
6464
6541
  operationId:
@@ -6474,6 +6551,8 @@ components:
6474
6551
  - failed_no_effect
6475
6552
  - cancelled_no_effect
6476
6553
  type: string
6554
+ reason:
6555
+ $ref: "#/components/schemas/OperationReason"
6477
6556
  recoveryActions:
6478
6557
  items:
6479
6558
  maxLength: 80
@@ -6502,19 +6581,70 @@ components:
6502
6581
  - blockers
6503
6582
  - recoveryActions
6504
6583
  type: object
6584
+ OperationHeld:
6585
+ additionalProperties: false
6586
+ description: |
6587
+ SCHEMA-3.17.0. Present on an operation that is still `accepted` and is
6588
+ not starting because another operation of the same publication holds
6589
+ its destination: the destination fence a deploy opens at intent
6590
+ exchange stays held until that operation ends, and a publish does not
6591
+ dispatch while it is held. It names the holder so a client can say what
6592
+ the operation is waiting for instead of showing a bare `accepted`.
6593
+ Absent when nothing holds the destination and on every operation that
6594
+ has started or ended. A held operation ends with
6595
+ `DESTINATION_BUSY_TIMEOUT` if the holder does not release the fence
6596
+ within the server's bound (see `reason`).
6597
+ properties:
6598
+ byOperationId:
6599
+ description: The operation that holds the destination.
6600
+ format: uuid
6601
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6602
+ type: string
6603
+ holderPhase:
6604
+ description: |
6605
+ The holder's lifecycle state now, spelled as the transition
6606
+ catalog spells a `PublicationOperation` state in capitals
6607
+ (`ACCEPTED`, `EXECUTING`, `RECONCILING`, `COMPLETED`,
6608
+ `FAILED_NO_EFFECT`, `CANCELLED_NO_EFFECT`), which is not the
6609
+ lower-case `phase` an operation read carries. A client shows a
6610
+ value it does not know as it is.
6611
+ maxLength: 80
6612
+ minLength: 1
6613
+ type: string
6614
+ holderReason:
6615
+ $ref: "#/components/schemas/OperationReason"
6616
+ description: |
6617
+ Why the holder is in that state, when it is known: its terminal
6618
+ `reason`, or the verdict its run settled with while the fence is
6619
+ still being released. Absent while the holder is simply running.
6620
+ since:
6621
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6622
+ description: When this operation was accepted and started waiting for the destination.
6623
+ required:
6624
+ - byOperationId
6625
+ - since
6626
+ - holderPhase
6627
+ type: object
6505
6628
  OperationKind:
6506
6629
  description: |
6507
6630
  What kind of work the operation is, so a client can label it and route
6508
6631
  to the right screen without parsing `statusUrl` or inferring from
6509
6632
  `subject`. The vocabulary is exactly the organization-scoped operations
6510
- that answer `202 Accepted` and therefore create an operation row; it is
6633
+ that create an operation row (the ones that answer `202 Accepted`, and
6634
+ from 3.17.0 the system-initiated `domain_base_move`); it is
6511
6635
  spelled the way the API's own `operation_type` column is
6512
6636
  (`^[a-z][a-z0-9_]*$`), and `publication_retirement` and
6513
6637
  `repository_change_commit` are already that column's literals. A member
6514
- is added only by a reviewed contract change.
6638
+ is added only by a reviewed contract change. `domain_base_move`
6639
+ (SCHEMA-3.17.0, the API's `DOMAIN_BASE_MOVE` dispatch kind) is the
6640
+ system-initiated operation that moves a site's canonical base to or
6641
+ from its custom domain around the CNAME switch; nobody requests it, so
6642
+ it is reached through an operation's `held.byOperationId` or a site
6643
+ read rather than a `202`.
6515
6644
  enum:
6516
6645
  - deployment_reconcile
6517
6646
  - deployment_rollback
6647
+ - domain_base_move
6518
6648
  - publication_import
6519
6649
  - publication_retirement
6520
6650
  - publish
@@ -6531,6 +6661,31 @@ components:
6531
6661
  - failed_no_effect
6532
6662
  - cancelled_no_effect
6533
6663
  type: string
6664
+ OperationReason:
6665
+ description: |
6666
+ SCHEMA-3.17.0. A stable upper-case code saying why an operation ended
6667
+ the way it did, or why it is in its phase: set on a `failed_no_effect`
6668
+ or `cancelled_no_effect` operation and on one that is `reconciling`
6669
+ because its deploy failed; absent on a running or successful operation
6670
+ and on operations that ended before 3.17.0. A free string within the
6671
+ pattern, not a closed enumeration, so a client shows a generic sentence
6672
+ for a code it does not know. Known values: `RUN_NOT_STARTED`,
6673
+ `BUILD_FAILED`, `RUN_CANCELLED`, `RUN_TIMED_OUT`,
6674
+ `WORKFLOW_UNAVAILABLE`, `DEPLOY_FAILED`, `PAGES_NOT_AVAILABLE`,
6675
+ `REPORT_FAILED`, `LIVE_CHECK_FAILED`, `CHANGE_CLOSED_ON_GITHUB` (the
6676
+ `reasonCode` values of a history failure) and, new in 3.17.0,
6677
+ `DESTINATION_BUSY_TIMEOUT` (the operation was held behind another that
6678
+ did not release the destination within the server's bound, so it ended
6679
+ without creating a run), `DESTINATION_FENCE_EXPIRED` (the destination
6680
+ fence this operation held was closed by the server's reaper after its
6681
+ run settled with no receipt), `CANONICAL_BASE_MISMATCH` (the site's
6682
+ canonical base was not the address it is served from when the
6683
+ operation was dispatched) and `DOMAIN_NOT_READY` (a custom domain was
6684
+ part-way through its switch and no origin could be verified).
6685
+ maxLength: 64
6686
+ minLength: 3
6687
+ pattern: ^[A-Z][A-Z0-9_]{2,63}$
6688
+ type: string
6534
6689
  OperationResponse:
6535
6690
  additionalProperties: false
6536
6691
  properties:
@@ -8300,6 +8455,14 @@ components:
8300
8455
  $ref: "#/components/schemas/PortableDeploymentIntentDestinationProviderCoordinates"
8301
8456
  targetDigest:
8302
8457
  $ref: "#/components/schemas/PortableDeploymentIntentDigest"
8458
+ verificationBaseUrl:
8459
+ allOf:
8460
+ - $ref: "#/components/schemas/PortableDeploymentIntentUrlHttps"
8461
+ description: "SCHEMA-3.17.0, optional: the address the deploy is verified at when that differs from `baseUrl`, the build base. It is the origin and path that answer over HTTPS right now (the github.io project address before a custom domain is set, the custom base once it serves): a lowercase exact host with no userinfo, port, query or fragment; a path is allowed. Absent means `baseUrl` is both the build base and the verification address, exactly as before 3.17.0. When present it is a member of `destination` like `baseUrl`, so it is inside the capability decision record that `decisionDigest` covers (RFC 8785 canonical member order); a record without it digests exactly as it did before."
8462
+ maxLength: 2048
8463
+ pattern: ^https://[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?(?:/[^?#\s]*)?$
8464
+ x-gala-utf8ByteLength:
8465
+ maximum: 2048
8303
8466
  required:
8304
8467
  - environment
8305
8468
  - adapterId
@@ -11997,6 +12160,14 @@ components:
11997
12160
  $ref: "#/components/schemas/PortableDeploymentReceiptDestinationProviderCoordinates"
11998
12161
  targetDigest:
11999
12162
  $ref: "#/components/schemas/PortableDeploymentReceiptDigest"
12163
+ verificationBaseUrl:
12164
+ allOf:
12165
+ - $ref: "#/components/schemas/PortableDeploymentReceiptUrlHttps"
12166
+ description: "SCHEMA-3.17.0, optional: the address the deploy is verified at when that differs from `baseUrl`, the build base. It is the origin and path that answer over HTTPS right now (the github.io project address before a custom domain is set, the custom base once it serves): a lowercase exact host with no userinfo, port, query or fragment; a path is allowed. Absent means `baseUrl` is both the build base and the verification address, exactly as before 3.17.0. When present it is a member of `destination` like `baseUrl`, so it is inside the capability decision record that `decisionDigest` covers (RFC 8785 canonical member order); a record without it digests exactly as it did before."
12167
+ maxLength: 2048
12168
+ pattern: ^https://[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?(?:/[^?#\s]*)?$
12169
+ x-gala-utf8ByteLength:
12170
+ maximum: 2048
12000
12171
  required:
12001
12172
  - environment
12002
12173
  - adapterId
@@ -13590,16 +13761,36 @@ components:
13590
13761
  x-gala-graphemeLength:
13591
13762
  maximum: 500
13592
13763
  minimum: 0
13764
+ domainState:
13765
+ description: "SCHEMA-3.17.0, optional, carried by a CANONICAL_BASE_MISMATCH problem and absent from every other: the state of the site's custom-domain binding that decided `expectedBase` (a `DomainBindingState` value such as `CERTIFICATE_PENDING` or `ACTIVE`), absent when the site has no custom domain. A client shows a value it does not know as is."
13766
+ maxLength: 80
13767
+ minLength: 1
13768
+ type: string
13593
13769
  errors:
13594
13770
  items:
13595
13771
  $ref: "#/components/schemas/PortableProblemFieldError"
13596
13772
  maxItems: 100
13597
13773
  minItems: 0
13598
13774
  type: array
13775
+ expectedBase:
13776
+ allOf:
13777
+ - $ref: "#/components/schemas/PortableProblemUrlHttps"
13778
+ description: "SCHEMA-3.17.0, optional, carried by a CANONICAL_BASE_MISMATCH problem and absent from every other: the address the site is served from right now and so the canonical base its publication profile must carry (the active custom domain once the domain redirects the project path, otherwise the github.io address)."
13779
+ maxLength: 2048
13599
13780
  instance:
13600
13781
  $ref: "#/components/schemas/PortableProblemCanonicalRoute"
13601
13782
  operationId:
13602
13783
  $ref: "#/components/schemas/PortableProblemStableId"
13784
+ profileBase:
13785
+ description: "SCHEMA-3.17.0, optional, carried by a CANONICAL_BASE_MISMATCH problem and absent from every other: the canonical base the publication profile (`gala/publication.json`) carries now, as written. A string rather than an https URL because the mismatch can be a value that is not one (for example an http address)."
13786
+ maxLength: 2048
13787
+ type: string
13788
+ remedy:
13789
+ $ref: "#/components/schemas/PortableProblemPlainText"
13790
+ description: "SCHEMA-3.17.0, optional, carried by a CANONICAL_BASE_MISMATCH problem and absent from every other: one sentence, written for the author, saying what resolves the mismatch. A client may render it verbatim."
13791
+ x-gala-graphemeLength:
13792
+ maximum: 500
13793
+ minimum: 1
13603
13794
  retryable:
13604
13795
  type: boolean
13605
13796
  schemaId:
@@ -14078,6 +14269,22 @@ components:
14078
14269
  required:
14079
14270
  - accepted
14080
14271
  type: object
14272
+ PostCallbacksStripeRequest:
14273
+ additionalProperties: true
14274
+ description: Raw Stripe event JSON authenticated over the exact received bytes by the required Stripe-Signature header; the event object is opaque to the contract.
14275
+ type: object
14276
+ PostCallbacksStripeResponse:
14277
+ additionalProperties: false
14278
+ properties:
14279
+ accepted:
14280
+ not:
14281
+ enum:
14282
+ - false
14283
+ type: boolean
14284
+ x-gala-const: true
14285
+ required:
14286
+ - accepted
14287
+ type: object
14081
14288
  PostClaimsByTokenAcceptResponse:
14082
14289
  additionalProperties: false
14083
14290
  properties:
@@ -16519,6 +16726,38 @@ components:
16519
16726
  type: object
16520
16727
  PostWorkloadsDeploymentReceiptsRequest:
16521
16728
  additionalProperties: false
16729
+ allOf:
16730
+ - else:
16731
+ required:
16732
+ - kernelJournal
16733
+ if:
16734
+ properties:
16735
+ deployFailure:
16736
+ properties:
16737
+ journal:
16738
+ pattern: ^absent$
16739
+ type: string
16740
+ x-gala-const: absent
16741
+ required:
16742
+ - journal
16743
+ required:
16744
+ - deployFailure
16745
+ then:
16746
+ not:
16747
+ required:
16748
+ - kernelJournal
16749
+ description: |
16750
+ The deployment receipt the workflow reports for one operation.
16751
+ SCHEMA-3.17.0 lets it report a deploy that failed before, or without,
16752
+ a kernel journal. `deployFailure` classifies the failure; when its
16753
+ `journal` is `absent` the deploy wrote no journal and `kernelJournal`
16754
+ must be omitted, and the API accepts the report as terminal evidence
16755
+ that nothing changed once the run has settled as failed. Without
16756
+ `deployFailure`, or with `journal` `present`, `kernelJournal` is
16757
+ required exactly as before. `verifiedAt` records the origin the deploy
16758
+ was verified at, which differs from `publicBaseUrl` while a custom
16759
+ domain is being switched. Both members are optional, so every 3.16
16760
+ submission is still valid.
16522
16761
  properties:
16523
16762
  adapterId:
16524
16763
  maxLength: 80
@@ -16539,6 +16778,8 @@ components:
16539
16778
  artifactManifestDigest:
16540
16779
  pattern: ^sha256:[0-9a-f]{64}$
16541
16780
  type: string
16781
+ deployFailure:
16782
+ $ref: "#/components/schemas/ReceiptSubmissionDeployFailure"
16542
16783
  destinationGenerationId:
16543
16784
  format: uuid
16544
16785
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
@@ -16590,6 +16831,8 @@ components:
16590
16831
  sourceCommit:
16591
16832
  pattern: ^(?:sha1:[0-9a-f]{40}|sha256:[0-9a-f]{64})$
16592
16833
  type: string
16834
+ verifiedAt:
16835
+ $ref: "#/components/schemas/ReceiptSubmissionVerifiedAt"
16593
16836
  workflowCompletedAt:
16594
16837
  $ref: "#/components/schemas/PortableDeploymentReceiptRfc3339"
16595
16838
  workflowStartedAt:
@@ -16613,7 +16856,6 @@ components:
16613
16856
  - observedRoutes
16614
16857
  - workflowStartedAt
16615
16858
  - workflowCompletedAt
16616
- - kernelJournal
16617
16859
  type: object
16618
16860
  PostWorkloadsDeploymentReceiptsResponse:
16619
16861
  allOf:
@@ -17867,7 +18109,10 @@ components:
17867
18109
  LOCAL-60): the decision is server-owned, so the API constructs the
17868
18110
  record, derives this digest and refuses a disagreement with `422
17869
18111
  VALIDATION_FAILED`. Required in 2.8.x; required and server-derived
17870
- in the retained deployment-intent document.
18112
+ in the retained deployment-intent document. SCHEMA-3.17.0: the
18113
+ record's `destination` carries `verificationBaseUrl` when the
18114
+ request does, so the digest covers it, as a member of `destination`
18115
+ like `baseUrl`; a request without it digests as it did before.
17871
18116
  pattern: ^sha256:[0-9a-f]{64}$
17872
18117
  type: string
17873
18118
  destination:
@@ -18151,6 +18396,26 @@ components:
18151
18396
  provider binding (`GALA-DESTINATION-PROVIDER-BINDING-V2`) and
18152
18397
  refuses a disagreement with `422 VALIDATION_FAILED`. Required in
18153
18398
  the retained document.
18399
+ verificationBaseUrl:
18400
+ allOf:
18401
+ - $ref: "#/components/schemas/PortableDeploymentIntentUrlHttps"
18402
+ description: |
18403
+ Optional (SCHEMA-3.17.0): the address the deploy is verified at
18404
+ when that differs from `baseUrl`, the build base. It is the origin
18405
+ and path that answer over HTTPS right now: the github.io project
18406
+ address before a custom domain's CNAME is set, the custom base once
18407
+ it serves. A lowercase exact host with no userinfo, port, query or
18408
+ fragment; a path is allowed. The API refuses a value it does not
18409
+ consider the serving address with `422 VALIDATION_FAILED`, and
18410
+ retains it in the deployment intent's `destination`. When present it
18411
+ is inside the capability decision record, so `capabilityDecisionDigest`
18412
+ covers it as it covers `baseUrl` (RFC 8785 canonical member order);
18413
+ when absent the digest is exactly what it was before 3.17.0.
18414
+ maxLength: 2048
18415
+ pattern: ^https://[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?(?:/[^?#\s]*)?$
18416
+ type: string
18417
+ x-gala-utf8ByteLength:
18418
+ maximum: 2048
18154
18419
  required:
18155
18420
  - adapterId
18156
18421
  - adapterVersion
@@ -18353,6 +18618,73 @@ components:
18353
18618
  - operationId
18354
18619
  - statusUrl
18355
18620
  type: object
18621
+ ReceiptSubmissionDeployFailure:
18622
+ additionalProperties: false
18623
+ description: |
18624
+ SCHEMA-3.17.0. Why a deploy failed, as the workflow classified it, so
18625
+ the API can settle the operation with a named cause even when the
18626
+ deploy wrote no kernel journal.
18627
+ properties:
18628
+ failureCode:
18629
+ description: |
18630
+ A stable upper-case code naming the failure, for example
18631
+ `PAGES_PUBLIC_REDIRECT` (the public read was redirected, `toHost`
18632
+ says where). A free string within the pattern, not a closed
18633
+ enumeration; a client shows a generic sentence for a code it does
18634
+ not know.
18635
+ maxLength: 64
18636
+ minLength: 3
18637
+ pattern: ^[A-Z][A-Z0-9_]{2,63}$
18638
+ type: string
18639
+ journal:
18640
+ description: |
18641
+ `present`: the deploy wrote a kernel journal and the submission
18642
+ carries it as `kernelJournal`. `absent`: the deploy failed before
18643
+ any journal existed; `kernelJournal` must be omitted.
18644
+ enum:
18645
+ - present
18646
+ - absent
18647
+ type: string
18648
+ stage:
18649
+ description: |
18650
+ The deployment stage the failure happened in (for example
18651
+ `preflight`, `staging` or `observation`), when it happened in one.
18652
+ Absent for a failure before any stage ran.
18653
+ maxLength: 64
18654
+ minLength: 1
18655
+ pattern: ^[a-z][a-z0-9-]{0,63}$
18656
+ type: string
18657
+ toHost:
18658
+ description: |
18659
+ For a redirect failure, the lower-case host the public read was
18660
+ redirected to (an IDNA hostname, no scheme, port or path).
18661
+ maxLength: 253
18662
+ minLength: 1
18663
+ pattern: ^[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?$
18664
+ type: string
18665
+ required:
18666
+ - journal
18667
+ - failureCode
18668
+ type: object
18669
+ ReceiptSubmissionVerifiedAt:
18670
+ additionalProperties: false
18671
+ description: |
18672
+ SCHEMA-3.17.0. The origin the workflow read the public marker at to
18673
+ verify the deploy. It can differ from `publicBaseUrl`: while a custom
18674
+ domain is being switched the verification origin is the one that
18675
+ answers over HTTPS right now, and the API records which one was read.
18676
+ properties:
18677
+ origin:
18678
+ description: |
18679
+ The https origin: scheme, lower-case host and an optional port,
18680
+ with no userinfo, path, query or fragment (no trailing slash).
18681
+ maxLength: 270
18682
+ minLength: 9
18683
+ pattern: ^https://[a-z0-9](?:[a-z0-9.-]{0,251}[a-z0-9])?(?::[0-9]{1,5})?$
18684
+ type: string
18685
+ required:
18686
+ - origin
18687
+ type: object
18356
18688
  RecoveryCodeStatus:
18357
18689
  additionalProperties: false
18358
18690
  description: How many codes of the current recovery code set are still unused.
@@ -18748,7 +19080,7 @@ components:
18748
19080
  type: object
18749
19081
  SiteAttentionItem:
18750
19082
  additionalProperties: false
18751
- description: "Something that needs a person to act. The list is empty when nothing does. SCHEMA-3.3.0: `SCHEDULED_PUBLISH_FAILED` means a scheduled publish could not start at its time; `relatedPublishId` names the schedule and `reasonCode` the first precondition that failed (a client maps the values it knows to a sentence and shows a generic one otherwise); nothing was merged. `DOMAIN_PUBLISH_REQUIRED` means a custom domain is live and the next publish moves the site's address to it. `DOMAIN_DEGRADED` means a live custom domain stopped working; `reasonCode` names why and the domain read carries the next step. SCHEMA-3.9.0: on `REPOSITORY_NEEDS_UPDATE`, `reason` names the cause and `paths` the managed repository files involved, so a client can say what to do and list the files (both are absent from older servers and for other codes; show a generic sentence for a `reason` you do not know). `AUTHOR_EDITED`: a managed file differs from the version Galascribe manages and only the author may resolve it. `BRANCH_PROTECTION`: GitHub refused Galascribe's own repair commit. `REPOSITORY_ARCHIVED`: the repository is archived. `INSTALLATION_SUSPENDED`: the GitHub App installation is suspended. `WORKFLOWS_PERMISSION_MISSING`: the installation has not accepted the workflows permission. `AUTHORIZATION_LOST`: Galascribe lost its GitHub authorization. `FORBIDDEN`: GitHub refused for another permission reason. The same `reason` and `paths` ride on the `REPOSITORY_NEEDS_UPDATE` entry of a publish refusal's `errors`."
19083
+ description: "Something that needs a person to act. The list is empty when nothing does. SCHEMA-3.3.0: `SCHEDULED_PUBLISH_FAILED` means a scheduled publish could not start at its time; `relatedPublishId` names the schedule and `reasonCode` the first precondition that failed (a client maps the values it knows to a sentence and shows a generic one otherwise); nothing was merged. `DOMAIN_PUBLISH_REQUIRED` means a custom domain is live and the next publish moves the site's address to it. `DOMAIN_DEGRADED` means a live custom domain stopped working; `reasonCode` names why and the domain read carries the next step. SCHEMA-3.17.0 adds the domain `reasonCode` values `MOVE_FAILED` (the system move of the site's canonical base to or from the domain failed and will be retried), `MOVE_STUCK` (it failed three times and waits for the author to retry from the domain page), `MOVE_ABANDONED` (the move back to the github.io address on removal gave up) and `AUTHORITY_LAPSED` (the stored publish authority the move runs under could no longer be restated); the domain read's `baseMove` carries the same state. A client shows a generic sentence for a `reasonCode` it does not know. SCHEMA-3.9.0: on `REPOSITORY_NEEDS_UPDATE`, `reason` names the cause and `paths` the managed repository files involved, so a client can say what to do and list the files (both are absent from older servers and for other codes; show a generic sentence for a `reason` you do not know). `AUTHOR_EDITED`: a managed file differs from the version Galascribe manages and only the author may resolve it. `BRANCH_PROTECTION`: GitHub refused Galascribe's own repair commit. `REPOSITORY_ARCHIVED`: the repository is archived. `INSTALLATION_SUSPENDED`: the GitHub App installation is suspended. `WORKFLOWS_PERMISSION_MISSING`: the installation has not accepted the workflows permission. `AUTHORIZATION_LOST`: Galascribe lost its GitHub authorization. `FORBIDDEN`: GitHub refused for another permission reason. The same `reason` and `paths` ride on the `REPOSITORY_NEEDS_UPDATE` entry of a publish refusal's `errors`."
18752
19084
  properties:
18753
19085
  code:
18754
19086
  enum:
@@ -18788,6 +19120,7 @@ components:
18788
19120
  - FORBIDDEN
18789
19121
  type: string
18790
19122
  reasonCode:
19123
+ description: "A free string within the pattern. Known `DOMAIN_DEGRADED` values (SCHEMA-3.17.0): MOVE_FAILED, MOVE_STUCK, MOVE_ABANDONED, AUTHORITY_LAPSED; a client shows a generic sentence for any other."
18791
19124
  maxLength: 80
18792
19125
  minLength: 1
18793
19126
  pattern: ^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$
@@ -18935,7 +19268,14 @@ components:
18935
19268
  type: object
18936
19269
  SitePublishing:
18937
19270
  additionalProperties: false
19271
+ description: |
19272
+ The publish that is in flight. SCHEMA-3.17.0: `held` is present while
19273
+ that publish is `QUEUED` behind another operation that holds the site's
19274
+ destination (the same `OperationHeld` the operation read carries), so
19275
+ the Home screen can say who it is waiting for.
18938
19276
  properties:
19277
+ held:
19278
+ $ref: "#/components/schemas/OperationHeld"
18939
19279
  operationId:
18940
19280
  format: uuid
18941
19281
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
@@ -19121,6 +19461,10 @@ components:
19121
19461
  bearerFormat: Opaque publication-scoped reader token
19122
19462
  scheme: bearer
19123
19463
  type: http
19464
+ stripeWebhookSignature:
19465
+ in: header
19466
+ name: Stripe-Signature
19467
+ type: apiKey
19124
19468
  info:
19125
19469
  description: Executable Galascribe MVP HTTP contract.
19126
19470
  title: Galascribe API
@@ -20245,6 +20589,103 @@ paths:
20245
20589
  - NONE
20246
20590
  x-gala-success-category: oauth-callback
20247
20591
  x-gala-tenant-scope: NONE
20592
+ /v2/callbacks/stripe:
20593
+ post:
20594
+ description: |
20595
+ Stripe billing webhook. The body is the raw Stripe event JSON, opaque to this contract, authenticated by the `Stripe-Signature` header over the exact received bytes (`t=<unix>,v1=<hex>`, HMAC-SHA256 of `<t>.<raw body>`, five-minute tolerance). `200` means the event was accepted, including a duplicate delivery and an event type that is ignored. `400` is a malformed body or a missing, bad or expired signature. `503` means billing is not configured on this deployment.
20596
+ operationId: postCallbacksStripe
20597
+ parameters:
20598
+ - $ref: "#/components/parameters/XCorrelationId"
20599
+ - example: t=1700000000,v1=0000000000000000000000000000000000000000000000000000000000000000
20600
+ in: header
20601
+ name: Stripe-Signature
20602
+ required: true
20603
+ schema:
20604
+ maxLength: 1024
20605
+ minLength: 1
20606
+ type: string
20607
+ requestBody:
20608
+ content:
20609
+ application/json:
20610
+ examples:
20611
+ nominal:
20612
+ summary: Nominal valid request
20613
+ value: {}
20614
+ schema:
20615
+ $ref: "#/components/schemas/PostCallbacksStripeRequest"
20616
+ required: true
20617
+ responses:
20618
+ "200":
20619
+ content:
20620
+ application/json:
20621
+ examples:
20622
+ nominal:
20623
+ summary: Nominal successful response
20624
+ value:
20625
+ accepted: true
20626
+ schema:
20627
+ $ref: "#/components/schemas/PostCallbacksStripeResponse"
20628
+ description: accept an authenticated Stripe billing event succeeded
20629
+ headers:
20630
+ Cache-Control:
20631
+ $ref: "#/components/headers/CacheControlNoStore"
20632
+ X-Correlation-Id:
20633
+ $ref: "#/components/headers/XCorrelationId"
20634
+ "400":
20635
+ $ref: "#/components/responses/ValidationFailed"
20636
+ "413":
20637
+ $ref: "#/components/responses/RequestTooLarge"
20638
+ "415":
20639
+ $ref: "#/components/responses/UnsupportedMediaType"
20640
+ "503":
20641
+ content:
20642
+ application/problem+json:
20643
+ examples:
20644
+ DEPENDENCY_UNAVAILABLE:
20645
+ summary: DEPENDENCY_UNAVAILABLE
20646
+ value:
20647
+ code: DEPENDENCY_UNAVAILABLE
20648
+ correlationId: 018f0000-0000-7000-8000-000000000001
20649
+ detail: See the operation contract.
20650
+ errors: []
20651
+ retryable: true
20652
+ schemaId: urn:gala:schema:problem:2.0.0
20653
+ schemaVersion: 2.0.0
20654
+ status: 503
20655
+ title: DEPENDENCY_UNAVAILABLE
20656
+ type: urn:gala:problem:dependency-unavailable
20657
+ schema:
20658
+ $ref: "#/components/schemas/Problem"
20659
+ description: DEPENDENCY_UNAVAILABLE
20660
+ headers:
20661
+ Cache-Control:
20662
+ $ref: "#/components/headers/CacheControlNoStore"
20663
+ X-Correlation-Id:
20664
+ $ref: "#/components/headers/XCorrelationId"
20665
+ x-gala-problem-codes:
20666
+ - DEPENDENCY_UNAVAILABLE
20667
+ security:
20668
+ - stripeWebhookSignature: []
20669
+ summary: accept an authenticated Stripe billing event
20670
+ tags:
20671
+ - callbacks
20672
+ x-gala-activation-gate: MVP
20673
+ x-gala-activation-guards:
20674
+ - NONE
20675
+ x-gala-capability-key: null
20676
+ x-gala-concurrency: provider-event-id-idempotency-and-event-time-ordering
20677
+ x-gala-conditional-capabilities: []
20678
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
20679
+ x-gala-nullability: required-and-nullable-are-explicit
20680
+ x-gala-purpose: accept an authenticated Stripe billing event
20681
+ x-gala-reachable-problems:
20682
+ - DEPENDENCY_UNAVAILABLE
20683
+ - VALIDATION_FAILED
20684
+ x-gala-replay-identity: stripe-event-id
20685
+ x-gala-state-guards:
20686
+ - NONE
20687
+ x-gala-success-category: billing-callback
20688
+ x-gala-tenant-scope: NONE
20248
20689
  /v2/claims/{token}:
20249
20690
  get:
20250
20691
  description: |
@@ -25780,6 +26221,15 @@ paths:
25780
26221
  x-gala-tenant-scope: ORGANIZATION_PATH
25781
26222
  /v2/organizations/{organizationId}/operations/{operationId}:cancel:
25782
26223
  post:
26224
+ description: |
26225
+ Cancels an operation that has produced no effect. From SCHEMA-3.17.0 an
26226
+ operation that is `executing` or `reconciling` may also be cancelled
26227
+ once its run has settled (a live run cannot be cancelled here), which
26228
+ closes the destination fence the operation holds in the same
26229
+ transaction, so a failed or lost deploy no longer leaves the site's
26230
+ destination held. The response is the operation after the cancel, with
26231
+ its `phase` and `reason` as they now stand. An admin API key with the
26232
+ `publish` scope may call it.
25783
26233
  operationId: postOrganizationsByOrganizationIdOperationsByOperationIdCancel
25784
26234
  parameters:
25785
26235
  - $ref: "#/components/parameters/XCorrelationId"
@@ -26071,12 +26521,14 @@ paths:
26071
26521
  - VALIDATION_FAILED
26072
26522
  security:
26073
26523
  - browserSession: []
26524
+ - adminApiKey: []
26074
26525
  summary: cancel only before the effect fence
26075
26526
  tags:
26076
26527
  - organizations
26077
26528
  x-gala-activation-gate: MVP
26078
26529
  x-gala-activation-guards:
26079
26530
  - NONE
26531
+ x-gala-api-key-scope: publish
26080
26532
  x-gala-capability-key: organization.publications.admin
26081
26533
  x-gala-capability-resolution: target-operation-current-capability-and-scope
26082
26534
  x-gala-concurrency: operation-version-and-no-effect-proof
@@ -26096,7 +26548,7 @@ paths:
26096
26548
  - VALIDATION_FAILED
26097
26549
  x-gala-replay-identity: idempotency-key
26098
26550
  x-gala-state-guards:
26099
- - PublicationOperation:ACCEPTED|EXECUTING -> CANCELLED_NO_EFFECT with proof no effect crossed
26551
+ - PublicationOperation:ACCEPTED|EXECUTING|RECONCILING -> CANCELLED_NO_EFFECT with proof no effect crossed
26100
26552
  x-gala-success-category: update
26101
26553
  x-gala-tenant-scope: ORGANIZATION_PATH
26102
26554
  /v2/organizations/{organizationId}/owner-transfers:
@@ -32710,6 +33162,21 @@ paths:
32710
33162
  merged head's `gala/publication.json` `canonicalBase` is not the address
32711
33163
  the site is served at (the active custom domain, else the github.io
32712
33164
  address); the problem `detail` names the expected value.
33165
+
33166
+ SCHEMA-3.17.0: that problem also carries the optional members
33167
+ `expectedBase` (the address the site is served at, an https URL),
33168
+ `profileBase` (the base the profile carries now, as written),
33169
+ `domainState` (the custom domain's state that decided the expected
33170
+ base, absent without a domain) and `remedy` (one sentence for the
33171
+ author), so a client names both addresses and renders the `remedy`
33172
+ without parsing `detail`. The server first includes the pending "Site
33173
+ address" change in the publish, or proposes one inside the request, and
33174
+ returns the problem only when it cannot. `409 INVALID_SOURCE_STATE`
33175
+ with `errors[].code DOMAIN_NOT_READY` is returned while
33176
+ a custom domain is part-way through its switch and no address can be
33177
+ verified (after the Pages CNAME is set and before the certificate
33178
+ serves); it resolves on its own, and the domain read's `nextStep` says
33179
+ what is being waited on.
32713
33180
  operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdChangesPublish
32714
33181
  parameters:
32715
33182
  - $ref: "#/components/parameters/XCorrelationId"
@@ -32897,7 +33364,11 @@ paths:
32897
33364
  code: CANONICAL_BASE_MISMATCH
32898
33365
  correlationId: 018f0000-0000-7000-8000-000000000001
32899
33366
  detail: See the operation contract.
33367
+ domainState: CERTIFICATE_PENDING
32900
33368
  errors: []
33369
+ expectedBase: https://blog.example.com/
33370
+ profileBase: https://example.github.io/blog/
33371
+ remedy: Change the site address to https://blog.example.com/ and publish again.
32901
33372
  retryable: false
32902
33373
  schemaId: urn:gala:schema:problem:2.0.0
32903
33374
  schemaVersion: 2.0.0
@@ -42166,7 +42637,7 @@ paths:
42166
42637
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
42167
42638
  /v2/organizations/{organizationId}/publications/{publicationId}/policy-settings:
42168
42639
  get:
42169
- description: Reads the site's Terms and Privacy text at the linked repository's current main branch head, meaning the `policies` member of `gala/publication.json` and the two markdown files it names. `source` is `FILE` when the repository names its own pages, and `terms` and `privacy` then carry each page's title and markdown. `source` is `DEFAULT` when `policies` is absent, and the site then shows the default text of `@rathnasgala2/schemas/site-policy-defaults`, which the API does not carry, and `terms` and `privacy` are omitted. `setUp` matches `GET .../repository/setup`'s `state`; `openChange` names an existing not-yet-published change of this publication that touches `gala/publication.json` or a policy file, or is null.
42640
+ description: Reads the site's Terms and Privacy text at the linked repository's current main branch head, meaning the `policies` member of `gala/publication.json` and the two markdown files it names. `source` is `FILE` when the repository names its own pages, and `terms` and `privacy` then carry each page's title and markdown. `source` is `DEFAULT` when `policies` is absent, and the site then shows the default text of `@rathnasgala2/schemas/site-policy-defaults`, which the API does not carry, and `terms` and `privacy` are omitted. `setUp` matches `GET .../repository/setup`'s `state`; `openChange` names an existing not-yet-published change of this publication that touches `gala/publication.json` or a policy file, or is null. SCHEMA-3.17.0 adds `422 VALIDATION_FAILED`, answered when `gala/publication.json` names a policy file that does not exist at the head; the repository is then inconsistent and no page text can be read, so the author fixes the repository (or writes both pages again with `PUT`) before the read answers.
42170
42641
  operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdPolicySettings
42171
42642
  parameters:
42172
42643
  - $ref: "#/components/parameters/XCorrelationId"
@@ -42288,6 +42759,33 @@ paths:
42288
42759
  $ref: "#/components/headers/XCorrelationId"
42289
42760
  x-gala-problem-codes:
42290
42761
  - RESOURCE_NOT_FOUND
42762
+ "422":
42763
+ content:
42764
+ application/problem+json:
42765
+ examples:
42766
+ VALIDATION_FAILED:
42767
+ summary: VALIDATION_FAILED
42768
+ value:
42769
+ code: VALIDATION_FAILED
42770
+ correlationId: 018f0000-0000-7000-8000-000000000001
42771
+ detail: See the operation contract.
42772
+ errors: []
42773
+ retryable: false
42774
+ schemaId: urn:gala:schema:problem:2.0.0
42775
+ schemaVersion: 2.0.0
42776
+ status: 422
42777
+ title: VALIDATION_FAILED
42778
+ type: urn:gala:problem:validation-failed
42779
+ schema:
42780
+ $ref: "#/components/schemas/Problem"
42781
+ description: VALIDATION_FAILED
42782
+ headers:
42783
+ Cache-Control:
42784
+ $ref: "#/components/headers/CacheControlNoStore"
42785
+ X-Correlation-Id:
42786
+ $ref: "#/components/headers/XCorrelationId"
42787
+ x-gala-problem-codes:
42788
+ - VALIDATION_FAILED
42291
42789
  "429":
42292
42790
  content:
42293
42791
  application/problem+json:
@@ -44255,6 +44753,20 @@ paths:
44255
44753
  after it was written. The App's remedy for the second cause is
44256
44754
  `POST .../repository-changes/{changeId}:bring-up-to-date` followed
44257
44755
  by review and publish again (journey state U2).
44756
+
44757
+ SCHEMA-3.17.0 adds a third cause: `errors[].code DOMAIN_NOT_READY`,
44758
+ returned while the site's custom domain is part-way
44759
+ through its switch and no address can be verified (after the Pages
44760
+ CNAME is set and before the certificate serves). It is short and
44761
+ resolves on its own, so the author waits; the domain read's `nextStep`
44762
+ says `WAIT_FOR_MOVE` or `WAIT_FOR_CERTIFICATE`.
44763
+
44764
+ `409 CANONICAL_BASE_MISMATCH` carries the optional problem members
44765
+ `expectedBase`, `profileBase`, `domainState` and `remedy`
44766
+ (SCHEMA-3.17.0), so a client can name the two addresses and render the
44767
+ `remedy` without parsing `detail`. The server first tries to fix the
44768
+ mismatch itself by including the pending "Site address" change in the
44769
+ publish; the problem is returned only when it cannot.
44258
44770
  operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdPublishes
44259
44771
  parameters:
44260
44772
  - $ref: "#/components/parameters/XCorrelationId"
@@ -44442,7 +44954,11 @@ paths:
44442
44954
  code: CANONICAL_BASE_MISMATCH
44443
44955
  correlationId: 018f0000-0000-7000-8000-000000000001
44444
44956
  detail: See the operation contract.
44957
+ domainState: CERTIFICATE_PENDING
44445
44958
  errors: []
44959
+ expectedBase: https://blog.example.com/
44960
+ profileBase: https://example.github.io/blog/
44961
+ remedy: Change the site address to https://blog.example.com/ and publish again.
44446
44962
  retryable: false
44447
44963
  schemaId: urn:gala:schema:problem:2.0.0
44448
44964
  schemaVersion: 2.0.0