@rathnasgala2/schemas 3.13.0 → 3.14.1
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.
- package/THIRD_PARTY_LICENSES.json +1 -1
- package/docs/catalogs/app-components.json +2 -2
- package/docs/catalogs/app-routes.json +10 -2
- package/docs/catalogs/schema-inventory.json +2 -2
- package/openapi/http-catalog.json +43 -4
- package/openapi/openapi.yaml +1042 -144
- package/package.json +1 -1
- package/sbom.cdx.json +23 -23
package/openapi/openapi.yaml
CHANGED
|
@@ -1441,6 +1441,27 @@ components:
|
|
|
1441
1441
|
- GOOGLE
|
|
1442
1442
|
- DESCRIPTION_CODE
|
|
1443
1443
|
type: string
|
|
1444
|
+
CreatorClaimProof:
|
|
1445
|
+
additionalProperties: false
|
|
1446
|
+
description: What a claimant must show before accepting. `YOUTUBE_CHANNEL` needs the claimant to prove they control the channel (`channelId`, and `handle` when it is known); `LINK_ONLY` needs nothing beyond the link itself, so anyone who holds a `LINK_ONLY` link and signs in can claim the site.
|
|
1447
|
+
properties:
|
|
1448
|
+
channelId:
|
|
1449
|
+
$ref: "#/components/schemas/YoutubeChannelId"
|
|
1450
|
+
handle:
|
|
1451
|
+
maxLength: 31
|
|
1452
|
+
minLength: 4
|
|
1453
|
+
pattern: ^@[A-Za-z0-9._-]{3,30}$
|
|
1454
|
+
type: string
|
|
1455
|
+
kind:
|
|
1456
|
+
$ref: "#/components/schemas/CreatorClaimProofKind"
|
|
1457
|
+
required:
|
|
1458
|
+
- kind
|
|
1459
|
+
type: object
|
|
1460
|
+
CreatorClaimProofKind:
|
|
1461
|
+
enum:
|
|
1462
|
+
- YOUTUBE_CHANNEL
|
|
1463
|
+
- LINK_ONLY
|
|
1464
|
+
type: string
|
|
1444
1465
|
CreatorClaimState:
|
|
1445
1466
|
enum:
|
|
1446
1467
|
- OPEN
|
|
@@ -2146,6 +2167,7 @@ components:
|
|
|
2146
2167
|
properties:
|
|
2147
2168
|
channel:
|
|
2148
2169
|
additionalProperties: false
|
|
2170
|
+
description: Present only when `proof.kind` is `YOUTUBE_CHANNEL`.
|
|
2149
2171
|
properties:
|
|
2150
2172
|
handle:
|
|
2151
2173
|
maxLength: 31
|
|
@@ -2165,19 +2187,22 @@ components:
|
|
|
2165
2187
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
2166
2188
|
type: string
|
|
2167
2189
|
methods:
|
|
2190
|
+
description: The ways to prove the channel is the caller's; empty when `proof.kind` is `LINK_ONLY`, which has nothing to prove.
|
|
2168
2191
|
items:
|
|
2169
2192
|
$ref: "#/components/schemas/CreatorClaimMethod"
|
|
2170
2193
|
maxItems: 2
|
|
2171
|
-
minItems:
|
|
2194
|
+
minItems: 0
|
|
2172
2195
|
type: array
|
|
2173
2196
|
uniqueItems: true
|
|
2174
2197
|
organizationId:
|
|
2175
|
-
description: Present only when `state` is `CLAIMED` and the caller is the person who claimed it.
|
|
2198
|
+
description: Present only when `state` is `CLAIMED` and the caller is the person who claimed it, or when the caller already owns the site (the owner who issued the link, reading it).
|
|
2176
2199
|
format: uuid
|
|
2177
2200
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
2178
2201
|
type: string
|
|
2202
|
+
proof:
|
|
2203
|
+
$ref: "#/components/schemas/CreatorClaimProof"
|
|
2179
2204
|
publicationId:
|
|
2180
|
-
description: Present only when `state` is `CLAIMED` and the caller is the person who claimed it.
|
|
2205
|
+
description: Present only when `state` is `CLAIMED` and the caller is the person who claimed it, or when the caller already owns the site (the owner who issued the link, reading it).
|
|
2181
2206
|
format: uuid
|
|
2182
2207
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
2183
2208
|
type: string
|
|
@@ -2202,7 +2227,6 @@ components:
|
|
|
2202
2227
|
required:
|
|
2203
2228
|
- claimId
|
|
2204
2229
|
- state
|
|
2205
|
-
- channel
|
|
2206
2230
|
- site
|
|
2207
2231
|
- methods
|
|
2208
2232
|
type: object
|
|
@@ -3128,6 +3152,18 @@ components:
|
|
|
3128
3152
|
- periodEndsAt
|
|
3129
3153
|
- editionKinds
|
|
3130
3154
|
type: object
|
|
3155
|
+
GetOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsResponse:
|
|
3156
|
+
additionalProperties: false
|
|
3157
|
+
properties:
|
|
3158
|
+
items:
|
|
3159
|
+
description: Newest first, every state; at most the 50 most recent.
|
|
3160
|
+
items:
|
|
3161
|
+
$ref: "#/components/schemas/HandoverClaim"
|
|
3162
|
+
maxItems: 50
|
|
3163
|
+
type: array
|
|
3164
|
+
required:
|
|
3165
|
+
- items
|
|
3166
|
+
type: object
|
|
3131
3167
|
GetOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverResponse:
|
|
3132
3168
|
additionalProperties: false
|
|
3133
3169
|
properties:
|
|
@@ -4818,6 +4854,59 @@ components:
|
|
|
4818
4854
|
- PRIVATE
|
|
4819
4855
|
- PUBLIC
|
|
4820
4856
|
type: string
|
|
4857
|
+
HandoverClaim:
|
|
4858
|
+
additionalProperties: false
|
|
4859
|
+
description: One claim link that hands a site to whoever accepts it. Demo-site claims appear here too, with proof `YOUTUBE_CHANNEL`.
|
|
4860
|
+
properties:
|
|
4861
|
+
claimId:
|
|
4862
|
+
format: uuid
|
|
4863
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
4864
|
+
type: string
|
|
4865
|
+
claimUrl:
|
|
4866
|
+
description: Present only while `state` is `OPEN`, so the owner can copy the link again; absent in every other state. It is also absent on an `OPEN` claim issued before 3.14.0 whose token the API does not hold sealed, until the owner re-issues the claim with `replace`. The link is a bearer secret, so anyone who holds it can open the claim page.
|
|
4867
|
+
format: uri
|
|
4868
|
+
maxLength: 2048
|
|
4869
|
+
pattern: ^https://[^\s]+$
|
|
4870
|
+
type: string
|
|
4871
|
+
claimedAt:
|
|
4872
|
+
$ref: "#/components/schemas/PortableProblemRfc3339"
|
|
4873
|
+
claimedBy:
|
|
4874
|
+
additionalProperties: false
|
|
4875
|
+
description: Present only when `state` is `CLAIMED`.
|
|
4876
|
+
properties:
|
|
4877
|
+
displayName:
|
|
4878
|
+
maxLength: 200
|
|
4879
|
+
minLength: 1
|
|
4880
|
+
type: string
|
|
4881
|
+
login:
|
|
4882
|
+
description: "GitHub login grammar: letters, digits and single hyphens, not starting or ending with a hyphen. Absent when the claimant has no linked GitHub login."
|
|
4883
|
+
maxLength: 39
|
|
4884
|
+
minLength: 1
|
|
4885
|
+
pattern: ^[A-Za-z0-9](?:-?[A-Za-z0-9]){0,38}$
|
|
4886
|
+
type: string
|
|
4887
|
+
required:
|
|
4888
|
+
- displayName
|
|
4889
|
+
type: object
|
|
4890
|
+
createdAt:
|
|
4891
|
+
$ref: "#/components/schemas/PortableProblemRfc3339"
|
|
4892
|
+
expiresAt:
|
|
4893
|
+
$ref: "#/components/schemas/PortableProblemRfc3339"
|
|
4894
|
+
proof:
|
|
4895
|
+
$ref: "#/components/schemas/CreatorClaimProof"
|
|
4896
|
+
state:
|
|
4897
|
+
$ref: "#/components/schemas/CreatorClaimState"
|
|
4898
|
+
version:
|
|
4899
|
+
format: int64
|
|
4900
|
+
minimum: 0
|
|
4901
|
+
type: integer
|
|
4902
|
+
required:
|
|
4903
|
+
- claimId
|
|
4904
|
+
- state
|
|
4905
|
+
- createdAt
|
|
4906
|
+
- expiresAt
|
|
4907
|
+
- proof
|
|
4908
|
+
- version
|
|
4909
|
+
type: object
|
|
4821
4910
|
HandoverState:
|
|
4822
4911
|
enum:
|
|
4823
4912
|
- NOT_STARTED
|
|
@@ -14672,6 +14761,30 @@ components:
|
|
|
14672
14761
|
- $ref: "#/components/schemas/DomainBinding"
|
|
14673
14762
|
PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverCancelResponse:
|
|
14674
14763
|
$ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverResponse"
|
|
14764
|
+
PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsByClaimIdRevokeResponse:
|
|
14765
|
+
$ref: "#/components/schemas/HandoverClaim"
|
|
14766
|
+
PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsRequest:
|
|
14767
|
+
additionalProperties: false
|
|
14768
|
+
properties:
|
|
14769
|
+
channelId:
|
|
14770
|
+
$ref: "#/components/schemas/YoutubeChannelId"
|
|
14771
|
+
expiresInDays:
|
|
14772
|
+
default: 30
|
|
14773
|
+
description: Days until the link expires; at most 365.
|
|
14774
|
+
maximum: 365
|
|
14775
|
+
minimum: 1
|
|
14776
|
+
type: integer
|
|
14777
|
+
proof:
|
|
14778
|
+
$ref: "#/components/schemas/CreatorClaimProofKind"
|
|
14779
|
+
replace:
|
|
14780
|
+
default: false
|
|
14781
|
+
description: Set to revoke the site's OPEN claim and issue this one in its place. Without it, an OPEN claim answers `409 INVALID_SOURCE_STATE`.
|
|
14782
|
+
type: boolean
|
|
14783
|
+
required:
|
|
14784
|
+
- proof
|
|
14785
|
+
type: object
|
|
14786
|
+
PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsResponse:
|
|
14787
|
+
$ref: "#/components/schemas/HandoverClaim"
|
|
14675
14788
|
PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverRequest:
|
|
14676
14789
|
additionalProperties: false
|
|
14677
14790
|
properties:
|
|
@@ -15645,7 +15758,7 @@ components:
|
|
|
15645
15758
|
additionalProperties: false
|
|
15646
15759
|
properties:
|
|
15647
15760
|
claimUrl:
|
|
15648
|
-
description:
|
|
15761
|
+
description: Present only in the response that issued the claim link, or re-issued it while the claim is still OPEN. While the claim is OPEN the site owner can read the link again from `GET .../handover-claims`; once it is VERIFIED or CLAIMED it is gone.
|
|
15649
15762
|
format: uri
|
|
15650
15763
|
maxLength: 2048
|
|
15651
15764
|
pattern: ^https://[^\s]+$
|
|
@@ -20006,7 +20119,7 @@ paths:
|
|
|
20006
20119
|
/v2/claims/{token}:
|
|
20007
20120
|
get:
|
|
20008
20121
|
description: |
|
|
20009
|
-
Needs a signed-in session; signed out is `401 AUTHENTICATION_REQUIRED` and reveals nothing. Returns the
|
|
20122
|
+
Needs a signed-in session; signed out is `401 AUTHENTICATION_REQUIRED` and reveals nothing. Returns the site the link offers, what the claimant must show (`proof`) and the ways to show it. For `proof.kind` `YOUTUBE_CHANNEL` the response carries the `channel` and the `methods` that prove it is the caller's. For `LINK_ONLY` there is no channel and `methods` is empty: the caller goes straight to `POST /v2/claims/{token}:accept` after signing in. A response without `proof` is a `YOUTUBE_CHANNEL` claim. `organizationId` and `publicationId` are also returned to the person who issued the link (the site owner reading their own link), who owns the site; accepting it is refused with `409 INVALID_SOURCE_STATE`. `404 CLAIM_NOT_FOUND` for an unknown or revoked link, `410 CLAIM_EXPIRED` once the claim is past its expiry (a demo site's archive date, or the `expiresAt` the site owner chose). Rate limited per caller (`429 RATE_LIMITED`).
|
|
20010
20123
|
operationId: getClaimsByToken
|
|
20011
20124
|
parameters:
|
|
20012
20125
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
@@ -20035,6 +20148,10 @@ paths:
|
|
|
20035
20148
|
methods:
|
|
20036
20149
|
- GOOGLE
|
|
20037
20150
|
- DESCRIPTION_CODE
|
|
20151
|
+
proof:
|
|
20152
|
+
channelId: UCabcdefghijklmnopqrstuv
|
|
20153
|
+
handle: "@mayacooks"
|
|
20154
|
+
kind: YOUTUBE_CHANNEL
|
|
20038
20155
|
site:
|
|
20039
20156
|
name: Maya Cooks
|
|
20040
20157
|
url: https://rathnasdemo.github.io/maya-cooks/
|
|
@@ -20242,7 +20359,7 @@ paths:
|
|
|
20242
20359
|
/v2/claims/{token}/description-code:
|
|
20243
20360
|
post:
|
|
20244
20361
|
description: |
|
|
20245
|
-
Needs a signed-in session. Issues a one-time code to put in the YouTube channel description, valid 24 hours; a new request replaces an unexpired code issued to the same person. `404 CLAIM_NOT_FOUND`, `410 CLAIM_EXPIRED`, `409 CLAIM_ALREADY_CLAIMED`, and `409 CLAIM_CODE_PENDING` when a description code issued to another person for this claim is still pending: it expires at the time in the problem detail, so verify with Google instead, or try again after it expires. Rate limited (`429 RATE_LIMITED`).
|
|
20362
|
+
Needs a signed-in session. Issues a one-time code to put in the YouTube channel description, valid 24 hours; a new request replaces an unexpired code issued to the same person. `404 CLAIM_NOT_FOUND`, `410 CLAIM_EXPIRED`, `409 CLAIM_ALREADY_CLAIMED`, and `409 CLAIM_CODE_PENDING` when a description code issued to another person for this claim is still pending: it expires at the time in the problem detail, so verify with Google instead, or try again after it expires. A `LINK_ONLY` claim has no channel to prove, so this answers `400 VALIDATION_FAILED` for one. Rate limited (`429 RATE_LIMITED`). The first person to complete acceptance owns the site. Until a claim is `CLAIMED`, anyone who proves the channel may verify it, and a later proof replaces an earlier one.
|
|
20246
20363
|
operationId: postClaimsByTokenDescriptionCode
|
|
20247
20364
|
parameters:
|
|
20248
20365
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
@@ -20513,7 +20630,7 @@ paths:
|
|
|
20513
20630
|
/v2/claims/{token}/description-code:check:
|
|
20514
20631
|
post:
|
|
20515
20632
|
description: |
|
|
20516
|
-
Needs a signed-in session. Reads the channel description through the YouTube Data API and, when it contains the issued code, marks the claim verified for this person and spends the code. A code that is not there yet is `200` with `verified: false` and a `reason`, not a problem. `503 DEPENDENCY_UNAVAILABLE` when YouTube cannot be reached. Rate limited (`429 RATE_LIMITED`).
|
|
20633
|
+
Needs a signed-in session. Reads the channel description through the YouTube Data API and, when it contains the issued code, marks the claim verified for this person and spends the code. A code that is not there yet is `200` with `verified: false` and a `reason`, not a problem. `503 DEPENDENCY_UNAVAILABLE` when YouTube cannot be reached. A `LINK_ONLY` claim has no channel to prove, so this answers `400 VALIDATION_FAILED` for one. Rate limited (`429 RATE_LIMITED`). The first person to complete acceptance owns the site. Until a claim is `CLAIMED`, anyone who proves the channel may verify it, and a later proof replaces an earlier one.
|
|
20517
20634
|
operationId: postClaimsByTokenDescriptionCodeCheck
|
|
20518
20635
|
parameters:
|
|
20519
20636
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
@@ -20797,7 +20914,7 @@ paths:
|
|
|
20797
20914
|
/v2/claims/{token}/google:start:
|
|
20798
20915
|
post:
|
|
20799
20916
|
description: |
|
|
20800
|
-
Needs a signed-in session. Returns the Google authorize URL for one single-use, PKCE-protected transaction bound to this session; the callback is `GET /v2/callbacks/google/claim`. `404 CLAIM_NOT_FOUND`, `410 CLAIM_EXPIRED`, `409 CLAIM_ALREADY_CLAIMED` when the site was taken. Rate limited (`429 RATE_LIMITED`).
|
|
20917
|
+
Needs a signed-in session. Returns the Google authorize URL for one single-use, PKCE-protected transaction bound to this session; the callback is `GET /v2/callbacks/google/claim`. `404 CLAIM_NOT_FOUND`, `410 CLAIM_EXPIRED`, `409 CLAIM_ALREADY_CLAIMED` when the site was taken. A `LINK_ONLY` claim has no channel to prove, so this answers `400 VALIDATION_FAILED` for one. Rate limited (`429 RATE_LIMITED`). The first person to complete acceptance owns the site. Until a claim is `CLAIMED`, anyone who proves the channel may verify it, and a later proof replaces an earlier one.
|
|
20801
20918
|
operationId: postClaimsByTokenGoogleStart
|
|
20802
20919
|
parameters:
|
|
20803
20920
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
@@ -21052,7 +21169,7 @@ paths:
|
|
|
21052
21169
|
/v2/claims/{token}:accept:
|
|
21053
21170
|
post:
|
|
21054
21171
|
description: |
|
|
21055
|
-
Needs recent authentication.
|
|
21172
|
+
Needs recent authentication. For a `YOUTUBE_CHANNEL` claim it requires the claim to be verified by this same person (`409 CLAIM_NOT_VERIFIED` otherwise); a `LINK_ONLY` claim has nothing to verify and is accepted from `OPEN`. Then it makes the caller the owner of the site's organisation, which hands the site over. Repeating the call after success returns the same organisation. `409 INVALID_SOURCE_STATE` when the caller is the person who issued the claim or already owns the site: nobody can claim their own site. `409 CLAIM_ALREADY_CLAIMED` when another person claimed it; `410 CLAIM_EXPIRED`. An API key is always refused. The first person to complete acceptance owns the site. Until a claim is `CLAIMED`, anyone who proves the channel may verify it, and a later proof replaces an earlier one.
|
|
21056
21173
|
operationId: postClaimsByTokenAccept
|
|
21057
21174
|
parameters:
|
|
21058
21175
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
@@ -21237,9 +21354,22 @@ paths:
|
|
|
21237
21354
|
status: 409
|
|
21238
21355
|
title: CLAIM_NOT_VERIFIED
|
|
21239
21356
|
type: urn:gala:problem:claim-not-verified
|
|
21357
|
+
INVALID_SOURCE_STATE:
|
|
21358
|
+
summary: INVALID_SOURCE_STATE
|
|
21359
|
+
value:
|
|
21360
|
+
code: INVALID_SOURCE_STATE
|
|
21361
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
21362
|
+
detail: See the operation contract.
|
|
21363
|
+
errors: []
|
|
21364
|
+
retryable: false
|
|
21365
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
21366
|
+
schemaVersion: 2.0.0
|
|
21367
|
+
status: 409
|
|
21368
|
+
title: INVALID_SOURCE_STATE
|
|
21369
|
+
type: urn:gala:problem:invalid-source-state
|
|
21240
21370
|
schema:
|
|
21241
21371
|
$ref: "#/components/schemas/Problem"
|
|
21242
|
-
description: CLAIM_ALREADY_CLAIMED, CLAIM_NOT_VERIFIED
|
|
21372
|
+
description: CLAIM_ALREADY_CLAIMED, CLAIM_NOT_VERIFIED, INVALID_SOURCE_STATE
|
|
21243
21373
|
headers:
|
|
21244
21374
|
Cache-Control:
|
|
21245
21375
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
@@ -21248,6 +21378,7 @@ paths:
|
|
|
21248
21378
|
x-gala-problem-codes:
|
|
21249
21379
|
- CLAIM_ALREADY_CLAIMED
|
|
21250
21380
|
- CLAIM_NOT_VERIFIED
|
|
21381
|
+
- INVALID_SOURCE_STATE
|
|
21251
21382
|
"410":
|
|
21252
21383
|
content:
|
|
21253
21384
|
application/problem+json:
|
|
@@ -21327,12 +21458,14 @@ paths:
|
|
|
21327
21458
|
- CLAIM_EXPIRED
|
|
21328
21459
|
- CLAIM_NOT_FOUND
|
|
21329
21460
|
- CLAIM_NOT_VERIFIED
|
|
21461
|
+
- INVALID_SOURCE_STATE
|
|
21330
21462
|
- RATE_LIMITED
|
|
21331
21463
|
- REAUTH_REQUIRED
|
|
21332
21464
|
- VALIDATION_FAILED
|
|
21333
21465
|
x-gala-replay-identity: natural-idempotent-state
|
|
21334
21466
|
x-gala-state-guards:
|
|
21335
|
-
-
|
|
21467
|
+
- CreatorClaim:OPEN -> CLAIMED
|
|
21468
|
+
- CreatorClaim:VERIFIED -> CLAIMED
|
|
21336
21469
|
x-gala-success-category: protocol
|
|
21337
21470
|
x-gala-tenant-scope: NONE
|
|
21338
21471
|
/v2/github/app:
|
|
@@ -38402,21 +38535,747 @@ paths:
|
|
|
38402
38535
|
- RESOURCE_NOT_FOUND
|
|
38403
38536
|
security:
|
|
38404
38537
|
- browserSession: []
|
|
38405
|
-
summary: read the Prism generation policy
|
|
38538
|
+
summary: read the Prism generation policy
|
|
38539
|
+
tags:
|
|
38540
|
+
- prism
|
|
38541
|
+
x-gala-activation-gate: MVP
|
|
38542
|
+
x-gala-activation-guards:
|
|
38543
|
+
- NONE
|
|
38544
|
+
x-gala-capability-key: publication.source.write
|
|
38545
|
+
x-gala-concurrency: authorization-and-publication-epochs
|
|
38546
|
+
x-gala-conditional-capabilities: []
|
|
38547
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
38548
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
38549
|
+
x-gala-purpose: read the Prism generation policy
|
|
38550
|
+
x-gala-reachable-problems:
|
|
38551
|
+
- AUTHENTICATION_REQUIRED
|
|
38552
|
+
- AUTHORIZATION_DENIED
|
|
38553
|
+
- RESOURCE_NOT_FOUND
|
|
38554
|
+
- VALIDATION_FAILED
|
|
38555
|
+
x-gala-replay-identity: safe-query
|
|
38556
|
+
x-gala-state-guards:
|
|
38557
|
+
- NONE
|
|
38558
|
+
x-gala-success-category: query
|
|
38559
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
38560
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/handover:
|
|
38561
|
+
get:
|
|
38562
|
+
description: |
|
|
38563
|
+
The organisation owner, signed in (a read needs no fresh sign-in); an API key is always refused. Reports the handover of a demo site into the creator's own GitHub account: its state, the target, whether the Galascribe App is installed on the target, each step and the address the site will have. `200` with `state: NOT_STARTED` (empty `steps`, `version` 0, no `target`, `appInstalledOnTarget` or `siteUrlAfter`) for a demo publication (one with a demo-site record) that has no handover yet; `200` with the latest handover otherwise, including `DONE`, `FAILED` and `CANCELLED`; `404 RESOURCE_NOT_FOUND` only for a publication that is not a demo publication.
|
|
38564
|
+
operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdHandover
|
|
38565
|
+
parameters:
|
|
38566
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
38567
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
38568
|
+
in: path
|
|
38569
|
+
name: organizationId
|
|
38570
|
+
required: true
|
|
38571
|
+
schema:
|
|
38572
|
+
format: uuid
|
|
38573
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
38574
|
+
type: string
|
|
38575
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
38576
|
+
in: path
|
|
38577
|
+
name: publicationId
|
|
38578
|
+
required: true
|
|
38579
|
+
schema:
|
|
38580
|
+
format: uuid
|
|
38581
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
38582
|
+
type: string
|
|
38583
|
+
responses:
|
|
38584
|
+
"200":
|
|
38585
|
+
content:
|
|
38586
|
+
application/json:
|
|
38587
|
+
examples:
|
|
38588
|
+
nominal:
|
|
38589
|
+
summary: Nominal successful response
|
|
38590
|
+
value:
|
|
38591
|
+
appInstalledOnTarget: true
|
|
38592
|
+
siteUrlAfter: https://creator-org.github.io/maya-cooks/
|
|
38593
|
+
state: TRANSFER_STARTED
|
|
38594
|
+
steps:
|
|
38595
|
+
- name: FINALIZE_CHANGE
|
|
38596
|
+
state: DONE
|
|
38597
|
+
- name: TRANSFER
|
|
38598
|
+
state: RUNNING
|
|
38599
|
+
- name: RELINK
|
|
38600
|
+
state: PENDING
|
|
38601
|
+
- name: PAGES
|
|
38602
|
+
state: PENDING
|
|
38603
|
+
- name: PUBLISH
|
|
38604
|
+
state: PENDING
|
|
38605
|
+
target:
|
|
38606
|
+
kind: ORGANIZATION
|
|
38607
|
+
ownerLogin: creator-org
|
|
38608
|
+
version: 1
|
|
38609
|
+
notStarted:
|
|
38610
|
+
summary: Demo publication with no handover yet
|
|
38611
|
+
value:
|
|
38612
|
+
state: NOT_STARTED
|
|
38613
|
+
steps: []
|
|
38614
|
+
version: 0
|
|
38615
|
+
schema:
|
|
38616
|
+
$ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverResponse"
|
|
38617
|
+
description: read publication handover succeeded
|
|
38618
|
+
headers:
|
|
38619
|
+
Cache-Control:
|
|
38620
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38621
|
+
X-Correlation-Id:
|
|
38622
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38623
|
+
"400":
|
|
38624
|
+
content:
|
|
38625
|
+
application/problem+json:
|
|
38626
|
+
examples:
|
|
38627
|
+
VALIDATION_FAILED:
|
|
38628
|
+
summary: VALIDATION_FAILED
|
|
38629
|
+
value:
|
|
38630
|
+
code: VALIDATION_FAILED
|
|
38631
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38632
|
+
detail: See the operation contract.
|
|
38633
|
+
errors: []
|
|
38634
|
+
retryable: false
|
|
38635
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38636
|
+
schemaVersion: 2.0.0
|
|
38637
|
+
status: 400
|
|
38638
|
+
title: VALIDATION_FAILED
|
|
38639
|
+
type: urn:gala:problem:validation-failed
|
|
38640
|
+
schema:
|
|
38641
|
+
$ref: "#/components/schemas/Problem"
|
|
38642
|
+
description: VALIDATION_FAILED
|
|
38643
|
+
headers:
|
|
38644
|
+
Cache-Control:
|
|
38645
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38646
|
+
X-Correlation-Id:
|
|
38647
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38648
|
+
x-gala-problem-codes:
|
|
38649
|
+
- VALIDATION_FAILED
|
|
38650
|
+
"401":
|
|
38651
|
+
content:
|
|
38652
|
+
application/problem+json:
|
|
38653
|
+
examples:
|
|
38654
|
+
AUTHENTICATION_REQUIRED:
|
|
38655
|
+
summary: AUTHENTICATION_REQUIRED
|
|
38656
|
+
value:
|
|
38657
|
+
code: AUTHENTICATION_REQUIRED
|
|
38658
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38659
|
+
detail: See the operation contract.
|
|
38660
|
+
errors: []
|
|
38661
|
+
retryable: false
|
|
38662
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38663
|
+
schemaVersion: 2.0.0
|
|
38664
|
+
status: 401
|
|
38665
|
+
title: AUTHENTICATION_REQUIRED
|
|
38666
|
+
type: urn:gala:problem:authentication-required
|
|
38667
|
+
schema:
|
|
38668
|
+
$ref: "#/components/schemas/Problem"
|
|
38669
|
+
description: AUTHENTICATION_REQUIRED
|
|
38670
|
+
headers:
|
|
38671
|
+
Cache-Control:
|
|
38672
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38673
|
+
X-Correlation-Id:
|
|
38674
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38675
|
+
x-gala-problem-codes:
|
|
38676
|
+
- AUTHENTICATION_REQUIRED
|
|
38677
|
+
"403":
|
|
38678
|
+
content:
|
|
38679
|
+
application/problem+json:
|
|
38680
|
+
examples:
|
|
38681
|
+
AUTHORIZATION_DENIED:
|
|
38682
|
+
summary: AUTHORIZATION_DENIED
|
|
38683
|
+
value:
|
|
38684
|
+
code: AUTHORIZATION_DENIED
|
|
38685
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38686
|
+
detail: See the operation contract.
|
|
38687
|
+
errors: []
|
|
38688
|
+
retryable: false
|
|
38689
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38690
|
+
schemaVersion: 2.0.0
|
|
38691
|
+
status: 403
|
|
38692
|
+
title: AUTHORIZATION_DENIED
|
|
38693
|
+
type: urn:gala:problem:authorization-denied
|
|
38694
|
+
schema:
|
|
38695
|
+
$ref: "#/components/schemas/Problem"
|
|
38696
|
+
description: AUTHORIZATION_DENIED
|
|
38697
|
+
headers:
|
|
38698
|
+
Cache-Control:
|
|
38699
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38700
|
+
X-Correlation-Id:
|
|
38701
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38702
|
+
x-gala-problem-codes:
|
|
38703
|
+
- AUTHORIZATION_DENIED
|
|
38704
|
+
"404":
|
|
38705
|
+
content:
|
|
38706
|
+
application/problem+json:
|
|
38707
|
+
examples:
|
|
38708
|
+
RESOURCE_NOT_FOUND:
|
|
38709
|
+
summary: RESOURCE_NOT_FOUND
|
|
38710
|
+
value:
|
|
38711
|
+
code: RESOURCE_NOT_FOUND
|
|
38712
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38713
|
+
detail: See the operation contract.
|
|
38714
|
+
errors: []
|
|
38715
|
+
retryable: false
|
|
38716
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38717
|
+
schemaVersion: 2.0.0
|
|
38718
|
+
status: 404
|
|
38719
|
+
title: RESOURCE_NOT_FOUND
|
|
38720
|
+
type: urn:gala:problem:resource-not-found
|
|
38721
|
+
schema:
|
|
38722
|
+
$ref: "#/components/schemas/Problem"
|
|
38723
|
+
description: RESOURCE_NOT_FOUND
|
|
38724
|
+
headers:
|
|
38725
|
+
Cache-Control:
|
|
38726
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38727
|
+
X-Correlation-Id:
|
|
38728
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38729
|
+
x-gala-problem-codes:
|
|
38730
|
+
- RESOURCE_NOT_FOUND
|
|
38731
|
+
security:
|
|
38732
|
+
- browserSession: []
|
|
38733
|
+
summary: read publication handover
|
|
38734
|
+
tags:
|
|
38735
|
+
- organizations
|
|
38736
|
+
x-gala-action-grant: none
|
|
38737
|
+
x-gala-activation-gate: MVP
|
|
38738
|
+
x-gala-activation-guards:
|
|
38739
|
+
- NONE
|
|
38740
|
+
x-gala-assurance-class: SESSION
|
|
38741
|
+
x-gala-capability-key: publication.handover.view
|
|
38742
|
+
x-gala-concurrency: none
|
|
38743
|
+
x-gala-conditional-capabilities: []
|
|
38744
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
38745
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
38746
|
+
x-gala-purpose: read publication handover
|
|
38747
|
+
x-gala-reachable-problems:
|
|
38748
|
+
- AUTHENTICATION_REQUIRED
|
|
38749
|
+
- AUTHORIZATION_DENIED
|
|
38750
|
+
- RESOURCE_NOT_FOUND
|
|
38751
|
+
- VALIDATION_FAILED
|
|
38752
|
+
x-gala-replay-identity: safe-query
|
|
38753
|
+
x-gala-state-guards:
|
|
38754
|
+
- NONE
|
|
38755
|
+
x-gala-success-category: query
|
|
38756
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
38757
|
+
post:
|
|
38758
|
+
description: |
|
|
38759
|
+
The organisation owner, with recent authentication; an API key is always refused. Moves a demo site's repository into `targetOwnerLogin` (a person or an organisation where the Galascribe App is installed): plans and confirms the finalize change in the caller's session, then starts the GitHub transfer. `202` accepts; `GET` reports progress. `409 HANDOVER_EXISTS` while one is live, `409 HANDOVER_TARGET_NOT_INSTALLED` when the App is not installed on the target, `503 DEPENDENCY_UNAVAILABLE` when GitHub cannot be reached. `404 RESOURCE_NOT_FOUND` when the publication is not a demo site. The response never carries `state: NOT_STARTED`.
|
|
38760
|
+
operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdHandover
|
|
38761
|
+
parameters:
|
|
38762
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
38763
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
38764
|
+
in: path
|
|
38765
|
+
name: organizationId
|
|
38766
|
+
required: true
|
|
38767
|
+
schema:
|
|
38768
|
+
format: uuid
|
|
38769
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
38770
|
+
type: string
|
|
38771
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
38772
|
+
in: path
|
|
38773
|
+
name: publicationId
|
|
38774
|
+
required: true
|
|
38775
|
+
schema:
|
|
38776
|
+
format: uuid
|
|
38777
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
38778
|
+
type: string
|
|
38779
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
38780
|
+
- $ref: "#/components/parameters/XCsrfToken"
|
|
38781
|
+
requestBody:
|
|
38782
|
+
content:
|
|
38783
|
+
application/json:
|
|
38784
|
+
examples:
|
|
38785
|
+
nominal:
|
|
38786
|
+
summary: Nominal valid request
|
|
38787
|
+
value:
|
|
38788
|
+
targetOwnerLogin: creator-org
|
|
38789
|
+
schema:
|
|
38790
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverRequest"
|
|
38791
|
+
required: true
|
|
38792
|
+
responses:
|
|
38793
|
+
"202":
|
|
38794
|
+
content:
|
|
38795
|
+
application/json:
|
|
38796
|
+
examples:
|
|
38797
|
+
nominal:
|
|
38798
|
+
summary: Nominal successful response
|
|
38799
|
+
value:
|
|
38800
|
+
appInstalledOnTarget: true
|
|
38801
|
+
siteUrlAfter: https://creator-org.github.io/maya-cooks/
|
|
38802
|
+
state: REQUESTED
|
|
38803
|
+
steps:
|
|
38804
|
+
- name: FINALIZE_CHANGE
|
|
38805
|
+
state: DONE
|
|
38806
|
+
- name: TRANSFER
|
|
38807
|
+
state: RUNNING
|
|
38808
|
+
- name: RELINK
|
|
38809
|
+
state: PENDING
|
|
38810
|
+
- name: PAGES
|
|
38811
|
+
state: PENDING
|
|
38812
|
+
- name: PUBLISH
|
|
38813
|
+
state: PENDING
|
|
38814
|
+
target:
|
|
38815
|
+
kind: ORGANIZATION
|
|
38816
|
+
ownerLogin: creator-org
|
|
38817
|
+
version: 1
|
|
38818
|
+
schema:
|
|
38819
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverResponse"
|
|
38820
|
+
description: start publication handover succeeded
|
|
38821
|
+
headers:
|
|
38822
|
+
Cache-Control:
|
|
38823
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38824
|
+
X-Correlation-Id:
|
|
38825
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38826
|
+
"400":
|
|
38827
|
+
content:
|
|
38828
|
+
application/problem+json:
|
|
38829
|
+
examples:
|
|
38830
|
+
REQUEST_FIELD_UNKNOWN:
|
|
38831
|
+
summary: REQUEST_FIELD_UNKNOWN
|
|
38832
|
+
value:
|
|
38833
|
+
code: REQUEST_FIELD_UNKNOWN
|
|
38834
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38835
|
+
detail: See the operation contract.
|
|
38836
|
+
errors: []
|
|
38837
|
+
retryable: false
|
|
38838
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38839
|
+
schemaVersion: 2.0.0
|
|
38840
|
+
status: 400
|
|
38841
|
+
title: REQUEST_FIELD_UNKNOWN
|
|
38842
|
+
type: urn:gala:problem:request-field-unknown
|
|
38843
|
+
VALIDATION_FAILED:
|
|
38844
|
+
summary: VALIDATION_FAILED
|
|
38845
|
+
value:
|
|
38846
|
+
code: VALIDATION_FAILED
|
|
38847
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38848
|
+
detail: See the operation contract.
|
|
38849
|
+
errors: []
|
|
38850
|
+
retryable: false
|
|
38851
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38852
|
+
schemaVersion: 2.0.0
|
|
38853
|
+
status: 400
|
|
38854
|
+
title: VALIDATION_FAILED
|
|
38855
|
+
type: urn:gala:problem:validation-failed
|
|
38856
|
+
schema:
|
|
38857
|
+
$ref: "#/components/schemas/Problem"
|
|
38858
|
+
description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
|
|
38859
|
+
headers:
|
|
38860
|
+
Cache-Control:
|
|
38861
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38862
|
+
X-Correlation-Id:
|
|
38863
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38864
|
+
x-gala-problem-codes:
|
|
38865
|
+
- REQUEST_FIELD_UNKNOWN
|
|
38866
|
+
- VALIDATION_FAILED
|
|
38867
|
+
"401":
|
|
38868
|
+
content:
|
|
38869
|
+
application/problem+json:
|
|
38870
|
+
examples:
|
|
38871
|
+
AUTHENTICATION_REQUIRED:
|
|
38872
|
+
summary: AUTHENTICATION_REQUIRED
|
|
38873
|
+
value:
|
|
38874
|
+
code: AUTHENTICATION_REQUIRED
|
|
38875
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38876
|
+
detail: See the operation contract.
|
|
38877
|
+
errors: []
|
|
38878
|
+
retryable: false
|
|
38879
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38880
|
+
schemaVersion: 2.0.0
|
|
38881
|
+
status: 401
|
|
38882
|
+
title: AUTHENTICATION_REQUIRED
|
|
38883
|
+
type: urn:gala:problem:authentication-required
|
|
38884
|
+
REAUTH_REQUIRED:
|
|
38885
|
+
summary: REAUTH_REQUIRED
|
|
38886
|
+
value:
|
|
38887
|
+
code: REAUTH_REQUIRED
|
|
38888
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38889
|
+
detail: See the operation contract.
|
|
38890
|
+
errors: []
|
|
38891
|
+
retryable: false
|
|
38892
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38893
|
+
schemaVersion: 2.0.0
|
|
38894
|
+
status: 401
|
|
38895
|
+
title: REAUTH_REQUIRED
|
|
38896
|
+
type: urn:gala:problem:reauth-required
|
|
38897
|
+
schema:
|
|
38898
|
+
$ref: "#/components/schemas/Problem"
|
|
38899
|
+
description: AUTHENTICATION_REQUIRED, REAUTH_REQUIRED
|
|
38900
|
+
headers:
|
|
38901
|
+
Cache-Control:
|
|
38902
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38903
|
+
X-Correlation-Id:
|
|
38904
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38905
|
+
x-gala-problem-codes:
|
|
38906
|
+
- AUTHENTICATION_REQUIRED
|
|
38907
|
+
- REAUTH_REQUIRED
|
|
38908
|
+
"403":
|
|
38909
|
+
content:
|
|
38910
|
+
application/problem+json:
|
|
38911
|
+
examples:
|
|
38912
|
+
AUTHORIZATION_DENIED:
|
|
38913
|
+
summary: AUTHORIZATION_DENIED
|
|
38914
|
+
value:
|
|
38915
|
+
code: AUTHORIZATION_DENIED
|
|
38916
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38917
|
+
detail: See the operation contract.
|
|
38918
|
+
errors: []
|
|
38919
|
+
retryable: false
|
|
38920
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38921
|
+
schemaVersion: 2.0.0
|
|
38922
|
+
status: 403
|
|
38923
|
+
title: AUTHORIZATION_DENIED
|
|
38924
|
+
type: urn:gala:problem:authorization-denied
|
|
38925
|
+
schema:
|
|
38926
|
+
$ref: "#/components/schemas/Problem"
|
|
38927
|
+
description: AUTHORIZATION_DENIED
|
|
38928
|
+
headers:
|
|
38929
|
+
Cache-Control:
|
|
38930
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38931
|
+
X-Correlation-Id:
|
|
38932
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38933
|
+
x-gala-problem-codes:
|
|
38934
|
+
- AUTHORIZATION_DENIED
|
|
38935
|
+
"404":
|
|
38936
|
+
content:
|
|
38937
|
+
application/problem+json:
|
|
38938
|
+
examples:
|
|
38939
|
+
RESOURCE_NOT_FOUND:
|
|
38940
|
+
summary: RESOURCE_NOT_FOUND
|
|
38941
|
+
value:
|
|
38942
|
+
code: RESOURCE_NOT_FOUND
|
|
38943
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38944
|
+
detail: See the operation contract.
|
|
38945
|
+
errors: []
|
|
38946
|
+
retryable: false
|
|
38947
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38948
|
+
schemaVersion: 2.0.0
|
|
38949
|
+
status: 404
|
|
38950
|
+
title: RESOURCE_NOT_FOUND
|
|
38951
|
+
type: urn:gala:problem:resource-not-found
|
|
38952
|
+
schema:
|
|
38953
|
+
$ref: "#/components/schemas/Problem"
|
|
38954
|
+
description: RESOURCE_NOT_FOUND
|
|
38955
|
+
headers:
|
|
38956
|
+
Cache-Control:
|
|
38957
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
38958
|
+
X-Correlation-Id:
|
|
38959
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38960
|
+
x-gala-problem-codes:
|
|
38961
|
+
- RESOURCE_NOT_FOUND
|
|
38962
|
+
"409":
|
|
38963
|
+
content:
|
|
38964
|
+
application/problem+json:
|
|
38965
|
+
examples:
|
|
38966
|
+
COMMAND_REPLAY_CONFLICT:
|
|
38967
|
+
summary: COMMAND_REPLAY_CONFLICT
|
|
38968
|
+
value:
|
|
38969
|
+
code: COMMAND_REPLAY_CONFLICT
|
|
38970
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38971
|
+
detail: See the operation contract.
|
|
38972
|
+
errors: []
|
|
38973
|
+
retryable: false
|
|
38974
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38975
|
+
schemaVersion: 2.0.0
|
|
38976
|
+
status: 409
|
|
38977
|
+
title: COMMAND_REPLAY_CONFLICT
|
|
38978
|
+
type: urn:gala:problem:command-replay-conflict
|
|
38979
|
+
HANDOVER_EXISTS:
|
|
38980
|
+
summary: HANDOVER_EXISTS
|
|
38981
|
+
value:
|
|
38982
|
+
code: HANDOVER_EXISTS
|
|
38983
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38984
|
+
detail: See the operation contract.
|
|
38985
|
+
errors: []
|
|
38986
|
+
retryable: false
|
|
38987
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38988
|
+
schemaVersion: 2.0.0
|
|
38989
|
+
status: 409
|
|
38990
|
+
title: HANDOVER_EXISTS
|
|
38991
|
+
type: urn:gala:problem:handover-exists
|
|
38992
|
+
HANDOVER_TARGET_NOT_INSTALLED:
|
|
38993
|
+
summary: HANDOVER_TARGET_NOT_INSTALLED
|
|
38994
|
+
value:
|
|
38995
|
+
code: HANDOVER_TARGET_NOT_INSTALLED
|
|
38996
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38997
|
+
detail: See the operation contract.
|
|
38998
|
+
errors: []
|
|
38999
|
+
retryable: false
|
|
39000
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39001
|
+
schemaVersion: 2.0.0
|
|
39002
|
+
status: 409
|
|
39003
|
+
title: HANDOVER_TARGET_NOT_INSTALLED
|
|
39004
|
+
type: urn:gala:problem:handover-target-not-installed
|
|
39005
|
+
schema:
|
|
39006
|
+
$ref: "#/components/schemas/Problem"
|
|
39007
|
+
description: COMMAND_REPLAY_CONFLICT, HANDOVER_EXISTS, HANDOVER_TARGET_NOT_INSTALLED
|
|
39008
|
+
headers:
|
|
39009
|
+
Cache-Control:
|
|
39010
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39011
|
+
X-Correlation-Id:
|
|
39012
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39013
|
+
x-gala-problem-codes:
|
|
39014
|
+
- COMMAND_REPLAY_CONFLICT
|
|
39015
|
+
- HANDOVER_EXISTS
|
|
39016
|
+
- HANDOVER_TARGET_NOT_INSTALLED
|
|
39017
|
+
"503":
|
|
39018
|
+
content:
|
|
39019
|
+
application/problem+json:
|
|
39020
|
+
examples:
|
|
39021
|
+
DEPENDENCY_UNAVAILABLE:
|
|
39022
|
+
summary: DEPENDENCY_UNAVAILABLE
|
|
39023
|
+
value:
|
|
39024
|
+
code: DEPENDENCY_UNAVAILABLE
|
|
39025
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39026
|
+
detail: See the operation contract.
|
|
39027
|
+
errors: []
|
|
39028
|
+
retryable: true
|
|
39029
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39030
|
+
schemaVersion: 2.0.0
|
|
39031
|
+
status: 503
|
|
39032
|
+
title: DEPENDENCY_UNAVAILABLE
|
|
39033
|
+
type: urn:gala:problem:dependency-unavailable
|
|
39034
|
+
schema:
|
|
39035
|
+
$ref: "#/components/schemas/Problem"
|
|
39036
|
+
description: DEPENDENCY_UNAVAILABLE
|
|
39037
|
+
headers:
|
|
39038
|
+
Cache-Control:
|
|
39039
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39040
|
+
X-Correlation-Id:
|
|
39041
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39042
|
+
x-gala-problem-codes:
|
|
39043
|
+
- DEPENDENCY_UNAVAILABLE
|
|
39044
|
+
security:
|
|
39045
|
+
- browserSession: []
|
|
39046
|
+
summary: start publication handover
|
|
39047
|
+
tags:
|
|
39048
|
+
- organizations
|
|
39049
|
+
x-gala-action-grant: none
|
|
39050
|
+
x-gala-activation-gate: MVP
|
|
39051
|
+
x-gala-activation-guards:
|
|
39052
|
+
- NONE
|
|
39053
|
+
x-gala-assurance-class: RECENT_AUTHENTICATION
|
|
39054
|
+
x-gala-capability-key: publication.handover.manage
|
|
39055
|
+
x-gala-concurrency: none
|
|
39056
|
+
x-gala-conditional-capabilities: []
|
|
39057
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
39058
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
39059
|
+
x-gala-purpose: start publication handover
|
|
39060
|
+
x-gala-reachable-problems:
|
|
39061
|
+
- AUTHENTICATION_REQUIRED
|
|
39062
|
+
- AUTHORIZATION_DENIED
|
|
39063
|
+
- COMMAND_REPLAY_CONFLICT
|
|
39064
|
+
- DEPENDENCY_UNAVAILABLE
|
|
39065
|
+
- HANDOVER_EXISTS
|
|
39066
|
+
- HANDOVER_TARGET_NOT_INSTALLED
|
|
39067
|
+
- REAUTH_REQUIRED
|
|
39068
|
+
- REQUEST_FIELD_UNKNOWN
|
|
39069
|
+
- RESOURCE_NOT_FOUND
|
|
39070
|
+
- VALIDATION_FAILED
|
|
39071
|
+
x-gala-replay-identity: idempotency-key
|
|
39072
|
+
x-gala-state-guards:
|
|
39073
|
+
- NONE
|
|
39074
|
+
x-gala-success-category: async
|
|
39075
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
39076
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/handover-claims:
|
|
39077
|
+
get:
|
|
39078
|
+
description: |
|
|
39079
|
+
The organisation owner, with recent authentication; an API key is always refused. Lists the claim links that hand this site to whoever accepts them, newest first and in every state (`OPEN`, `VERIFIED`, `CLAIMED`, `EXPIRED`, `REVOKED`), at most the 50 most recent. `claimUrl` is present only on an `OPEN` claim whose token the API holds sealed, so the owner can copy it again; it is a bearer secret and is never returned for any other state. A claim issued before 3.14.0 may have no `claimUrl` until the owner re-issues it with `replace`. `claimedBy` is present only on a `CLAIMED` claim. A claim past `expiresAt` reads `EXPIRED`. Demo sites are owned by the operator's organisation until claimed, so the operator finds a demo site's claim link here, in that site's Settings. `404 RESOURCE_NOT_FOUND` for a publication that is not in the organisation.
|
|
39080
|
+
operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaims
|
|
39081
|
+
parameters:
|
|
39082
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
39083
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
39084
|
+
in: path
|
|
39085
|
+
name: organizationId
|
|
39086
|
+
required: true
|
|
39087
|
+
schema:
|
|
39088
|
+
format: uuid
|
|
39089
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
39090
|
+
type: string
|
|
39091
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
39092
|
+
in: path
|
|
39093
|
+
name: publicationId
|
|
39094
|
+
required: true
|
|
39095
|
+
schema:
|
|
39096
|
+
format: uuid
|
|
39097
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
39098
|
+
type: string
|
|
39099
|
+
responses:
|
|
39100
|
+
"200":
|
|
39101
|
+
content:
|
|
39102
|
+
application/json:
|
|
39103
|
+
examples:
|
|
39104
|
+
nominal:
|
|
39105
|
+
summary: Nominal successful response
|
|
39106
|
+
value:
|
|
39107
|
+
items:
|
|
39108
|
+
- claimId: 018f0000-0000-7000-8000-000000000001
|
|
39109
|
+
claimUrl: https://app.galascribe.com/claim/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ
|
|
39110
|
+
createdAt: "2026-10-17T12:00:00.000Z"
|
|
39111
|
+
expiresAt: "2026-11-16T12:00:00.000Z"
|
|
39112
|
+
proof:
|
|
39113
|
+
kind: LINK_ONLY
|
|
39114
|
+
state: OPEN
|
|
39115
|
+
version: 0
|
|
39116
|
+
- claimId: 018f0000-0000-7000-8000-000000000002
|
|
39117
|
+
claimedAt: "2026-10-20T09:30:00.000Z"
|
|
39118
|
+
claimedBy:
|
|
39119
|
+
displayName: Maya Cooks
|
|
39120
|
+
login: mayacooks
|
|
39121
|
+
createdAt: "2026-10-15T12:00:00.000Z"
|
|
39122
|
+
expiresAt: "2026-11-14T12:00:00.000Z"
|
|
39123
|
+
proof:
|
|
39124
|
+
channelId: UCabcdefghijklmnopqrstuv
|
|
39125
|
+
handle: "@mayacooks"
|
|
39126
|
+
kind: YOUTUBE_CHANNEL
|
|
39127
|
+
state: CLAIMED
|
|
39128
|
+
version: 2
|
|
39129
|
+
schema:
|
|
39130
|
+
$ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsResponse"
|
|
39131
|
+
description: list site handover claims succeeded
|
|
39132
|
+
headers:
|
|
39133
|
+
Cache-Control:
|
|
39134
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39135
|
+
X-Correlation-Id:
|
|
39136
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39137
|
+
"400":
|
|
39138
|
+
content:
|
|
39139
|
+
application/problem+json:
|
|
39140
|
+
examples:
|
|
39141
|
+
VALIDATION_FAILED:
|
|
39142
|
+
summary: VALIDATION_FAILED
|
|
39143
|
+
value:
|
|
39144
|
+
code: VALIDATION_FAILED
|
|
39145
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39146
|
+
detail: See the operation contract.
|
|
39147
|
+
errors: []
|
|
39148
|
+
retryable: false
|
|
39149
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39150
|
+
schemaVersion: 2.0.0
|
|
39151
|
+
status: 400
|
|
39152
|
+
title: VALIDATION_FAILED
|
|
39153
|
+
type: urn:gala:problem:validation-failed
|
|
39154
|
+
schema:
|
|
39155
|
+
$ref: "#/components/schemas/Problem"
|
|
39156
|
+
description: VALIDATION_FAILED
|
|
39157
|
+
headers:
|
|
39158
|
+
Cache-Control:
|
|
39159
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39160
|
+
X-Correlation-Id:
|
|
39161
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39162
|
+
x-gala-problem-codes:
|
|
39163
|
+
- VALIDATION_FAILED
|
|
39164
|
+
"401":
|
|
39165
|
+
content:
|
|
39166
|
+
application/problem+json:
|
|
39167
|
+
examples:
|
|
39168
|
+
AUTHENTICATION_REQUIRED:
|
|
39169
|
+
summary: AUTHENTICATION_REQUIRED
|
|
39170
|
+
value:
|
|
39171
|
+
code: AUTHENTICATION_REQUIRED
|
|
39172
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39173
|
+
detail: See the operation contract.
|
|
39174
|
+
errors: []
|
|
39175
|
+
retryable: false
|
|
39176
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39177
|
+
schemaVersion: 2.0.0
|
|
39178
|
+
status: 401
|
|
39179
|
+
title: AUTHENTICATION_REQUIRED
|
|
39180
|
+
type: urn:gala:problem:authentication-required
|
|
39181
|
+
REAUTH_REQUIRED:
|
|
39182
|
+
summary: REAUTH_REQUIRED
|
|
39183
|
+
value:
|
|
39184
|
+
code: REAUTH_REQUIRED
|
|
39185
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39186
|
+
detail: See the operation contract.
|
|
39187
|
+
errors: []
|
|
39188
|
+
retryable: false
|
|
39189
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39190
|
+
schemaVersion: 2.0.0
|
|
39191
|
+
status: 401
|
|
39192
|
+
title: REAUTH_REQUIRED
|
|
39193
|
+
type: urn:gala:problem:reauth-required
|
|
39194
|
+
schema:
|
|
39195
|
+
$ref: "#/components/schemas/Problem"
|
|
39196
|
+
description: AUTHENTICATION_REQUIRED, REAUTH_REQUIRED
|
|
39197
|
+
headers:
|
|
39198
|
+
Cache-Control:
|
|
39199
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39200
|
+
X-Correlation-Id:
|
|
39201
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39202
|
+
x-gala-problem-codes:
|
|
39203
|
+
- AUTHENTICATION_REQUIRED
|
|
39204
|
+
- REAUTH_REQUIRED
|
|
39205
|
+
"403":
|
|
39206
|
+
content:
|
|
39207
|
+
application/problem+json:
|
|
39208
|
+
examples:
|
|
39209
|
+
AUTHORIZATION_DENIED:
|
|
39210
|
+
summary: AUTHORIZATION_DENIED
|
|
39211
|
+
value:
|
|
39212
|
+
code: AUTHORIZATION_DENIED
|
|
39213
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39214
|
+
detail: See the operation contract.
|
|
39215
|
+
errors: []
|
|
39216
|
+
retryable: false
|
|
39217
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39218
|
+
schemaVersion: 2.0.0
|
|
39219
|
+
status: 403
|
|
39220
|
+
title: AUTHORIZATION_DENIED
|
|
39221
|
+
type: urn:gala:problem:authorization-denied
|
|
39222
|
+
schema:
|
|
39223
|
+
$ref: "#/components/schemas/Problem"
|
|
39224
|
+
description: AUTHORIZATION_DENIED
|
|
39225
|
+
headers:
|
|
39226
|
+
Cache-Control:
|
|
39227
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39228
|
+
X-Correlation-Id:
|
|
39229
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39230
|
+
x-gala-problem-codes:
|
|
39231
|
+
- AUTHORIZATION_DENIED
|
|
39232
|
+
"404":
|
|
39233
|
+
content:
|
|
39234
|
+
application/problem+json:
|
|
39235
|
+
examples:
|
|
39236
|
+
RESOURCE_NOT_FOUND:
|
|
39237
|
+
summary: RESOURCE_NOT_FOUND
|
|
39238
|
+
value:
|
|
39239
|
+
code: RESOURCE_NOT_FOUND
|
|
39240
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39241
|
+
detail: See the operation contract.
|
|
39242
|
+
errors: []
|
|
39243
|
+
retryable: false
|
|
39244
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39245
|
+
schemaVersion: 2.0.0
|
|
39246
|
+
status: 404
|
|
39247
|
+
title: RESOURCE_NOT_FOUND
|
|
39248
|
+
type: urn:gala:problem:resource-not-found
|
|
39249
|
+
schema:
|
|
39250
|
+
$ref: "#/components/schemas/Problem"
|
|
39251
|
+
description: RESOURCE_NOT_FOUND
|
|
39252
|
+
headers:
|
|
39253
|
+
Cache-Control:
|
|
39254
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39255
|
+
X-Correlation-Id:
|
|
39256
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39257
|
+
x-gala-problem-codes:
|
|
39258
|
+
- RESOURCE_NOT_FOUND
|
|
39259
|
+
security:
|
|
39260
|
+
- browserSession: []
|
|
39261
|
+
summary: list site handover claims
|
|
38406
39262
|
tags:
|
|
38407
|
-
-
|
|
39263
|
+
- organizations
|
|
39264
|
+
x-gala-action-grant: none
|
|
38408
39265
|
x-gala-activation-gate: MVP
|
|
38409
39266
|
x-gala-activation-guards:
|
|
38410
39267
|
- NONE
|
|
38411
|
-
x-gala-
|
|
38412
|
-
x-gala-
|
|
39268
|
+
x-gala-assurance-class: RECENT_AUTHENTICATION
|
|
39269
|
+
x-gala-capability-key: publication.handover.manage
|
|
39270
|
+
x-gala-concurrency: none
|
|
38413
39271
|
x-gala-conditional-capabilities: []
|
|
38414
39272
|
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
38415
39273
|
x-gala-nullability: required-and-nullable-are-explicit
|
|
38416
|
-
x-gala-purpose:
|
|
39274
|
+
x-gala-purpose: list site handover claims
|
|
38417
39275
|
x-gala-reachable-problems:
|
|
38418
39276
|
- AUTHENTICATION_REQUIRED
|
|
38419
39277
|
- AUTHORIZATION_DENIED
|
|
39278
|
+
- REAUTH_REQUIRED
|
|
38420
39279
|
- RESOURCE_NOT_FOUND
|
|
38421
39280
|
- VALIDATION_FAILED
|
|
38422
39281
|
x-gala-replay-identity: safe-query
|
|
@@ -38424,11 +39283,10 @@ paths:
|
|
|
38424
39283
|
- NONE
|
|
38425
39284
|
x-gala-success-category: query
|
|
38426
39285
|
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
38427
|
-
|
|
38428
|
-
get:
|
|
39286
|
+
post:
|
|
38429
39287
|
description: |
|
|
38430
|
-
The organisation owner, with recent authentication; an API key is always refused.
|
|
38431
|
-
operationId:
|
|
39288
|
+
The organisation owner, with recent authentication; an API key is always refused. Issues a claim link that hands this site to whoever signs in and accepts it, and returns the claim with its `claimUrl`. `proof` is `LINK_ONLY` (anyone who holds the link and signs in can claim the site, so share it only with the person you mean; it expires and can be revoked) or `YOUTUBE_CHANNEL` (the claimant must also prove they control the channel in `channelId`, which is required for that proof and refused with `LINK_ONLY`: `400 VALIDATION_FAILED`). `expiresInDays` defaults to 30 and is at most 365. A site holds one `OPEN` claim at a time: while one exists the call answers `409 INVALID_SOURCE_STATE` unless `replace` is `true`, which revokes the `OPEN` claim and issues this one in the same transaction, so the old link stops working. A `VERIFIED` claim is never replaced (`409 INVALID_SOURCE_STATE`); revoke it first. A `CLAIMED` claim never blocks a new one, because ownership can chain. `409 INVALID_SOURCE_STATE` also for a site whose organisation is not a single-person organisation, since only a single-person organisation can be handed over. `409 HANDOVER_EXISTS` while a repository move (`/handover`) is live. `404 RESOURCE_NOT_FOUND` for a publication that is not in the organisation. `Idempotency-Key` is the issue identity: repeating it returns the same claim and `claimUrl`.
|
|
39289
|
+
operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaims
|
|
38432
39290
|
parameters:
|
|
38433
39291
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
38434
39292
|
- example: 018f0000-0000-7000-8000-000000000001
|
|
@@ -38447,50 +39305,68 @@ paths:
|
|
|
38447
39305
|
format: uuid
|
|
38448
39306
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
38449
39307
|
type: string
|
|
39308
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
39309
|
+
- $ref: "#/components/parameters/XCsrfToken"
|
|
39310
|
+
requestBody:
|
|
39311
|
+
content:
|
|
39312
|
+
application/json:
|
|
39313
|
+
examples:
|
|
39314
|
+
nominal:
|
|
39315
|
+
summary: Nominal valid request
|
|
39316
|
+
value:
|
|
39317
|
+
expiresInDays: 30
|
|
39318
|
+
proof: LINK_ONLY
|
|
39319
|
+
youtubeChannel:
|
|
39320
|
+
summary: Proof that the claimant controls a YouTube channel
|
|
39321
|
+
value:
|
|
39322
|
+
channelId: UCabcdefghijklmnopqrstuv
|
|
39323
|
+
proof: YOUTUBE_CHANNEL
|
|
39324
|
+
schema:
|
|
39325
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsRequest"
|
|
39326
|
+
required: true
|
|
38450
39327
|
responses:
|
|
38451
|
-
"
|
|
39328
|
+
"201":
|
|
38452
39329
|
content:
|
|
38453
39330
|
application/json:
|
|
38454
39331
|
examples:
|
|
38455
39332
|
nominal:
|
|
38456
39333
|
summary: Nominal successful response
|
|
38457
39334
|
value:
|
|
38458
|
-
|
|
38459
|
-
|
|
38460
|
-
|
|
38461
|
-
|
|
38462
|
-
|
|
38463
|
-
|
|
38464
|
-
|
|
38465
|
-
state: RUNNING
|
|
38466
|
-
- name: RELINK
|
|
38467
|
-
state: PENDING
|
|
38468
|
-
- name: PAGES
|
|
38469
|
-
state: PENDING
|
|
38470
|
-
- name: PUBLISH
|
|
38471
|
-
state: PENDING
|
|
38472
|
-
target:
|
|
38473
|
-
kind: ORGANIZATION
|
|
38474
|
-
ownerLogin: creator-org
|
|
38475
|
-
version: 1
|
|
38476
|
-
notStarted:
|
|
38477
|
-
summary: Demo publication with no handover yet
|
|
38478
|
-
value:
|
|
38479
|
-
state: NOT_STARTED
|
|
38480
|
-
steps: []
|
|
39335
|
+
claimId: 018f0000-0000-7000-8000-000000000001
|
|
39336
|
+
claimUrl: https://app.galascribe.com/claim/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ
|
|
39337
|
+
createdAt: "2026-10-17T12:00:00.000Z"
|
|
39338
|
+
expiresAt: "2026-11-16T12:00:00.000Z"
|
|
39339
|
+
proof:
|
|
39340
|
+
kind: LINK_ONLY
|
|
39341
|
+
state: OPEN
|
|
38481
39342
|
version: 0
|
|
38482
39343
|
schema:
|
|
38483
|
-
$ref: "#/components/schemas/
|
|
38484
|
-
description:
|
|
39344
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsResponse"
|
|
39345
|
+
description: issue site handover claim succeeded
|
|
38485
39346
|
headers:
|
|
38486
39347
|
Cache-Control:
|
|
38487
39348
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
39349
|
+
Location:
|
|
39350
|
+
$ref: "#/components/headers/Location"
|
|
38488
39351
|
X-Correlation-Id:
|
|
38489
39352
|
$ref: "#/components/headers/XCorrelationId"
|
|
38490
39353
|
"400":
|
|
38491
39354
|
content:
|
|
38492
39355
|
application/problem+json:
|
|
38493
39356
|
examples:
|
|
39357
|
+
REQUEST_FIELD_UNKNOWN:
|
|
39358
|
+
summary: REQUEST_FIELD_UNKNOWN
|
|
39359
|
+
value:
|
|
39360
|
+
code: REQUEST_FIELD_UNKNOWN
|
|
39361
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39362
|
+
detail: See the operation contract.
|
|
39363
|
+
errors: []
|
|
39364
|
+
retryable: false
|
|
39365
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39366
|
+
schemaVersion: 2.0.0
|
|
39367
|
+
status: 400
|
|
39368
|
+
title: REQUEST_FIELD_UNKNOWN
|
|
39369
|
+
type: urn:gala:problem:request-field-unknown
|
|
38494
39370
|
VALIDATION_FAILED:
|
|
38495
39371
|
summary: VALIDATION_FAILED
|
|
38496
39372
|
value:
|
|
@@ -38506,13 +39382,14 @@ paths:
|
|
|
38506
39382
|
type: urn:gala:problem:validation-failed
|
|
38507
39383
|
schema:
|
|
38508
39384
|
$ref: "#/components/schemas/Problem"
|
|
38509
|
-
description: VALIDATION_FAILED
|
|
39385
|
+
description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
|
|
38510
39386
|
headers:
|
|
38511
39387
|
Cache-Control:
|
|
38512
39388
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
38513
39389
|
X-Correlation-Id:
|
|
38514
39390
|
$ref: "#/components/headers/XCorrelationId"
|
|
38515
39391
|
x-gala-problem-codes:
|
|
39392
|
+
- REQUEST_FIELD_UNKNOWN
|
|
38516
39393
|
- VALIDATION_FAILED
|
|
38517
39394
|
"401":
|
|
38518
39395
|
content:
|
|
@@ -38609,9 +39486,64 @@ paths:
|
|
|
38609
39486
|
$ref: "#/components/headers/XCorrelationId"
|
|
38610
39487
|
x-gala-problem-codes:
|
|
38611
39488
|
- RESOURCE_NOT_FOUND
|
|
39489
|
+
"409":
|
|
39490
|
+
content:
|
|
39491
|
+
application/problem+json:
|
|
39492
|
+
examples:
|
|
39493
|
+
COMMAND_REPLAY_CONFLICT:
|
|
39494
|
+
summary: COMMAND_REPLAY_CONFLICT
|
|
39495
|
+
value:
|
|
39496
|
+
code: COMMAND_REPLAY_CONFLICT
|
|
39497
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39498
|
+
detail: See the operation contract.
|
|
39499
|
+
errors: []
|
|
39500
|
+
retryable: false
|
|
39501
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39502
|
+
schemaVersion: 2.0.0
|
|
39503
|
+
status: 409
|
|
39504
|
+
title: COMMAND_REPLAY_CONFLICT
|
|
39505
|
+
type: urn:gala:problem:command-replay-conflict
|
|
39506
|
+
HANDOVER_EXISTS:
|
|
39507
|
+
summary: HANDOVER_EXISTS
|
|
39508
|
+
value:
|
|
39509
|
+
code: HANDOVER_EXISTS
|
|
39510
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39511
|
+
detail: See the operation contract.
|
|
39512
|
+
errors: []
|
|
39513
|
+
retryable: false
|
|
39514
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39515
|
+
schemaVersion: 2.0.0
|
|
39516
|
+
status: 409
|
|
39517
|
+
title: HANDOVER_EXISTS
|
|
39518
|
+
type: urn:gala:problem:handover-exists
|
|
39519
|
+
INVALID_SOURCE_STATE:
|
|
39520
|
+
summary: INVALID_SOURCE_STATE
|
|
39521
|
+
value:
|
|
39522
|
+
code: INVALID_SOURCE_STATE
|
|
39523
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39524
|
+
detail: See the operation contract.
|
|
39525
|
+
errors: []
|
|
39526
|
+
retryable: false
|
|
39527
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39528
|
+
schemaVersion: 2.0.0
|
|
39529
|
+
status: 409
|
|
39530
|
+
title: INVALID_SOURCE_STATE
|
|
39531
|
+
type: urn:gala:problem:invalid-source-state
|
|
39532
|
+
schema:
|
|
39533
|
+
$ref: "#/components/schemas/Problem"
|
|
39534
|
+
description: COMMAND_REPLAY_CONFLICT, HANDOVER_EXISTS, INVALID_SOURCE_STATE
|
|
39535
|
+
headers:
|
|
39536
|
+
Cache-Control:
|
|
39537
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39538
|
+
X-Correlation-Id:
|
|
39539
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39540
|
+
x-gala-problem-codes:
|
|
39541
|
+
- COMMAND_REPLAY_CONFLICT
|
|
39542
|
+
- HANDOVER_EXISTS
|
|
39543
|
+
- INVALID_SOURCE_STATE
|
|
38612
39544
|
security:
|
|
38613
39545
|
- browserSession: []
|
|
38614
|
-
summary:
|
|
39546
|
+
summary: issue site handover claim
|
|
38615
39547
|
tags:
|
|
38616
39548
|
- organizations
|
|
38617
39549
|
x-gala-action-grant: none
|
|
@@ -38624,22 +39556,30 @@ paths:
|
|
|
38624
39556
|
x-gala-conditional-capabilities: []
|
|
38625
39557
|
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
38626
39558
|
x-gala-nullability: required-and-nullable-are-explicit
|
|
38627
|
-
x-gala-purpose:
|
|
39559
|
+
x-gala-purpose: issue site handover claim
|
|
38628
39560
|
x-gala-reachable-problems:
|
|
38629
39561
|
- AUTHENTICATION_REQUIRED
|
|
38630
39562
|
- AUTHORIZATION_DENIED
|
|
39563
|
+
- COMMAND_REPLAY_CONFLICT
|
|
39564
|
+
- HANDOVER_EXISTS
|
|
39565
|
+
- INVALID_SOURCE_STATE
|
|
38631
39566
|
- REAUTH_REQUIRED
|
|
39567
|
+
- REQUEST_FIELD_UNKNOWN
|
|
38632
39568
|
- RESOURCE_NOT_FOUND
|
|
38633
39569
|
- VALIDATION_FAILED
|
|
38634
|
-
x-gala-replay-identity:
|
|
39570
|
+
x-gala-replay-identity: idempotency-key
|
|
38635
39571
|
x-gala-state-guards:
|
|
38636
|
-
-
|
|
38637
|
-
|
|
39572
|
+
- Publication:ACTIVE
|
|
39573
|
+
- Organization:SINGLE
|
|
39574
|
+
- CreatorClaim:no VERIFIED claim
|
|
39575
|
+
- CreatorClaim:OPEN -> REVOKED when replace is true, otherwise no OPEN claim
|
|
39576
|
+
x-gala-success-category: create
|
|
38638
39577
|
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
39578
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/handover-claims/{claimId}:revoke:
|
|
38639
39579
|
post:
|
|
38640
39580
|
description: |
|
|
38641
|
-
The organisation owner, with recent authentication; an API key is always refused.
|
|
38642
|
-
operationId:
|
|
39581
|
+
The organisation owner, with recent authentication; an API key is always refused. Revokes an `OPEN` or `VERIFIED` claim: its link stops working at once (`GET /v2/claims/{token}` answers `404 CLAIM_NOT_FOUND`) and any verification a claimant completed is discarded. Revoking a `REVOKED` claim returns it unchanged. `409 CLAIM_ALREADY_CLAIMED` once the site has been claimed, `410 CLAIM_EXPIRED` once the claim has expired, `404 RESOURCE_NOT_FOUND` for a claim that is not this site's.
|
|
39582
|
+
operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsByClaimIdRevoke
|
|
38643
39583
|
parameters:
|
|
38644
39584
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
38645
39585
|
- example: 018f0000-0000-7000-8000-000000000001
|
|
@@ -38658,70 +39598,45 @@ paths:
|
|
|
38658
39598
|
format: uuid
|
|
38659
39599
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
38660
39600
|
type: string
|
|
39601
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
39602
|
+
in: path
|
|
39603
|
+
name: claimId
|
|
39604
|
+
required: true
|
|
39605
|
+
schema:
|
|
39606
|
+
format: uuid
|
|
39607
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
39608
|
+
type: string
|
|
38661
39609
|
- $ref: "#/components/parameters/IdempotencyKey"
|
|
38662
39610
|
- $ref: "#/components/parameters/XCsrfToken"
|
|
38663
|
-
requestBody:
|
|
38664
|
-
content:
|
|
38665
|
-
application/json:
|
|
38666
|
-
examples:
|
|
38667
|
-
nominal:
|
|
38668
|
-
summary: Nominal valid request
|
|
38669
|
-
value:
|
|
38670
|
-
targetOwnerLogin: creator-org
|
|
38671
|
-
schema:
|
|
38672
|
-
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverRequest"
|
|
38673
|
-
required: true
|
|
38674
39611
|
responses:
|
|
38675
|
-
"
|
|
39612
|
+
"200":
|
|
38676
39613
|
content:
|
|
38677
39614
|
application/json:
|
|
38678
39615
|
examples:
|
|
38679
39616
|
nominal:
|
|
38680
39617
|
summary: Nominal successful response
|
|
38681
39618
|
value:
|
|
38682
|
-
|
|
38683
|
-
|
|
38684
|
-
|
|
38685
|
-
|
|
38686
|
-
|
|
38687
|
-
|
|
38688
|
-
- name: TRANSFER
|
|
38689
|
-
state: RUNNING
|
|
38690
|
-
- name: RELINK
|
|
38691
|
-
state: PENDING
|
|
38692
|
-
- name: PAGES
|
|
38693
|
-
state: PENDING
|
|
38694
|
-
- name: PUBLISH
|
|
38695
|
-
state: PENDING
|
|
38696
|
-
target:
|
|
38697
|
-
kind: ORGANIZATION
|
|
38698
|
-
ownerLogin: creator-org
|
|
39619
|
+
claimId: 018f0000-0000-7000-8000-000000000001
|
|
39620
|
+
createdAt: "2026-10-17T12:00:00.000Z"
|
|
39621
|
+
expiresAt: "2026-11-16T12:00:00.000Z"
|
|
39622
|
+
proof:
|
|
39623
|
+
kind: LINK_ONLY
|
|
39624
|
+
state: REVOKED
|
|
38699
39625
|
version: 1
|
|
38700
39626
|
schema:
|
|
38701
|
-
$ref: "#/components/schemas/
|
|
38702
|
-
description:
|
|
39627
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverClaimsByClaimIdRevokeResponse"
|
|
39628
|
+
description: revoke site handover claim succeeded
|
|
38703
39629
|
headers:
|
|
38704
39630
|
Cache-Control:
|
|
38705
39631
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
39632
|
+
ETag:
|
|
39633
|
+
$ref: "#/components/headers/ETag"
|
|
38706
39634
|
X-Correlation-Id:
|
|
38707
39635
|
$ref: "#/components/headers/XCorrelationId"
|
|
38708
39636
|
"400":
|
|
38709
39637
|
content:
|
|
38710
39638
|
application/problem+json:
|
|
38711
39639
|
examples:
|
|
38712
|
-
REQUEST_FIELD_UNKNOWN:
|
|
38713
|
-
summary: REQUEST_FIELD_UNKNOWN
|
|
38714
|
-
value:
|
|
38715
|
-
code: REQUEST_FIELD_UNKNOWN
|
|
38716
|
-
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38717
|
-
detail: See the operation contract.
|
|
38718
|
-
errors: []
|
|
38719
|
-
retryable: false
|
|
38720
|
-
schemaId: urn:gala:schema:problem:2.0.0
|
|
38721
|
-
schemaVersion: 2.0.0
|
|
38722
|
-
status: 400
|
|
38723
|
-
title: REQUEST_FIELD_UNKNOWN
|
|
38724
|
-
type: urn:gala:problem:request-field-unknown
|
|
38725
39640
|
VALIDATION_FAILED:
|
|
38726
39641
|
summary: VALIDATION_FAILED
|
|
38727
39642
|
value:
|
|
@@ -38737,14 +39652,13 @@ paths:
|
|
|
38737
39652
|
type: urn:gala:problem:validation-failed
|
|
38738
39653
|
schema:
|
|
38739
39654
|
$ref: "#/components/schemas/Problem"
|
|
38740
|
-
description:
|
|
39655
|
+
description: VALIDATION_FAILED
|
|
38741
39656
|
headers:
|
|
38742
39657
|
Cache-Control:
|
|
38743
39658
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
38744
39659
|
X-Correlation-Id:
|
|
38745
39660
|
$ref: "#/components/headers/XCorrelationId"
|
|
38746
39661
|
x-gala-problem-codes:
|
|
38747
|
-
- REQUEST_FIELD_UNKNOWN
|
|
38748
39662
|
- VALIDATION_FAILED
|
|
38749
39663
|
"401":
|
|
38750
39664
|
content:
|
|
@@ -38845,23 +39759,10 @@ paths:
|
|
|
38845
39759
|
content:
|
|
38846
39760
|
application/problem+json:
|
|
38847
39761
|
examples:
|
|
38848
|
-
|
|
38849
|
-
summary:
|
|
38850
|
-
value:
|
|
38851
|
-
code: COMMAND_REPLAY_CONFLICT
|
|
38852
|
-
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38853
|
-
detail: See the operation contract.
|
|
38854
|
-
errors: []
|
|
38855
|
-
retryable: false
|
|
38856
|
-
schemaId: urn:gala:schema:problem:2.0.0
|
|
38857
|
-
schemaVersion: 2.0.0
|
|
38858
|
-
status: 409
|
|
38859
|
-
title: COMMAND_REPLAY_CONFLICT
|
|
38860
|
-
type: urn:gala:problem:command-replay-conflict
|
|
38861
|
-
HANDOVER_EXISTS:
|
|
38862
|
-
summary: HANDOVER_EXISTS
|
|
39762
|
+
CLAIM_ALREADY_CLAIMED:
|
|
39763
|
+
summary: CLAIM_ALREADY_CLAIMED
|
|
38863
39764
|
value:
|
|
38864
|
-
code:
|
|
39765
|
+
code: CLAIM_ALREADY_CLAIMED
|
|
38865
39766
|
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38866
39767
|
detail: See the operation contract.
|
|
38867
39768
|
errors: []
|
|
@@ -38869,12 +39770,12 @@ paths:
|
|
|
38869
39770
|
schemaId: urn:gala:schema:problem:2.0.0
|
|
38870
39771
|
schemaVersion: 2.0.0
|
|
38871
39772
|
status: 409
|
|
38872
|
-
title:
|
|
38873
|
-
type: urn:gala:problem:
|
|
38874
|
-
|
|
38875
|
-
summary:
|
|
39773
|
+
title: CLAIM_ALREADY_CLAIMED
|
|
39774
|
+
type: urn:gala:problem:claim-already-claimed
|
|
39775
|
+
COMMAND_REPLAY_CONFLICT:
|
|
39776
|
+
summary: COMMAND_REPLAY_CONFLICT
|
|
38876
39777
|
value:
|
|
38877
|
-
code:
|
|
39778
|
+
code: COMMAND_REPLAY_CONFLICT
|
|
38878
39779
|
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38879
39780
|
detail: See the operation contract.
|
|
38880
39781
|
errors: []
|
|
@@ -38882,50 +39783,49 @@ paths:
|
|
|
38882
39783
|
schemaId: urn:gala:schema:problem:2.0.0
|
|
38883
39784
|
schemaVersion: 2.0.0
|
|
38884
39785
|
status: 409
|
|
38885
|
-
title:
|
|
38886
|
-
type: urn:gala:problem:
|
|
39786
|
+
title: COMMAND_REPLAY_CONFLICT
|
|
39787
|
+
type: urn:gala:problem:command-replay-conflict
|
|
38887
39788
|
schema:
|
|
38888
39789
|
$ref: "#/components/schemas/Problem"
|
|
38889
|
-
description:
|
|
39790
|
+
description: CLAIM_ALREADY_CLAIMED, COMMAND_REPLAY_CONFLICT
|
|
38890
39791
|
headers:
|
|
38891
39792
|
Cache-Control:
|
|
38892
39793
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
38893
39794
|
X-Correlation-Id:
|
|
38894
39795
|
$ref: "#/components/headers/XCorrelationId"
|
|
38895
39796
|
x-gala-problem-codes:
|
|
39797
|
+
- CLAIM_ALREADY_CLAIMED
|
|
38896
39798
|
- COMMAND_REPLAY_CONFLICT
|
|
38897
|
-
|
|
38898
|
-
- HANDOVER_TARGET_NOT_INSTALLED
|
|
38899
|
-
"503":
|
|
39799
|
+
"410":
|
|
38900
39800
|
content:
|
|
38901
39801
|
application/problem+json:
|
|
38902
39802
|
examples:
|
|
38903
|
-
|
|
38904
|
-
summary:
|
|
39803
|
+
CLAIM_EXPIRED:
|
|
39804
|
+
summary: CLAIM_EXPIRED
|
|
38905
39805
|
value:
|
|
38906
|
-
code:
|
|
39806
|
+
code: CLAIM_EXPIRED
|
|
38907
39807
|
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38908
39808
|
detail: See the operation contract.
|
|
38909
39809
|
errors: []
|
|
38910
|
-
retryable:
|
|
39810
|
+
retryable: false
|
|
38911
39811
|
schemaId: urn:gala:schema:problem:2.0.0
|
|
38912
39812
|
schemaVersion: 2.0.0
|
|
38913
|
-
status:
|
|
38914
|
-
title:
|
|
38915
|
-
type: urn:gala:problem:
|
|
39813
|
+
status: 410
|
|
39814
|
+
title: CLAIM_EXPIRED
|
|
39815
|
+
type: urn:gala:problem:claim-expired
|
|
38916
39816
|
schema:
|
|
38917
39817
|
$ref: "#/components/schemas/Problem"
|
|
38918
|
-
description:
|
|
39818
|
+
description: CLAIM_EXPIRED
|
|
38919
39819
|
headers:
|
|
38920
39820
|
Cache-Control:
|
|
38921
39821
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
38922
39822
|
X-Correlation-Id:
|
|
38923
39823
|
$ref: "#/components/headers/XCorrelationId"
|
|
38924
39824
|
x-gala-problem-codes:
|
|
38925
|
-
-
|
|
39825
|
+
- CLAIM_EXPIRED
|
|
38926
39826
|
security:
|
|
38927
39827
|
- browserSession: []
|
|
38928
|
-
summary:
|
|
39828
|
+
summary: revoke site handover claim
|
|
38929
39829
|
tags:
|
|
38930
39830
|
- organizations
|
|
38931
39831
|
x-gala-action-grant: none
|
|
@@ -38938,22 +39838,20 @@ paths:
|
|
|
38938
39838
|
x-gala-conditional-capabilities: []
|
|
38939
39839
|
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
38940
39840
|
x-gala-nullability: required-and-nullable-are-explicit
|
|
38941
|
-
x-gala-purpose:
|
|
39841
|
+
x-gala-purpose: revoke site handover claim
|
|
38942
39842
|
x-gala-reachable-problems:
|
|
38943
39843
|
- AUTHENTICATION_REQUIRED
|
|
38944
39844
|
- AUTHORIZATION_DENIED
|
|
39845
|
+
- CLAIM_ALREADY_CLAIMED
|
|
39846
|
+
- CLAIM_EXPIRED
|
|
38945
39847
|
- COMMAND_REPLAY_CONFLICT
|
|
38946
|
-
- DEPENDENCY_UNAVAILABLE
|
|
38947
|
-
- HANDOVER_EXISTS
|
|
38948
|
-
- HANDOVER_TARGET_NOT_INSTALLED
|
|
38949
39848
|
- REAUTH_REQUIRED
|
|
38950
|
-
- REQUEST_FIELD_UNKNOWN
|
|
38951
39849
|
- RESOURCE_NOT_FOUND
|
|
38952
39850
|
- VALIDATION_FAILED
|
|
38953
39851
|
x-gala-replay-identity: idempotency-key
|
|
38954
39852
|
x-gala-state-guards:
|
|
38955
39853
|
- NONE
|
|
38956
|
-
x-gala-success-category:
|
|
39854
|
+
x-gala-success-category: update
|
|
38957
39855
|
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
38958
39856
|
/v2/organizations/{organizationId}/publications/{publicationId}/handover:cancel:
|
|
38959
39857
|
post:
|