@rathnasgala2/schemas 3.39.0 → 3.41.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "package": "@rathnasgala2/schemas@3.39.0",
3
+ "package": "@rathnasgala2/schemas@3.41.0",
4
4
  "source": "package-lock.json",
5
5
  "dependencies": [
6
6
  {
@@ -3222,6 +3222,7 @@
3222
3222
  "capabilityKeys": ["publication.settings.manage", "publication.view"],
3223
3223
  "apiOperationIds": [
3224
3224
  "deleteOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionId",
3225
+ "getCallbacksXOauth",
3225
3226
  "getOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnections",
3226
3227
  "getOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionId",
3227
3228
  "getOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveries",
@@ -3230,6 +3231,7 @@
3230
3231
  "postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdReplaceCredential",
3231
3232
  "postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdResume",
3232
3233
  "postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdVerify",
3234
+ "postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsXAuthorize",
3233
3235
  "postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveries",
3234
3236
  "postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesByDeliveryIdRetry"
3235
3237
  ],
@@ -3759,5 +3761,5 @@
3759
3761
  ]
3760
3762
  }
3761
3763
  ],
3762
- "digest": "sha256:da951053ced5e845b1994317d0ac5dedd13676f12e0013d25e9b026a0c0da285"
3764
+ "digest": "sha256:7cbb42b552bf9e04d74c01c2abbcf50de684bcd74fc1f5f8f4f36be7b59f564f"
3763
3765
  }
@@ -229,9 +229,9 @@
229
229
  "version": "2.0.0",
230
230
  "path": "openapi/openapi.yaml",
231
231
  "materialized": true,
232
- "sourceDigest": "sha256:abaa1134d0b5bcbc66e802e6a7f9104ff97b9e89204f4f4099ae27bd33a130e2",
232
+ "sourceDigest": "sha256:4a900ecbc6118116001779afb71afe88fce5c97b08f8a955c54c4359f57e5d4d",
233
233
  "typescriptRootType": null
234
234
  }
235
235
  ],
236
- "digest": "sha256:e74629d4f1c4c32a61eb545cafb7e7b3e2c34aa8835479c9b7200b64935e4e42"
236
+ "digest": "sha256:06ab0cbc82777d1d3d0fc5bbbb170f2bd7681588dbfcfb7c59318923b4690c28"
237
237
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "2.0.0",
3
3
  "sourceDesignRevision": "a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a",
4
- "openApiDigest": "sha256:abaa1134d0b5bcbc66e802e6a7f9104ff97b9e89204f4f4099ae27bd33a130e2",
4
+ "openApiDigest": "sha256:4a900ecbc6118116001779afb71afe88fce5c97b08f8a955c54c4359f57e5d4d",
5
5
  "operations": [
6
6
  {
7
7
  "operationId": "getInternalHealth",
@@ -146,6 +146,19 @@
146
146
  "apiKeyScope": null,
147
147
  "sourceFragment": "callbacks"
148
148
  },
149
+ {
150
+ "operationId": "getCallbacksXOauth",
151
+ "method": "GET",
152
+ "path": "/v2/callbacks/x/oauth",
153
+ "purpose": "consume the exact X OAuth callback transaction",
154
+ "capabilityKey": null,
155
+ "conditionalCapabilityKeys": [],
156
+ "activationGate": "MVP",
157
+ "assuranceClass": "SESSION",
158
+ "actionGrant": "none",
159
+ "apiKeyScope": null,
160
+ "sourceFragment": "callbacks"
161
+ },
149
162
  {
150
163
  "operationId": "getClaimsByToken",
151
164
  "method": "GET",
@@ -2347,6 +2360,19 @@
2347
2360
  "apiKeyScope": null,
2348
2361
  "sourceFragment": "syndication"
2349
2362
  },
2363
+ {
2364
+ "operationId": "postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsXAuthorize",
2365
+ "method": "POST",
2366
+ "path": "/v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/x:authorize",
2367
+ "purpose": "start connecting X",
2368
+ "capabilityKey": "publication.settings.manage",
2369
+ "conditionalCapabilityKeys": [],
2370
+ "activationGate": "MVP",
2371
+ "assuranceClass": "SESSION",
2372
+ "actionGrant": "none",
2373
+ "apiKeyScope": null,
2374
+ "sourceFragment": "syndication"
2375
+ },
2350
2376
  {
2351
2377
  "operationId": "getOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveries",
2352
2378
  "method": "GET",
@@ -3843,5 +3869,5 @@
3843
3869
  "sourceFragment": "workloads"
3844
3870
  }
3845
3871
  ],
3846
- "digest": "sha256:959a2ce5cff7482a49c6cbc92333e18a1f425fba2c9073f0fc36c056b311751d"
3872
+ "digest": "sha256:1e95229acb1fc8413bba7472f5bfd5be3cb571c81488df439b389f061cde022d"
3847
3873
  }
@@ -19367,6 +19367,9 @@ components:
19367
19367
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsResponse:
19368
19368
  allOf:
19369
19369
  - $ref: "#/components/schemas/SyndicationConnection"
19370
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsXAuthorizeResponse:
19371
+ allOf:
19372
+ - $ref: "#/components/schemas/SyndicationXAuthorization"
19370
19373
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesByDeliveryIdRetryResponse:
19371
19374
  allOf:
19372
19375
  - $ref: "#/components/schemas/SyndicationDelivery"
@@ -23821,12 +23824,15 @@ components:
23821
23824
  type: string
23822
23825
  SyndicationConnection:
