@rathnasgala2/schemas 3.25.1 → 3.27.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 (46) hide show
  1. package/THIRD_PARTY_LICENSES.json +1 -1
  2. package/diagnostics/diagnostic-map.json +132 -0
  3. package/docs/catalogs/app-routes.json +3 -1
  4. package/docs/catalogs/schema-inventory.json +5 -5
  5. package/examples/valid/build-input/rules.json +147 -0
  6. package/examples/valid/content-frontmatter/rules.json +76 -0
  7. package/examples/valid/publication/rules.json +20 -0
  8. package/fixtures/boundary/build-input/rules.json +165 -0
  9. package/fixtures/boundary/content-frontmatter/rules.json +85 -0
  10. package/fixtures/boundary/publication/rules.json +20 -0
  11. package/fixtures/invalid/build-input/REQUEST_FIELD_UNKNOWN/cases.json +45 -0
  12. package/fixtures/invalid/build-input/SCHEMA_CONSTANT_INVALID/cases.json +11 -0
  13. package/fixtures/invalid/build-input/SCHEMA_ENUM_INVALID/cases.json +22 -0
  14. package/fixtures/invalid/build-input/SCHEMA_NUMBER_TOO_LARGE/cases.json +22 -0
  15. package/fixtures/invalid/build-input/SCHEMA_NUMBER_TOO_SMALL/cases.json +22 -0
  16. package/fixtures/invalid/build-input/SCHEMA_PATTERN_INVALID/cases.json +11 -0
  17. package/fixtures/invalid/build-input/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +132 -0
  18. package/fixtures/invalid/build-input/SCHEMA_TYPE_INVALID/cases.json +56 -0
  19. package/fixtures/invalid/content-frontmatter/REQUEST_FIELD_UNKNOWN/cases.json +16 -0
  20. package/fixtures/invalid/content-frontmatter/SCHEMA_CONSTANT_INVALID/cases.json +11 -0
  21. package/fixtures/invalid/content-frontmatter/SCHEMA_ENUM_INVALID/cases.json +11 -0
  22. package/fixtures/invalid/content-frontmatter/SCHEMA_NUMBER_TOO_LARGE/cases.json +11 -0
  23. package/fixtures/invalid/content-frontmatter/SCHEMA_NUMBER_TOO_SMALL/cases.json +11 -0
  24. package/fixtures/invalid/content-frontmatter/SCHEMA_PATTERN_INVALID/cases.json +11 -0
  25. package/fixtures/invalid/content-frontmatter/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +54 -0
  26. package/fixtures/invalid/content-frontmatter/SCHEMA_TYPE_INVALID/cases.json +20 -0
  27. package/fixtures/invalid/publication/REQUEST_FIELD_UNKNOWN/cases.json +9 -0
  28. package/fixtures/invalid/publication/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +9 -0
  29. package/fixtures/invalid/publication/SCHEMA_TYPE_INVALID/cases.json +18 -0
  30. package/fixtures/manifest.json +1018 -6
  31. package/fixtures/s2/manifest.json +16 -1
  32. package/fixtures/s2/normalized-inputs.json +3225 -0
  33. package/fixtures/unknown-field/build-input/rules.json +73 -0
  34. package/fixtures/unknown-field/content-frontmatter/rules.json +28 -0
  35. package/fixtures/unknown-field/publication/rules.json +14 -0
  36. package/generated/browser/validator-core.mjs +3 -3
  37. package/generated/typescript/contracts/build-input.d.ts +19 -0
  38. package/generated/typescript/contracts/content-frontmatter.d.ts +7 -0
  39. package/generated/typescript/contracts/publication.d.ts +5 -0
  40. package/openapi/http-catalog.json +28 -2
  41. package/openapi/openapi.yaml +523 -10
  42. package/package.json +1 -1
  43. package/sbom.cdx.json +23 -23
  44. package/schemas/build-input.schema.json +62 -1
  45. package/schemas/content-frontmatter.schema.json +31 -0
  46. package/schemas/publication.schema.json +8 -0
@@ -2486,7 +2486,11 @@ components:
2486
2486
  type: object
2487
2487
  FollowState:
2488
2488
  additionalProperties: false
2489
+ description: "SCHEMA-3.27.0: whether the reader follows the author. `followers` is the number of readers following this author on this site; it is present only when the bearer token is for this publication and its principal holds `publication.audience.read` on it (the site's team, the same people who may open the Audience page), and absent for every other caller, including callers with no token."
2489
2490
  properties:
2491
+ followers:
2492
+ minimum: 0
2493
+ type: integer
2490
2494
  following:
2491
2495
  type: boolean
2492
2496
  required:
@@ -3805,6 +3809,8 @@ components:
3805
3809
  - openChange
