@rathnasgala2/schemas 3.36.0 → 3.38.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.
@@ -4767,6 +4767,15 @@ components:
4767
4767
  - attention
4768
4768
  - liveUpdate
4769
4769
  type: object
4770
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdResponse:
4771
+ allOf:
4772
+ - $ref: "#/components/schemas/SyndicationConnection"
4773
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsResponse:
4774
+ allOf:
4775
+ - $ref: "#/components/schemas/SyndicationConnectionList"
4776
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesResponse:
4777
+ allOf:
4778
+ - $ref: "#/components/schemas/SyndicationDeliveryList"
4770
4779
  GetOrganizationsByOrganizationIdPublicationsByPublicationIdTransfersByTransferIdResponse:
4771
4780
  allOf:
4772
4781
  - $ref: "#/components/schemas/PublicationTransfer"
@@ -8879,7 +8888,9 @@ components:
8879
8888
  system-initiated operation that moves a site's canonical base to or
8880
8889
  from its custom domain around the CNAME switch; nobody requests it, so
8881
8890
  it is reached through an operation's `held.byOperationId` or a site
8882
- read rather than a `202`.
8891
+ read rather than a `202`. `syndication_send` (SCHEMA-3.38.0) is a manual
8892
+ syndication send filed from Settings, and `syndication_retry` is a retry
8893
+ of one syndication delivery.
8883
8894
  enum:
8884
8895
  - deployment_reconcile
8885
8896
  - deployment_rollback
@@ -8890,6 +8901,8 @@ components:
8890
8901
  - repository_change_commit
8891
8902
  - repository_change_plan
8892
8903
  - review_request
8904
+ - syndication_retry
8905
+ - syndication_send
8893
8906
  type: string
8894
8907
  OperationPhase:
8895
8908
  enum:
@@ -16825,6 +16838,11 @@ components:
16825
16838
  $ref: "#/components/schemas/PortableProblemCanonicalRoute"
16826
16839
  operationId:
16827
16840
  $ref: "#/components/schemas/PortableProblemStableId"
16841
+ platformMessage:
16842
+ description: "SCHEMA-3.37.0, optional, carried by a SYNDICATION_CREDENTIAL_REJECTED problem and absent from every other: the platform's own words for why it refused the credential, at most 500 characters, for the author to read as the platform's message (for example `Bad credentials`). It never contains the credential."
16843
+ maxLength: 500
16844
+ minLength: 1
16845
+ type: string
16828
16846
  profileBase:
16829
16847
  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)."
16830
16848
  maxLength: 2048
@@ -19307,6 +19325,71 @@ components:
19307
19325
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdSitePublishUpdateResponse:
19308
19326
  allOf:
19309
19327
  - $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdPublishesResponse"
19328
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdPauseResponse:
19329
+ allOf:
19330
+ - $ref: "#/components/schemas/SyndicationConnection"
19331
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdReplaceCredentialRequest:
19332
+ additionalProperties: false
19333
+ description: SCHEMA-3.37.0. A new credential for an existing connection. `credential.kind` must equal the connection's kind.
19334
+ properties:
19335
+ credential:
19336
+ $ref: "#/components/schemas/SyndicationCredential"
19337
+ required:
19338
+ - credential
19339
+ type: object
19340
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdReplaceCredentialResponse:
19341
+ allOf:
19342
+ - $ref: "#/components/schemas/SyndicationConnection"
19343
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdResumeResponse:
19344
+ allOf:
19345
+ - $ref: "#/components/schemas/SyndicationConnection"
19346
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdVerifyResponse:
19347
+ allOf:
19348
+ - $ref: "#/components/schemas/SyndicationConnection"
19349
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsRequest:
19350
+ additionalProperties: false
19351
+ description: SCHEMA-3.37.0. Connect a platform. Galascribe checks the credential against the platform before it saves it. `credential.kind` must equal `kind`.
19352
+ properties:
19353
+ credential:
19354
+ $ref: "#/components/schemas/SyndicationCredential"
19355
+ kind:
19356
+ $ref: "#/components/schemas/SyndicationConnectionKind"
19357
+ options:
19358
+ $ref: "#/components/schemas/SyndicationConnectionOptions"
19359
+ required:
19360
+ - kind
19361
+ - credential
19362
+ type: object
19363
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsResponse:
19364
+ allOf:
19365
+ - $ref: "#/components/schemas/SyndicationConnection"
19366
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesByDeliveryIdRetryResponse:
19367
+ allOf:
19368
+ - $ref: "#/components/schemas/SyndicationDelivery"
19369
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesRequest:
19370
+ additionalProperties: false
19371
+ description: SCHEMA-3.37.0. File a delivery of an earlier live post to the chosen connections. `contentId` must name a post with a live announcement (`409 SYNDICATION_POST_NOT_LIVE` otherwise).
19372
+ properties:
19373
+ connectionIds:
19374
+ items:
19375
+ format: uuid
19376
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
19377
+ type: string
19378
+ maxItems: 12
19379
+ minItems: 1
19380
+ type: array
19381
+ uniqueItems: true
19382
+ contentId:
19383
+ format: uuid
19384
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
19385
+ type: string
19386
+ required:
19387
+ - contentId
19388
+ - connectionIds
19389
+ type: object
19390
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesResponse:
19391
+ allOf:
19392
+ - $ref: "#/components/schemas/SyndicationDeliveryList"
19310
19393
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdTransfersByTransferIdCancelRequest:
19311
19394
  additionalProperties: false
19312
19395
  properties:
@@ -23732,6 +23815,435 @@ components:
23732
23815
  maxLength: 64
23733
23816
  pattern: ^(?:[A-Za-z_]+(?:/[A-Za-z0-9_+-]+)+|UTC)$
23734
23817
  type: string