23823
23826
  additionalProperties: false
23824
- description: "SCHEMA-3.37.0. One platform connection of a publication. The credential is never returned: no response, list or event carries it, and a lost one is replaced, not read. `accountLabel` is the platform account the credential belongs to, as the platform names it, for example `@anand` or `name.hashnode.dev`."
23827
+ description: "SCHEMA-3.37.0. One platform connection of a publication. The credential is never returned: no response, list or event carries it, and a lost one is replaced, not read. `accountLabel` is the platform account the credential belongs to, as the platform names it, for example `@anand`, `name.hashnode.dev`, `anand @ example.com` (WordPress) or the Ghost site title."
23825
23828
  properties:
23826
23829
  accountLabel:
23827
23830
  maxLength: 200
23828
23831
  minLength: 1
23829
23832
  type: string
23833
+ allowance:
23834
+ $ref: "#/components/schemas/SyndicationWeeklyAllowance"
23835
+ description: SCHEMA-3.41.0. Present when `kind` is `x`, the organization's X posts left this UTC week.
23830
23836
  attention:
23831
23837
  $ref: "#/components/schemas/SyndicationConnectionAttention"
23832
23838
  createdAt:
@@ -23856,7 +23862,7 @@ components:
23856
23862
  description: SCHEMA-3.37.0. Why a connection stopped posting, present while its `status` is `NEEDS_ATTENTION`. `message` is written for the author.
23857
23863
  properties:
23858
23864
  code:
23859
- description: A stable upper-case reason, for example `CREDENTIAL_REJECTED`. A client shows a value it does not know as `message`.
23865
+ description: "A stable upper-case reason, for example `CREDENTIAL_REJECTED`, or `REAUTHORIZE` (SCHEMA-3.41.0: X refused the saved refresh token, so the person must press Connect X again). A client shows a value it does not know as `message`."
23860
23866
  maxLength: 64
23861
23867
  minLength: 1
23862
23868
  pattern: ^[A-Z][A-Z0-9_]*$
@@ -23887,14 +23893,17 @@ components:
23887
23893
  - credential
23888
23894
  type: object
23889
23895
  SyndicationConnectionKind:
23890
- description: SCHEMA-3.37.0. The platforms a publication can announce its posts to. `devto` and `hashnode` mirror the whole article with the original address as canonical; the other four post a short announcement with the live address.
23896
+ description: SCHEMA-3.37.0. The platforms a publication can announce its posts to. `devto`, `hashnode`, `wordpress` and `ghost` mirror the whole article with the original address as canonical; the others post a short announcement with the live address. `wordpress`, `ghost` and `x` since SCHEMA-3.40.0.
23891
23897
  enum:
23892
23898
  - devto
23893
23899
  - hashnode
23900
+ - wordpress
23901
+ - ghost
23894
23902
  - bluesky
23895
23903
  - mastodon
23896
23904
  - telegram
23897
23905
  - discord
23906
+ - x
23898
23907
  type: string
23899
23908
  SyndicationConnectionList:
23900
23909
  additionalProperties: false
@@ -23933,6 +23942,24 @@ components:
23933
23942
  required:
23934
23943
  - style
23935
23944
  type: object
23945
+ ghost:
23946
+ additionalProperties: false
23947
+ description: "SCHEMA-3.40.0. `publishAsDraft: true` saves each mirrored article on the Ghost site as a draft; default `false` publishes it."
23948
+ properties:
23949
+ publishAsDraft:
23950
+ type: boolean
23951
+ required:
23952
+ - publishAsDraft
23953
+ type: object
23954
+ wordpress:
23955
+ additionalProperties: false
23956
+ description: "SCHEMA-3.40.0. `publishAsDraft: true` saves each mirrored article on the WordPress site as a draft; default `false` publishes it."
23957
+ properties:
23958
+ publishAsDraft:
23959
+ type: boolean
23960
+ required:
23961
+ - publishAsDraft
23962
+ type: object
23936
23963
  type: object
23937
23964
  SyndicationConnectionStatus:
23938
23965
  description: SCHEMA-3.37.0. `ACTIVE` posts new announcements; `PAUSED` was stopped by a person and files nothing; `NEEDS_ATTENTION` means the platform rejected the saved credential, nothing is posted until the credential is replaced or checked again.
@@ -23948,9 +23975,11 @@ components:
23948
23975
  bluesky: "#/components/schemas/SyndicationCredentialBluesky"
23949
23976
  devto: "#/components/schemas/SyndicationCredentialDevto"
23950
23977
  discord: "#/components/schemas/SyndicationCredentialDiscord"
23978
+ ghost: "#/components/schemas/SyndicationCredentialGhost"
23951
23979
  hashnode: "#/components/schemas/SyndicationCredentialHashnode"
23952
23980
  mastodon: "#/components/schemas/SyndicationCredentialMastodon"
23953
23981
  telegram: "#/components/schemas/SyndicationCredentialTelegram"
23982
+ wordpress: "#/components/schemas/SyndicationCredentialWordpress"
23954
23983
  propertyName: kind
23955
23984
  oneOf:
23956
23985
  - $ref: "#/components/schemas/SyndicationCredentialDevto"
@@ -23959,6 +23988,8 @@ components:
23959
23988
  - $ref: "#/components/schemas/SyndicationCredentialMastodon"
23960
23989
  - $ref: "#/components/schemas/SyndicationCredentialTelegram"
23961
23990
  - $ref: "#/components/schemas/SyndicationCredentialDiscord"