3806
3810
  - setUp
3807
3811
  type: object
3812
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsResponse:
3813
+ $ref: "#/components/schemas/ListenSettings"
3808
3814
  GetOrganizationsByOrganizationIdPublicationsByPublicationIdModerationQueueResponse:
3809
3815
  additionalProperties: false
3810
3816
  properties:
@@ -6401,6 +6407,26 @@ components:
6401
6407
  - observedAt
6402
6408
  - evidenceDigest
6403
6409
  type: object
6410
+ ListenSettings:
6411
+ additionalProperties: false
6412
+ description: "SCHEMA-3.26.0: the Listen setting of a site at the linked repository's main branch head: the `listen` member of `gala/publication.json` (`enabled`). A publication with no `listen` member reads `enabled` false. `planAllows` is read-only: false while the site's plan does not include Listen (the Free plan by default), in which case `enabled` cannot be turned on. `openChange` names an existing not-yet-published change of this publication that touches the file, or is null. `setUp` matches `GET .../repository/setup` `state`."
6413
+ properties:
6414
+ enabled:
6415
+ type: boolean
6416
+ openChange:
6417
+ oneOf:
6418
+ - $ref: "#/components/schemas/PublicationAppearanceOpenChange"
6419
+ - type: "null"
6420
+ planAllows:
6421
+ type: boolean
6422
+ setUp:
6423
+ type: boolean
6424
+ required:
6425
+ - enabled
6426
+ - planAllows
6427
+ - openChange
6428
+ - setUp
6429
+ type: object
6404
6430
  ManagedDeploymentOperationResponse:
6405
6431
  additionalProperties: false
6406
6432
  allOf:
@@ -8680,6 +8706,9 @@ components:
8680
8706
  contactForm:
8681
8707
  description: "SCHEMA-3.23.0, whether sites on this plan may turn on the contact form. A site on a plan without it sees the form locked, and enabling it is `409 PLAN_REQUIRED`. Defaults of the first release: FREE 50 and no contact form, PRO 500 and a contact form, BUSINESS 2000 and a contact form."
8682
8708
  type: boolean
8709
+ listen:
8710
+ description: "SCHEMA-3.26.0, whether sites on this plan may turn on Listen, the audio version of posts. A site on a plan without it sees the setting locked, and enabling it is `409 PLAN_REQUIRED`. Defaults: FREE no Listen, PRO and BUSINESS Listen."
8711
+ type: boolean
8683
8712
  newsletterSubscriberLimit:
8684
8713
  description: "SCHEMA-3.23.0, the confirmed newsletter subscribers one organization on this plan may hold across its sites; a confirmation past it is `409 NEWSLETTER_FULL`. 0 admits none. Defaults of the first release: FREE 50 and no contact form, PRO 500 and a contact form, BUSINESS 2000 and a contact form."
8685
8714
  format: int64
@@ -8696,6 +8725,7 @@ components:
8696
8725
  - publicationLimit
8697
8726
  - newsletterSubscriberLimit
8698
8727
  - contactForm
8728
+ - listen
8699
8729
  type: object
8700
8730
  PlatformPlanCapacityRelease:
8701
8731
  additionalProperties: false
@@ -9167,6 +9197,31 @@ components:
9167
9197
  - generation
9168
9198
  - approvedAt
9169
9199
  type: object
9200
+ PortableContentFrontmatterContentListen:
9201
+ additionalProperties: false
9202
+ description: "SCHEMA-3.26.0: the audio version of this article. All three members are required. `listen` is allowed only when `kind` is `article`. It has an effect only while the publication has `listen.enabled` true."
9203
+ properties:
9204
+ audio:
9205
+ $ref: "#/components/schemas/PortableContentFrontmatterRepoRelativePath"
9206
+ description: "Repository-relative path of the audio file: an `.mp3` or `.m4a` file that sits under one of the repository `assetRoots`. The schema fixes the shape and the extension; the publish toolchain checks the asset root, that the file exists and is a regular file, that it sniffs as MP3 or M4A and the size limits."
9207
+ pattern: ^.+\.(?:mp3|m4a)$
9208
+ durationSeconds:
9209
+ description: Length of the episode in whole seconds, 1 to 10800 (three hours).
9210
+ maximum: 10800
9211
+ minimum: 1
9212
+ type: integer
9213
+ format:
9214
+ description: "What the episode is: `conversation` (two voices talking the post over), `narration` (one voice reading it), `debate` (two voices taking sides) or `skit` (a scripted scene). The template words its invitation by format."
9215
+ enum:
9216
+ - conversation
9217
+ - narration
9218
+ - debate
9219
+ - skit
9220
+ required:
9221
+ - audio
9222
+ - durationSeconds
9223
+ - format
9224
+ type: object
9170
9225
  PortableContentFrontmatterContentSeo:
9171
9226
  additionalProperties: false
9172
9227
  description: "SCHEMA-3.12.0: optional search overrides for one document. `title` replaces the page title in search results (the site suffix is still appended on non-home pages), `description` replaces the search description, `canonicalUrl` is an absolute HTTPS canonical for syndicated or moved content, and `noindex: true` keeps a listed document out of search engines. Every member is optional; absent members fall back to the document's own title and description."
@@ -9246,6 +9301,17 @@ components:
9246
9301
  x-gala-const: article
9247
9302
  required:
9248
9303
  - kind
9304
+ - if:
9305
+ required:
9306
+ - listen
9307
+ then:
9308
+ properties:
9309
+ kind:
9310
+ pattern: ^article$
9311
+ type: string
9312
+ x-gala-const: article
9313
+ required:
9314
+ - kind
9249
9315
  dependentRequired:
9250
9316
  seriesOrder:
9251
9317
  - series
@@ -9280,6 +9346,8 @@ components:
9280
9346
  - edition
9281
9347
  language:
9282
9348
  $ref: "#/components/schemas/PortableContentFrontmatterBcp47"
9349
+ listen:
9350
+ $ref: "#/components/schemas/PortableContentFrontmatterContentListen"
9283
9351
  newsletter:
9284
9352
  enum:
9285
9353
  - ineligible
@@ -19311,6 +19379,22 @@ components:
19311
19379
  required:
19312
19380
  - change
19313
19381
  type: object
19382
+ PutOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsRequest:
19383
+ additionalProperties: false
19384
+ properties:
19385
+ enabled:
19386
+ type: boolean
19387
+ required:
19388
+ - enabled
19389
+ type: object
19390
+ PutOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsResponse:
19391
+ additionalProperties: false
19392
+ properties:
19393
+ change:
19394
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdContentChangesPlanResponse"
19395
+ required:
19396
+ - change
19397
+ type: object
19314
19398
  PutOrganizationsByOrganizationIdPublicationsByPublicationIdNewsletterSettingsRequest:
19315
19399
  additionalProperties: false
19316
19400
  allOf:
@@ -19410,6 +19494,9 @@ components:
19410
19494
  contactForm:
19411
19495
  description: SCHEMA-3.23.0, optional; absent keeps the plan's current value.
19412
19496
  type: boolean
19497
+ listen:
19498
+ description: SCHEMA-3.26.0, optional; absent keeps the plan's current value.
19499
+ type: boolean
19413
19500
  newsletterSubscriberLimit:
19414
19501
  description: SCHEMA-3.23.0, optional; absent keeps the plan's current value.
19415
19502
  format: int64
@@ -44939,6 +45026,424 @@ paths:
44939
45026
  - RepositoryChange:REQUESTED -> PLANNED
44940
45027
  x-gala-success-category: protocol