23818
+ SyndicationConnection:
23819
+ additionalProperties: false
23820
+ 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`."
23821
+ properties:
23822
+ accountLabel:
23823
+ maxLength: 200
23824
+ minLength: 1
23825
+ type: string
23826
+ attention:
23827
+ $ref: "#/components/schemas/SyndicationConnectionAttention"
23828
+ createdAt:
23829
+ $ref: "#/components/schemas/PortableProblemRfc3339"
23830
+ id:
23831
+ format: uuid
23832
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
23833
+ type: string
23834
+ kind:
23835
+ $ref: "#/components/schemas/SyndicationConnectionKind"
23836
+ lastDelivery:
23837
+ $ref: "#/components/schemas/SyndicationLastDelivery"
23838
+ options:
23839
+ $ref: "#/components/schemas/SyndicationConnectionOptions"
23840
+ status:
23841
+ $ref: "#/components/schemas/SyndicationConnectionStatus"
23842
+ required:
23843
+ - id
23844
+ - kind
23845
+ - accountLabel
23846
+ - status
23847
+ - options
23848
+ - createdAt
23849
+ type: object
23850
+ SyndicationConnectionAttention:
23851
+ additionalProperties: false
23852
+ description: SCHEMA-3.37.0. Why a connection stopped posting, present while its `status` is `NEEDS_ATTENTION`. `message` is written for the author.
23853
+ properties:
23854
+ code:
23855
+ description: A stable upper-case reason, for example `CREDENTIAL_REJECTED`. A client shows a value it does not know as `message`.
23856
+ maxLength: 64
23857
+ minLength: 1
23858
+ pattern: ^[A-Z][A-Z0-9_]*$
23859
+ type: string
23860
+ message:
23861
+ maxLength: 500
23862
+ minLength: 1
23863
+ type: string
23864
+ since:
23865
+ $ref: "#/components/schemas/PortableProblemRfc3339"
23866
+ required:
23867
+ - code
23868
+ - message
23869
+ - since
23870
+ type: object
23871
+ SyndicationConnectionCreate:
23872
+ additionalProperties: false
23873
+ description: SCHEMA-3.37.0. Connect a platform. Galascribe checks the credential against the platform before it saves it. `credential.kind` must equal `kind`.
23874
+ properties:
23875
+ credential:
23876
+ $ref: "#/components/schemas/SyndicationCredential"
23877
+ kind:
23878
+ $ref: "#/components/schemas/SyndicationConnectionKind"
23879
+ options:
23880
+ $ref: "#/components/schemas/SyndicationConnectionOptions"
23881
+ required:
23882
+ - kind
23883
+ - credential
23884
+ type: object
23885
+ SyndicationConnectionKind:
23886
+ 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.
23887
+ enum:
23888
+ - devto
23889
+ - hashnode
23890
+ - bluesky
23891
+ - mastodon
23892
+ - telegram
23893
+ - discord
23894
+ type: string
23895
+ SyndicationConnectionList:
23896
+ additionalProperties: false
23897
+ description: SCHEMA-3.37.0. Every connection of the publication, oldest first. At most 12.
23898
+ properties:
23899
+ connections:
23900
+ items:
23901
+ $ref: "#/components/schemas/SyndicationConnection"
23902
+ maxItems: 12
23903
+ type: array
23904
+ required:
23905
+ - connections
23906
+ type: object
23907
+ SyndicationConnectionOptions:
23908
+ additionalProperties: false
23909
+ description: SCHEMA-3.37.0. Per-kind choices. Each member is read only by its own kind and ignored for the others; an absent member means the default.
23910
+ properties:
23911
+ devto:
23912
+ additionalProperties: false
23913
+ description: "`publishAsDraft: true` saves each mirrored article on dev.to as a draft for the author to publish there; default `false` publishes it."
23914
+ properties:
23915
+ publishAsDraft:
23916
+ type: boolean
23917
+ required:
23918
+ - publishAsDraft
23919
+ type: object
23920
+ discord:
23921
+ additionalProperties: false
23922
+ description: "`ANNOUNCEMENT` posts one embed with the title, summary and live address (the default); `PASTE_CARD` posts a private working card with the text for each platform that is posted by hand."
23923
+ properties:
23924
+ style:
23925
+ enum:
23926
+ - ANNOUNCEMENT
23927
+ - PASTE_CARD
23928
+ type: string
23929
+ required:
23930
+ - style
23931
+ type: object
23932
+ type: object
23933
+ SyndicationConnectionStatus:
23934
+ 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.
23935
+ enum:
23936
+ - ACTIVE
23937
+ - PAUSED
23938
+ - NEEDS_ATTENTION
23939
+ type: string
23940
+ SyndicationCredential:
23941
+ description: "SCHEMA-3.37.0. What a connection needs to post, one shape per kind, discriminated by `kind`. A credential is only ever sent to Galascribe: no response carries it, no list, no read, no event."
23942
+ discriminator:
23943
+ mapping:
23944
+ bluesky: "#/components/schemas/SyndicationCredentialBluesky"
23945
+ devto: "#/components/schemas/SyndicationCredentialDevto"
23946
+ discord: "#/components/schemas/SyndicationCredentialDiscord"
23947
+ hashnode: "#/components/schemas/SyndicationCredentialHashnode"
23948
+ mastodon: "#/components/schemas/SyndicationCredentialMastodon"
23949
+ telegram: "#/components/schemas/SyndicationCredentialTelegram"
23950
+ propertyName: kind
23951
+ oneOf:
23952
+ - $ref: "#/components/schemas/SyndicationCredentialDevto"
23953
+ - $ref: "#/components/schemas/SyndicationCredentialHashnode"
23954
+ - $ref: "#/components/schemas/SyndicationCredentialBluesky"
23955
+ - $ref: "#/components/schemas/SyndicationCredentialMastodon"
23956
+ - $ref: "#/components/schemas/SyndicationCredentialTelegram"
23957
+ - $ref: "#/components/schemas/SyndicationCredentialDiscord"
23958
+ SyndicationCredentialBluesky:
23959
+ additionalProperties: false
23960
+ description: SCHEMA-3.37.0. A Bluesky handle and app password.
23961
+ properties:
23962
+ appPassword:
23963
+ description: A Bluesky app password, never the account password.
23964
+ maxLength: 64
23965
+ minLength: 8
23966
+ type: string
23967
+ writeOnly: true
23968
+ handle:
23969
+ description: The account handle without the leading `@`, for example `name.bsky.social`.
23970
+ maxLength: 253
23971
+ minLength: 3
23972
+ pattern: ^[A-Za-z0-9]([A-Za-z0-9.-]*[A-Za-z0-9])?$
23973
+ type: string
23974
+ kind:
23975
+ pattern: ^bluesky$
23976
+ type: string
23977
+ x-gala-const: bluesky
23978
+ required:
23979
+ - kind
23980
+ - handle
23981
+ - appPassword
23982
+ type: object
23983
+ SyndicationCredentialDevto:
23984
+ additionalProperties: false
23985
+ description: SCHEMA-3.37.0. A dev.to credential.
23986
+ properties:
23987
+ apiKey:
23988
+ description: The dev.to API key.
23989
+ maxLength: 200
23990
+ minLength: 8
23991
+ type: string
23992
+ writeOnly: true
23993
+ kind:
23994
+ pattern: ^devto$
23995
+ type: string
23996
+ x-gala-const: devto
23997
+ required:
23998
+ - kind
23999
+ - apiKey
24000
+ type: object
24001
+ SyndicationCredentialDiscord:
24002
+ additionalProperties: false
24003
+ description: SCHEMA-3.37.0. A Discord channel webhook.
24004
+ properties:
24005
+ kind:
24006
+ pattern: ^discord$
24007
+ type: string
24008
+ x-gala-const: discord
24009
+ webhookUrl:
24010
+ description: The channel webhook address from Discord.
24011
+ format: uri
24012
+ maxLength: 300
24013
+ minLength: 40
24014
+ pattern: ^https://(?:discord|discordapp)\.com/api/webhooks/[0-9]+/[A-Za-z0-9_-]+$
24015
+ type: string
24016
+ writeOnly: true
24017
+ required:
24018
+ - kind
24019
+ - webhookUrl
24020
+ type: object
24021
+ SyndicationCredentialHashnode:
24022
+ additionalProperties: false
24023
+ description: SCHEMA-3.37.0. A Hashnode credential and the publication it posts to.
24024
+ properties:
24025
+ kind:
24026
+ pattern: ^hashnode$
24027
+ type: string
24028
+ x-gala-const: hashnode
24029
+ publicationHost:
24030
+ description: The host of the Hashnode publication to post to, for example `name.hashnode.dev` or the publication's own domain.
24031
+ maxLength: 253
24032
+ minLength: 3
24033
+ pattern: ^[A-Za-z0-9]([A-Za-z0-9.-]*[A-Za-z0-9])?$
24034
+ type: string
24035
+ token:
24036
+ description: The Hashnode personal access token.
24037
+ maxLength: 200
24038
+ minLength: 8
24039
+ type: string
24040
+ writeOnly: true
24041
+ required:
24042
+ - kind
24043
+ - token
24044
+ - publicationHost
24045
+ type: object
24046
+ SyndicationCredentialMastodon:
24047
+ additionalProperties: false
24048
+ description: SCHEMA-3.37.0. A Mastodon server and access token.
24049
+ properties:
24050
+ accessToken:
24051
+ description: An access token with the `write:statuses` scope.
24052
+ maxLength: 500
24053
+ minLength: 8
24054
+ type: string
24055
+ writeOnly: true
24056
+ instance:
24057
+ description: "The address of the Mastodon server: `https` and a host, nothing else."
24058
+ maxLength: 255
24059
+ minLength: 9
24060
+ pattern: ^https://[^\s/?#@]+$
24061
+ type: string
24062
+ kind:
24063
+ pattern: ^mastodon$
24064
+ type: string
24065
+ x-gala-const: mastodon
24066
+ required:
24067
+ - kind
24068
+ - instance
24069
+ - accessToken
24070
+ type: object
24071
+ SyndicationCredentialTelegram:
24072
+ additionalProperties: false
24073
+ description: SCHEMA-3.37.0. A Telegram bot token and the channel it posts to.
24074
+ properties:
24075
+ botToken:
24076
+ description: The bot token from BotFather.
24077
+ maxLength: 120
24078
+ minLength: 20
24079
+ pattern: ^[0-9]{5,20}:[A-Za-z0-9_-]{20,80}$
24080
+ type: string
24081
+ writeOnly: true
24082
+ channel:
24083
+ description: The public channel the bot posts to, `@` and the channel name.
24084
+ maxLength: 33
24085
+ minLength: 6
24086
+ pattern: ^@[A-Za-z][A-Za-z0-9_]{4,31}$
24087
+ type: string
24088
+ kind:
24089
+ pattern: ^telegram$
24090
+ type: string
24091
+ x-gala-const: telegram
24092
+ required:
24093
+ - kind
24094
+ - botToken
24095
+ - channel
24096
+ type: object
24097
+ SyndicationDelivery:
24098
+ additionalProperties: false
24099
+ 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`.
24100
+ properties:
24101
+ accountLabel:
24102
+ maxLength: 200
24103
+ minLength: 1
24104
+ type: string
24105
+ attemptCount:
24106
+ minimum: 0
24107
+ type: integer
24108
+ connectionId:
24109
+ format: uuid
24110
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
24111
+ type: string
24112
+ contentId:
24113
+ format: uuid
24114
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
24115
+ type: string
24116
+ contentTitle:
24117
+ maxLength: 300
24118
+ minLength: 1
24119
+ type: string
24120
+ createdAt:
24121
+ $ref: "#/components/schemas/PortableProblemRfc3339"
24122
+ externalUrl:
24123
+ $ref: "#/components/schemas/AudienceUrl"
24124
+ failure:
24125
+ $ref: "#/components/schemas/SyndicationDeliveryFailure"
24126
+ id:
24127
+ format: uuid
24128
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
24129
+ type: string
24130
+ kind:
24131
+ $ref: "#/components/schemas/SyndicationConnectionKind"
24132
+ liveUrl:
24133
+ $ref: "#/components/schemas/AudienceUrl"
24134
+ nextAttemptAt:
24135
+ $ref: "#/components/schemas/PortableProblemRfc3339"
24136
+ requestedBy:
24137
+ $ref: "#/components/schemas/SyndicationDeliveryRequester"
24138
+ status:
24139
+ $ref: "#/components/schemas/SyndicationDeliveryStatus"
24140
+ updatedAt:
24141
+ $ref: "#/components/schemas/PortableProblemRfc3339"
24142
+ required:
24143
+ - id
24144
+ - kind
24145
+ - accountLabel
24146
+ - contentId
24147
+ - contentTitle
24148
+ - liveUrl
24149
+ - status
24150
+ - requestedBy
24151
+ - attemptCount
24152
+ - createdAt
24153
+ - updatedAt
24154
+ type: object
24155
+ SyndicationDeliveryFailure:
24156
+ additionalProperties: false
24157
+ description: SCHEMA-3.37.0. Why a delivery failed. `message` is the platform's own words when it gave any, else Galascribe's.
24158
+ properties:
24159
+ code:
24160
+ 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`.
24161
+ maxLength: 64
24162
+ minLength: 1
24163
+ pattern: ^[A-Z][A-Z0-9_]*$
24164
+ type: string
24165
+ message:
24166
+ maxLength: 500
24167
+ minLength: 1
24168
+ type: string
24169
+ required:
24170
+ - code
24171
+ - message
24172
+ type: object
24173
+ SyndicationDeliveryList:
24174
+ additionalProperties: false
24175
+ description: SCHEMA-3.37.0. The newest 50 deliveries of the publication, newest first.
24176
+ properties:
24177
+ deliveries:
24178
+ items:
24179
+ $ref: "#/components/schemas/SyndicationDelivery"
24180
+ maxItems: 50
24181
+ type: array
24182
+ required:
24183
+ - deliveries
24184
+ type: object
24185
+ SyndicationDeliveryRequester:
24186
+ description: SCHEMA-3.37.0. `ANNOUNCEMENT` was filed automatically when a post went live; `MANUAL` was filed by a person for an earlier post.
24187
+ enum:
24188
+ - ANNOUNCEMENT
24189
+ - MANUAL
24190
+ type: string
24191
+ SyndicationDeliveryStatus:
24192
+ description: SCHEMA-3.37.0. `PENDING` waits for its first attempt; `RETRYING` failed for a reason that may pass and will be tried again at `nextAttemptAt`; `SENT` reached the platform; `FAILED` will not be tried again; `SKIPPED` was not posted because the connection was not `ACTIVE`.
24193
+ enum:
24194
+ - PENDING
24195
+ - SENT
24196
+ - RETRYING
24197
+ - FAILED
24198
+ - SKIPPED
24199
+ type: string
24200
+ SyndicationLastDelivery:
24201
+ additionalProperties: false
24202
+ description: SCHEMA-3.37.0. The newest delivery of a connection, so the list can show how it is doing without a second read.
24203
+ properties:
24204
+ at:
24205
+ $ref: "#/components/schemas/PortableProblemRfc3339"
24206
+ deliveryId:
24207
+ format: uuid
24208
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
24209
+ type: string
24210
+ status:
24211
+ $ref: "#/components/schemas/SyndicationDeliveryStatus"
24212
+ required:
24213
+ - deliveryId
24214
+ - status
24215
+ - at
24216
+ type: object
24217
+ SyndicationManualSend:
24218
+ additionalProperties: false
24219
+ description: SCHEMA-3.37.0. File a delivery of an earlier live post to the chosen connections. `contentId` must name a post with a live announcement (`409 SYNDICATION_POST_NOT_LIVE` otherwise).
24220
+ properties:
24221
+ connectionIds:
24222
+ items:
24223
+ format: uuid
24224
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
24225
+ type: string
24226
+ maxItems: 12
24227
+ minItems: 1
24228
+ type: array
24229
+ uniqueItems: true
24230
+ contentId:
24231
+ format: uuid
24232
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
24233
+ type: string
24234
+ required:
24235
+ - contentId
24236
+ - connectionIds
24237
+ type: object
24238
+ SyndicationReplaceCredential:
24239
+ additionalProperties: false
24240
+ description: SCHEMA-3.37.0. A new credential for an existing connection. `credential.kind` must equal the connection's kind.
24241
+ properties:
24242
+ credential:
24243
+ $ref: "#/components/schemas/SyndicationCredential"
24244
+ required:
24245
+ - credential
24246
+ type: object
23735
24247
  VerificationPlanEntry:
23736
24248
  additionalProperties: false
23737
24249
  properties:
@@ -64212,6 +64724,2995 @@ paths:
64212
64724
  - NONE
64213
64725
  x-gala-success-category: async
64214
64726
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
64727
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections:
64728
+ get:
64729
+ description: The platforms this publication announces its live posts to, oldest first, with how each is doing. Needs `publication.view`. A credential is never part of the answer.
64730
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnections
64731
+ parameters:
64732
+ - $ref: "#/components/parameters/XCorrelationId"
64733
+ - example: 018f0000-0000-7000-8000-000000000001
64734
+ in: path
64735
+ name: organizationId
64736
+ required: true
64737
+ schema:
64738
+ format: uuid
64739
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
64740
+ type: string
64741
+ - example: 018f0000-0000-7000-8000-000000000001
64742
+ in: path
64743
+ name: publicationId
64744
+ required: true
64745
+ schema:
64746
+ format: uuid
64747
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
64748
+ type: string
64749
+ responses:
64750
+ "200":
64751
+ content:
64752
+ application/json:
64753
+ examples:
64754
+ nominal:
64755
+ summary: Nominal successful response
64756
+ value:
64757
+ connections:
64758
+ - accountLabel: "@example.bsky.social"
64759
+ createdAt: "2026-11-05T12:00:00.000Z"
64760
+ id: 018f0000-0000-7000-8000-000000000001
64761
+ kind: bluesky
64762
+ lastDelivery:
64763
+ at: "2026-11-05T12:00:00.000Z"
64764
+ deliveryId: 018f0000-0000-7000-8000-000000000002
64765
+ status: SENT
64766
+ options: {}
64767
+ status: ACTIVE
64768
+ - accountLabel: example.hashnode.dev
64769
+ attention:
64770
+ code: CREDENTIAL_REJECTED
64771
+ message: Hashnode rejected the token. Paste a new one.
64772
+ since: "2026-11-05T12:00:00.000Z"
64773
+ createdAt: "2026-11-05T12:00:00.000Z"
64774
+ id: 018f0000-0000-7000-8000-000000000002
64775
+ kind: hashnode
64776
+ lastDelivery:
64777
+ at: "2026-11-05T12:00:00.000Z"
64778
+ deliveryId: 018f0000-0000-7000-8000-000000000002
64779
+ status: SENT
64780
+ options: {}
64781
+ status: NEEDS_ATTENTION
64782
+ schema:
64783
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsResponse"
64784
+ description: list syndication connections succeeded
64785
+ headers:
64786
+ Cache-Control:
64787
+ $ref: "#/components/headers/CacheControlNoStore"
64788
+ X-Correlation-Id:
64789
+ $ref: "#/components/headers/XCorrelationId"
64790
+ "400":
64791
+ content:
64792
+ application/problem+json:
64793
+ examples:
64794
+ VALIDATION_FAILED:
64795
+ summary: VALIDATION_FAILED
64796
+ value:
64797
+ code: VALIDATION_FAILED
64798
+ correlationId: 018f0000-0000-7000-8000-000000000001
64799
+ detail: See the operation contract.
64800
+ errors: []
64801
+ retryable: false
64802
+ schemaId: urn:gala:schema:problem:2.0.0
64803
+ schemaVersion: 2.0.0
64804
+ status: 400
64805
+ title: VALIDATION_FAILED
64806
+ type: urn:gala:problem:validation-failed
64807
+ schema:
64808
+ $ref: "#/components/schemas/Problem"
64809
+ description: VALIDATION_FAILED
64810
+ headers:
64811
+ Cache-Control:
64812
+ $ref: "#/components/headers/CacheControlNoStore"
64813
+ X-Correlation-Id:
64814
+ $ref: "#/components/headers/XCorrelationId"
64815
+ x-gala-problem-codes:
64816
+ - VALIDATION_FAILED
64817
+ "401":
64818
+ content:
64819
+ application/problem+json:
64820
+ examples:
64821
+ AUTHENTICATION_REQUIRED:
64822
+ summary: AUTHENTICATION_REQUIRED
64823
+ value:
64824
+ code: AUTHENTICATION_REQUIRED
64825
+ correlationId: 018f0000-0000-7000-8000-000000000001
64826
+ detail: See the operation contract.
64827
+ errors: []
64828
+ retryable: false
64829
+ schemaId: urn:gala:schema:problem:2.0.0
64830
+ schemaVersion: 2.0.0
64831
+ status: 401
64832
+ title: AUTHENTICATION_REQUIRED
64833
+ type: urn:gala:problem:authentication-required
64834
+ schema:
64835
+ $ref: "#/components/schemas/Problem"
64836
+ description: AUTHENTICATION_REQUIRED
64837
+ headers:
64838
+ Cache-Control:
64839
+ $ref: "#/components/headers/CacheControlNoStore"
64840
+ X-Correlation-Id:
64841
+ $ref: "#/components/headers/XCorrelationId"
64842
+ x-gala-problem-codes:
64843
+ - AUTHENTICATION_REQUIRED
64844
+ "403":
64845
+ content:
64846
+ application/problem+json:
64847
+ examples:
64848
+ AUTHORIZATION_DENIED:
64849
+ summary: AUTHORIZATION_DENIED
64850
+ value:
64851
+ code: AUTHORIZATION_DENIED
64852
+ correlationId: 018f0000-0000-7000-8000-000000000001
64853
+ detail: See the operation contract.
64854
+ errors: []
64855
+ retryable: false
64856
+ schemaId: urn:gala:schema:problem:2.0.0
64857
+ schemaVersion: 2.0.0
64858
+ status: 403
64859
+ title: AUTHORIZATION_DENIED
64860
+ type: urn:gala:problem:authorization-denied
64861
+ schema:
64862
+ $ref: "#/components/schemas/Problem"
64863
+ description: AUTHORIZATION_DENIED
64864
+ headers:
64865
+ Cache-Control:
64866
+ $ref: "#/components/headers/CacheControlNoStore"
64867
+ X-Correlation-Id:
64868
+ $ref: "#/components/headers/XCorrelationId"
64869
+ x-gala-problem-codes:
64870
+ - AUTHORIZATION_DENIED
64871
+ "404":
64872
+ content:
64873
+ application/problem+json:
64874
+ examples:
64875
+ RESOURCE_NOT_FOUND:
64876
+ summary: RESOURCE_NOT_FOUND
64877
+ value:
64878
+ code: RESOURCE_NOT_FOUND
64879
+ correlationId: 018f0000-0000-7000-8000-000000000001
64880
+ detail: See the operation contract.
64881
+ errors: []
64882
+ retryable: false
64883
+ schemaId: urn:gala:schema:problem:2.0.0
64884
+ schemaVersion: 2.0.0
64885
+ status: 404
64886
+ title: RESOURCE_NOT_FOUND
64887
+ type: urn:gala:problem:resource-not-found
64888
+ schema:
64889
+ $ref: "#/components/schemas/Problem"
64890
+ description: RESOURCE_NOT_FOUND
64891
+ headers:
64892
+ Cache-Control:
64893
+ $ref: "#/components/headers/CacheControlNoStore"
64894
+ X-Correlation-Id:
64895
+ $ref: "#/components/headers/XCorrelationId"
64896
+ x-gala-problem-codes:
64897
+ - RESOURCE_NOT_FOUND
64898
+ security:
64899
+ - browserSession: []
64900
+ summary: list syndication connections
64901
+ tags:
64902
+ - syndication
64903
+ x-gala-activation-gate: MVP
64904
+ x-gala-activation-guards:
64905
+ - NONE
64906
+ x-gala-capability-key: publication.view
64907
+ x-gala-concurrency: authorization-and-publication-epochs
64908
+ x-gala-conditional-capabilities: []
64909
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
64910
+ x-gala-nullability: required-and-nullable-are-explicit
64911
+ x-gala-purpose: list syndication connections
64912
+ x-gala-reachable-problems:
64913
+ - AUTHENTICATION_REQUIRED
64914
+ - AUTHORIZATION_DENIED
64915
+ - RESOURCE_NOT_FOUND
64916
+ - VALIDATION_FAILED
64917
+ x-gala-replay-identity: safe-query
64918
+ x-gala-state-guards:
64919
+ - NONE
64920
+ x-gala-success-category: query
64921
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
64922
+ post:
64923
+ description: Connects a platform. Galascribe checks the credential with the platform first and saves it sealed only when the platform accepts it; the answer carries the account name the platform reported, never the credential. Needs `publication.settings.manage`. `422 SYNDICATION_CREDENTIAL_REJECTED` carries the platform's own message in `platformMessage`; `503 SYNDICATION_PLATFORM_UNAVAILABLE` when the platform could not be reached; `409 SYNDICATION_CONNECTION_LIMIT` at 12 connections; `429 RATE_LIMITED` after too many checks.
64924
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnections
64925
+ parameters:
64926
+ - $ref: "#/components/parameters/XCorrelationId"
64927
+ - example: 018f0000-0000-7000-8000-000000000001
64928
+ in: path
64929
+ name: organizationId
64930
+ required: true
64931
+ schema:
64932
+ format: uuid
64933
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
64934
+ type: string
64935
+ - example: 018f0000-0000-7000-8000-000000000001
64936
+ in: path
64937
+ name: publicationId
64938
+ required: true
64939
+ schema:
64940
+ format: uuid
64941
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
64942
+ type: string
64943
+ - $ref: "#/components/parameters/IdempotencyKey"
64944
+ - $ref: "#/components/parameters/XCsrfToken"
64945
+ requestBody:
64946
+ content:
64947
+ application/json:
64948
+ examples:
64949
+ nominal:
64950
+ summary: Nominal valid request
64951
+ value:
64952
+ credential:
64953
+ appPassword: abcd-efgh-ijkl-mnop
64954
+ handle: example.bsky.social
64955
+ kind: bluesky
64956
+ kind: bluesky
64957
+ options: {}
64958
+ schema:
64959
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsRequest"
64960
+ required: true
64961
+ responses:
64962
+ "201":
64963
+ content:
64964
+ application/json:
64965
+ examples:
64966
+ nominal:
64967
+ summary: Nominal successful response
64968
+ value:
64969
+ accountLabel: "@example.bsky.social"
64970
+ createdAt: "2026-11-05T12:00:00.000Z"
64971
+ id: 018f0000-0000-7000-8000-000000000001
64972
+ kind: bluesky
64973
+ lastDelivery:
64974
+ at: "2026-11-05T12:00:00.000Z"
64975
+ deliveryId: 018f0000-0000-7000-8000-000000000002
64976
+ status: SENT
64977
+ options: {}
64978
+ status: ACTIVE
64979
+ schema:
64980
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsResponse"
64981
+ description: connect a syndication platform succeeded
64982
+ headers:
64983
+ Cache-Control:
64984
+ $ref: "#/components/headers/CacheControlNoStore"
64985
+ Location:
64986
+ $ref: "#/components/headers/Location"
64987
+ X-Correlation-Id:
64988
+ $ref: "#/components/headers/XCorrelationId"
64989
+ "400":
64990
+ content:
64991
+ application/problem+json:
64992
+ examples:
64993
+ REQUEST_FIELD_UNKNOWN:
64994
+ summary: REQUEST_FIELD_UNKNOWN
64995
+ value:
64996
+ code: REQUEST_FIELD_UNKNOWN
64997
+ correlationId: 018f0000-0000-7000-8000-000000000001
64998
+ detail: See the operation contract.
64999
+ errors: []
65000
+ retryable: false
65001
+ schemaId: urn:gala:schema:problem:2.0.0
65002
+ schemaVersion: 2.0.0
65003
+ status: 400
65004
+ title: REQUEST_FIELD_UNKNOWN
65005
+ type: urn:gala:problem:request-field-unknown
65006
+ VALIDATION_FAILED:
65007
+ summary: VALIDATION_FAILED
65008
+ value:
65009
+ code: VALIDATION_FAILED
65010
+ correlationId: 018f0000-0000-7000-8000-000000000001
65011
+ detail: See the operation contract.
65012
+ errors: []
65013
+ retryable: false
65014
+ schemaId: urn:gala:schema:problem:2.0.0
65015
+ schemaVersion: 2.0.0
65016
+ status: 400
65017
+ title: VALIDATION_FAILED
65018
+ type: urn:gala:problem:validation-failed
65019
+ schema:
65020
+ $ref: "#/components/schemas/Problem"
65021
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
65022
+ headers:
65023
+ Cache-Control:
65024
+ $ref: "#/components/headers/CacheControlNoStore"
65025
+ X-Correlation-Id:
65026
+ $ref: "#/components/headers/XCorrelationId"
65027
+ x-gala-problem-codes:
65028
+ - REQUEST_FIELD_UNKNOWN
65029
+ - VALIDATION_FAILED
65030
+ "401":
65031
+ content:
65032
+ application/problem+json:
65033
+ examples:
65034
+ AUTHENTICATION_REQUIRED:
65035
+ summary: AUTHENTICATION_REQUIRED
65036
+ value:
65037
+ code: AUTHENTICATION_REQUIRED
65038
+ correlationId: 018f0000-0000-7000-8000-000000000001
65039
+ detail: See the operation contract.
65040
+ errors: []
65041
+ retryable: false
65042
+ schemaId: urn:gala:schema:problem:2.0.0
65043
+ schemaVersion: 2.0.0
65044
+ status: 401
65045
+ title: AUTHENTICATION_REQUIRED
65046
+ type: urn:gala:problem:authentication-required
65047
+ schema:
65048
+ $ref: "#/components/schemas/Problem"
65049
+ description: AUTHENTICATION_REQUIRED
65050
+ headers:
65051
+ Cache-Control:
65052
+ $ref: "#/components/headers/CacheControlNoStore"
65053
+ X-Correlation-Id:
65054
+ $ref: "#/components/headers/XCorrelationId"
65055
+ x-gala-problem-codes:
65056
+ - AUTHENTICATION_REQUIRED
65057
+ "403":
65058
+ content:
65059
+ application/problem+json:
65060
+ examples:
65061
+ AUTHORIZATION_DENIED:
65062
+ summary: AUTHORIZATION_DENIED
65063
+ value:
65064
+ code: AUTHORIZATION_DENIED
65065
+ correlationId: 018f0000-0000-7000-8000-000000000001
65066
+ detail: See the operation contract.
65067
+ errors: []
65068
+ retryable: false
65069
+ schemaId: urn:gala:schema:problem:2.0.0
65070
+ schemaVersion: 2.0.0
65071
+ status: 403
65072
+ title: AUTHORIZATION_DENIED
65073
+ type: urn:gala:problem:authorization-denied
65074
+ schema:
65075
+ $ref: "#/components/schemas/Problem"
65076
+ description: AUTHORIZATION_DENIED
65077
+ headers:
65078
+ Cache-Control:
65079
+ $ref: "#/components/headers/CacheControlNoStore"
65080
+ X-Correlation-Id:
65081
+ $ref: "#/components/headers/XCorrelationId"
65082
+ x-gala-problem-codes:
65083
+ - AUTHORIZATION_DENIED
65084
+ "404":
65085
+ content:
65086
+ application/problem+json:
65087
+ examples:
65088
+ RESOURCE_NOT_FOUND:
65089
+ summary: RESOURCE_NOT_FOUND
65090
+ value:
65091
+ code: RESOURCE_NOT_FOUND
65092
+ correlationId: 018f0000-0000-7000-8000-000000000001
65093
+ detail: See the operation contract.
65094
+ errors: []
65095
+ retryable: false
65096
+ schemaId: urn:gala:schema:problem:2.0.0
65097
+ schemaVersion: 2.0.0
65098
+ status: 404
65099
+ title: RESOURCE_NOT_FOUND
65100
+ type: urn:gala:problem:resource-not-found
65101
+ schema:
65102
+ $ref: "#/components/schemas/Problem"
65103
+ description: RESOURCE_NOT_FOUND
65104
+ headers:
65105
+ Cache-Control:
65106
+ $ref: "#/components/headers/CacheControlNoStore"
65107
+ X-Correlation-Id:
65108
+ $ref: "#/components/headers/XCorrelationId"
65109
+ x-gala-problem-codes:
65110
+ - RESOURCE_NOT_FOUND
65111
+ "409":
65112
+ content:
65113
+ application/problem+json:
65114
+ examples:
65115
+ COMMAND_REPLAY_CONFLICT:
65116
+ summary: COMMAND_REPLAY_CONFLICT
65117
+ value:
65118
+ code: COMMAND_REPLAY_CONFLICT
65119
+ correlationId: 018f0000-0000-7000-8000-000000000001
65120
+ detail: See the operation contract.
65121
+ errors: []
65122
+ retryable: false
65123
+ schemaId: urn:gala:schema:problem:2.0.0
65124
+ schemaVersion: 2.0.0
65125
+ status: 409
65126
+ title: COMMAND_REPLAY_CONFLICT
65127
+ type: urn:gala:problem:command-replay-conflict
65128
+ SYNDICATION_CONNECTION_LIMIT:
65129
+ summary: SYNDICATION_CONNECTION_LIMIT
65130
+ value:
65131
+ code: SYNDICATION_CONNECTION_LIMIT
65132
+ correlationId: 018f0000-0000-7000-8000-000000000001
65133
+ detail: See the operation contract.
65134
+ errors: []
65135
+ retryable: false
65136
+ schemaId: urn:gala:schema:problem:2.0.0
65137
+ schemaVersion: 2.0.0
65138
+ status: 409
65139
+ title: SYNDICATION_CONNECTION_LIMIT
65140
+ type: urn:gala:problem:syndication-connection-limit
65141
+ schema:
65142
+ $ref: "#/components/schemas/Problem"
65143
+ description: COMMAND_REPLAY_CONFLICT, SYNDICATION_CONNECTION_LIMIT
65144
+ headers:
65145
+ Cache-Control:
65146
+ $ref: "#/components/headers/CacheControlNoStore"
65147
+ X-Correlation-Id:
65148
+ $ref: "#/components/headers/XCorrelationId"
65149
+ x-gala-problem-codes:
65150
+ - COMMAND_REPLAY_CONFLICT
65151
+ - SYNDICATION_CONNECTION_LIMIT
65152
+ "422":
65153
+ content:
65154
+ application/problem+json:
65155
+ examples:
65156
+ SYNDICATION_CREDENTIAL_REJECTED:
65157
+ summary: SYNDICATION_CREDENTIAL_REJECTED
65158
+ value:
65159
+ code: SYNDICATION_CREDENTIAL_REJECTED
65160
+ correlationId: 018f0000-0000-7000-8000-000000000001
65161
+ detail: See the operation contract.
65162
+ errors: []
65163
+ platformMessage: Bad credentials
65164
+ retryable: false
65165
+ schemaId: urn:gala:schema:problem:2.0.0
65166
+ schemaVersion: 2.0.0
65167
+ status: 422
65168
+ title: SYNDICATION_CREDENTIAL_REJECTED
65169
+ type: urn:gala:problem:syndication-credential-rejected
65170
+ schema:
65171
+ $ref: "#/components/schemas/Problem"
65172
+ description: SYNDICATION_CREDENTIAL_REJECTED
65173
+ headers:
65174
+ Cache-Control:
65175
+ $ref: "#/components/headers/CacheControlNoStore"
65176
+ X-Correlation-Id:
65177
+ $ref: "#/components/headers/XCorrelationId"
65178
+ x-gala-problem-codes:
65179
+ - SYNDICATION_CREDENTIAL_REJECTED
65180
+ "429":
65181
+ content:
65182
+ application/problem+json:
65183
+ examples:
65184
+ RATE_LIMITED:
65185
+ summary: RATE_LIMITED
65186
+ value:
65187
+ code: RATE_LIMITED
65188
+ correlationId: 018f0000-0000-7000-8000-000000000001
65189
+ detail: See the operation contract.
65190
+ errors: []
65191
+ retryable: true
65192
+ schemaId: urn:gala:schema:problem:2.0.0
65193
+ schemaVersion: 2.0.0
65194
+ status: 429
65195
+ title: RATE_LIMITED
65196
+ type: urn:gala:problem:rate-limited
65197
+ schema:
65198
+ $ref: "#/components/schemas/Problem"
65199
+ description: RATE_LIMITED
65200
+ headers:
65201
+ Cache-Control:
65202
+ $ref: "#/components/headers/CacheControlNoStore"
65203
+ Retry-After:
65204
+ $ref: "#/components/headers/RetryAfter"
65205
+ X-Correlation-Id:
65206
+ $ref: "#/components/headers/XCorrelationId"
65207
+ x-gala-problem-codes:
65208
+ - RATE_LIMITED
65209
+ "503":
65210
+ content:
65211
+ application/problem+json:
65212
+ examples:
65213
+ SYNDICATION_PLATFORM_UNAVAILABLE:
65214
+ summary: SYNDICATION_PLATFORM_UNAVAILABLE
65215
+ value:
65216
+ code: SYNDICATION_PLATFORM_UNAVAILABLE
65217
+ correlationId: 018f0000-0000-7000-8000-000000000001
65218
+ detail: See the operation contract.
65219
+ errors: []
65220
+ retryable: true
65221
+ schemaId: urn:gala:schema:problem:2.0.0
65222
+ schemaVersion: 2.0.0
65223
+ status: 503
65224
+ title: SYNDICATION_PLATFORM_UNAVAILABLE
65225
+ type: urn:gala:problem:syndication-platform-unavailable
65226
+ schema:
65227
+ $ref: "#/components/schemas/Problem"
65228
+ description: SYNDICATION_PLATFORM_UNAVAILABLE
65229
+ headers:
65230
+ Cache-Control:
65231
+ $ref: "#/components/headers/CacheControlNoStore"
65232
+ X-Correlation-Id:
65233
+ $ref: "#/components/headers/XCorrelationId"
65234
+ x-gala-problem-codes:
65235
+ - SYNDICATION_PLATFORM_UNAVAILABLE
65236
+ security:
65237
+ - browserSession: []
65238
+ summary: connect a syndication platform
65239
+ tags:
65240
+ - syndication
65241
+ x-gala-activation-gate: MVP
65242
+ x-gala-activation-guards:
65243
+ - NONE
65244
+ x-gala-capability-key: publication.settings.manage
65245
+ x-gala-concurrency: authorization-and-publication-epochs
65246
+ x-gala-conditional-capabilities: []
65247
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
65248
+ x-gala-nullability: required-and-nullable-are-explicit
65249
+ x-gala-purpose: connect a syndication platform
65250
+ x-gala-reachable-problems:
65251
+ - AUTHENTICATION_REQUIRED
65252
+ - AUTHORIZATION_DENIED
65253
+ - COMMAND_REPLAY_CONFLICT
65254
+ - RATE_LIMITED
65255
+ - REQUEST_FIELD_UNKNOWN
65256
+ - RESOURCE_NOT_FOUND
65257
+ - SYNDICATION_CONNECTION_LIMIT
65258
+ - SYNDICATION_CREDENTIAL_REJECTED
65259
+ - SYNDICATION_PLATFORM_UNAVAILABLE
65260
+ - VALIDATION_FAILED
65261
+ x-gala-replay-identity: idempotency-key
65262
+ x-gala-state-guards:
65263
+ - NONE
65264
+ x-gala-success-category: create
65265
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
65266
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/{connectionId}:
65267
+ delete:
65268
+ 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`.
65269
+ operationId: deleteOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionId
65270
+ parameters:
65271
+ - $ref: "#/components/parameters/XCorrelationId"
65272
+ - example: 018f0000-0000-7000-8000-000000000001
65273
+ in: path
65274
+ name: organizationId
65275
+ required: true
65276
+ schema:
65277
+ format: uuid
65278
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65279
+ type: string
65280
+ - example: 018f0000-0000-7000-8000-000000000001
65281
+ in: path
65282
+ name: publicationId
65283
+ required: true
65284
+ schema:
65285
+ format: uuid
65286
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65287
+ type: string
65288
+ - example: 018f0000-0000-7000-8000-000000000001
65289
+ in: path
65290
+ name: connectionId
65291
+ required: true
65292
+ schema:
65293
+ format: uuid
65294
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65295
+ type: string
65296
+ - $ref: "#/components/parameters/IdempotencyKey"
65297
+ - $ref: "#/components/parameters/XCsrfToken"
65298
+ responses:
65299
+ "204":
65300
+ description: remove a syndication connection succeeded
65301
+ headers:
65302
+ Cache-Control:
65303
+ $ref: "#/components/headers/CacheControlNoStore"
65304
+ X-Correlation-Id:
65305
+ $ref: "#/components/headers/XCorrelationId"
65306
+ "400":
65307
+ content:
65308
+ application/problem+json:
65309
+ examples:
65310
+ VALIDATION_FAILED:
65311
+ summary: VALIDATION_FAILED
65312
+ value:
65313
+ code: VALIDATION_FAILED
65314
+ correlationId: 018f0000-0000-7000-8000-000000000001
65315
+ detail: See the operation contract.
65316
+ errors: []
65317
+ retryable: false
65318
+ schemaId: urn:gala:schema:problem:2.0.0
65319
+ schemaVersion: 2.0.0
65320
+ status: 400
65321
+ title: VALIDATION_FAILED
65322
+ type: urn:gala:problem:validation-failed
65323
+ schema:
65324
+ $ref: "#/components/schemas/Problem"
65325
+ description: VALIDATION_FAILED
65326
+ headers:
65327
+ Cache-Control:
65328
+ $ref: "#/components/headers/CacheControlNoStore"
65329
+ X-Correlation-Id:
65330
+ $ref: "#/components/headers/XCorrelationId"
65331
+ x-gala-problem-codes:
65332
+ - VALIDATION_FAILED
65333
+ "401":
65334
+ content:
65335
+ application/problem+json:
65336
+ examples:
65337
+ AUTHENTICATION_REQUIRED:
65338
+ summary: AUTHENTICATION_REQUIRED
65339
+ value:
65340
+ code: AUTHENTICATION_REQUIRED
65341
+ correlationId: 018f0000-0000-7000-8000-000000000001
65342
+ detail: See the operation contract.
65343
+ errors: []
65344
+ retryable: false
65345
+ schemaId: urn:gala:schema:problem:2.0.0
65346
+ schemaVersion: 2.0.0
65347
+ status: 401
65348
+ title: AUTHENTICATION_REQUIRED
65349
+ type: urn:gala:problem:authentication-required
65350
+ schema:
65351
+ $ref: "#/components/schemas/Problem"
65352
+ description: AUTHENTICATION_REQUIRED
65353
+ headers:
65354
+ Cache-Control:
65355
+ $ref: "#/components/headers/CacheControlNoStore"
65356
+ X-Correlation-Id:
65357
+ $ref: "#/components/headers/XCorrelationId"
65358
+ x-gala-problem-codes:
65359
+ - AUTHENTICATION_REQUIRED
65360
+ "403":
65361
+ content:
65362
+ application/problem+json:
65363
+ examples:
65364
+ AUTHORIZATION_DENIED:
65365
+ summary: AUTHORIZATION_DENIED
65366
+ value:
65367
+ code: AUTHORIZATION_DENIED
65368
+ correlationId: 018f0000-0000-7000-8000-000000000001
65369
+ detail: See the operation contract.
65370
+ errors: []
65371
+ retryable: false
65372
+ schemaId: urn:gala:schema:problem:2.0.0
65373
+ schemaVersion: 2.0.0
65374
+ status: 403
65375
+ title: AUTHORIZATION_DENIED
65376
+ type: urn:gala:problem:authorization-denied
65377
+ schema:
65378
+ $ref: "#/components/schemas/Problem"
65379
+ description: AUTHORIZATION_DENIED
65380
+ headers:
65381
+ Cache-Control:
65382
+ $ref: "#/components/headers/CacheControlNoStore"
65383
+ X-Correlation-Id:
65384
+ $ref: "#/components/headers/XCorrelationId"
65385
+ x-gala-problem-codes:
65386
+ - AUTHORIZATION_DENIED
65387
+ "404":
65388
+ content:
65389
+ application/problem+json:
65390
+ examples:
65391
+ RESOURCE_NOT_FOUND:
65392
+ summary: RESOURCE_NOT_FOUND
65393
+ value:
65394
+ code: RESOURCE_NOT_FOUND
65395
+ correlationId: 018f0000-0000-7000-8000-000000000001
65396
+ detail: See the operation contract.
65397
+ errors: []
65398
+ retryable: false
65399
+ schemaId: urn:gala:schema:problem:2.0.0
65400
+ schemaVersion: 2.0.0
65401
+ status: 404
65402
+ title: RESOURCE_NOT_FOUND
65403
+ type: urn:gala:problem:resource-not-found
65404
+ SYNDICATION_CONNECTION_NOT_FOUND:
65405
+ summary: SYNDICATION_CONNECTION_NOT_FOUND
65406
+ value:
65407
+ code: SYNDICATION_CONNECTION_NOT_FOUND
65408
+ correlationId: 018f0000-0000-7000-8000-000000000001
65409
+ detail: See the operation contract.
65410
+ errors: []
65411
+ retryable: false
65412
+ schemaId: urn:gala:schema:problem:2.0.0
65413
+ schemaVersion: 2.0.0
65414
+ status: 404
65415
+ title: SYNDICATION_CONNECTION_NOT_FOUND
65416
+ type: urn:gala:problem:syndication-connection-not-found
65417
+ schema:
65418
+ $ref: "#/components/schemas/Problem"
65419
+ description: RESOURCE_NOT_FOUND, SYNDICATION_CONNECTION_NOT_FOUND
65420
+ headers:
65421
+ Cache-Control:
65422
+ $ref: "#/components/headers/CacheControlNoStore"
65423
+ X-Correlation-Id:
65424
+ $ref: "#/components/headers/XCorrelationId"
65425
+ x-gala-problem-codes:
65426
+ - RESOURCE_NOT_FOUND
65427
+ - SYNDICATION_CONNECTION_NOT_FOUND
65428
+ "409":
65429
+ content:
65430
+ application/problem+json:
65431
+ examples:
65432
+ COMMAND_REPLAY_CONFLICT:
65433
+ summary: COMMAND_REPLAY_CONFLICT
65434
+ value:
65435
+ code: COMMAND_REPLAY_CONFLICT
65436
+ correlationId: 018f0000-0000-7000-8000-000000000001
65437
+ detail: See the operation contract.
65438
+ errors: []
65439
+ retryable: false
65440
+ schemaId: urn:gala:schema:problem:2.0.0
65441
+ schemaVersion: 2.0.0
65442
+ status: 409
65443
+ title: COMMAND_REPLAY_CONFLICT
65444
+ type: urn:gala:problem:command-replay-conflict
65445
+ schema:
65446
+ $ref: "#/components/schemas/Problem"
65447
+ description: COMMAND_REPLAY_CONFLICT
65448
+ headers:
65449
+ Cache-Control:
65450
+ $ref: "#/components/headers/CacheControlNoStore"
65451
+ X-Correlation-Id:
65452
+ $ref: "#/components/headers/XCorrelationId"
65453
+ x-gala-problem-codes:
65454
+ - COMMAND_REPLAY_CONFLICT
65455
+ security:
65456
+ - browserSession: []
65457
+ summary: remove a syndication connection
65458
+ tags:
65459
+ - syndication
65460
+ x-gala-activation-gate: MVP
65461
+ x-gala-activation-guards:
65462
+ - NONE
65463
+ x-gala-capability-key: publication.settings.manage
65464
+ x-gala-concurrency: authorization-and-publication-epochs
65465
+ x-gala-conditional-capabilities: []
65466
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
65467
+ x-gala-nullability: required-and-nullable-are-explicit
65468
+ x-gala-purpose: remove a syndication connection
65469
+ x-gala-reachable-problems:
65470
+ - AUTHENTICATION_REQUIRED
65471
+ - AUTHORIZATION_DENIED
65472
+ - COMMAND_REPLAY_CONFLICT
65473
+ - RESOURCE_NOT_FOUND
65474
+ - SYNDICATION_CONNECTION_NOT_FOUND
65475
+ - VALIDATION_FAILED
65476
+ x-gala-replay-identity: idempotency-key
65477
+ x-gala-state-guards:
65478
+ - NONE
65479
+ x-gala-success-category: delete
65480
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
65481
+ get:
65482
+ description: One connection with its status, the reason it needs attention when it does, its options and its newest delivery. Needs `publication.view`.
65483
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionId
65484
+ parameters:
65485
+ - $ref: "#/components/parameters/XCorrelationId"
65486
+ - example: 018f0000-0000-7000-8000-000000000001
65487
+ in: path
65488
+ name: organizationId
65489
+ required: true
65490
+ schema:
65491
+ format: uuid
65492
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65493
+ type: string
65494
+ - example: 018f0000-0000-7000-8000-000000000001
65495
+ in: path
65496
+ name: publicationId
65497
+ required: true
65498
+ schema:
65499
+ format: uuid
65500
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65501
+ type: string
65502
+ - example: 018f0000-0000-7000-8000-000000000001
65503
+ in: path
65504
+ name: connectionId
65505
+ required: true
65506
+ schema:
65507
+ format: uuid
65508
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65509
+ type: string
65510
+ responses:
65511
+ "200":
65512
+ content:
65513
+ application/json:
65514
+ examples:
65515
+ nominal:
65516
+ summary: Nominal successful response
65517
+ value:
65518
+ accountLabel: "@example.bsky.social"
65519
+ createdAt: "2026-11-05T12:00:00.000Z"
65520
+ id: 018f0000-0000-7000-8000-000000000001
65521
+ kind: bluesky
65522
+ lastDelivery:
65523
+ at: "2026-11-05T12:00:00.000Z"
65524
+ deliveryId: 018f0000-0000-7000-8000-000000000002
65525
+ status: SENT
65526
+ options: {}
65527
+ status: ACTIVE
65528
+ schema:
65529
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdResponse"
65530
+ description: read one syndication connection succeeded
65531
+ headers:
65532
+ Cache-Control:
65533
+ $ref: "#/components/headers/CacheControlNoStore"
65534
+ X-Correlation-Id:
65535
+ $ref: "#/components/headers/XCorrelationId"
65536
+ "400":
65537
+ content:
65538
+ application/problem+json:
65539
+ examples:
65540
+ VALIDATION_FAILED:
65541
+ summary: VALIDATION_FAILED
65542
+ value:
65543
+ code: VALIDATION_FAILED
65544
+ correlationId: 018f0000-0000-7000-8000-000000000001
65545
+ detail: See the operation contract.
65546
+ errors: []
65547
+ retryable: false
65548
+ schemaId: urn:gala:schema:problem:2.0.0
65549
+ schemaVersion: 2.0.0
65550
+ status: 400
65551
+ title: VALIDATION_FAILED
65552
+ type: urn:gala:problem:validation-failed
65553
+ schema:
65554
+ $ref: "#/components/schemas/Problem"
65555
+ description: VALIDATION_FAILED
65556
+ headers:
65557
+ Cache-Control:
65558
+ $ref: "#/components/headers/CacheControlNoStore"
65559
+ X-Correlation-Id:
65560
+ $ref: "#/components/headers/XCorrelationId"
65561
+ x-gala-problem-codes:
65562
+ - VALIDATION_FAILED
65563
+ "401":
65564
+ content:
65565
+ application/problem+json:
65566
+ examples:
65567
+ AUTHENTICATION_REQUIRED:
65568
+ summary: AUTHENTICATION_REQUIRED
65569
+ value:
65570
+ code: AUTHENTICATION_REQUIRED
65571
+ correlationId: 018f0000-0000-7000-8000-000000000001
65572
+ detail: See the operation contract.
65573
+ errors: []
65574
+ retryable: false
65575
+ schemaId: urn:gala:schema:problem:2.0.0
65576
+ schemaVersion: 2.0.0
65577
+ status: 401
65578
+ title: AUTHENTICATION_REQUIRED
65579
+ type: urn:gala:problem:authentication-required
65580
+ schema:
65581
+ $ref: "#/components/schemas/Problem"
65582
+ description: AUTHENTICATION_REQUIRED
65583
+ headers:
65584
+ Cache-Control:
65585
+ $ref: "#/components/headers/CacheControlNoStore"
65586
+ X-Correlation-Id:
65587
+ $ref: "#/components/headers/XCorrelationId"
65588
+ x-gala-problem-codes:
65589
+ - AUTHENTICATION_REQUIRED
65590
+ "403":
65591
+ content:
65592
+ application/problem+json:
65593
+ examples:
65594
+ AUTHORIZATION_DENIED:
65595
+ summary: AUTHORIZATION_DENIED
65596
+ value:
65597
+ code: AUTHORIZATION_DENIED
65598
+ correlationId: 018f0000-0000-7000-8000-000000000001
65599
+ detail: See the operation contract.
65600
+ errors: []
65601
+ retryable: false
65602
+ schemaId: urn:gala:schema:problem:2.0.0
65603
+ schemaVersion: 2.0.0
65604
+ status: 403
65605
+ title: AUTHORIZATION_DENIED
65606
+ type: urn:gala:problem:authorization-denied
65607
+ schema:
65608
+ $ref: "#/components/schemas/Problem"
65609
+ description: AUTHORIZATION_DENIED
65610
+ headers:
65611
+ Cache-Control:
65612
+ $ref: "#/components/headers/CacheControlNoStore"
65613
+ X-Correlation-Id:
65614
+ $ref: "#/components/headers/XCorrelationId"
65615
+ x-gala-problem-codes:
65616
+ - AUTHORIZATION_DENIED
65617
+ "404":
65618
+ content:
65619
+ application/problem+json:
65620
+ examples:
65621
+ RESOURCE_NOT_FOUND:
65622
+ summary: RESOURCE_NOT_FOUND
65623
+ value:
65624
+ code: RESOURCE_NOT_FOUND
65625
+ correlationId: 018f0000-0000-7000-8000-000000000001
65626
+ detail: See the operation contract.
65627
+ errors: []
65628
+ retryable: false
65629
+ schemaId: urn:gala:schema:problem:2.0.0
65630
+ schemaVersion: 2.0.0
65631
+ status: 404
65632
+ title: RESOURCE_NOT_FOUND
65633
+ type: urn:gala:problem:resource-not-found
65634
+ SYNDICATION_CONNECTION_NOT_FOUND:
65635
+ summary: SYNDICATION_CONNECTION_NOT_FOUND
65636
+ value:
65637
+ code: SYNDICATION_CONNECTION_NOT_FOUND
65638
+ correlationId: 018f0000-0000-7000-8000-000000000001
65639
+ detail: See the operation contract.
65640
+ errors: []
65641
+ retryable: false
65642
+ schemaId: urn:gala:schema:problem:2.0.0
65643
+ schemaVersion: 2.0.0
65644
+ status: 404
65645
+ title: SYNDICATION_CONNECTION_NOT_FOUND
65646
+ type: urn:gala:problem:syndication-connection-not-found
65647
+ schema:
65648
+ $ref: "#/components/schemas/Problem"
65649
+ description: RESOURCE_NOT_FOUND, SYNDICATION_CONNECTION_NOT_FOUND
65650
+ headers:
65651
+ Cache-Control:
65652
+ $ref: "#/components/headers/CacheControlNoStore"
65653
+ X-Correlation-Id:
65654
+ $ref: "#/components/headers/XCorrelationId"
65655
+ x-gala-problem-codes:
65656
+ - RESOURCE_NOT_FOUND
65657
+ - SYNDICATION_CONNECTION_NOT_FOUND
65658
+ security:
65659
+ - browserSession: []
65660
+ summary: read one syndication connection
65661
+ tags:
65662
+ - syndication
65663
+ x-gala-activation-gate: MVP
65664
+ x-gala-activation-guards:
65665
+ - NONE
65666
+ x-gala-capability-key: publication.view
65667
+ x-gala-concurrency: authorization-and-publication-epochs
65668
+ x-gala-conditional-capabilities: []
65669
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
65670
+ x-gala-nullability: required-and-nullable-are-explicit
65671
+ x-gala-purpose: read one syndication connection
65672
+ x-gala-reachable-problems:
65673
+ - AUTHENTICATION_REQUIRED
65674
+ - AUTHORIZATION_DENIED
65675
+ - RESOURCE_NOT_FOUND
65676
+ - SYNDICATION_CONNECTION_NOT_FOUND
65677
+ - VALIDATION_FAILED
65678
+ x-gala-replay-identity: safe-query
65679
+ x-gala-state-guards:
65680
+ - NONE
65681
+ x-gala-success-category: query
65682
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
65683
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/{connectionId}:pause:
65684
+ post:
65685
+ description: Stops posting to this platform. Deliveries filed while it is paused are recorded as `SKIPPED`; a post already `RETRYING` is skipped at its next attempt. Pausing a paused connection changes nothing. Needs `publication.settings.manage`.
65686
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdPause
65687
+ parameters:
65688
+ - $ref: "#/components/parameters/XCorrelationId"
65689
+ - example: 018f0000-0000-7000-8000-000000000001
65690
+ in: path
65691
+ name: organizationId
65692
+ required: true
65693
+ schema:
65694
+ format: uuid
65695
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65696
+ type: string
65697
+ - example: 018f0000-0000-7000-8000-000000000001
65698
+ in: path
65699
+ name: publicationId
65700
+ required: true
65701
+ schema:
65702
+ format: uuid
65703
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65704
+ type: string
65705
+ - example: 018f0000-0000-7000-8000-000000000001
65706
+ in: path
65707
+ name: connectionId
65708
+ required: true
65709
+ schema:
65710
+ format: uuid
65711
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65712
+ type: string
65713
+ - $ref: "#/components/parameters/IdempotencyKey"
65714
+ - $ref: "#/components/parameters/XCsrfToken"
65715
+ responses:
65716
+ "200":
65717
+ content:
65718
+ application/json:
65719
+ examples:
65720
+ nominal:
65721
+ summary: Nominal successful response
65722
+ value:
65723
+ accountLabel: "@example.bsky.social"
65724
+ createdAt: "2026-11-05T12:00:00.000Z"
65725
+ id: 018f0000-0000-7000-8000-000000000001
65726
+ kind: bluesky
65727
+ lastDelivery:
65728
+ at: "2026-11-05T12:00:00.000Z"
65729
+ deliveryId: 018f0000-0000-7000-8000-000000000002
65730
+ status: SENT
65731
+ options: {}
65732
+ status: ACTIVE
65733
+ schema:
65734
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdPauseResponse"
65735
+ description: pause a syndication connection succeeded
65736
+ headers:
65737
+ Cache-Control:
65738
+ $ref: "#/components/headers/CacheControlNoStore"
65739
+ X-Correlation-Id:
65740
+ $ref: "#/components/headers/XCorrelationId"
65741
+ "400":
65742
+ content:
65743
+ application/problem+json:
65744
+ examples:
65745
+ VALIDATION_FAILED:
65746
+ summary: VALIDATION_FAILED
65747
+ value:
65748
+ code: VALIDATION_FAILED
65749
+ correlationId: 018f0000-0000-7000-8000-000000000001
65750
+ detail: See the operation contract.
65751
+ errors: []
65752
+ retryable: false
65753
+ schemaId: urn:gala:schema:problem:2.0.0
65754
+ schemaVersion: 2.0.0
65755
+ status: 400
65756
+ title: VALIDATION_FAILED
65757
+ type: urn:gala:problem:validation-failed
65758
+ schema:
65759
+ $ref: "#/components/schemas/Problem"
65760
+ description: VALIDATION_FAILED
65761
+ headers:
65762
+ Cache-Control:
65763
+ $ref: "#/components/headers/CacheControlNoStore"
65764
+ X-Correlation-Id:
65765
+ $ref: "#/components/headers/XCorrelationId"
65766
+ x-gala-problem-codes:
65767
+ - VALIDATION_FAILED
65768
+ "401":
65769
+ content:
65770
+ application/problem+json:
65771
+ examples:
65772
+ AUTHENTICATION_REQUIRED:
65773
+ summary: AUTHENTICATION_REQUIRED
65774
+ value:
65775
+ code: AUTHENTICATION_REQUIRED
65776
+ correlationId: 018f0000-0000-7000-8000-000000000001
65777
+ detail: See the operation contract.
65778
+ errors: []
65779
+ retryable: false
65780
+ schemaId: urn:gala:schema:problem:2.0.0
65781
+ schemaVersion: 2.0.0
65782
+ status: 401
65783
+ title: AUTHENTICATION_REQUIRED
65784
+ type: urn:gala:problem:authentication-required
65785
+ schema:
65786
+ $ref: "#/components/schemas/Problem"
65787
+ description: AUTHENTICATION_REQUIRED
65788
+ headers:
65789
+ Cache-Control:
65790
+ $ref: "#/components/headers/CacheControlNoStore"
65791
+ X-Correlation-Id:
65792
+ $ref: "#/components/headers/XCorrelationId"
65793
+ x-gala-problem-codes:
65794
+ - AUTHENTICATION_REQUIRED
65795
+ "403":
65796
+ content:
65797
+ application/problem+json:
65798
+ examples:
65799
+ AUTHORIZATION_DENIED:
65800
+ summary: AUTHORIZATION_DENIED
65801
+ value:
65802
+ code: AUTHORIZATION_DENIED
65803
+ correlationId: 018f0000-0000-7000-8000-000000000001
65804
+ detail: See the operation contract.
65805
+ errors: []
65806
+ retryable: false
65807
+ schemaId: urn:gala:schema:problem:2.0.0
65808
+ schemaVersion: 2.0.0
65809
+ status: 403
65810
+ title: AUTHORIZATION_DENIED
65811
+ type: urn:gala:problem:authorization-denied
65812
+ schema:
65813
+ $ref: "#/components/schemas/Problem"
65814
+ description: AUTHORIZATION_DENIED
65815
+ headers:
65816
+ Cache-Control:
65817
+ $ref: "#/components/headers/CacheControlNoStore"
65818
+ X-Correlation-Id:
65819
+ $ref: "#/components/headers/XCorrelationId"
65820
+ x-gala-problem-codes:
65821
+ - AUTHORIZATION_DENIED
65822
+ "404":
65823
+ content:
65824
+ application/problem+json:
65825
+ examples:
65826
+ RESOURCE_NOT_FOUND:
65827
+ summary: RESOURCE_NOT_FOUND
65828
+ value:
65829
+ code: RESOURCE_NOT_FOUND
65830
+ correlationId: 018f0000-0000-7000-8000-000000000001
65831
+ detail: See the operation contract.
65832
+ errors: []
65833
+ retryable: false
65834
+ schemaId: urn:gala:schema:problem:2.0.0
65835
+ schemaVersion: 2.0.0
65836
+ status: 404
65837
+ title: RESOURCE_NOT_FOUND
65838
+ type: urn:gala:problem:resource-not-found
65839
+ SYNDICATION_CONNECTION_NOT_FOUND:
65840
+ summary: SYNDICATION_CONNECTION_NOT_FOUND
65841
+ value:
65842
+ code: SYNDICATION_CONNECTION_NOT_FOUND
65843
+ correlationId: 018f0000-0000-7000-8000-000000000001
65844
+ detail: See the operation contract.
65845
+ errors: []
65846
+ retryable: false
65847
+ schemaId: urn:gala:schema:problem:2.0.0
65848
+ schemaVersion: 2.0.0
65849
+ status: 404
65850
+ title: SYNDICATION_CONNECTION_NOT_FOUND
65851
+ type: urn:gala:problem:syndication-connection-not-found
65852
+ schema:
65853
+ $ref: "#/components/schemas/Problem"
65854
+ description: RESOURCE_NOT_FOUND, SYNDICATION_CONNECTION_NOT_FOUND
65855
+ headers:
65856
+ Cache-Control:
65857
+ $ref: "#/components/headers/CacheControlNoStore"
65858
+ X-Correlation-Id:
65859
+ $ref: "#/components/headers/XCorrelationId"
65860
+ x-gala-problem-codes:
65861
+ - RESOURCE_NOT_FOUND
65862
+ - SYNDICATION_CONNECTION_NOT_FOUND
65863
+ "409":
65864
+ content:
65865
+ application/problem+json:
65866
+ examples:
65867
+ COMMAND_REPLAY_CONFLICT:
65868
+ summary: COMMAND_REPLAY_CONFLICT
65869
+ value:
65870
+ code: COMMAND_REPLAY_CONFLICT
65871
+ correlationId: 018f0000-0000-7000-8000-000000000001
65872
+ detail: See the operation contract.
65873
+ errors: []
65874
+ retryable: false
65875
+ schemaId: urn:gala:schema:problem:2.0.0
65876
+ schemaVersion: 2.0.0
65877
+ status: 409
65878
+ title: COMMAND_REPLAY_CONFLICT
65879
+ type: urn:gala:problem:command-replay-conflict
65880
+ schema:
65881
+ $ref: "#/components/schemas/Problem"
65882
+ description: COMMAND_REPLAY_CONFLICT
65883
+ headers:
65884
+ Cache-Control:
65885
+ $ref: "#/components/headers/CacheControlNoStore"
65886
+ X-Correlation-Id:
65887
+ $ref: "#/components/headers/XCorrelationId"
65888
+ x-gala-problem-codes:
65889
+ - COMMAND_REPLAY_CONFLICT
65890
+ security:
65891
+ - browserSession: []
65892
+ summary: pause a syndication connection
65893
+ tags:
65894
+ - syndication
65895
+ x-gala-activation-gate: MVP
65896
+ x-gala-activation-guards:
65897
+ - NONE
65898
+ x-gala-capability-key: publication.settings.manage
65899
+ x-gala-concurrency: authorization-and-publication-epochs
65900
+ x-gala-conditional-capabilities: []
65901
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
65902
+ x-gala-nullability: required-and-nullable-are-explicit
65903
+ x-gala-purpose: pause a syndication connection
65904
+ x-gala-reachable-problems:
65905
+ - AUTHENTICATION_REQUIRED
65906
+ - AUTHORIZATION_DENIED
65907
+ - COMMAND_REPLAY_CONFLICT
65908
+ - RESOURCE_NOT_FOUND
65909
+ - SYNDICATION_CONNECTION_NOT_FOUND
65910
+ - VALIDATION_FAILED
65911
+ x-gala-replay-identity: idempotency-key
65912
+ x-gala-state-guards:
65913
+ - NONE
65914
+ x-gala-success-category: protocol
65915
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
65916
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/{connectionId}:replace-credential:
65917
+ post:
65918
+ 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`."
65919
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdReplaceCredential
65920
+ parameters:
65921
+ - $ref: "#/components/parameters/XCorrelationId"
65922
+ - example: 018f0000-0000-7000-8000-000000000001
65923
+ in: path
65924
+ name: organizationId
65925
+ required: true
65926
+ schema:
65927
+ format: uuid
65928
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65929
+ type: string
65930
+ - example: 018f0000-0000-7000-8000-000000000001
65931
+ in: path
65932
+ name: publicationId
65933
+ required: true
65934
+ schema:
65935
+ format: uuid
65936
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65937
+ type: string
65938
+ - example: 018f0000-0000-7000-8000-000000000001
65939
+ in: path
65940
+ name: connectionId
65941
+ required: true
65942
+ schema:
65943
+ format: uuid
65944
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
65945
+ type: string
65946
+ - $ref: "#/components/parameters/IdempotencyKey"
65947
+ - $ref: "#/components/parameters/XCsrfToken"
65948
+ requestBody:
65949
+ content:
65950
+ application/json:
65951
+ examples:
65952
+ nominal:
65953
+ summary: Nominal valid request
65954
+ value:
65955
+ credential:
65956
+ appPassword: abcd-efgh-ijkl-mnop
65957
+ handle: example.bsky.social
65958
+ kind: bluesky
65959
+ schema:
65960
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdReplaceCredentialRequest"
65961
+ required: true
65962
+ responses:
65963
+ "200":
65964
+ content:
65965
+ application/json:
65966
+ examples:
65967
+ nominal:
65968
+ summary: Nominal successful response
65969
+ value:
65970
+ accountLabel: "@example.bsky.social"
65971
+ createdAt: "2026-11-05T12:00:00.000Z"
65972
+ id: 018f0000-0000-7000-8000-000000000001
65973
+ kind: bluesky
65974
+ lastDelivery:
65975
+ at: "2026-11-05T12:00:00.000Z"
65976
+ deliveryId: 018f0000-0000-7000-8000-000000000002
65977
+ status: SENT
65978
+ options: {}
65979
+ status: ACTIVE
65980
+ schema:
65981
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdReplaceCredentialResponse"
65982
+ description: replace the credential of a syndication connection succeeded
65983
+ headers:
65984
+ Cache-Control:
65985
+ $ref: "#/components/headers/CacheControlNoStore"
65986
+ X-Correlation-Id:
65987
+ $ref: "#/components/headers/XCorrelationId"
65988
+ "400":
65989
+ content:
65990
+ application/problem+json:
65991
+ examples:
65992
+ REQUEST_FIELD_UNKNOWN:
65993
+ summary: REQUEST_FIELD_UNKNOWN
65994
+ value:
65995
+ code: REQUEST_FIELD_UNKNOWN
65996
+ correlationId: 018f0000-0000-7000-8000-000000000001
65997
+ detail: See the operation contract.
65998
+ errors: []
65999
+ retryable: false
66000
+ schemaId: urn:gala:schema:problem:2.0.0
66001
+ schemaVersion: 2.0.0
66002
+ status: 400
66003
+ title: REQUEST_FIELD_UNKNOWN
66004
+ type: urn:gala:problem:request-field-unknown
66005
+ VALIDATION_FAILED:
66006
+ summary: VALIDATION_FAILED
66007
+ value:
66008
+ code: VALIDATION_FAILED
66009
+ correlationId: 018f0000-0000-7000-8000-000000000001
66010
+ detail: See the operation contract.
66011
+ errors: []
66012
+ retryable: false
66013
+ schemaId: urn:gala:schema:problem:2.0.0
66014
+ schemaVersion: 2.0.0
66015
+ status: 400
66016
+ title: VALIDATION_FAILED
66017
+ type: urn:gala:problem:validation-failed
66018
+ schema:
66019
+ $ref: "#/components/schemas/Problem"
66020
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
66021
+ headers:
66022
+ Cache-Control:
66023
+ $ref: "#/components/headers/CacheControlNoStore"
66024
+ X-Correlation-Id:
66025
+ $ref: "#/components/headers/XCorrelationId"
66026
+ x-gala-problem-codes:
66027
+ - REQUEST_FIELD_UNKNOWN
66028
+ - VALIDATION_FAILED
66029
+ "401":
66030
+ content:
66031
+ application/problem+json:
66032
+ examples:
66033
+ AUTHENTICATION_REQUIRED:
66034
+ summary: AUTHENTICATION_REQUIRED
66035
+ value:
66036
+ code: AUTHENTICATION_REQUIRED
66037
+ correlationId: 018f0000-0000-7000-8000-000000000001
66038
+ detail: See the operation contract.
66039
+ errors: []
66040
+ retryable: false
66041
+ schemaId: urn:gala:schema:problem:2.0.0
66042
+ schemaVersion: 2.0.0
66043
+ status: 401
66044
+ title: AUTHENTICATION_REQUIRED
66045
+ type: urn:gala:problem:authentication-required
66046
+ schema:
66047
+ $ref: "#/components/schemas/Problem"
66048
+ description: AUTHENTICATION_REQUIRED
66049
+ headers:
66050
+ Cache-Control:
66051
+ $ref: "#/components/headers/CacheControlNoStore"
66052
+ X-Correlation-Id:
66053
+ $ref: "#/components/headers/XCorrelationId"
66054
+ x-gala-problem-codes:
66055
+ - AUTHENTICATION_REQUIRED
66056
+ "403":
66057
+ content:
66058
+ application/problem+json:
66059
+ examples:
66060
+ AUTHORIZATION_DENIED:
66061
+ summary: AUTHORIZATION_DENIED
66062
+ value:
66063
+ code: AUTHORIZATION_DENIED
66064
+ correlationId: 018f0000-0000-7000-8000-000000000001
66065
+ detail: See the operation contract.
66066
+ errors: []
66067
+ retryable: false
66068
+ schemaId: urn:gala:schema:problem:2.0.0
66069
+ schemaVersion: 2.0.0
66070
+ status: 403
66071
+ title: AUTHORIZATION_DENIED
66072
+ type: urn:gala:problem:authorization-denied
66073
+ schema:
66074
+ $ref: "#/components/schemas/Problem"
66075
+ description: AUTHORIZATION_DENIED
66076
+ headers:
66077
+ Cache-Control:
66078
+ $ref: "#/components/headers/CacheControlNoStore"
66079
+ X-Correlation-Id:
66080
+ $ref: "#/components/headers/XCorrelationId"
66081
+ x-gala-problem-codes:
66082
+ - AUTHORIZATION_DENIED
66083
+ "404":
66084
+ content:
66085
+ application/problem+json:
66086
+ examples:
66087
+ RESOURCE_NOT_FOUND:
66088
+ summary: RESOURCE_NOT_FOUND
66089
+ value:
66090
+ code: RESOURCE_NOT_FOUND
66091
+ correlationId: 018f0000-0000-7000-8000-000000000001
66092
+ detail: See the operation contract.
66093
+ errors: []
66094
+ retryable: false
66095
+ schemaId: urn:gala:schema:problem:2.0.0
66096
+ schemaVersion: 2.0.0
66097
+ status: 404
66098
+ title: RESOURCE_NOT_FOUND
66099
+ type: urn:gala:problem:resource-not-found
66100
+ SYNDICATION_CONNECTION_NOT_FOUND:
66101
+ summary: SYNDICATION_CONNECTION_NOT_FOUND
66102
+ value:
66103
+ code: SYNDICATION_CONNECTION_NOT_FOUND
66104
+ correlationId: 018f0000-0000-7000-8000-000000000001
66105
+ detail: See the operation contract.
66106
+ errors: []
66107
+ retryable: false
66108
+ schemaId: urn:gala:schema:problem:2.0.0
66109
+ schemaVersion: 2.0.0
66110
+ status: 404
66111
+ title: SYNDICATION_CONNECTION_NOT_FOUND
66112
+ type: urn:gala:problem:syndication-connection-not-found
66113
+ schema:
66114
+ $ref: "#/components/schemas/Problem"
66115
+ description: RESOURCE_NOT_FOUND, SYNDICATION_CONNECTION_NOT_FOUND
66116
+ headers:
66117
+ Cache-Control:
66118
+ $ref: "#/components/headers/CacheControlNoStore"
66119
+ X-Correlation-Id:
66120
+ $ref: "#/components/headers/XCorrelationId"
66121
+ x-gala-problem-codes:
66122
+ - RESOURCE_NOT_FOUND
66123
+ - SYNDICATION_CONNECTION_NOT_FOUND
66124
+ "409":
66125
+ content:
66126
+ application/problem+json:
66127
+ examples:
66128
+ COMMAND_REPLAY_CONFLICT:
66129
+ summary: COMMAND_REPLAY_CONFLICT
66130
+ value:
66131
+ code: COMMAND_REPLAY_CONFLICT
66132
+ correlationId: 018f0000-0000-7000-8000-000000000001
66133
+ detail: See the operation contract.
66134
+ errors: []
66135
+ retryable: false
66136
+ schemaId: urn:gala:schema:problem:2.0.0
66137
+ schemaVersion: 2.0.0
66138
+ status: 409
66139
+ title: COMMAND_REPLAY_CONFLICT
66140
+ type: urn:gala:problem:command-replay-conflict
66141
+ schema:
66142
+ $ref: "#/components/schemas/Problem"
66143
+ description: COMMAND_REPLAY_CONFLICT
66144
+ headers:
66145
+ Cache-Control:
66146
+ $ref: "#/components/headers/CacheControlNoStore"
66147
+ X-Correlation-Id:
66148
+ $ref: "#/components/headers/XCorrelationId"
66149
+ x-gala-problem-codes:
66150
+ - COMMAND_REPLAY_CONFLICT
66151
+ "422":
66152
+ content:
66153
+ application/problem+json:
66154
+ examples:
66155
+ SYNDICATION_CREDENTIAL_REJECTED:
66156
+ summary: SYNDICATION_CREDENTIAL_REJECTED
66157
+ value:
66158
+ code: SYNDICATION_CREDENTIAL_REJECTED
66159
+ correlationId: 018f0000-0000-7000-8000-000000000001
66160
+ detail: See the operation contract.
66161
+ errors: []
66162
+ platformMessage: Bad credentials
66163
+ retryable: false
66164
+ schemaId: urn:gala:schema:problem:2.0.0
66165
+ schemaVersion: 2.0.0
66166
+ status: 422
66167
+ title: SYNDICATION_CREDENTIAL_REJECTED
66168
+ type: urn:gala:problem:syndication-credential-rejected
66169
+ schema:
66170
+ $ref: "#/components/schemas/Problem"
66171
+ description: SYNDICATION_CREDENTIAL_REJECTED
66172
+ headers:
66173
+ Cache-Control:
66174
+ $ref: "#/components/headers/CacheControlNoStore"
66175
+ X-Correlation-Id:
66176
+ $ref: "#/components/headers/XCorrelationId"
66177
+ x-gala-problem-codes:
66178
+ - SYNDICATION_CREDENTIAL_REJECTED
66179
+ "429":
66180
+ content:
66181
+ application/problem+json:
66182
+ examples:
66183
+ RATE_LIMITED:
66184
+ summary: RATE_LIMITED
66185
+ value:
66186
+ code: RATE_LIMITED
66187
+ correlationId: 018f0000-0000-7000-8000-000000000001
66188
+ detail: See the operation contract.
66189
+ errors: []
66190
+ retryable: true
66191
+ schemaId: urn:gala:schema:problem:2.0.0
66192
+ schemaVersion: 2.0.0
66193
+ status: 429
66194
+ title: RATE_LIMITED
66195
+ type: urn:gala:problem:rate-limited
66196
+ schema:
66197
+ $ref: "#/components/schemas/Problem"
66198
+ description: RATE_LIMITED
66199
+ headers:
66200
+ Cache-Control:
66201
+ $ref: "#/components/headers/CacheControlNoStore"
66202
+ Retry-After:
66203
+ $ref: "#/components/headers/RetryAfter"
66204
+ X-Correlation-Id:
66205
+ $ref: "#/components/headers/XCorrelationId"
66206
+ x-gala-problem-codes:
66207
+ - RATE_LIMITED
66208
+ "503":
66209
+ content:
66210
+ application/problem+json:
66211
+ examples:
66212
+ SYNDICATION_PLATFORM_UNAVAILABLE:
66213
+ summary: SYNDICATION_PLATFORM_UNAVAILABLE
66214
+ value:
66215
+ code: SYNDICATION_PLATFORM_UNAVAILABLE
66216
+ correlationId: 018f0000-0000-7000-8000-000000000001
66217
+ detail: See the operation contract.
66218
+ errors: []
66219
+ retryable: true
66220
+ schemaId: urn:gala:schema:problem:2.0.0
66221
+ schemaVersion: 2.0.0
66222
+ status: 503
66223
+ title: SYNDICATION_PLATFORM_UNAVAILABLE
66224
+ type: urn:gala:problem:syndication-platform-unavailable
66225
+ schema:
66226
+ $ref: "#/components/schemas/Problem"
66227
+ description: SYNDICATION_PLATFORM_UNAVAILABLE
66228
+ headers:
66229
+ Cache-Control:
66230
+ $ref: "#/components/headers/CacheControlNoStore"
66231
+ X-Correlation-Id:
66232
+ $ref: "#/components/headers/XCorrelationId"
66233
+ x-gala-problem-codes:
66234
+ - SYNDICATION_PLATFORM_UNAVAILABLE
66235
+ security:
66236
+ - browserSession: []
66237
+ summary: replace the credential of a syndication connection
66238
+ tags:
66239
+ - syndication
66240
+ x-gala-activation-gate: MVP
66241
+ x-gala-activation-guards:
66242
+ - NONE
66243
+ x-gala-capability-key: publication.settings.manage
66244
+ x-gala-concurrency: authorization-and-publication-epochs
66245
+ x-gala-conditional-capabilities: []
66246
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
66247
+ x-gala-nullability: required-and-nullable-are-explicit
66248
+ x-gala-purpose: replace the credential of a syndication connection
66249
+ x-gala-reachable-problems:
66250
+ - AUTHENTICATION_REQUIRED
66251
+ - AUTHORIZATION_DENIED
66252
+ - COMMAND_REPLAY_CONFLICT
66253
+ - RATE_LIMITED
66254
+ - REQUEST_FIELD_UNKNOWN
66255
+ - RESOURCE_NOT_FOUND
66256
+ - SYNDICATION_CONNECTION_NOT_FOUND
66257
+ - SYNDICATION_CREDENTIAL_REJECTED
66258
+ - SYNDICATION_PLATFORM_UNAVAILABLE
66259
+ - VALIDATION_FAILED
66260
+ x-gala-replay-identity: idempotency-key
66261
+ x-gala-state-guards:
66262
+ - NONE
66263
+ x-gala-success-category: protocol
66264
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
66265
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/{connectionId}:resume:
66266
+ post:
66267
+ description: Checks the saved credential with the platform, then sets the connection `ACTIVE`. Resuming an active connection checks it again and changes nothing else. `422 SYNDICATION_CREDENTIAL_REJECTED` when the platform no longer accepts the credential (the connection then needs attention), `503 SYNDICATION_PLATFORM_UNAVAILABLE` when the platform could not be reached. Needs `publication.settings.manage`.
66268
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdResume
66269
+ parameters:
66270
+ - $ref: "#/components/parameters/XCorrelationId"
66271
+ - example: 018f0000-0000-7000-8000-000000000001
66272
+ in: path
66273
+ name: organizationId
66274
+ required: true
66275
+ schema:
66276
+ format: uuid
66277
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
66278
+ type: string
66279
+ - example: 018f0000-0000-7000-8000-000000000001
66280
+ in: path
66281
+ name: publicationId
66282
+ required: true
66283
+ schema:
66284
+ format: uuid
66285
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
66286
+ type: string
66287
+ - example: 018f0000-0000-7000-8000-000000000001
66288
+ in: path
66289
+ name: connectionId
66290
+ required: true
66291
+ schema:
66292
+ format: uuid
66293
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
66294
+ type: string
66295
+ - $ref: "#/components/parameters/IdempotencyKey"
66296
+ - $ref: "#/components/parameters/XCsrfToken"
66297
+ responses:
66298
+ "200":
66299
+ content:
66300
+ application/json:
66301
+ examples:
66302
+ nominal:
66303
+ summary: Nominal successful response
66304
+ value:
66305
+ accountLabel: "@example.bsky.social"
66306
+ createdAt: "2026-11-05T12:00:00.000Z"
66307
+ id: 018f0000-0000-7000-8000-000000000001
66308
+ kind: bluesky
66309
+ lastDelivery:
66310
+ at: "2026-11-05T12:00:00.000Z"
66311
+ deliveryId: 018f0000-0000-7000-8000-000000000002
66312
+ status: SENT
66313
+ options: {}
66314
+ status: ACTIVE
66315
+ schema:
66316
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdResumeResponse"
66317
+ description: resume a syndication connection succeeded
66318
+ headers:
66319
+ Cache-Control:
66320
+ $ref: "#/components/headers/CacheControlNoStore"
66321
+ X-Correlation-Id:
66322
+ $ref: "#/components/headers/XCorrelationId"
66323
+ "400":
66324
+ content:
66325
+ application/problem+json:
66326
+ examples:
66327
+ VALIDATION_FAILED:
66328
+ summary: VALIDATION_FAILED
66329
+ value:
66330
+ code: VALIDATION_FAILED
66331
+ correlationId: 018f0000-0000-7000-8000-000000000001
66332
+ detail: See the operation contract.
66333
+ errors: []
66334
+ retryable: false
66335
+ schemaId: urn:gala:schema:problem:2.0.0
66336
+ schemaVersion: 2.0.0
66337
+ status: 400
66338
+ title: VALIDATION_FAILED
66339
+ type: urn:gala:problem:validation-failed
66340
+ schema:
66341
+ $ref: "#/components/schemas/Problem"
66342
+ description: VALIDATION_FAILED
66343
+ headers:
66344
+ Cache-Control:
66345
+ $ref: "#/components/headers/CacheControlNoStore"
66346
+ X-Correlation-Id:
66347
+ $ref: "#/components/headers/XCorrelationId"
66348
+ x-gala-problem-codes:
66349
+ - VALIDATION_FAILED
66350
+ "401":
66351
+ content:
66352
+ application/problem+json:
66353
+ examples:
66354
+ AUTHENTICATION_REQUIRED:
66355
+ summary: AUTHENTICATION_REQUIRED
66356
+ value:
66357
+ code: AUTHENTICATION_REQUIRED
66358
+ correlationId: 018f0000-0000-7000-8000-000000000001
66359
+ detail: See the operation contract.
66360
+ errors: []
66361
+ retryable: false
66362
+ schemaId: urn:gala:schema:problem:2.0.0
66363
+ schemaVersion: 2.0.0
66364
+ status: 401
66365
+ title: AUTHENTICATION_REQUIRED
66366
+ type: urn:gala:problem:authentication-required
66367
+ schema:
66368
+ $ref: "#/components/schemas/Problem"
66369
+ description: AUTHENTICATION_REQUIRED
66370
+ headers:
66371
+ Cache-Control:
66372
+ $ref: "#/components/headers/CacheControlNoStore"
66373
+ X-Correlation-Id:
66374
+ $ref: "#/components/headers/XCorrelationId"
66375
+ x-gala-problem-codes:
66376
+ - AUTHENTICATION_REQUIRED
66377
+ "403":
66378
+ content:
66379
+ application/problem+json:
66380
+ examples:
66381
+ AUTHORIZATION_DENIED:
66382
+ summary: AUTHORIZATION_DENIED
66383
+ value:
66384
+ code: AUTHORIZATION_DENIED
66385
+ correlationId: 018f0000-0000-7000-8000-000000000001
66386
+ detail: See the operation contract.
66387
+ errors: []
66388
+ retryable: false
66389
+ schemaId: urn:gala:schema:problem:2.0.0
66390
+ schemaVersion: 2.0.0
66391
+ status: 403
66392
+ title: AUTHORIZATION_DENIED
66393
+ type: urn:gala:problem:authorization-denied
66394
+ schema:
66395
+ $ref: "#/components/schemas/Problem"
66396
+ description: AUTHORIZATION_DENIED
66397
+ headers:
66398
+ Cache-Control:
66399
+ $ref: "#/components/headers/CacheControlNoStore"
66400
+ X-Correlation-Id:
66401
+ $ref: "#/components/headers/XCorrelationId"
66402
+ x-gala-problem-codes:
66403
+ - AUTHORIZATION_DENIED
66404
+ "404":
66405
+ content:
66406
+ application/problem+json:
66407
+ examples:
66408
+ RESOURCE_NOT_FOUND:
66409
+ summary: RESOURCE_NOT_FOUND
66410
+ value:
66411
+ code: RESOURCE_NOT_FOUND
66412
+ correlationId: 018f0000-0000-7000-8000-000000000001
66413
+ detail: See the operation contract.
66414
+ errors: []
66415
+ retryable: false
66416
+ schemaId: urn:gala:schema:problem:2.0.0
66417
+ schemaVersion: 2.0.0
66418
+ status: 404
66419
+ title: RESOURCE_NOT_FOUND
66420
+ type: urn:gala:problem:resource-not-found
66421
+ SYNDICATION_CONNECTION_NOT_FOUND:
66422
+ summary: SYNDICATION_CONNECTION_NOT_FOUND
66423
+ value:
66424
+ code: SYNDICATION_CONNECTION_NOT_FOUND
66425
+ correlationId: 018f0000-0000-7000-8000-000000000001
66426
+ detail: See the operation contract.
66427
+ errors: []
66428
+ retryable: false
66429
+ schemaId: urn:gala:schema:problem:2.0.0
66430
+ schemaVersion: 2.0.0
66431
+ status: 404
66432
+ title: SYNDICATION_CONNECTION_NOT_FOUND
66433
+ type: urn:gala:problem:syndication-connection-not-found
66434
+ schema:
66435
+ $ref: "#/components/schemas/Problem"
66436
+ description: RESOURCE_NOT_FOUND, SYNDICATION_CONNECTION_NOT_FOUND
66437
+ headers:
66438
+ Cache-Control:
66439
+ $ref: "#/components/headers/CacheControlNoStore"
66440
+ X-Correlation-Id:
66441
+ $ref: "#/components/headers/XCorrelationId"
66442
+ x-gala-problem-codes:
66443
+ - RESOURCE_NOT_FOUND
66444
+ - SYNDICATION_CONNECTION_NOT_FOUND
66445
+ "409":
66446
+ content:
66447
+ application/problem+json:
66448
+ examples:
66449
+ COMMAND_REPLAY_CONFLICT:
66450
+ summary: COMMAND_REPLAY_CONFLICT
66451
+ value:
66452
+ code: COMMAND_REPLAY_CONFLICT
66453
+ correlationId: 018f0000-0000-7000-8000-000000000001
66454
+ detail: See the operation contract.
66455
+ errors: []
66456
+ retryable: false
66457
+ schemaId: urn:gala:schema:problem:2.0.0
66458
+ schemaVersion: 2.0.0
66459
+ status: 409
66460
+ title: COMMAND_REPLAY_CONFLICT
66461
+ type: urn:gala:problem:command-replay-conflict
66462
+ schema:
66463
+ $ref: "#/components/schemas/Problem"
66464
+ description: COMMAND_REPLAY_CONFLICT
66465
+ headers:
66466
+ Cache-Control:
66467
+ $ref: "#/components/headers/CacheControlNoStore"
66468
+ X-Correlation-Id:
66469
+ $ref: "#/components/headers/XCorrelationId"
66470
+ x-gala-problem-codes:
66471
+ - COMMAND_REPLAY_CONFLICT
66472
+ "422":
66473
+ content:
66474
+ application/problem+json:
66475
+ examples:
66476
+ SYNDICATION_CREDENTIAL_REJECTED:
66477
+ summary: SYNDICATION_CREDENTIAL_REJECTED
66478
+ value:
66479
+ code: SYNDICATION_CREDENTIAL_REJECTED
66480
+ correlationId: 018f0000-0000-7000-8000-000000000001
66481
+ detail: See the operation contract.
66482
+ errors: []
66483
+ platformMessage: Bad credentials
66484
+ retryable: false
66485
+ schemaId: urn:gala:schema:problem:2.0.0
66486
+ schemaVersion: 2.0.0
66487
+ status: 422
66488
+ title: SYNDICATION_CREDENTIAL_REJECTED
66489
+ type: urn:gala:problem:syndication-credential-rejected
66490
+ schema:
66491
+ $ref: "#/components/schemas/Problem"
66492
+ description: SYNDICATION_CREDENTIAL_REJECTED
66493
+ headers:
66494
+ Cache-Control:
66495
+ $ref: "#/components/headers/CacheControlNoStore"
66496
+ X-Correlation-Id:
66497
+ $ref: "#/components/headers/XCorrelationId"
66498
+ x-gala-problem-codes:
66499
+ - SYNDICATION_CREDENTIAL_REJECTED
66500
+ "429":
66501
+ content:
66502
+ application/problem+json:
66503
+ examples:
66504
+ RATE_LIMITED:
66505
+ summary: RATE_LIMITED
66506
+ value:
66507
+ code: RATE_LIMITED
66508
+ correlationId: 018f0000-0000-7000-8000-000000000001
66509
+ detail: See the operation contract.
66510
+ errors: []
66511
+ retryable: true
66512
+ schemaId: urn:gala:schema:problem:2.0.0
66513
+ schemaVersion: 2.0.0
66514
+ status: 429
66515
+ title: RATE_LIMITED
66516
+ type: urn:gala:problem:rate-limited
66517
+ schema:
66518
+ $ref: "#/components/schemas/Problem"
66519
+ description: RATE_LIMITED
66520
+ headers:
66521
+ Cache-Control:
66522
+ $ref: "#/components/headers/CacheControlNoStore"
66523
+ Retry-After:
66524
+ $ref: "#/components/headers/RetryAfter"
66525
+ X-Correlation-Id:
66526
+ $ref: "#/components/headers/XCorrelationId"
66527
+ x-gala-problem-codes:
66528
+ - RATE_LIMITED
66529
+ "503":
66530
+ content:
66531
+ application/problem+json:
66532
+ examples:
66533
+ SYNDICATION_PLATFORM_UNAVAILABLE:
66534
+ summary: SYNDICATION_PLATFORM_UNAVAILABLE
66535
+ value:
66536
+ code: SYNDICATION_PLATFORM_UNAVAILABLE
66537
+ correlationId: 018f0000-0000-7000-8000-000000000001
66538
+ detail: See the operation contract.
66539
+ errors: []
66540
+ retryable: true
66541
+ schemaId: urn:gala:schema:problem:2.0.0
66542
+ schemaVersion: 2.0.0
66543
+ status: 503
66544
+ title: SYNDICATION_PLATFORM_UNAVAILABLE
66545
+ type: urn:gala:problem:syndication-platform-unavailable
66546
+ schema:
66547
+ $ref: "#/components/schemas/Problem"
66548
+ description: SYNDICATION_PLATFORM_UNAVAILABLE
66549
+ headers:
66550
+ Cache-Control:
66551
+ $ref: "#/components/headers/CacheControlNoStore"
66552
+ X-Correlation-Id:
66553
+ $ref: "#/components/headers/XCorrelationId"
66554
+ x-gala-problem-codes:
66555
+ - SYNDICATION_PLATFORM_UNAVAILABLE
66556
+ security:
66557
+ - browserSession: []
66558
+ summary: resume a syndication connection
66559
+ tags:
66560
+ - syndication
66561
+ x-gala-activation-gate: MVP
66562
+ x-gala-activation-guards:
66563
+ - NONE
66564
+ x-gala-capability-key: publication.settings.manage
66565
+ x-gala-concurrency: authorization-and-publication-epochs
66566
+ x-gala-conditional-capabilities: []
66567
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
66568
+ x-gala-nullability: required-and-nullable-are-explicit
66569
+ x-gala-purpose: resume a syndication connection
66570
+ x-gala-reachable-problems:
66571
+ - AUTHENTICATION_REQUIRED
66572
+ - AUTHORIZATION_DENIED
66573
+ - COMMAND_REPLAY_CONFLICT
66574
+ - RATE_LIMITED
66575
+ - RESOURCE_NOT_FOUND
66576
+ - SYNDICATION_CONNECTION_NOT_FOUND
66577
+ - SYNDICATION_CREDENTIAL_REJECTED
66578
+ - SYNDICATION_PLATFORM_UNAVAILABLE
66579
+ - VALIDATION_FAILED
66580
+ x-gala-replay-identity: idempotency-key
66581
+ x-gala-state-guards:
66582
+ - NONE
66583
+ x-gala-success-category: protocol
66584
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
66585
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-connections/{connectionId}:verify:
66586
+ post:
66587
+ description: Checks the saved credential with the platform now and refreshes `accountLabel`. A paused connection stays paused; a connection that needs attention becomes `ACTIVE` when the platform accepts the credential. `422 SYNDICATION_CREDENTIAL_REJECTED` when it does not (the connection then needs attention), `503 SYNDICATION_PLATFORM_UNAVAILABLE` when the platform could not be reached. Needs `publication.settings.manage`.
66588
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdVerify
66589
+ parameters:
66590
+ - $ref: "#/components/parameters/XCorrelationId"
66591
+ - example: 018f0000-0000-7000-8000-000000000001
66592
+ in: path
66593
+ name: organizationId
66594
+ required: true
66595
+ schema:
66596
+ format: uuid
66597
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
66598
+ type: string
66599
+ - example: 018f0000-0000-7000-8000-000000000001
66600
+ in: path
66601
+ name: publicationId
66602
+ required: true
66603
+ schema:
66604
+ format: uuid
66605
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
66606
+ type: string
66607
+ - example: 018f0000-0000-7000-8000-000000000001
66608
+ in: path
66609
+ name: connectionId
66610
+ required: true
66611
+ schema:
66612
+ format: uuid
66613
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
66614
+ type: string
66615
+ - $ref: "#/components/parameters/IdempotencyKey"
66616
+ - $ref: "#/components/parameters/XCsrfToken"
66617
+ responses:
66618
+ "200":
66619
+ content:
66620
+ application/json:
66621
+ examples:
66622
+ nominal:
66623
+ summary: Nominal successful response
66624
+ value:
66625
+ accountLabel: "@example.bsky.social"
66626
+ createdAt: "2026-11-05T12:00:00.000Z"
66627
+ id: 018f0000-0000-7000-8000-000000000001
66628
+ kind: bluesky
66629
+ lastDelivery:
66630
+ at: "2026-11-05T12:00:00.000Z"
66631
+ deliveryId: 018f0000-0000-7000-8000-000000000002
66632
+ status: SENT
66633
+ options: {}
66634
+ status: ACTIVE
66635
+ schema:
66636
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationConnectionsByConnectionIdVerifyResponse"
66637
+ description: check a syndication connection succeeded
66638
+ headers:
66639
+ Cache-Control:
66640
+ $ref: "#/components/headers/CacheControlNoStore"
66641
+ X-Correlation-Id:
66642
+ $ref: "#/components/headers/XCorrelationId"
66643
+ "400":
66644
+ content:
66645
+ application/problem+json:
66646
+ examples:
66647
+ VALIDATION_FAILED:
66648
+ summary: VALIDATION_FAILED
66649
+ value:
66650
+ code: VALIDATION_FAILED
66651
+ correlationId: 018f0000-0000-7000-8000-000000000001
66652
+ detail: See the operation contract.
66653
+ errors: []
66654
+ retryable: false
66655
+ schemaId: urn:gala:schema:problem:2.0.0
66656
+ schemaVersion: 2.0.0
66657
+ status: 400
66658
+ title: VALIDATION_FAILED
66659
+ type: urn:gala:problem:validation-failed
66660
+ schema:
66661
+ $ref: "#/components/schemas/Problem"
66662
+ description: VALIDATION_FAILED
66663
+ headers:
66664
+ Cache-Control:
66665
+ $ref: "#/components/headers/CacheControlNoStore"
66666
+ X-Correlation-Id:
66667
+ $ref: "#/components/headers/XCorrelationId"
66668
+ x-gala-problem-codes:
66669
+ - VALIDATION_FAILED
66670
+ "401":
66671
+ content:
66672
+ application/problem+json:
66673
+ examples:
66674
+ AUTHENTICATION_REQUIRED:
66675
+ summary: AUTHENTICATION_REQUIRED
66676
+ value:
66677
+ code: AUTHENTICATION_REQUIRED
66678
+ correlationId: 018f0000-0000-7000-8000-000000000001
66679
+ detail: See the operation contract.
66680
+ errors: []
66681
+ retryable: false
66682
+ schemaId: urn:gala:schema:problem:2.0.0
66683
+ schemaVersion: 2.0.0
66684
+ status: 401
66685
+ title: AUTHENTICATION_REQUIRED
66686
+ type: urn:gala:problem:authentication-required
66687
+ schema:
66688
+ $ref: "#/components/schemas/Problem"
66689
+ description: AUTHENTICATION_REQUIRED
66690
+ headers:
66691
+ Cache-Control:
66692
+ $ref: "#/components/headers/CacheControlNoStore"
66693
+ X-Correlation-Id:
66694
+ $ref: "#/components/headers/XCorrelationId"
66695
+ x-gala-problem-codes:
66696
+ - AUTHENTICATION_REQUIRED
66697
+ "403":
66698
+ content:
66699
+ application/problem+json:
66700
+ examples:
66701
+ AUTHORIZATION_DENIED:
66702
+ summary: AUTHORIZATION_DENIED
66703
+ value:
66704
+ code: AUTHORIZATION_DENIED
66705
+ correlationId: 018f0000-0000-7000-8000-000000000001
66706
+ detail: See the operation contract.
66707
+ errors: []
66708
+ retryable: false
66709
+ schemaId: urn:gala:schema:problem:2.0.0
66710
+ schemaVersion: 2.0.0
66711
+ status: 403
66712
+ title: AUTHORIZATION_DENIED
66713
+ type: urn:gala:problem:authorization-denied
66714
+ schema:
66715
+ $ref: "#/components/schemas/Problem"
66716
+ description: AUTHORIZATION_DENIED
66717
+ headers:
66718
+ Cache-Control:
66719
+ $ref: "#/components/headers/CacheControlNoStore"
66720
+ X-Correlation-Id:
66721
+ $ref: "#/components/headers/XCorrelationId"
66722
+ x-gala-problem-codes:
66723
+ - AUTHORIZATION_DENIED
66724
+ "404":
66725
+ content:
66726
+ application/problem+json:
66727
+ examples:
66728
+ RESOURCE_NOT_FOUND:
66729
+ summary: RESOURCE_NOT_FOUND
66730
+ value:
66731
+ code: RESOURCE_NOT_FOUND
66732
+ correlationId: 018f0000-0000-7000-8000-000000000001
66733
+ detail: See the operation contract.
66734
+ errors: []
66735
+ retryable: false
66736
+ schemaId: urn:gala:schema:problem:2.0.0
66737
+ schemaVersion: 2.0.0
66738
+ status: 404
66739
+ title: RESOURCE_NOT_FOUND
66740
+ type: urn:gala:problem:resource-not-found
66741
+ SYNDICATION_CONNECTION_NOT_FOUND:
66742
+ summary: SYNDICATION_CONNECTION_NOT_FOUND
66743
+ value:
66744
+ code: SYNDICATION_CONNECTION_NOT_FOUND
66745
+ correlationId: 018f0000-0000-7000-8000-000000000001
66746
+ detail: See the operation contract.
66747
+ errors: []
66748
+ retryable: false
66749
+ schemaId: urn:gala:schema:problem:2.0.0
66750
+ schemaVersion: 2.0.0
66751
+ status: 404
66752
+ title: SYNDICATION_CONNECTION_NOT_FOUND
66753
+ type: urn:gala:problem:syndication-connection-not-found
66754
+ schema:
66755
+ $ref: "#/components/schemas/Problem"
66756
+ description: RESOURCE_NOT_FOUND, SYNDICATION_CONNECTION_NOT_FOUND
66757
+ headers:
66758
+ Cache-Control:
66759
+ $ref: "#/components/headers/CacheControlNoStore"
66760
+ X-Correlation-Id:
66761
+ $ref: "#/components/headers/XCorrelationId"
66762
+ x-gala-problem-codes:
66763
+ - RESOURCE_NOT_FOUND
66764
+ - SYNDICATION_CONNECTION_NOT_FOUND
66765
+ "409":
66766
+ content:
66767
+ application/problem+json:
66768
+ examples:
66769
+ COMMAND_REPLAY_CONFLICT:
66770
+ summary: COMMAND_REPLAY_CONFLICT
66771
+ value:
66772
+ code: COMMAND_REPLAY_CONFLICT
66773
+ correlationId: 018f0000-0000-7000-8000-000000000001
66774
+ detail: See the operation contract.
66775
+ errors: []
66776
+ retryable: false
66777
+ schemaId: urn:gala:schema:problem:2.0.0
66778
+ schemaVersion: 2.0.0
66779
+ status: 409
66780
+ title: COMMAND_REPLAY_CONFLICT
66781
+ type: urn:gala:problem:command-replay-conflict
66782
+ schema:
66783
+ $ref: "#/components/schemas/Problem"
66784
+ description: COMMAND_REPLAY_CONFLICT
66785
+ headers:
66786
+ Cache-Control:
66787
+ $ref: "#/components/headers/CacheControlNoStore"
66788
+ X-Correlation-Id:
66789
+ $ref: "#/components/headers/XCorrelationId"
66790
+ x-gala-problem-codes:
66791
+ - COMMAND_REPLAY_CONFLICT
66792
+ "422":
66793
+ content:
66794
+ application/problem+json:
66795
+ examples:
66796
+ SYNDICATION_CREDENTIAL_REJECTED:
66797
+ summary: SYNDICATION_CREDENTIAL_REJECTED
66798
+ value:
66799
+ code: SYNDICATION_CREDENTIAL_REJECTED
66800
+ correlationId: 018f0000-0000-7000-8000-000000000001
66801
+ detail: See the operation contract.
66802
+ errors: []
66803
+ platformMessage: Bad credentials
66804
+ retryable: false
66805
+ schemaId: urn:gala:schema:problem:2.0.0
66806
+ schemaVersion: 2.0.0
66807
+ status: 422
66808
+ title: SYNDICATION_CREDENTIAL_REJECTED
66809
+ type: urn:gala:problem:syndication-credential-rejected
66810
+ schema:
66811
+ $ref: "#/components/schemas/Problem"
66812
+ description: SYNDICATION_CREDENTIAL_REJECTED
66813
+ headers:
66814
+ Cache-Control:
66815
+ $ref: "#/components/headers/CacheControlNoStore"
66816
+ X-Correlation-Id:
66817
+ $ref: "#/components/headers/XCorrelationId"
66818
+ x-gala-problem-codes:
66819
+ - SYNDICATION_CREDENTIAL_REJECTED
66820
+ "429":
66821
+ content:
66822
+ application/problem+json:
66823
+ examples:
66824
+ RATE_LIMITED:
66825
+ summary: RATE_LIMITED
66826
+ value:
66827
+ code: RATE_LIMITED
66828
+ correlationId: 018f0000-0000-7000-8000-000000000001
66829
+ detail: See the operation contract.
66830
+ errors: []
66831
+ retryable: true
66832
+ schemaId: urn:gala:schema:problem:2.0.0
66833
+ schemaVersion: 2.0.0
66834
+ status: 429
66835
+ title: RATE_LIMITED
66836
+ type: urn:gala:problem:rate-limited
66837
+ schema:
66838
+ $ref: "#/components/schemas/Problem"
66839
+ description: RATE_LIMITED
66840
+ headers:
66841
+ Cache-Control:
66842
+ $ref: "#/components/headers/CacheControlNoStore"
66843
+ Retry-After:
66844
+ $ref: "#/components/headers/RetryAfter"
66845
+ X-Correlation-Id:
66846
+ $ref: "#/components/headers/XCorrelationId"
66847
+ x-gala-problem-codes:
66848
+ - RATE_LIMITED
66849
+ "503":
66850
+ content:
66851
+ application/problem+json:
66852
+ examples:
66853
+ SYNDICATION_PLATFORM_UNAVAILABLE:
66854
+ summary: SYNDICATION_PLATFORM_UNAVAILABLE
66855
+ value:
66856
+ code: SYNDICATION_PLATFORM_UNAVAILABLE
66857
+ correlationId: 018f0000-0000-7000-8000-000000000001
66858
+ detail: See the operation contract.
66859
+ errors: []
66860
+ retryable: true
66861
+ schemaId: urn:gala:schema:problem:2.0.0
66862
+ schemaVersion: 2.0.0
66863
+ status: 503
66864
+ title: SYNDICATION_PLATFORM_UNAVAILABLE
66865
+ type: urn:gala:problem:syndication-platform-unavailable
66866
+ schema:
66867
+ $ref: "#/components/schemas/Problem"
66868
+ description: SYNDICATION_PLATFORM_UNAVAILABLE
66869
+ headers:
66870
+ Cache-Control:
66871
+ $ref: "#/components/headers/CacheControlNoStore"
66872
+ X-Correlation-Id:
66873
+ $ref: "#/components/headers/XCorrelationId"
66874
+ x-gala-problem-codes:
66875
+ - SYNDICATION_PLATFORM_UNAVAILABLE
66876
+ security:
66877
+ - browserSession: []
66878
+ summary: check a syndication connection
66879
+ tags:
66880
+ - syndication
66881
+ x-gala-activation-gate: MVP
66882
+ x-gala-activation-guards:
66883
+ - NONE
66884
+ x-gala-capability-key: publication.settings.manage
66885
+ x-gala-concurrency: authorization-and-publication-epochs
66886
+ x-gala-conditional-capabilities: []
66887
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
66888
+ x-gala-nullability: required-and-nullable-are-explicit
66889
+ x-gala-purpose: check a syndication connection
66890
+ x-gala-reachable-problems:
66891
+ - AUTHENTICATION_REQUIRED
66892
+ - AUTHORIZATION_DENIED
66893
+ - COMMAND_REPLAY_CONFLICT
66894
+ - RATE_LIMITED
66895
+ - RESOURCE_NOT_FOUND
66896
+ - SYNDICATION_CONNECTION_NOT_FOUND
66897
+ - SYNDICATION_CREDENTIAL_REJECTED
66898
+ - SYNDICATION_PLATFORM_UNAVAILABLE
66899
+ - VALIDATION_FAILED
66900
+ x-gala-replay-identity: idempotency-key
66901
+ x-gala-state-guards:
66902
+ - NONE
66903
+ x-gala-success-category: protocol
66904
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
66905
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-deliveries:
66906
+ get:
66907
+ description: "The newest 50 deliveries of this publication, newest first: what was posted where, what is waiting to be retried and what failed and why. Needs `publication.view`."
66908
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveries
66909
+ parameters:
66910
+ - $ref: "#/components/parameters/XCorrelationId"
66911
+ - example: 018f0000-0000-7000-8000-000000000001
66912
+ in: path
66913
+ name: organizationId
66914
+ required: true
66915
+ schema:
66916
+ format: uuid
66917
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
66918
+ type: string
66919
+ - example: 018f0000-0000-7000-8000-000000000001
66920
+ in: path
66921
+ name: publicationId
66922
+ required: true
66923
+ schema:
66924
+ format: uuid
66925
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
66926
+ type: string
66927
+ responses:
66928
+ "200":
66929
+ content:
66930
+ application/json:
66931
+ examples:
66932
+ nominal:
66933
+ summary: Nominal successful response
66934
+ value:
66935
+ deliveries:
66936
+ - accountLabel: "@example.bsky.social"
66937
+ attemptCount: 1
66938
+ connectionId: 018f0000-0000-7000-8000-000000000001
66939
+ contentId: 018f0000-0000-7000-8000-000000000003
66940
+ contentTitle: Why we cut onboarding from nine steps to four
66941
+ createdAt: "2026-11-05T12:00:00.000Z"
66942
+ externalUrl: https://bsky.app/profile/example.bsky.social/post/3kexample
66943
+ id: 018f0000-0000-7000-8000-000000000002
66944
+ kind: bluesky
66945
+ liveUrl: https://example.com/onboarding/
66946
+ requestedBy: ANNOUNCEMENT
66947
+ status: SENT
66948
+ updatedAt: "2026-11-05T12:00:00.000Z"
66949
+ schema:
66950
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesResponse"
66951
+ description: list syndication deliveries succeeded
66952
+ headers:
66953
+ Cache-Control:
66954
+ $ref: "#/components/headers/CacheControlNoStore"
66955
+ X-Correlation-Id:
66956
+ $ref: "#/components/headers/XCorrelationId"
66957
+ "400":
66958
+ content:
66959
+ application/problem+json:
66960
+ examples:
66961
+ VALIDATION_FAILED:
66962
+ summary: VALIDATION_FAILED
66963
+ value:
66964
+ code: VALIDATION_FAILED
66965
+ correlationId: 018f0000-0000-7000-8000-000000000001
66966
+ detail: See the operation contract.
66967
+ errors: []
66968
+ retryable: false
66969
+ schemaId: urn:gala:schema:problem:2.0.0
66970
+ schemaVersion: 2.0.0
66971
+ status: 400
66972
+ title: VALIDATION_FAILED
66973
+ type: urn:gala:problem:validation-failed
66974
+ schema:
66975
+ $ref: "#/components/schemas/Problem"
66976
+ description: VALIDATION_FAILED
66977
+ headers:
66978
+ Cache-Control:
66979
+ $ref: "#/components/headers/CacheControlNoStore"
66980
+ X-Correlation-Id:
66981
+ $ref: "#/components/headers/XCorrelationId"
66982
+ x-gala-problem-codes:
66983
+ - VALIDATION_FAILED
66984
+ "401":
66985
+ content:
66986
+ application/problem+json:
66987
+ examples:
66988
+ AUTHENTICATION_REQUIRED:
66989
+ summary: AUTHENTICATION_REQUIRED
66990
+ value:
66991
+ code: AUTHENTICATION_REQUIRED
66992
+ correlationId: 018f0000-0000-7000-8000-000000000001
66993
+ detail: See the operation contract.
66994
+ errors: []
66995
+ retryable: false
66996
+ schemaId: urn:gala:schema:problem:2.0.0
66997
+ schemaVersion: 2.0.0
66998
+ status: 401
66999
+ title: AUTHENTICATION_REQUIRED
67000
+ type: urn:gala:problem:authentication-required
67001
+ schema:
67002
+ $ref: "#/components/schemas/Problem"
67003
+ description: AUTHENTICATION_REQUIRED
67004
+ headers:
67005
+ Cache-Control:
67006
+ $ref: "#/components/headers/CacheControlNoStore"
67007
+ X-Correlation-Id:
67008
+ $ref: "#/components/headers/XCorrelationId"
67009
+ x-gala-problem-codes:
67010
+ - AUTHENTICATION_REQUIRED
67011
+ "403":
67012
+ content:
67013
+ application/problem+json:
67014
+ examples:
67015
+ AUTHORIZATION_DENIED:
67016
+ summary: AUTHORIZATION_DENIED
67017
+ value:
67018
+ code: AUTHORIZATION_DENIED
67019
+ correlationId: 018f0000-0000-7000-8000-000000000001
67020
+ detail: See the operation contract.
67021
+ errors: []
67022
+ retryable: false
67023
+ schemaId: urn:gala:schema:problem:2.0.0
67024
+ schemaVersion: 2.0.0
67025
+ status: 403
67026
+ title: AUTHORIZATION_DENIED
67027
+ type: urn:gala:problem:authorization-denied
67028
+ schema:
67029
+ $ref: "#/components/schemas/Problem"
67030
+ description: AUTHORIZATION_DENIED
67031
+ headers:
67032
+ Cache-Control:
67033
+ $ref: "#/components/headers/CacheControlNoStore"
67034
+ X-Correlation-Id:
67035
+ $ref: "#/components/headers/XCorrelationId"
67036
+ x-gala-problem-codes:
67037
+ - AUTHORIZATION_DENIED
67038
+ "404":
67039
+ content:
67040
+ application/problem+json:
67041
+ examples:
67042
+ RESOURCE_NOT_FOUND:
67043
+ summary: RESOURCE_NOT_FOUND
67044
+ value:
67045
+ code: RESOURCE_NOT_FOUND
67046
+ correlationId: 018f0000-0000-7000-8000-000000000001
67047
+ detail: See the operation contract.
67048
+ errors: []
67049
+ retryable: false
67050
+ schemaId: urn:gala:schema:problem:2.0.0
67051
+ schemaVersion: 2.0.0
67052
+ status: 404
67053
+ title: RESOURCE_NOT_FOUND
67054
+ type: urn:gala:problem:resource-not-found
67055
+ schema:
67056
+ $ref: "#/components/schemas/Problem"
67057
+ description: RESOURCE_NOT_FOUND
67058
+ headers:
67059
+ Cache-Control:
67060
+ $ref: "#/components/headers/CacheControlNoStore"
67061
+ X-Correlation-Id:
67062
+ $ref: "#/components/headers/XCorrelationId"
67063
+ x-gala-problem-codes:
67064
+ - RESOURCE_NOT_FOUND
67065
+ security:
67066
+ - browserSession: []
67067
+ summary: list syndication deliveries
67068
+ tags:
67069
+ - syndication
67070
+ x-gala-activation-gate: MVP
67071
+ x-gala-activation-guards:
67072
+ - NONE
67073
+ x-gala-capability-key: publication.view
67074
+ x-gala-concurrency: authorization-and-publication-epochs
67075
+ x-gala-conditional-capabilities: []
67076
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
67077
+ x-gala-nullability: required-and-nullable-are-explicit
67078
+ x-gala-purpose: list syndication deliveries
67079
+ x-gala-reachable-problems:
67080
+ - AUTHENTICATION_REQUIRED
67081
+ - AUTHORIZATION_DENIED
67082
+ - RESOURCE_NOT_FOUND
67083
+ - VALIDATION_FAILED
67084
+ x-gala-replay-identity: safe-query
67085
+ x-gala-state-guards:
67086
+ - NONE
67087
+ x-gala-success-category: query
67088
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
67089
+ post:
67090
+ description: Files one delivery of a post that is already live to each chosen connection and answers `202` with the new deliveries in the order of `connectionIds`; the posting itself happens afterwards. Needs `publication.settings.manage`. `409 SYNDICATION_POST_NOT_LIVE` when `contentId` has no live announcement; `404 SYNDICATION_CONNECTION_NOT_FOUND` when a connection id is not this publication's; `409 SYNDICATION_CONNECTION_NOT_ACTIVE` when a named connection is paused or needs attention (nothing is filed).
67091
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveries
67092
+ parameters:
67093
+ - $ref: "#/components/parameters/XCorrelationId"
67094
+ - example: 018f0000-0000-7000-8000-000000000001
67095
+ in: path
67096
+ name: organizationId
67097
+ required: true
67098
+ schema:
67099
+ format: uuid
67100
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
67101
+ type: string
67102
+ - example: 018f0000-0000-7000-8000-000000000001
67103
+ in: path
67104
+ name: publicationId
67105
+ required: true
67106
+ schema:
67107
+ format: uuid
67108
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
67109
+ type: string
67110
+ - $ref: "#/components/parameters/IdempotencyKey"
67111
+ - $ref: "#/components/parameters/XCsrfToken"
67112
+ requestBody:
67113
+ content:
67114
+ application/json:
67115
+ examples:
67116
+ nominal:
67117
+ summary: Nominal valid request
67118
+ value:
67119
+ connectionIds:
67120
+ - 018f0000-0000-7000-8000-000000000001
67121
+ contentId: 018f0000-0000-7000-8000-000000000003
67122
+ schema:
67123
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesRequest"
67124
+ required: true
67125
+ responses:
67126
+ "202":
67127
+ content:
67128
+ application/json:
67129
+ examples:
67130
+ nominal:
67131
+ summary: Nominal successful response
67132
+ value:
67133
+ deliveries:
67134
+ - accountLabel: "@example.bsky.social"
67135
+ attemptCount: 1
67136
+ connectionId: 018f0000-0000-7000-8000-000000000001
67137
+ contentId: 018f0000-0000-7000-8000-000000000003
67138
+ contentTitle: Why we cut onboarding from nine steps to four
67139
+ createdAt: "2026-11-05T12:00:00.000Z"
67140
+ externalUrl: https://bsky.app/profile/example.bsky.social/post/3kexample
67141
+ id: 018f0000-0000-7000-8000-000000000002
67142
+ kind: bluesky
67143
+ liveUrl: https://example.com/onboarding/
67144
+ requestedBy: MANUAL
67145
+ status: PENDING
67146
+ updatedAt: "2026-11-05T12:00:00.000Z"
67147
+ schema:
67148
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesResponse"
67149
+ description: send an earlier post to syndication connections accepted
67150
+ headers:
67151
+ Cache-Control:
67152
+ $ref: "#/components/headers/CacheControlNoStore"
67153
+ X-Correlation-Id:
67154
+ $ref: "#/components/headers/XCorrelationId"
67155
+ "400":
67156
+ content:
67157
+ application/problem+json:
67158
+ examples:
67159
+ REQUEST_FIELD_UNKNOWN:
67160
+ summary: REQUEST_FIELD_UNKNOWN
67161
+ value:
67162
+ code: REQUEST_FIELD_UNKNOWN
67163
+ correlationId: 018f0000-0000-7000-8000-000000000001
67164
+ detail: See the operation contract.
67165
+ errors: []
67166
+ retryable: false
67167
+ schemaId: urn:gala:schema:problem:2.0.0
67168
+ schemaVersion: 2.0.0
67169
+ status: 400
67170
+ title: REQUEST_FIELD_UNKNOWN
67171
+ type: urn:gala:problem:request-field-unknown
67172
+ VALIDATION_FAILED:
67173
+ summary: VALIDATION_FAILED
67174
+ value:
67175
+ code: VALIDATION_FAILED
67176
+ correlationId: 018f0000-0000-7000-8000-000000000001
67177
+ detail: See the operation contract.
67178
+ errors: []
67179
+ retryable: false
67180
+ schemaId: urn:gala:schema:problem:2.0.0
67181
+ schemaVersion: 2.0.0
67182
+ status: 400
67183
+ title: VALIDATION_FAILED
67184
+ type: urn:gala:problem:validation-failed
67185
+ schema:
67186
+ $ref: "#/components/schemas/Problem"
67187
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
67188
+ headers:
67189
+ Cache-Control:
67190
+ $ref: "#/components/headers/CacheControlNoStore"
67191
+ X-Correlation-Id:
67192
+ $ref: "#/components/headers/XCorrelationId"
67193
+ x-gala-problem-codes:
67194
+ - REQUEST_FIELD_UNKNOWN
67195
+ - VALIDATION_FAILED
67196
+ "401":
67197
+ content:
67198
+ application/problem+json:
67199
+ examples:
67200
+ AUTHENTICATION_REQUIRED:
67201
+ summary: AUTHENTICATION_REQUIRED
67202
+ value:
67203
+ code: AUTHENTICATION_REQUIRED
67204
+ correlationId: 018f0000-0000-7000-8000-000000000001
67205
+ detail: See the operation contract.
67206
+ errors: []
67207
+ retryable: false
67208
+ schemaId: urn:gala:schema:problem:2.0.0
67209
+ schemaVersion: 2.0.0
67210
+ status: 401
67211
+ title: AUTHENTICATION_REQUIRED
67212
+ type: urn:gala:problem:authentication-required
67213
+ schema:
67214
+ $ref: "#/components/schemas/Problem"
67215
+ description: AUTHENTICATION_REQUIRED
67216
+ headers:
67217
+ Cache-Control:
67218
+ $ref: "#/components/headers/CacheControlNoStore"
67219
+ X-Correlation-Id:
67220
+ $ref: "#/components/headers/XCorrelationId"
67221
+ x-gala-problem-codes:
67222
+ - AUTHENTICATION_REQUIRED
67223
+ "403":
67224
+ content:
67225
+ application/problem+json:
67226
+ examples:
67227
+ AUTHORIZATION_DENIED:
67228
+ summary: AUTHORIZATION_DENIED
67229
+ value:
67230
+ code: AUTHORIZATION_DENIED
67231
+ correlationId: 018f0000-0000-7000-8000-000000000001
67232
+ detail: See the operation contract.
67233
+ errors: []
67234
+ retryable: false
67235
+ schemaId: urn:gala:schema:problem:2.0.0
67236
+ schemaVersion: 2.0.0
67237
+ status: 403
67238
+ title: AUTHORIZATION_DENIED
67239
+ type: urn:gala:problem:authorization-denied
67240
+ schema:
67241
+ $ref: "#/components/schemas/Problem"
67242
+ description: AUTHORIZATION_DENIED
67243
+ headers:
67244
+ Cache-Control:
67245
+ $ref: "#/components/headers/CacheControlNoStore"
67246
+ X-Correlation-Id:
67247
+ $ref: "#/components/headers/XCorrelationId"
67248
+ x-gala-problem-codes:
67249
+ - AUTHORIZATION_DENIED
67250
+ "404":
67251
+ content:
67252
+ application/problem+json:
67253
+ examples:
67254
+ RESOURCE_NOT_FOUND:
67255
+ summary: RESOURCE_NOT_FOUND
67256
+ value:
67257
+ code: RESOURCE_NOT_FOUND
67258
+ correlationId: 018f0000-0000-7000-8000-000000000001
67259
+ detail: See the operation contract.
67260
+ errors: []
67261
+ retryable: false
67262
+ schemaId: urn:gala:schema:problem:2.0.0
67263
+ schemaVersion: 2.0.0
67264
+ status: 404
67265
+ title: RESOURCE_NOT_FOUND
67266
+ type: urn:gala:problem:resource-not-found
67267
+ SYNDICATION_CONNECTION_NOT_FOUND:
67268
+ summary: SYNDICATION_CONNECTION_NOT_FOUND
67269
+ value:
67270
+ code: SYNDICATION_CONNECTION_NOT_FOUND
67271
+ correlationId: 018f0000-0000-7000-8000-000000000001
67272
+ detail: See the operation contract.
67273
+ errors: []
67274
+ retryable: false
67275
+ schemaId: urn:gala:schema:problem:2.0.0
67276
+ schemaVersion: 2.0.0
67277
+ status: 404
67278
+ title: SYNDICATION_CONNECTION_NOT_FOUND
67279
+ type: urn:gala:problem:syndication-connection-not-found
67280
+ schema:
67281
+ $ref: "#/components/schemas/Problem"
67282
+ description: RESOURCE_NOT_FOUND, SYNDICATION_CONNECTION_NOT_FOUND
67283
+ headers:
67284
+ Cache-Control:
67285
+ $ref: "#/components/headers/CacheControlNoStore"
67286
+ X-Correlation-Id:
67287
+ $ref: "#/components/headers/XCorrelationId"
67288
+ x-gala-problem-codes:
67289
+ - RESOURCE_NOT_FOUND
67290
+ - SYNDICATION_CONNECTION_NOT_FOUND
67291
+ "409":
67292
+ content:
67293
+ application/problem+json:
67294
+ examples:
67295
+ COMMAND_REPLAY_CONFLICT:
67296
+ summary: COMMAND_REPLAY_CONFLICT
67297
+ value:
67298
+ code: COMMAND_REPLAY_CONFLICT
67299
+ correlationId: 018f0000-0000-7000-8000-000000000001
67300
+ detail: See the operation contract.
67301
+ errors: []
67302
+ retryable: false
67303
+ schemaId: urn:gala:schema:problem:2.0.0
67304
+ schemaVersion: 2.0.0
67305
+ status: 409
67306
+ title: COMMAND_REPLAY_CONFLICT
67307
+ type: urn:gala:problem:command-replay-conflict
67308
+ SYNDICATION_CONNECTION_NOT_ACTIVE:
67309
+ summary: SYNDICATION_CONNECTION_NOT_ACTIVE
67310
+ value:
67311
+ code: SYNDICATION_CONNECTION_NOT_ACTIVE
67312
+ correlationId: 018f0000-0000-7000-8000-000000000001
67313
+ detail: See the operation contract.
67314
+ errors: []
67315
+ retryable: false
67316
+ schemaId: urn:gala:schema:problem:2.0.0
67317
+ schemaVersion: 2.0.0
67318
+ status: 409
67319
+ title: SYNDICATION_CONNECTION_NOT_ACTIVE
67320
+ type: urn:gala:problem:syndication-connection-not-active
67321
+ SYNDICATION_POST_NOT_LIVE:
67322
+ summary: SYNDICATION_POST_NOT_LIVE
67323
+ value:
67324
+ code: SYNDICATION_POST_NOT_LIVE
67325
+ correlationId: 018f0000-0000-7000-8000-000000000001
67326
+ detail: See the operation contract.
67327
+ errors: []
67328
+ retryable: false
67329
+ schemaId: urn:gala:schema:problem:2.0.0
67330
+ schemaVersion: 2.0.0
67331
+ status: 409
67332
+ title: SYNDICATION_POST_NOT_LIVE
67333
+ type: urn:gala:problem:syndication-post-not-live
67334
+ schema:
67335
+ $ref: "#/components/schemas/Problem"
67336
+ description: COMMAND_REPLAY_CONFLICT, SYNDICATION_CONNECTION_NOT_ACTIVE, SYNDICATION_POST_NOT_LIVE
67337
+ headers:
67338
+ Cache-Control:
67339
+ $ref: "#/components/headers/CacheControlNoStore"
67340
+ X-Correlation-Id:
67341
+ $ref: "#/components/headers/XCorrelationId"
67342
+ x-gala-problem-codes:
67343
+ - COMMAND_REPLAY_CONFLICT
67344
+ - SYNDICATION_CONNECTION_NOT_ACTIVE
67345
+ - SYNDICATION_POST_NOT_LIVE
67346
+ "429":
67347
+ content:
67348
+ application/problem+json:
67349
+ examples:
67350
+ RATE_LIMITED:
67351
+ summary: RATE_LIMITED
67352
+ value:
67353
+ code: RATE_LIMITED
67354
+ correlationId: 018f0000-0000-7000-8000-000000000001
67355
+ detail: See the operation contract.
67356
+ errors: []
67357
+ retryable: true
67358
+ schemaId: urn:gala:schema:problem:2.0.0
67359
+ schemaVersion: 2.0.0
67360
+ status: 429
67361
+ title: RATE_LIMITED
67362
+ type: urn:gala:problem:rate-limited
67363
+ schema:
67364
+ $ref: "#/components/schemas/Problem"
67365
+ description: RATE_LIMITED
67366
+ headers:
67367
+ Cache-Control:
67368
+ $ref: "#/components/headers/CacheControlNoStore"
67369
+ Retry-After:
67370
+ $ref: "#/components/headers/RetryAfter"
67371
+ X-Correlation-Id:
67372
+ $ref: "#/components/headers/XCorrelationId"
67373
+ x-gala-problem-codes:
67374
+ - RATE_LIMITED
67375
+ security:
67376
+ - browserSession: []
67377
+ summary: send an earlier post to syndication connections
67378
+ tags:
67379
+ - syndication
67380
+ x-gala-activation-gate: MVP
67381
+ x-gala-activation-guards:
67382
+ - NONE
67383
+ x-gala-capability-key: publication.settings.manage
67384
+ x-gala-concurrency: authorization-and-publication-epochs
67385
+ x-gala-conditional-capabilities: []
67386
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
67387
+ x-gala-nullability: required-and-nullable-are-explicit
67388
+ x-gala-purpose: send an earlier post to syndication connections
67389
+ x-gala-reachable-problems:
67390
+ - AUTHENTICATION_REQUIRED
67391
+ - AUTHORIZATION_DENIED
67392
+ - COMMAND_REPLAY_CONFLICT
67393
+ - RATE_LIMITED
67394
+ - REQUEST_FIELD_UNKNOWN
67395
+ - RESOURCE_NOT_FOUND
67396
+ - SYNDICATION_CONNECTION_NOT_ACTIVE
67397
+ - SYNDICATION_CONNECTION_NOT_FOUND
67398
+ - SYNDICATION_POST_NOT_LIVE
67399
+ - VALIDATION_FAILED
67400
+ x-gala-replay-identity: idempotency-key
67401
+ x-gala-state-guards:
67402
+ - NONE
67403
+ x-gala-success-category: async
67404
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
67405
+ /v2/organizations/{organizationId}/publications/{publicationId}/syndication-deliveries/{deliveryId}:retry:
67406
+ post:
67407
+ description: Queues a `FAILED` or `SKIPPED` delivery for another attempt and answers `202` with it as `PENDING`. `409 SYNDICATION_DELIVERY_NOT_RETRYABLE` when the delivery is in any other status; `409 SYNDICATION_CONNECTION_NOT_ACTIVE` when its connection is paused or needs attention; `404 SYNDICATION_CONNECTION_NOT_FOUND` when its connection was removed. Needs `publication.settings.manage`.
67408
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesByDeliveryIdRetry
67409
+ parameters:
67410
+ - $ref: "#/components/parameters/XCorrelationId"
67411
+ - example: 018f0000-0000-7000-8000-000000000001
67412
+ in: path
67413
+ name: organizationId
67414
+ required: true
67415
+ schema:
67416
+ format: uuid
67417
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
67418
+ type: string
67419
+ - example: 018f0000-0000-7000-8000-000000000001
67420
+ in: path
67421
+ name: publicationId
67422
+ required: true
67423
+ schema:
67424
+ format: uuid
67425
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
67426
+ type: string
67427
+ - example: 018f0000-0000-7000-8000-000000000001
67428
+ in: path
67429
+ name: deliveryId
67430
+ required: true
67431
+ schema:
67432
+ format: uuid
67433
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
67434
+ type: string
67435
+ - $ref: "#/components/parameters/IdempotencyKey"
67436
+ - $ref: "#/components/parameters/XCsrfToken"
67437
+ responses:
67438
+ "202":
67439
+ content:
67440
+ application/json:
67441
+ examples:
67442
+ nominal:
67443
+ summary: Nominal successful response
67444
+ value:
67445
+ accountLabel: "@example.bsky.social"
67446
+ attemptCount: 1
67447
+ connectionId: 018f0000-0000-7000-8000-000000000001
67448
+ contentId: 018f0000-0000-7000-8000-000000000003
67449
+ contentTitle: Why we cut onboarding from nine steps to four
67450
+ createdAt: "2026-11-05T12:00:00.000Z"
67451
+ externalUrl: https://bsky.app/profile/example.bsky.social/post/3kexample
67452
+ id: 018f0000-0000-7000-8000-000000000002
67453
+ kind: bluesky
67454
+ liveUrl: https://example.com/onboarding/
67455
+ requestedBy: ANNOUNCEMENT
67456
+ status: PENDING
67457
+ updatedAt: "2026-11-05T12:00:00.000Z"
67458
+ schema:
67459
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdSyndicationDeliveriesByDeliveryIdRetryResponse"
67460
+ description: retry a syndication delivery accepted
67461
+ headers:
67462
+ Cache-Control:
67463
+ $ref: "#/components/headers/CacheControlNoStore"
67464
+ X-Correlation-Id:
67465
+ $ref: "#/components/headers/XCorrelationId"
67466
+ "400":
67467
+ content:
67468
+ application/problem+json:
67469
+ examples:
67470
+ VALIDATION_FAILED:
67471
+ summary: VALIDATION_FAILED
67472
+ value:
67473
+ code: VALIDATION_FAILED
67474
+ correlationId: 018f0000-0000-7000-8000-000000000001
67475
+ detail: See the operation contract.
67476
+ errors: []
67477
+ retryable: false
67478
+ schemaId: urn:gala:schema:problem:2.0.0
67479
+ schemaVersion: 2.0.0
67480
+ status: 400
67481
+ title: VALIDATION_FAILED
67482
+ type: urn:gala:problem:validation-failed
67483
+ schema:
67484
+ $ref: "#/components/schemas/Problem"
67485
+ description: VALIDATION_FAILED
67486
+ headers:
67487
+ Cache-Control:
67488
+ $ref: "#/components/headers/CacheControlNoStore"
67489
+ X-Correlation-Id:
67490
+ $ref: "#/components/headers/XCorrelationId"
67491
+ x-gala-problem-codes:
67492
+ - VALIDATION_FAILED
67493
+ "401":
67494
+ content:
67495
+ application/problem+json:
67496
+ examples:
67497
+ AUTHENTICATION_REQUIRED:
67498
+ summary: AUTHENTICATION_REQUIRED
67499
+ value:
67500
+ code: AUTHENTICATION_REQUIRED
67501
+ correlationId: 018f0000-0000-7000-8000-000000000001
67502
+ detail: See the operation contract.
67503
+ errors: []
67504
+ retryable: false
67505
+ schemaId: urn:gala:schema:problem:2.0.0
67506
+ schemaVersion: 2.0.0
67507
+ status: 401
67508
+ title: AUTHENTICATION_REQUIRED
67509
+ type: urn:gala:problem:authentication-required
67510
+ schema:
67511
+ $ref: "#/components/schemas/Problem"
67512
+ description: AUTHENTICATION_REQUIRED
67513
+ headers:
67514
+ Cache-Control:
67515
+ $ref: "#/components/headers/CacheControlNoStore"
67516
+ X-Correlation-Id:
67517
+ $ref: "#/components/headers/XCorrelationId"
67518
+ x-gala-problem-codes:
67519
+ - AUTHENTICATION_REQUIRED
67520
+ "403":
67521
+ content:
67522
+ application/problem+json:
67523
+ examples:
67524
+ AUTHORIZATION_DENIED:
67525
+ summary: AUTHORIZATION_DENIED
67526
+ value:
67527
+ code: AUTHORIZATION_DENIED
67528
+ correlationId: 018f0000-0000-7000-8000-000000000001
67529
+ detail: See the operation contract.
67530
+ errors: []
67531
+ retryable: false
67532
+ schemaId: urn:gala:schema:problem:2.0.0
67533
+ schemaVersion: 2.0.0
67534
+ status: 403
67535
+ title: AUTHORIZATION_DENIED
67536
+ type: urn:gala:problem:authorization-denied
67537
+ schema:
67538
+ $ref: "#/components/schemas/Problem"
67539
+ description: AUTHORIZATION_DENIED
67540
+ headers:
67541
+ Cache-Control:
67542
+ $ref: "#/components/headers/CacheControlNoStore"
67543
+ X-Correlation-Id:
67544
+ $ref: "#/components/headers/XCorrelationId"
67545
+ x-gala-problem-codes:
67546
+ - AUTHORIZATION_DENIED
67547
+ "404":
67548
+ content:
67549
+ application/problem+json:
67550
+ examples:
67551
+ RESOURCE_NOT_FOUND:
67552
+ summary: RESOURCE_NOT_FOUND
67553
+ value:
67554
+ code: RESOURCE_NOT_FOUND
67555
+ correlationId: 018f0000-0000-7000-8000-000000000001
67556
+ detail: See the operation contract.
67557
+ errors: []
67558
+ retryable: false
67559
+ schemaId: urn:gala:schema:problem:2.0.0
67560
+ schemaVersion: 2.0.0
67561
+ status: 404
67562
+ title: RESOURCE_NOT_FOUND
67563
+ type: urn:gala:problem:resource-not-found
67564
+ SYNDICATION_CONNECTION_NOT_FOUND:
67565
+ summary: SYNDICATION_CONNECTION_NOT_FOUND
67566
+ value:
67567
+ code: SYNDICATION_CONNECTION_NOT_FOUND
67568
+ correlationId: 018f0000-0000-7000-8000-000000000001
67569
+ detail: See the operation contract.
67570
+ errors: []
67571
+ retryable: false
67572
+ schemaId: urn:gala:schema:problem:2.0.0
67573
+ schemaVersion: 2.0.0
67574
+ status: 404
67575
+ title: SYNDICATION_CONNECTION_NOT_FOUND
67576
+ type: urn:gala:problem:syndication-connection-not-found
67577
+ SYNDICATION_DELIVERY_NOT_FOUND:
67578
+ summary: SYNDICATION_DELIVERY_NOT_FOUND
67579
+ value:
67580
+ code: SYNDICATION_DELIVERY_NOT_FOUND
67581
+ correlationId: 018f0000-0000-7000-8000-000000000001
67582
+ detail: See the operation contract.
67583
+ errors: []
67584
+ retryable: false
67585
+ schemaId: urn:gala:schema:problem:2.0.0
67586
+ schemaVersion: 2.0.0
67587
+ status: 404
67588
+ title: SYNDICATION_DELIVERY_NOT_FOUND
67589
+ type: urn:gala:problem:syndication-delivery-not-found
67590
+ schema:
67591
+ $ref: "#/components/schemas/Problem"
67592
+ description: RESOURCE_NOT_FOUND, SYNDICATION_CONNECTION_NOT_FOUND, SYNDICATION_DELIVERY_NOT_FOUND
67593
+ headers:
67594
+ Cache-Control:
67595
+ $ref: "#/components/headers/CacheControlNoStore"
67596
+ X-Correlation-Id:
67597
+ $ref: "#/components/headers/XCorrelationId"
67598
+ x-gala-problem-codes:
67599
+ - RESOURCE_NOT_FOUND
67600
+ - SYNDICATION_CONNECTION_NOT_FOUND
67601
+ - SYNDICATION_DELIVERY_NOT_FOUND
67602
+ "409":
67603
+ content:
67604
+ application/problem+json:
67605
+ examples:
67606
+ COMMAND_REPLAY_CONFLICT:
67607
+ summary: COMMAND_REPLAY_CONFLICT
67608
+ value:
67609
+ code: COMMAND_REPLAY_CONFLICT
67610
+ correlationId: 018f0000-0000-7000-8000-000000000001
67611
+ detail: See the operation contract.
67612
+ errors: []
67613
+ retryable: false
67614
+ schemaId: urn:gala:schema:problem:2.0.0
67615
+ schemaVersion: 2.0.0
67616
+ status: 409
67617
+ title: COMMAND_REPLAY_CONFLICT
67618
+ type: urn:gala:problem:command-replay-conflict
67619
+ SYNDICATION_CONNECTION_NOT_ACTIVE:
67620
+ summary: SYNDICATION_CONNECTION_NOT_ACTIVE
67621
+ value:
67622
+ code: SYNDICATION_CONNECTION_NOT_ACTIVE
67623
+ correlationId: 018f0000-0000-7000-8000-000000000001
67624
+ detail: See the operation contract.
67625
+ errors: []
67626
+ retryable: false
67627
+ schemaId: urn:gala:schema:problem:2.0.0
67628
+ schemaVersion: 2.0.0
67629
+ status: 409
67630
+ title: SYNDICATION_CONNECTION_NOT_ACTIVE
67631
+ type: urn:gala:problem:syndication-connection-not-active
67632
+ SYNDICATION_DELIVERY_NOT_RETRYABLE:
67633
+ summary: SYNDICATION_DELIVERY_NOT_RETRYABLE
67634
+ value:
67635
+ code: SYNDICATION_DELIVERY_NOT_RETRYABLE
67636
+ correlationId: 018f0000-0000-7000-8000-000000000001
67637
+ detail: See the operation contract.
67638
+ errors: []
67639
+ retryable: false
67640
+ schemaId: urn:gala:schema:problem:2.0.0
67641
+ schemaVersion: 2.0.0
67642
+ status: 409
67643
+ title: SYNDICATION_DELIVERY_NOT_RETRYABLE
67644
+ type: urn:gala:problem:syndication-delivery-not-retryable
67645
+ schema:
67646
+ $ref: "#/components/schemas/Problem"
67647
+ description: COMMAND_REPLAY_CONFLICT, SYNDICATION_CONNECTION_NOT_ACTIVE, SYNDICATION_DELIVERY_NOT_RETRYABLE
67648
+ headers:
67649
+ Cache-Control:
67650
+ $ref: "#/components/headers/CacheControlNoStore"
67651
+ X-Correlation-Id:
67652
+ $ref: "#/components/headers/XCorrelationId"
67653
+ x-gala-problem-codes:
67654
+ - COMMAND_REPLAY_CONFLICT
67655
+ - SYNDICATION_CONNECTION_NOT_ACTIVE
67656
+ - SYNDICATION_DELIVERY_NOT_RETRYABLE
67657
+ "429":
67658
+ content:
67659
+ application/problem+json:
67660
+ examples:
67661
+ RATE_LIMITED:
67662
+ summary: RATE_LIMITED
67663
+ value:
67664
+ code: RATE_LIMITED
67665
+ correlationId: 018f0000-0000-7000-8000-000000000001
67666
+ detail: See the operation contract.
67667
+ errors: []
67668
+ retryable: true
67669
+ schemaId: urn:gala:schema:problem:2.0.0
67670
+ schemaVersion: 2.0.0
67671
+ status: 429
67672
+ title: RATE_LIMITED
67673
+ type: urn:gala:problem:rate-limited
67674
+ schema:
67675
+ $ref: "#/components/schemas/Problem"
67676
+ description: RATE_LIMITED
67677
+ headers:
67678
+ Cache-Control:
67679
+ $ref: "#/components/headers/CacheControlNoStore"
67680
+ Retry-After:
67681
+ $ref: "#/components/headers/RetryAfter"
67682
+ X-Correlation-Id:
67683
+ $ref: "#/components/headers/XCorrelationId"
67684
+ x-gala-problem-codes:
67685
+ - RATE_LIMITED
67686
+ security:
67687
+ - browserSession: []
67688
+ summary: retry a syndication delivery
67689
+ tags:
67690
+ - syndication
67691
+ x-gala-activation-gate: MVP
67692
+ x-gala-activation-guards:
67693
+ - NONE
67694
+ x-gala-capability-key: publication.settings.manage
67695
+ x-gala-concurrency: authorization-and-publication-epochs
67696
+ x-gala-conditional-capabilities: []
67697
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
67698
+ x-gala-nullability: required-and-nullable-are-explicit
67699
+ x-gala-purpose: retry a syndication delivery
67700
+ x-gala-reachable-problems:
67701
+ - AUTHENTICATION_REQUIRED
67702
+ - AUTHORIZATION_DENIED
67703
+ - COMMAND_REPLAY_CONFLICT
67704
+ - RATE_LIMITED
67705
+ - RESOURCE_NOT_FOUND
67706
+ - SYNDICATION_CONNECTION_NOT_ACTIVE
67707
+ - SYNDICATION_CONNECTION_NOT_FOUND
67708
+ - SYNDICATION_DELIVERY_NOT_FOUND
67709
+ - SYNDICATION_DELIVERY_NOT_RETRYABLE
67710
+ - VALIDATION_FAILED
67711
+ x-gala-replay-identity: idempotency-key
67712
+ x-gala-state-guards:
67713
+ - NONE
67714
+ x-gala-success-category: async
67715
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
64215
67716
  /v2/organizations/{organizationId}/publications/{publicationId}/transfers:
64216
67717
  post:
64217
67718
  description: |
@@ -81297,6 +84798,7 @@ tags:
81297
84798
  - name: reader
81298
84799
  - name: self
81299
84800
  - name: session
84801
+ - name: syndication
81300
84802
  - name: workloads
81301
84803
  x-gala-contract-id: urn:gala:schema:openapi:2.0.0
81302
84804
  x-gala-source-design-revision: a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a