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