44941
45028
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
45029
+ /v2/organizations/{organizationId}/publications/{publicationId}/listen-settings:
45030
+ get:
45031
+ description: Reads the `listen` member of `gala/publication.json` at the linked repository's current main branch head. A publication with no `listen` member reads `enabled` false. `planAllows` is the API's own status and is never written to the repository.
45032
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettings
45033
+ parameters:
45034
+ - $ref: "#/components/parameters/XCorrelationId"
45035
+ - example: 018f0000-0000-7000-8000-000000000001
45036
+ in: path
45037
+ name: organizationId
45038
+ required: true
45039
+ schema:
45040
+ format: uuid
45041
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
45042
+ type: string
45043
+ - example: 018f0000-0000-7000-8000-000000000001
45044
+ in: path
45045
+ name: publicationId
45046
+ required: true
45047
+ schema:
45048
+ format: uuid
45049
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
45050
+ type: string
45051
+ responses:
45052
+ "200":
45053
+ content:
45054
+ application/json:
45055
+ examples:
45056
+ nominal:
45057
+ summary: Nominal successful response
45058
+ value:
45059
+ enabled: false
45060
+ openChange: null
45061
+ planAllows: false
45062
+ setUp: true
45063
+ schema:
45064
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsResponse"
45065
+ description: read this publication's listen settings at the main branch head succeeded
45066
+ headers:
45067
+ Cache-Control:
45068
+ $ref: "#/components/headers/CacheControlNoStore"
45069
+ X-Correlation-Id:
45070
+ $ref: "#/components/headers/XCorrelationId"
45071
+ "400":
45072
+ $ref: "#/components/responses/ValidationFailed"
45073
+ "401":
45074
+ content:
45075
+ application/problem+json:
45076
+ examples:
45077
+ AUTHENTICATION_REQUIRED:
45078
+ summary: AUTHENTICATION_REQUIRED
45079
+ value:
45080
+ code: AUTHENTICATION_REQUIRED
45081
+ correlationId: 018f0000-0000-7000-8000-000000000001
45082
+ detail: See the operation contract.
45083
+ errors: []
45084
+ retryable: false
45085
+ schemaId: urn:gala:schema:problem:2.0.0
45086
+ schemaVersion: 2.0.0
45087
+ status: 401
45088
+ title: AUTHENTICATION_REQUIRED
45089
+ type: urn:gala:problem:authentication-required
45090
+ schema:
45091
+ $ref: "#/components/schemas/Problem"
45092
+ description: AUTHENTICATION_REQUIRED
45093
+ headers:
45094
+ Cache-Control:
45095
+ $ref: "#/components/headers/CacheControlNoStore"
45096
+ X-Correlation-Id:
45097
+ $ref: "#/components/headers/XCorrelationId"
45098
+ x-gala-problem-codes:
45099
+ - AUTHENTICATION_REQUIRED
45100
+ "403":
45101
+ $ref: "#/components/responses/AuthorizationDenied"
45102
+ "404":
45103
+ $ref: "#/components/responses/ResourceNotFound"
45104
+ "429":
45105
+ content:
45106
+ application/problem+json:
45107
+ examples:
45108
+ RATE_LIMITED:
45109
+ summary: RATE_LIMITED
45110
+ value:
45111
+ code: RATE_LIMITED
45112
+ correlationId: 018f0000-0000-7000-8000-000000000001
45113
+ detail: See the operation contract.
45114
+ errors: []
45115
+ retryable: true
45116
+ schemaId: urn:gala:schema:problem:2.0.0
45117
+ schemaVersion: 2.0.0
45118
+ status: 429
45119
+ title: RATE_LIMITED
45120
+ type: urn:gala:problem:rate-limited
45121
+ schema:
45122
+ $ref: "#/components/schemas/Problem"
45123
+ description: RATE_LIMITED
45124
+ headers:
45125
+ Cache-Control:
45126
+ $ref: "#/components/headers/CacheControlNoStore"
45127
+ Retry-After:
45128
+ $ref: "#/components/headers/RetryAfter"
45129
+ X-Correlation-Id:
45130
+ $ref: "#/components/headers/XCorrelationId"
45131
+ x-gala-problem-codes:
45132
+ - RATE_LIMITED
45133
+ "503":
45134
+ content:
45135
+ application/problem+json:
45136
+ examples:
45137
+ CAPABILITY_UNAVAILABLE:
45138
+ summary: CAPABILITY_UNAVAILABLE
45139
+ value:
45140
+ code: CAPABILITY_UNAVAILABLE
45141
+ correlationId: 018f0000-0000-7000-8000-000000000001
45142
+ detail: See the operation contract.
45143
+ errors: []
45144
+ retryable: false
45145
+ schemaId: urn:gala:schema:problem:2.0.0
45146
+ schemaVersion: 2.0.0
45147
+ status: 503
45148
+ title: CAPABILITY_UNAVAILABLE
45149
+ type: urn:gala:problem:capability-unavailable
45150
+ DEPENDENCY_UNAVAILABLE:
45151
+ summary: DEPENDENCY_UNAVAILABLE
45152
+ value:
45153
+ code: DEPENDENCY_UNAVAILABLE
45154
+ correlationId: 018f0000-0000-7000-8000-000000000001
45155
+ detail: See the operation contract.
45156
+ errors: []
45157
+ retryable: true
45158
+ schemaId: urn:gala:schema:problem:2.0.0
45159
+ schemaVersion: 2.0.0
45160
+ status: 503
45161
+ title: DEPENDENCY_UNAVAILABLE
45162
+ type: urn:gala:problem:dependency-unavailable
45163
+ schema:
45164
+ $ref: "#/components/schemas/Problem"
45165
+ description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
45166
+ headers:
45167
+ Cache-Control:
45168
+ $ref: "#/components/headers/CacheControlNoStore"
45169
+ X-Correlation-Id:
45170
+ $ref: "#/components/headers/XCorrelationId"
45171
+ x-gala-problem-codes:
45172
+ - CAPABILITY_UNAVAILABLE
45173
+ - DEPENDENCY_UNAVAILABLE
45174
+ security:
45175
+ - browserSession: []
45176
+ summary: read this publication's listen settings at the main branch head
45177
+ tags:
45178
+ - interaction-settings
45179
+ x-gala-activation-gate: MVP
45180
+ x-gala-activation-guards:
45181
+ - Active repository binding and configured GitHub App identity capability
45182
+ x-gala-capability-key: publication.view
45183
+ x-gala-concurrency: binding-epoch
45184
+ x-gala-conditional-capabilities: []
45185
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
45186
+ x-gala-nullability: required-and-nullable-are-explicit
45187
+ x-gala-purpose: read this publication's listen settings at the main branch head
45188
+ x-gala-reachable-problems:
45189
+ - AUTHENTICATION_REQUIRED
45190
+ - AUTHORIZATION_DENIED
45191
+ - CAPABILITY_UNAVAILABLE
45192
+ - DEPENDENCY_UNAVAILABLE
45193
+ - RATE_LIMITED
45194
+ - RESOURCE_NOT_FOUND
45195
+ - VALIDATION_FAILED
45196
+ x-gala-replay-identity: safe-query
45197
+ x-gala-state-guards:
45198
+ - NONE
45199
+ x-gala-success-category: query
45200
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
45201
+ put:
45202
+ description: The server writes the `listen` member of `gala/publication.json` as one repository change, the way `sharing-settings` writes the `sharing` member. Publishing the change uses the normal publish flow. `change` has the shape the theme-selection write returns. Turning `enabled` on while the plan does not include Listen is `409 PLAN_REQUIRED` pointed at `/enabled`. Saving it off, or unchanged, is always allowed.
45203
+ operationId: putOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettings
45204
+ parameters:
45205
+ - $ref: "#/components/parameters/XCorrelationId"
45206
+ - example: 018f0000-0000-7000-8000-000000000001
45207
+ in: path
45208
+ name: organizationId
45209
+ required: true
45210
+ schema:
45211
+ format: uuid
45212
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
45213
+ type: string
45214
+ - example: 018f0000-0000-7000-8000-000000000001
45215
+ in: path
45216
+ name: publicationId
45217
+ required: true
45218
+ schema:
45219
+ format: uuid
45220
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
45221
+ type: string
45222
+ - $ref: "#/components/parameters/IdempotencyKey"
45223
+ - $ref: "#/components/parameters/XCsrfToken"
45224
+ requestBody:
45225
+ content:
45226
+ application/json:
45227
+ examples:
45228
+ nominal:
45229
+ summary: Nominal valid request
45230
+ value:
45231
+ enabled: true
45232
+ schema:
45233
+ $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsRequest"
45234
+ required: true
45235
+ responses:
45236
+ "200":
45237
+ content:
45238
+ application/json:
45239
+ examples:
45240
+ nominal:
45241
+ summary: Nominal successful response
45242
+ value:
45243
+ change:
45244
+ changeId: 018f0000-0000-7000-8000-000000000001
45245
+ diffDigest: sha256:0000000000000000000000000000000000000000000000000000000000000000
45246
+ expectedHead: sha1:0000000000000000000000000000000000000000
45247
+ state: REQUESTED
45248
+ version: 0
45249
+ schema:
45250
+ $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsResponse"
45251
+ description: save this publication's listen settings as a repository change succeeded
45252
+ headers:
45253
+ Cache-Control:
45254
+ $ref: "#/components/headers/CacheControlNoStore"
45255
+ X-Correlation-Id:
45256
+ $ref: "#/components/headers/XCorrelationId"
45257
+ "400":
45258
+ $ref: "#/components/responses/RequestInvalid"
45259
+ "401":
45260
+ content:
45261
+ application/problem+json:
45262
+ examples:
45263
+ AUTHENTICATION_REQUIRED:
45264
+ summary: AUTHENTICATION_REQUIRED
45265
+ value:
45266
+ code: AUTHENTICATION_REQUIRED
45267
+ correlationId: 018f0000-0000-7000-8000-000000000001
45268
+ detail: See the operation contract.
45269
+ errors: []
45270
+ retryable: false
45271
+ schemaId: urn:gala:schema:problem:2.0.0
45272
+ schemaVersion: 2.0.0
45273
+ status: 401
45274
+ title: AUTHENTICATION_REQUIRED
45275
+ type: urn:gala:problem:authentication-required
45276
+ schema:
45277
+ $ref: "#/components/schemas/Problem"
45278
+ description: AUTHENTICATION_REQUIRED
45279
+ headers:
45280
+ Cache-Control:
45281
+ $ref: "#/components/headers/CacheControlNoStore"
45282
+ X-Correlation-Id:
45283
+ $ref: "#/components/headers/XCorrelationId"
45284
+ x-gala-problem-codes:
45285
+ - AUTHENTICATION_REQUIRED
45286
+ "403":
45287
+ $ref: "#/components/responses/AuthorizationDenied"
45288
+ "404":
45289
+ $ref: "#/components/responses/ResourceNotFound"
45290
+ "409":
45291
+ content:
45292
+ application/problem+json:
45293
+ examples:
45294
+ COMMAND_REPLAY_CONFLICT:
45295
+ summary: COMMAND_REPLAY_CONFLICT
45296
+ value:
45297
+ code: COMMAND_REPLAY_CONFLICT
45298
+ correlationId: 018f0000-0000-7000-8000-000000000001
45299
+ detail: See the operation contract.
45300
+ errors: []
45301
+ retryable: false
45302
+ schemaId: urn:gala:schema:problem:2.0.0
45303
+ schemaVersion: 2.0.0
45304
+ status: 409
45305
+ title: COMMAND_REPLAY_CONFLICT
45306
+ type: urn:gala:problem:command-replay-conflict
45307
+ INVALID_SOURCE_STATE:
45308
+ summary: INVALID_SOURCE_STATE
45309
+ value:
45310
+ code: INVALID_SOURCE_STATE
45311
+ correlationId: 018f0000-0000-7000-8000-000000000001
45312
+ detail: See the operation contract.
45313
+ errors: []
45314
+ retryable: false
45315
+ schemaId: urn:gala:schema:problem:2.0.0
45316
+ schemaVersion: 2.0.0
45317
+ status: 409
45318
+ title: INVALID_SOURCE_STATE
45319
+ type: urn:gala:problem:invalid-source-state
45320
+ PLAN_REQUIRED:
45321
+ summary: PLAN_REQUIRED
45322
+ value:
45323
+ code: PLAN_REQUIRED
45324
+ correlationId: 018f0000-0000-7000-8000-000000000001
45325
+ detail: The site's plan does not include Listen. See the operation contract.
45326
+ errors:
45327
+ - code: PLAN_REQUIRED
45328
+ pointer: /enabled
45329
+ retryable: false
45330
+ schemaId: urn:gala:schema:problem:2.0.0
45331
+ schemaVersion: 2.0.0
45332
+ status: 409
45333
+ title: PLAN_REQUIRED
45334
+ type: urn:gala:problem:plan-required
45335
+ TRANSFER_PENDING:
45336
+ summary: TRANSFER_PENDING
45337
+ value:
45338
+ code: TRANSFER_PENDING
45339
+ correlationId: 018f0000-0000-7000-8000-000000000001
45340
+ detail: See the operation contract.
45341
+ errors: []
45342
+ retryable: false
45343
+ schemaId: urn:gala:schema:problem:2.0.0
45344
+ schemaVersion: 2.0.0
45345
+ status: 409
45346
+ title: TRANSFER_PENDING
45347
+ type: urn:gala:problem:transfer-pending
45348
+ schema:
45349
+ $ref: "#/components/schemas/Problem"
45350
+ description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, PLAN_REQUIRED, TRANSFER_PENDING
45351
+ headers:
45352
+ Cache-Control:
45353
+ $ref: "#/components/headers/CacheControlNoStore"
45354
+ X-Correlation-Id:
45355
+ $ref: "#/components/headers/XCorrelationId"
45356
+ x-gala-problem-codes:
45357
+ - COMMAND_REPLAY_CONFLICT
45358
+ - INVALID_SOURCE_STATE
45359
+ - PLAN_REQUIRED
45360
+ - TRANSFER_PENDING
45361
+ "422":
45362
+ content:
45363
+ application/problem+json:
45364
+ examples:
45365
+ VALIDATION_FAILED:
45366
+ summary: VALIDATION_FAILED
45367
+ value:
45368
+ code: VALIDATION_FAILED
45369
+ correlationId: 018f0000-0000-7000-8000-000000000001
45370
+ detail: See the operation contract.
45371
+ errors: []
45372
+ retryable: false
45373
+ schemaId: urn:gala:schema:problem:2.0.0
45374
+ schemaVersion: 2.0.0
45375
+ status: 422
45376
+ title: VALIDATION_FAILED
45377
+ type: urn:gala:problem:validation-failed
45378
+ schema:
45379
+ $ref: "#/components/schemas/Problem"
45380
+ description: VALIDATION_FAILED
45381
+ headers:
45382
+ Cache-Control:
45383
+ $ref: "#/components/headers/CacheControlNoStore"
45384
+ X-Correlation-Id:
45385
+ $ref: "#/components/headers/XCorrelationId"
45386
+ x-gala-problem-codes:
45387
+ - VALIDATION_FAILED
45388
+ "503":
45389
+ content:
45390
+ application/problem+json:
45391
+ examples:
45392
+ CAPABILITY_UNAVAILABLE:
45393
+ summary: CAPABILITY_UNAVAILABLE
45394
+ value:
45395
+ code: CAPABILITY_UNAVAILABLE
45396
+ correlationId: 018f0000-0000-7000-8000-000000000001
45397
+ detail: See the operation contract.
45398
+ errors: []
45399
+ retryable: false
45400
+ schemaId: urn:gala:schema:problem:2.0.0
45401
+ schemaVersion: 2.0.0
45402
+ status: 503
45403
+ title: CAPABILITY_UNAVAILABLE
45404
+ type: urn:gala:problem:capability-unavailable
45405
+ schema:
45406
+ $ref: "#/components/schemas/Problem"
45407
+ description: CAPABILITY_UNAVAILABLE
45408
+ headers:
45409
+ Cache-Control:
45410
+ $ref: "#/components/headers/CacheControlNoStore"
45411
+ X-Correlation-Id:
45412
+ $ref: "#/components/headers/XCorrelationId"
45413
+ x-gala-problem-codes:
45414
+ - CAPABILITY_UNAVAILABLE
45415
+ security:
45416
+ - browserSession: []
45417
+ summary: save this publication's listen settings as a repository change
45418
+ tags:
45419
+ - interaction-settings
45420
+ x-gala-activation-gate: MVP
45421
+ x-gala-activation-guards:
45422
+ - Active repository binding and configured GitHub App identity capability
45423
+ x-gala-capability-key: publication.settings.manage
45424
+ x-gala-concurrency: expected-git-head-and-binding-epoch
45425
+ x-gala-conditional-capabilities: []
45426
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
45427
+ x-gala-nullability: required-and-nullable-are-explicit
45428
+ x-gala-purpose: save this publication's listen settings as a repository change
45429
+ x-gala-reachable-problems:
45430
+ - AUTHENTICATION_REQUIRED
45431
+ - AUTHORIZATION_DENIED
45432
+ - CAPABILITY_UNAVAILABLE
45433
+ - COMMAND_REPLAY_CONFLICT
45434
+ - INVALID_SOURCE_STATE
45435
+ - PLAN_REQUIRED
45436
+ - REQUEST_FIELD_UNKNOWN
45437
+ - RESOURCE_NOT_FOUND
45438
+ - TRANSFER_PENDING
45439
+ - VALIDATION_FAILED
45440
+ x-gala-replay-identity: idempotency-key
45441
+ x-gala-state-guards:
45442
+ - Publication:ACTIVE
45443
+ - RepositoryBinding:ACTIVE
45444
+ - RepositoryChange:REQUESTED -> PLANNED
45445
+ x-gala-success-category: protocol
45446
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
44942
45447
  /v2/organizations/{organizationId}/publications/{publicationId}/moderation/comments/{commentId}:decide:
44943
45448
  post:
44944
45449
  description: |
@@ -59960,10 +60465,12 @@ paths:
59960
60465
  active publication-capacity release with its single optimistic-lock
59961
60466
  version and the closed FREE, PRO, and BUSINESS plan catalog.
59962
60467
  Each plan carries its `publicationLimit`, its `newsletterSubscriberLimit`
59963
- (confirmed newsletter subscribers per organization) and `contactForm`
59964
- (whether its sites may turn on the contact form). Defaults of the first
59965
- release: FREE 50 and no contact form, PRO 500 and a contact form,
59966
- BUSINESS 2000 and a contact form.
60468
+ (confirmed newsletter subscribers per organization), `contactForm`
60469
+ (whether its sites may turn on the contact form) and `listen` (whether
60470
+ its sites may turn on Listen, the audio version of posts). Defaults of
60471
+ the first release: FREE 50 and no contact form, PRO 500 and a contact
60472
+ form, BUSINESS 2000 and a contact form. Listen defaults: FREE no, PRO
60473
+ and BUSINESS yes.
59967
60474
  operationId: getPlatformPlans
59968
60475
  parameters:
59969
60476
  - $ref: "#/components/parameters/XCorrelationId"
@@ -59978,14 +60485,17 @@ paths:
59978
60485
  effectiveAt: "2026-10-10T00:00:04.000Z"