23991
+ - $ref: "#/components/schemas/SyndicationCredentialWordpress"
23992
+ - $ref: "#/components/schemas/SyndicationCredentialGhost"
23962
23993
  SyndicationCredentialBluesky:
23963
23994
  additionalProperties: false
23964
23995
  description: SCHEMA-3.37.0. A Bluesky handle and app password.
@@ -24022,6 +24053,33 @@ components:
24022
24053
  - kind
24023
24054
  - webhookUrl
24024
24055
  type: object
24056
+ SyndicationCredentialGhost:
24057
+ additionalProperties: false
24058
+ description: SCHEMA-3.40.0. A Ghost site and the Admin API key of a custom integration on it (Settings > Integrations).
24059
+ properties:
24060
+ adminApiKey:
24061
+ description: The integration's Admin API key, `id:secret`.
24062
+ maxLength: 89
24063
+ minLength: 89
24064
+ pattern: ^[0-9a-f]{24}:[0-9a-f]{64}$
24065
+ type: string
24066
+ writeOnly: true
24067
+ kind:
24068
+ pattern: ^ghost$
24069
+ type: string
24070
+ x-gala-const: ghost
24071
+ siteUrl:
24072
+ description: The Ghost admin address root, for example `https://name.ghost.io` or the site's own domain.
24073
+ format: uri
24074
+ maxLength: 300
24075
+ minLength: 12
24076
+ pattern: ^https://[^\s?#]+$
24077
+ type: string
24078
+ required:
24079
+ - kind
24080
+ - siteUrl
24081
+ - adminApiKey
24082
+ type: object
24025
24083
  SyndicationCredentialHashnode:
24026
24084
  additionalProperties: false
24027
24085
  description: SCHEMA-3.37.0. A Hashnode credential and the publication it posts to.
@@ -24098,6 +24156,38 @@ components:
24098
24156
  - botToken
24099
24157
  - channel
24100
24158
  type: object
24159
+ SyndicationCredentialWordpress:
24160
+ additionalProperties: false
24161
+ description: SCHEMA-3.40.0. A WordPress site, a user on it and an Application Password of that user (WordPress 5.6 or later; on WordPress.com this needs the Business plan or higher).
24162
+ properties:
24163
+ applicationPassword:
24164
+ description: An Application Password from the user's profile, with or without its spaces; never the account password.
24165
+ maxLength: 64
24166
+ minLength: 8
24167
+ type: string
24168
+ writeOnly: true
24169
+ kind:
24170
+ pattern: ^wordpress$
24171
+ type: string
24172
+ x-gala-const: wordpress
24173
+ siteUrl:
24174
+ description: The site's root address, for example `https://example.com` or `https://example.com/blog`.
24175
+ format: uri
24176
+ maxLength: 300
24177
+ minLength: 12
24178
+ pattern: ^https://[^\s?#]+$
24179
+ type: string
24180
+ username:
24181
+ description: The WordPress user the posts are published as.
24182
+ maxLength: 100
24183
+ minLength: 1
24184
+ type: string
24185
+ required:
24186
+ - kind
24187
+ - siteUrl
24188
+ - username
24189
+ - applicationPassword
24190
+ type: object
24101
24191
  SyndicationDelivery:
24102
24192
  additionalProperties: false
24103
24193
  description: SCHEMA-3.37.0. One post of one live article to one platform. `connectionId` is absent once the connection was removed; `kind` and `accountLabel` stay. `externalUrl` is the post on the platform, absent for `discord` and until the delivery is `SENT`.
@@ -24161,7 +24251,7 @@ components:
24161
24251
  description: SCHEMA-3.37.0. Why a delivery failed. `message` is the platform's own words when it gave any, else Galascribe's.
24162
24252
  properties:
24163
24253
  code:
24164
- description: A stable upper-case reason, for example `CREDENTIAL_REJECTED`, `PLATFORM_REJECTED` or `RETRIES_EXHAUSTED`. A client shows a value it does not know as `message`.
24254
+ description: A stable upper-case reason, for example `CREDENTIAL_REJECTED`, `PLATFORM_REJECTED`, `RETRIES_EXHAUSTED` or, since SCHEMA-3.41.0, `WEEKLY_ALLOWANCE_SPENT` (an X delivery, status `FAILED`, message "X posts for this week are used. They come back on <Mon d>."; a manual retry after the allowance renews works). A client shows a value it does not know as `message`.
24165
24255
  maxLength: 64
24166
24256
  minLength: 1
24167
24257
  pattern: ^[A-Z][A-Z0-9_]*$
@@ -24248,6 +24338,46 @@ components:
24248
24338
  required:
24249
24339
  - credential
24250
24340
  type: object