59979
60486
  items:
59980
60487
  - contactForm: false
60488
+ listen: false
59981
60489
  newsletterSubscriberLimit: 50
59982
60490
  planKey: FREE
59983
60491
  publicationLimit: 1
59984
60492
  - contactForm: true
60493
+ listen: true
59985
60494
  newsletterSubscriberLimit: 500
59986
60495
  planKey: PRO
59987
60496
  publicationLimit: 10
59988
60497
  - contactForm: true
60498
+ listen: true
59989
60499
  newsletterSubscriberLimit: 2000
59990
60500
  planKey: BUSINESS
59991
60501
  publicationLimit: 50
@@ -60034,9 +60544,9 @@ paths:
60034
60544
  Operators only, with recent authentication. Atomically replaces the
60035
60545
  complete publication-capacity release, changing the named plan's limits
60036
60546
  while retaining the other two, at the release version in `If-Match`.
60037
- `newsletterSubscriberLimit` and `contactForm` are optional: absent keeps
60038
- the plan's current value. The invariant FREE <= PRO <= BUSINESS is
60039
- enforced on `publicationLimit` only. `reason` is a
60547
+ `newsletterSubscriberLimit`, `contactForm` and `listen` are optional:
60548
+ absent keeps the plan's current value. The invariant FREE <= PRO <=
60549
+ BUSINESS is enforced on `publicationLimit` only. `reason` is a
60040
60550
  non-sensitive operator reason code recorded in the audit event.
60041
60551
  operationId: putPlatformPlansByPlanKey
60042
60552
  parameters:
@@ -60073,14 +60583,17 @@ paths:
60073
60583
  effectiveAt: "2026-10-10T12:00:00.000Z"
60074
60584
  items:
60075
60585
  - contactForm: false
60586
+ listen: false
60076
60587
  newsletterSubscriberLimit: 50
60077
60588
  planKey: FREE
60078
60589
  publicationLimit: 1
60079
60590
  - contactForm: true
60591
+ listen: true
60080
60592
  newsletterSubscriberLimit: 500
60081
60593
  planKey: PRO
60082
60594
  publicationLimit: 12
60083
60595
  - contactForm: true
60596
+ listen: true
60084
60597
  newsletterSubscriberLimit: 2000
60085
60598
  planKey: BUSINESS
60086
60599
  publicationLimit: 50
@@ -63513,7 +64026,7 @@ paths:
63513
64026
  x-gala-tenant-scope: NONE
63514
64027
  /v2/public/publications/{publicationId}/authors/{authorId}/follow:
63515
64028
  delete:
63516
- description: Idempotent, and allowed whether or not the site still has follows turned on or is live, so a reader can always leave. `404 AUTHOR_NOT_FOUND` only when the site names no such author and the reader holds no follow of that id.
64029
+ description: Idempotent, and allowed whether or not the site still has follows turned on or is live, so a reader can always leave. `404 AUTHOR_NOT_FOUND` only when the site names no such author and the reader holds no follow of that id. On a site-team token (this publication's token whose principal holds `publication.audience.read`) the response also carries `followers`, the number of readers following the author; it is absent for every other caller, including callers with no token.
63517
64030
  operationId: deletePublicPublicationsByPublicationIdAuthorsByAuthorIdFollow
63518
64031
  parameters:
63519
64032
  - $ref: "#/components/parameters/XCorrelationId"
@@ -63688,7 +64201,7 @@ paths:
63688
64201
  x-gala-success-category: protocol
63689
64202
  x-gala-tenant-scope: NONE
63690
64203
  get:
63691
- description: Public read with an optional reader bearer token. With a token, `following` says whether that reader follows the author; without one it is false. The site's Follow button decides whether to show itself from the `follows.enabled` setting it was built with, not from this read.
64204
+ description: Public read with an optional reader bearer token. With a token, `following` says whether that reader follows the author; without one it is false. The site's Follow button decides whether to show itself from the `follows.enabled` setting it was built with, not from this read. On a site-team token (this publication's token whose principal holds `publication.audience.read`) the response also carries `followers`, the number of readers following the author; it is absent for every other caller, including callers with no token.
63692
64205
  operationId: getPublicPublicationsByPublicationIdAuthorsByAuthorIdFollow