24341
+ SyndicationWeeklyAllowance:
24342
+ additionalProperties: false
24343
+ description: SCHEMA-3.41.0. How many X posts the organization has left this UTC week. The allowance follows the organization's plan (2 on Basic and 5 on Pro by default, as the platform settings say) and is shared by every X connection of the organization. Wording follows `InterviewPolicy.quota`.
24344
+ properties:
24345
+ limit:
24346
+ format: int64
24347
+ minimum: 0
24348
+ type: integer
24349
+ period:
24350
+ description: The UTC week the allowance counts in, as its Monday, `YYYY-MM-DD`
24351
+ format: date
24352
+ pattern: ^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$
24353
+ type: string
24354
+ remaining:
24355
+ format: int64
24356
+ minimum: 0
24357
+ type: integer
24358
+ renewsAt:
24359
+ $ref: "#/components/schemas/PortableProblemRfc3339"
24360
+ description: The first instant of the next UTC week (Monday 00:00Z), when the allowance comes back
24361
+ required:
24362
+ - period
24363
+ - renewsAt
24364
+ - limit
24365
+ - remaining
24366
+ type: object
24367
+ SyndicationXAuthorization:
24368
+ additionalProperties: false
24369
+ description: SCHEMA-3.41.0. Where to send the person to let Galascribe's own X app post for them. Open `authorizationUrl` (x.com); X brings the browser back to `GET /v2/callbacks/x/oauth` within 10 minutes (`expiresAt`).
24370
+ properties:
24371
+ authorizationUrl:
24372
+ format: uri
24373
+ maxLength: 2048
24374
+ type: string
24375
+ expiresAt:
24376
+ $ref: "#/components/schemas/PortableProblemRfc3339"
24377
+ required:
24378
+ - authorizationUrl
24379
+ - expiresAt
24380
+ type: object
24251
24381
  VerificationPlanEntry:
24252
24382
  additionalProperties: false
24253
24383
  properties:
@@ -25688,6 +25818,77 @@ paths:
25688
25818
  - NONE
25689
25819
  x-gala-success-category: billing-callback
25690
25820
  x-gala-tenant-scope: NONE
25821
+ /v2/callbacks/x/oauth:
25822
+ get:
25823
+ description: |
25824
+ SCHEMA-3.41.0. The address X sends the person back to after the consent screen. It never answers with a problem document for what the provider sends: every outcome is a `303` to the App at `/settings/syndication?x=<connectionId>` on success or `/settings/syndication?xError=<code>` with `<code>` one of `DENIED` (the person refused on x.com), `EXPIRED` (the state is unknown or older than 10 minutes), `LIMIT` (the publication is at its connection limit), `REJECTED` (X refused the code or the account read) or `UNAVAILABLE` (X could not be reached or is not configured). Reconnecting an X account already connected to the same publication replaces its tokens in place (same connection) and clears attention. `code`, `state`, `error` and `error_description` are never logged or echoed. Only a value longer than its limit is refused as `400 VALIDATION_FAILED`, before any connection is touched.
25825
+ operationId: getCallbacksXOauth
25826
+ parameters:
25827
+ - $ref: "#/components/parameters/XCorrelationId"
25828
+ - example: example
25829
+ in: query
25830
+ name: code
25831
+ required: false
25832
+ schema:
25833
+ maxLength: 8192
25834
+ minLength: 1
25835
+ type: string
25836
+ - example: example
25837
+ in: query
25838
+ name: state
25839
+ required: false
25840
+ schema:
25841
+ maxLength: 8192
25842
+ minLength: 1
25843
+ type: string
25844
+ - example: example
25845
+ in: query
25846
+ name: error
25847
+ required: false
25848
+ schema:
25849
+ maxLength: 8192
25850
+ minLength: 1
25851
+ type: string
25852
+ - example: example
25853
+ in: query
25854
+ name: error_description
25855
+ required: false
25856
+ schema:
25857
+ maxLength: 8192
25858
+ minLength: 1
25859
+ type: string
25860
+ responses:
25861
+ "303":
25862
+ description: consume the exact X OAuth callback transaction succeeded
25863
+ headers:
25864
+ Cache-Control:
25865
+ $ref: "#/components/headers/CacheControlNoStore"
25866
+ Location:
25867
+ $ref: "#/components/headers/Location"
25868
+ X-Correlation-Id:
25869
+ $ref: "#/components/headers/XCorrelationId"
25870
+ "400":
25871
+ $ref: "#/components/responses/ValidationFailed"
25872
+ security: []
25873
+ summary: consume the exact X OAuth callback transaction
25874
+ tags:
25875
+ - callbacks
25876
+ x-gala-activation-gate: MVP
25877
+ x-gala-activation-guards:
25878
+ - NONE
25879
+ x-gala-capability-key: null
25880
+ x-gala-concurrency: single-use-transaction
25881
+ x-gala-conditional-capabilities: []
25882
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
25883
+ x-gala-nullability: required-and-nullable-are-explicit
25884
+ x-gala-purpose: consume the exact X OAuth callback transaction
25885
+ x-gala-reachable-problems:
25886
+ - VALIDATION_FAILED
25887
+ x-gala-replay-identity: oauth-state
25888
+ x-gala-state-guards:
25889
+ - NONE
25890
+ x-gala-success-category: oauth-callback
25891
+ x-gala-tenant-scope: NONE
25691
25892
  /v2/claims/{token}:
25692
25893
  get:
25693
25894
  description: |
@@ -65283,6 +65484,298 @@ paths:
65283
65484
  - NONE
65284
65485
  x-gala-success-category: create