63693
64206
  parameters:
63694
64207
  - $ref: "#/components/parameters/XCorrelationId"
@@ -63793,7 +64306,7 @@ paths:
63793
64306
  x-gala-success-category: query
63794
64307
  x-gala-tenant-scope: NONE
63795
64308
  put:
63796
- description: "Idempotent: following twice is the same as following once. A follow is a reader's own business: only that reader sees it, the site owner sees a display name in the follower list and there is no public follower count. `409 FOLLOWS_DISABLED` while the author has the Follow button off. `404 AUTHOR_NOT_FOUND` when the site names no such author."
64309
+ description: "Idempotent: following twice is the same as following once. A follow is a reader's own business: only that reader sees it, the site owner sees a display name in the follower list and there is no public follower count. `409 FOLLOWS_DISABLED` while the author has the Follow button off. `404 AUTHOR_NOT_FOUND` when the site names no such author. On a site-team token (this publication's token whose principal holds `publication.audience.read`) the response also carries `followers`, the number of readers following the author; it is absent for every other caller, including callers with no token."
63797
64310
  operationId: putPublicPublicationsByPublicationIdAuthorsByAuthorIdFollow
63798
64311
  parameters:
63799
64312
  - $ref: "#/components/parameters/XCorrelationId"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rathnasgala2/schemas",
3
- "version": "3.25.1",
3
+ "version": "3.27.0",
4
4
  "description": "Executable JSON Schema and OpenAPI contracts for Galascribe",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",