65285
65486
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
65487
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/x:authorize:
65488
+ post:
65489
+ description: "SCHEMA-3.41.0. Starts connecting X. Galascribe's own X app posts on the author's behalf: the author never handles keys, X bills Galascribe, and the organization's plan sets a weekly allowance of X posts (2 on Basic, 5 on Pro by default; none on Free). The answer carries the address on x.com to send the person to; X brings the browser back to `GET /v2/callbacks/x/oauth` within 10 minutes, which saves the connection and lands on the Syndication settings page. Needs `publication.settings.manage`. `409 PLAN_REQUIRED` when the plan allows no X posts, `409 SYNDICATION_CONNECTION_LIMIT` at 12 connections, `503 SYNDICATION_X_NOT_CONFIGURED` when the platform operator has not configured the X app, `429 RATE_LIMITED` after too many attempts."
65490
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsXAuthorize
65491
+ parameters:
65492
+ - $ref: "#/components/parameters/XCorrelationId"
65493
+ - example: 018f0000-0000-7000-8000-000000000001
65494
+ in: path
65495
+ name: organizationId
65496
+ required: true
65497
+ schema:
65498
+ format: uuid
65499
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65500
+ type: string
65501
+ - example: 018f0000-0000-7000-8000-000000000001
65502
+ in: path
65503
+ name: publicationId
65504
+ required: true
65505
+ schema:
65506
+ format: uuid
65507
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65508
+ type: string
65509
+ - $ref: "#/components/parameters/IdempotencyKey"
65510
+ - $ref: "#/components/parameters/XCsrfToken"
65511
+ responses:
65512
+ "201":
65513
+ content:
65514
+ application/json:
65515
+ examples:
65516
+ nominal:
65517
+ summary: Nominal successful response
65518
+ value:
65519
+ authorizationUrl: https://x.com/i/oauth2/authorize?response_type=code&client_id=example-client-id&state=example-state
65520
+ expiresAt: "2026-11-06T12:10:00.000Z"
65521
+ schema:
65522
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsXAuthorizeResponse"
65523
+ description: start connecting X succeeded
65524
+ headers:
65525
+ Cache-Control:
65526
+ $ref: "#/components/headers/CacheControlNoStore"
65527
+ Location:
65528
+ $ref: "#/components/headers/Location"
65529
+ X-Correlation-Id:
65530
+ $ref: "#/components/headers/XCorrelationId"
65531
+ "400":
65532
+ content:
65533
+ application/problem+json:
65534
+ examples:
65535
+ VALIDATION_FAILED:
65536
+ summary: VALIDATION_FAILED
65537
+ value:
65538
+ code: VALIDATION_FAILED
65539
+ correlationId: 018f0000-0000-7000-8000-000000000001
65540
+ detail: See the operation contract.
65541
+ errors: []
65542
+ retryable: false
65543
+ schemaId: urn:gala:schema:problem:2.0.0
65544
+ schemaVersion: 2.0.0
65545
+ status: 400
65546
+ title: VALIDATION_FAILED
65547
+ type: urn:gala:problem:validation-failed
65548
+ schema:
65549
+ $ref: "#/components/schemas/Problem"
65550
+ description: VALIDATION_FAILED
65551
+ headers:
65552
+ Cache-Control:
65553
+ $ref: "#/components/headers/CacheControlNoStore"
65554
+ X-Correlation-Id:
65555
+ $ref: "#/components/headers/XCorrelationId"
65556
+ x-gala-problem-codes:
65557
+ - VALIDATION_FAILED
65558
+ "401":
65559
+ content:
65560
+ application/problem+json:
65561
+ examples:
65562
+ AUTHENTICATION_REQUIRED:
65563
+ summary: AUTHENTICATION_REQUIRED
65564
+ value:
65565
+ code: AUTHENTICATION_REQUIRED
65566
+ correlationId: 018f0000-0000-7000-8000-000000000001
65567
+ detail: See the operation contract.
65568
+ errors: []
65569
+ retryable: false
65570
+ schemaId: urn:gala:schema:problem:2.0.0
65571
+ schemaVersion: 2.0.0
65572
+ status: 401
65573
+ title: AUTHENTICATION_REQUIRED
65574
+ type: urn:gala:problem:authentication-required
65575
+ schema:
65576
+ $ref: "#/components/schemas/Problem"
65577
+ description: AUTHENTICATION_REQUIRED
65578
+ headers:
65579
+ Cache-Control:
65580
+ $ref: "#/components/headers/CacheControlNoStore"
65581
+ X-Correlation-Id:
65582
+ $ref: "#/components/headers/XCorrelationId"
65583
+ x-gala-problem-codes:
65584
+ - AUTHENTICATION_REQUIRED
65585
+ "403":
65586
+ content:
65587
+ application/problem+json:
65588
+ examples:
65589
+ AUTHORIZATION_DENIED:
65590
+ summary: AUTHORIZATION_DENIED
65591
+ value:
65592
+ code: AUTHORIZATION_DENIED
65593
+ correlationId: 018f0000-0000-7000-8000-000000000001
65594
+ detail: See the operation contract.
65595
+ errors: []
65596
+ retryable: false
65597
+ schemaId: urn:gala:schema:problem:2.0.0
65598
+ schemaVersion: 2.0.0
65599
+ status: 403
65600
+ title: AUTHORIZATION_DENIED
65601
+ type: urn:gala:problem:authorization-denied
65602
+ schema:
65603
+ $ref: "#/components/schemas/Problem"
65604
+ description: AUTHORIZATION_DENIED
65605
+ headers:
65606
+ Cache-Control:
65607
+ $ref: "#/components/headers/CacheControlNoStore"
65608
+ X-Correlation-Id:
65609
+ $ref: "#/components/headers/XCorrelationId"
65610
+ x-gala-problem-codes:
65611
+ - AUTHORIZATION_DENIED
65612
+ "404":
65613
+ content:
65614
+ application/problem+json:
65615
+ examples:
65616
+ RESOURCE_NOT_FOUND:
65617
+ summary: RESOURCE_NOT_FOUND
65618
+ value:
65619
+ code: RESOURCE_NOT_FOUND
65620
+ correlationId: 018f0000-0000-7000-8000-000000000001
65621
+ detail: See the operation contract.
65622
+ errors: []
65623
+ retryable: false
65624
+ schemaId: urn:gala:schema:problem:2.0.0
65625
+ schemaVersion: 2.0.0
65626
+ status: 404
65627
+ title: RESOURCE_NOT_FOUND
65628
+ type: urn:gala:problem:resource-not-found
65629
+ schema:
65630
+ $ref: "#/components/schemas/Problem"
65631
+ description: RESOURCE_NOT_FOUND
65632
+ headers:
65633
+ Cache-Control:
65634
+ $ref: "#/components/headers/CacheControlNoStore"
65635
+ X-Correlation-Id:
65636
+ $ref: "#/components/headers/XCorrelationId"
65637
+ x-gala-problem-codes:
65638
+ - RESOURCE_NOT_FOUND
65639
+ "409":
65640
+ content:
65641
+ application/problem+json:
65642
+ examples:
65643
+ COMMAND_REPLAY_CONFLICT:
65644
+ summary: COMMAND_REPLAY_CONFLICT
65645
+ value:
65646
+ code: COMMAND_REPLAY_CONFLICT
65647
+ correlationId: 018f0000-0000-7000-8000-000000000001
65648
+ detail: See the operation contract.
65649
+ errors: []
65650
+ retryable: false
65651
+ schemaId: urn:gala:schema:problem:2.0.0
65652
+ schemaVersion: 2.0.0
65653
+ status: 409
65654
+ title: COMMAND_REPLAY_CONFLICT
65655
+ type: urn:gala:problem:command-replay-conflict
65656
+ PLAN_REQUIRED:
65657
+ summary: PLAN_REQUIRED
65658
+ value:
65659
+ code: PLAN_REQUIRED
65660
+ correlationId: 018f0000-0000-7000-8000-000000000001
65661
+ detail: See the operation contract.
65662
+ errors: []
65663
+ retryable: false
65664
+ schemaId: urn:gala:schema:problem:2.0.0
65665
+ schemaVersion: 2.0.0
65666
+ status: 409
65667
+ title: PLAN_REQUIRED
65668
+ type: urn:gala:problem:plan-required
65669
+ SYNDICATION_CONNECTION_LIMIT:
65670
+ summary: SYNDICATION_CONNECTION_LIMIT
65671
+ value:
65672
+ code: SYNDICATION_CONNECTION_LIMIT
65673
+ correlationId: 018f0000-0000-7000-8000-000000000001
65674
+ detail: See the operation contract.
65675
+ errors: []
65676
+ retryable: false
65677
+ schemaId: urn:gala:schema:problem:2.0.0
65678
+ schemaVersion: 2.0.0
65679
+ status: 409
65680
+ title: SYNDICATION_CONNECTION_LIMIT
65681
+ type: urn:gala:problem:syndication-connection-limit
65682
+ schema:
65683
+ $ref: "#/components/schemas/Problem"
65684
+ description: COMMAND_REPLAY_CONFLICT, PLAN_REQUIRED, SYNDICATION_CONNECTION_LIMIT
65685
+ headers:
65686
+ Cache-Control:
65687
+ $ref: "#/components/headers/CacheControlNoStore"
65688
+ X-Correlation-Id:
65689
+ $ref: "#/components/headers/XCorrelationId"
65690
+ x-gala-problem-codes:
65691
+ - COMMAND_REPLAY_CONFLICT
65692
+ - PLAN_REQUIRED
65693
+ - SYNDICATION_CONNECTION_LIMIT
65694
+ "429":
65695
+ content:
65696
+ application/problem+json:
65697
+ examples:
65698
+ RATE_LIMITED:
65699
+ summary: RATE_LIMITED
65700
+ value:
65701
+ code: RATE_LIMITED
65702
+ correlationId: 018f0000-0000-7000-8000-000000000001
65703
+ detail: See the operation contract.
65704
+ errors: []
65705
+ retryable: true
65706
+ schemaId: urn:gala:schema:problem:2.0.0
65707
+ schemaVersion: 2.0.0
65708
+ status: 429
65709
+ title: RATE_LIMITED
65710
+ type: urn:gala:problem:rate-limited
65711
+ schema:
65712
+ $ref: "#/components/schemas/Problem"
65713
+ description: RATE_LIMITED
65714
+ headers:
65715
+ Cache-Control:
65716
+ $ref: "#/components/headers/CacheControlNoStore"
65717
+ Retry-After:
65718
+ $ref: "#/components/headers/RetryAfter"
65719
+ X-Correlation-Id:
65720
+ $ref: "#/components/headers/XCorrelationId"
65721
+ x-gala-problem-codes:
65722
+ - RATE_LIMITED
65723
+ "503":
65724
+ content:
65725
+ application/problem+json:
65726
+ examples:
65727
+ SYNDICATION_X_NOT_CONFIGURED:
65728
+ summary: SYNDICATION_X_NOT_CONFIGURED
65729
+ value:
65730
+ code: SYNDICATION_X_NOT_CONFIGURED
65731
+ correlationId: 018f0000-0000-7000-8000-000000000001
65732
+ detail: See the operation contract.
65733
+ errors: []
65734
+ retryable: false
65735
+ schemaId: urn:gala:schema:problem:2.0.0
65736
+ schemaVersion: 2.0.0
65737
+ status: 503
65738
+ title: SYNDICATION_X_NOT_CONFIGURED
65739
+ type: urn:gala:problem:syndication-x-not-configured
65740
+ schema:
65741
+ $ref: "#/components/schemas/Problem"
65742
+ description: SYNDICATION_X_NOT_CONFIGURED
65743
+ headers:
65744
+ Cache-Control:
65745
+ $ref: "#/components/headers/CacheControlNoStore"
65746
+ X-Correlation-Id:
65747
+ $ref: "#/components/headers/XCorrelationId"
65748
+ x-gala-problem-codes:
65749
+ - SYNDICATION_X_NOT_CONFIGURED
65750
+ security:
65751
+ - browserSession: []
65752
+ summary: start connecting X
65753
+ tags:
65754
+ - syndication
65755
+ x-gala-activation-gate: MVP
65756
+ x-gala-activation-guards:
65757
+ - NONE
65758
+ x-gala-capability-key: publication.settings.manage
65759
+ x-gala-concurrency: authorization-and-publication-epochs
65760
+ x-gala-conditional-capabilities: []
65761
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
65762
+ x-gala-nullability: required-and-nullable-are-explicit
65763
+ x-gala-purpose: start connecting X
65764
+ x-gala-reachable-problems:
65765
+ - AUTHENTICATION_REQUIRED
65766
+ - AUTHORIZATION_DENIED
65767
+ - COMMAND_REPLAY_CONFLICT
65768
+ - PLAN_REQUIRED
65769
+ - RATE_LIMITED
65770
+ - RESOURCE_NOT_FOUND
65771
+ - SYNDICATION_CONNECTION_LIMIT
65772
+ - SYNDICATION_X_NOT_CONFIGURED
65773
+ - VALIDATION_FAILED
65774
+ x-gala-replay-identity: idempotency-key
65775
+ x-gala-state-guards:
65776
+ - NONE
65777
+ x-gala-success-category: create
65778
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
65286
65779
  /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/{connectionId}:
65287
65780
  delete:
65288
65781
  description: Removes the connection and destroys its saved credential. Posts already made stay on the platform; its deliveries stay in the history with their kind and account name. Needs `publication.settings.manage`. Removing a connection that is already gone answers `404 SYNDICATION_CONNECTION_NOT_FOUND`.
@@ -65935,7 +66428,7 @@ paths:
65935
66428
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
65936
66429
  /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/{connectionId}:replace-credential:
65937
66430
  post:
65938
- description: "Checks the new credential with the platform and, when it is accepted, replaces the saved one and sets the connection `ACTIVE`; the old credential is destroyed. The new `credential.kind` must equal the connection's kind. Same problems as connecting: `422 SYNDICATION_CREDENTIAL_REJECTED` with the platform's message, `503 SYNDICATION_PLATFORM_UNAVAILABLE`. Needs `publication.settings.manage`."
66431
+ description: "Checks the new credential with the platform and, when it is accepted, replaces the saved one and sets the connection `ACTIVE`; the old credential is destroyed. The new `credential.kind` must equal the connection's kind. Same problems as connecting: `422 SYNDICATION_CREDENTIAL_REJECTED` with the platform's message, `503 SYNDICATION_PLATFORM_UNAVAILABLE`. Needs `publication.settings.manage`. SCHEMA-3.41.0: an `x` connection takes no credential; it is reconnected through `syndication-connections/x:authorize`, and this operation refuses it."
65939
66432
  operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdReplaceCredential
65940
66433
  parameters:
65941
66434
  - $ref: "#/components/parameters/XCorrelationId"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rathnasgala2/schemas",
3
- "version": "3.39.0",
3
+ "version": "3.41.0",
4
4
  "description": "Executable JSON Schema and OpenAPI contracts for Galascribe",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
package/sbom.cdx.json CHANGED
@@ -97,8 +97,8 @@
97
97
  "type": "library",
98
98
  "name": "schemas",
99
99
  "group": "@rathnasgala2",
100
- "version": "3.39.0",
101
- "bom-ref": "@rathnasgala2/schemas@3.39.0",
100
+ "version": "3.41.0",
101
+ "bom-ref": "@rathnasgala2/schemas@3.41.0",
102
102
  "description": "Executable JSON Schema and OpenAPI contracts for Galascribe",
103
103
  "licenses": [
104
104
  {
@@ -108,7 +108,7 @@
108
108
  }
109
109
  }
110
110
  ],
111
- "purl": "pkg:npm/%40rathnasgala2/schemas@3.39.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Frathnasgala2%2Fschema.git",
111
+ "purl": "pkg:npm/%40rathnasgala2/schemas@3.41.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Frathnasgala2%2Fschema.git",
112
112
  "externalReferences": [
113
113
  {
114
114
  "url": "https://github.com/rathnasgala2/schema/issues",
@@ -153,7 +153,7 @@
153
153
  "type": "library",
154
154
  "name": "ajv-formats",
155
155
  "version": "3.0.1",
156
- "bom-ref": "@rathnasgala2/schemas@3.39.0|ajv-formats@3.0.1",
156
+ "bom-ref": "@rathnasgala2/schemas@3.41.0|ajv-formats@3.0.1",
157
157
  "licenses": [
158
158
  {
159
159
  "license": {
@@ -187,7 +187,7 @@
187
187
  "type": "library",
188
188
  "name": "ajv",
189
189
  "version": "8.20.0",
190
- "bom-ref": "@rathnasgala2/schemas@3.39.0|ajv@8.20.0",
190
+ "bom-ref": "@rathnasgala2/schemas@3.41.0|ajv@8.20.0",
191
191
  "licenses": [
192
192
  {
193
193
  "license": {
@@ -221,7 +221,7 @@
221
221
  "type": "library",
222
222
  "name": "fast-deep-equal",
223
223
  "version": "3.1.3",
224
- "bom-ref": "@rathnasgala2/schemas@3.39.0|fast-deep-equal@3.1.3",
224
+ "bom-ref": "@rathnasgala2/schemas@3.41.0|fast-deep-equal@3.1.3",
225
225
  "licenses": [
226
226
  {
227
227
  "license": {
@@ -255,7 +255,7 @@
255
255
  "type": "library",
256
256
  "name": "fast-uri",
257
257
  "version": "3.1.8",
258
- "bom-ref": "@rathnasgala2/schemas@3.39.0|fast-uri@3.1.8",
258
+ "bom-ref": "@rathnasgala2/schemas@3.41.0|fast-uri@3.1.8",
259
259
  "licenses": [
260
260
  {
261
261
  "license": {
@@ -289,7 +289,7 @@
289
289
  "type": "library",
290
290
  "name": "json-schema-traverse",
291
291
  "version": "1.0.0",
292
- "bom-ref": "@rathnasgala2/schemas@3.39.0|json-schema-traverse@1.0.0",
292
+ "bom-ref": "@rathnasgala2/schemas@3.41.0|json-schema-traverse@1.0.0",
293
293
  "licenses": [
294
294
  {
295
295
  "license": {
@@ -323,7 +323,7 @@
323
323
  "type": "library",
324
324
  "name": "require-from-string",
325
325
  "version": "2.0.2",
326
- "bom-ref": "@rathnasgala2/schemas@3.39.0|require-from-string@2.0.2",
326
+ "bom-ref": "@rathnasgala2/schemas@3.41.0|require-from-string@2.0.2",
327
327
  "licenses": [
328
328
  {
329
329
  "license": {
@@ -1064,10 +1064,10 @@
1064
1064
  ],
1065
1065
  "dependencies": [
1066
1066
  {
1067
- "ref": "@rathnasgala2/schemas@3.39.0",
1067
+ "ref": "@rathnasgala2/schemas@3.41.0",
1068
1068
  "dependsOn": [
1069
- "@rathnasgala2/schemas@3.39.0|ajv-formats@3.0.1",
1070
- "@rathnasgala2/schemas@3.39.0|ajv@8.20.0",
1069
+ "@rathnasgala2/schemas@3.41.0|ajv-formats@3.0.1",
1070
+ "@rathnasgala2/schemas@3.41.0|ajv@8.20.0",
1071
1071
  "pkg:npm/semver@7.8.5",
1072
1072
  "urn:gala:source-data:iana-ipv4-special-registry",
1073
1073
  "urn:gala:source-data:iana-ipv6-special-registry",
@@ -1089,31 +1089,31 @@
1089
1089
  ]
1090
1090
  },
1091
1091
  {
1092
- "ref": "@rathnasgala2/schemas@3.39.0|ajv-formats@3.0.1",
1092
+ "ref": "@rathnasgala2/schemas@3.41.0|ajv-formats@3.0.1",
1093
1093
  "dependsOn": [
1094
- "@rathnasgala2/schemas@3.39.0|ajv@8.20.0"
1094
+ "@rathnasgala2/schemas@3.41.0|ajv@8.20.0"
1095
1095
  ]
1096
1096
  },
1097
1097
  {
1098
- "ref": "@rathnasgala2/schemas@3.39.0|ajv@8.20.0",
1098
+ "ref": "@rathnasgala2/schemas@3.41.0|ajv@8.20.0",
1099
1099
  "dependsOn": [
1100
- "@rathnasgala2/schemas@3.39.0|fast-deep-equal@3.1.3",
1101
- "@rathnasgala2/schemas@3.39.0|fast-uri@3.1.8",
1102
- "@rathnasgala2/schemas@3.39.0|json-schema-traverse@1.0.0",
1103
- "@rathnasgala2/schemas@3.39.0|require-from-string@2.0.2"
1100
+ "@rathnasgala2/schemas@3.41.0|fast-deep-equal@3.1.3",
1101
+ "@rathnasgala2/schemas@3.41.0|fast-uri@3.1.8",
1102
+ "@rathnasgala2/schemas@3.41.0|json-schema-traverse@1.0.0",
1103
+ "@rathnasgala2/schemas@3.41.0|require-from-string@2.0.2"
1104
1104
  ]
1105
1105
  },
1106
1106
  {
1107
- "ref": "@rathnasgala2/schemas@3.39.0|fast-deep-equal@3.1.3"
1107
+ "ref": "@rathnasgala2/schemas@3.41.0|fast-deep-equal@3.1.3"
1108
1108
  },
1109
1109
  {
1110
- "ref": "@rathnasgala2/schemas@3.39.0|fast-uri@3.1.8"
1110
+ "ref": "@rathnasgala2/schemas@3.41.0|fast-uri@3.1.8"
1111
1111
  },
1112
1112
  {
1113
- "ref": "@rathnasgala2/schemas@3.39.0|json-schema-traverse@1.0.0"
1113
+ "ref": "@rathnasgala2/schemas@3.41.0|json-schema-traverse@1.0.0"
1114
1114
  },
1115
1115
  {
1116
- "ref": "@rathnasgala2/schemas@3.39.0|require-from-string@2.0.2"
1116
+ "ref": "@rathnasgala2/schemas@3.41.0|require-from-string@2.0.2"
1117
1117
  },
1118
1118
  {
1119
1119
  "ref": "pkg:npm/semver@7.8.5"