@rathnasgala2/schemas 3.33.0 → 3.35.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.
@@ -4302,6 +4302,57 @@ components:
4302
4302
  - openChange
4303
4303
  - setUp
4304
4304
  type: object
4305
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewPolicyResponse:
4306
+ allOf:
4307
+ - $ref: "#/components/schemas/InterviewPolicy"
4308
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileResponse:
4309
+ allOf:
4310
+ - $ref: "#/components/schemas/InterviewProfile"
4311
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdResponse:
4312
+ allOf:
4313
+ - $ref: "#/components/schemas/Interview"
4314
+ GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsResponse:
4315
+ additionalProperties: false
4316
+ allOf:
4317
+ - else:
4318
+ properties:
4319
+ nextCursor:
4320
+ type: "null"
4321
+ if:
4322
+ properties:
4323
+ hasMore:
4324
+ not:
4325
+ enum:
4326
+ - false
4327
+ type: boolean
4328
+ x-gala-const: true
4329
+ required:
4330
+ - hasMore
4331
+ then:
4332
+ properties:
4333
+ nextCursor:
4334
+ type: string
4335
+ required:
4336
+ - nextCursor
4337
+ properties:
4338
+ hasMore:
4339
+ type: boolean
4340
+ items:
4341
+ items:
4342
+ $ref: "#/components/schemas/InterviewListItem"
4343
+ maxItems: 100
4344
+ type: array
4345
+ nextCursor:
4346
+ description: Opaque cursor for the next page. Present and non-null exactly when `hasMore` is true; absent or null when `hasMore` is false. The length bounds constrain the string branch only.
4347
+ maxLength: 2048
4348
+ minLength: 1
4349
+ type:
4350
+ - string
4351
+ - "null"
4352
+ required:
4353
+ - items
4354
+ - hasMore
4355
+ type: object
4305
4356
  GetOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsResponse:
4306
4357
  $ref: "#/components/schemas/ListenSettings"
4307
4358
  GetOrganizationsByOrganizationIdPublicationsByPublicationIdModerationQueueResponse:
@@ -5134,6 +5185,9 @@ components:
5134
5185
  - installation
5135
5186
  - problems
5136
5187
  type: object
5188
+ GetPlatformInterviewUsageResponse:
5189
+ allOf:
5190
+ - $ref: "#/components/schemas/PlatformInterviewUsage"
5137
5191
  GetPlatformOauthClientsResponse:
5138
5192
  additionalProperties: false
5139
5193
  properties:
@@ -6434,6 +6488,495 @@ components:
6434
6488
  - consequences
6435
6489
  - consequenceDigest
6436
6490
  type: object
6491
+ Interview:
6492
+ additionalProperties: false
6493
+ description: "SCHEMA-3.34.0. One Interview: an AI interviewer asks the author about captured material and writes a draft in their words. `turns` is the conversation; `draft` and `review` are present from `DRAFT_READY`; `failure` once `FAILED`."
6494
+ properties:
6495
+ capture:
6496
+ $ref: "#/components/schemas/InterviewCapture"
6497
+ createdAt:
6498
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6499
+ draft:
6500
+ $ref: "#/components/schemas/InterviewDraft"
6501
+ expiresAt:
6502
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6503
+ failure:
6504
+ $ref: "#/components/schemas/InterviewFailure"
6505
+ finishedAt:
6506
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6507
+ interviewId:
6508
+ format: uuid
6509
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6510
+ type: string
6511
+ organizationId:
6512
+ format: uuid
6513
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6514
+ type: string
6515
+ progress:
6516
+ $ref: "#/components/schemas/InterviewProgress"
6517
+ publicationId:
6518
+ format: uuid
6519
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6520
+ type: string
6521
+ review:
6522
+ $ref: "#/components/schemas/InterviewReview"
6523
+ startedAt:
6524
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6525
+ state:
6526
+ $ref: "#/components/schemas/InterviewState"
6527
+ turns:
6528
+ items:
6529
+ $ref: "#/components/schemas/InterviewTurn"
6530
+ maxItems: 400
6531
+ type: array
6532
+ updatedAt:
6533
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6534
+ required:
6535
+ - interviewId
6536
+ - organizationId
6537
+ - publicationId
6538
+ - state
6539
+ - capture
6540
+ - progress
6541
+ - createdAt
6542
+ - updatedAt
6543
+ - expiresAt
6544
+ - turns
6545
+ type: object
6546
+ InterviewAnswer:
6547
+ additionalProperties: false
6548
+ description: SCHEMA-3.34.0. The author's answer to the last question.
6549
+ properties:
6550
+ text:
6551
+ maxLength: 8000
6552
+ minLength: 1
6553
+ type: string
6554
+ required:
6555
+ - text
6556
+ type: object
6557
+ InterviewCapture:
6558
+ additionalProperties: false
6559
+ description: SCHEMA-3.34.0. The material an interview starts from.
6560
+ properties:
6561
+ kind:
6562
+ $ref: "#/components/schemas/InterviewCaptureKind"
6563
+ sourceTitle:
6564
+ maxLength: 300
6565
+ minLength: 1
6566
+ type: string
6567
+ sourceUrl:
6568
+ format: uri
6569
+ maxLength: 2048
6570
+ minLength: 1
6571
+ type: string
6572
+ text:
6573
+ description: The note or the transcript.
6574
+ maxLength: 20000
6575
+ minLength: 1
6576
+ type: string
6577
+ required:
6578
+ - kind
6579
+ - text
6580
+ type: object
6581
+ InterviewCaptureKind:
6582
+ description: "How the material was captured: a typed `NOTE`, a `VOICE` transcript or a `LINK` with its text."
6583
+ enum:
6584
+ - NOTE
6585
+ - VOICE
6586
+ - LINK
6587
+ type: string
6588
+ InterviewCreate:
6589
+ additionalProperties: false
6590
+ properties:
6591
+ capture:
6592
+ $ref: "#/components/schemas/InterviewCapture"
6593
+ required:
6594
+ - capture
6595
+ type: object
6596
+ InterviewDraft:
6597
+ additionalProperties: false
6598
+ description: SCHEMA-3.34.0. The post the interview produced; nothing is published until the author accepts and saves it.
6599
+ properties:
6600
+ body:
6601
+ description: Markdown.
6602
+ maxLength: 262144
6603
+ minLength: 1
6604
+ type: string
6605
+ description:
6606
+ maxLength: 160
6607
+ minLength: 1
6608
+ type: string
6609
+ language:
6610
+ maxLength: 35
6611
+ minLength: 2
6612
+ pattern: ^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*$
6613
+ type: string
6614
+ title:
6615
+ maxLength: 300
6616
+ minLength: 1
6617
+ type: string
6618
+ tldr:
6619
+ maxLength: 2000
6620
+ minLength: 1
6621
+ type: string
6622
+ required:
6623
+ - title
6624
+ - description
6625
+ - tldr
6626
+ - body
6627
+ - language
6628
+ type: object
6629
+ InterviewFailure:
6630
+ additionalProperties: false
6631
+ properties:
6632
+ code:
6633
+ enum:
6634
+ - PROVIDER_UNAVAILABLE
6635
+ - PROVIDER_REFUSED
6636
+ - MALFORMED_ANSWER
6637
+ - BUDGET_EXHAUSTED
6638
+ - EXPIRED
6639
+ type: string
6640
+ message:
6641
+ maxLength: 500
6642
+ minLength: 1
6643
+ type: string
6644
+ required:
6645
+ - code
6646
+ type: object
6647
+ InterviewListItem:
6648
+ additionalProperties: false
6649
+ description: "SCHEMA-3.34.0. An Interview as the list shows it: no turns, draft or review, with `turnCount` and `hasDraft` instead."
6650
+ properties:
6651
+ capture:
6652
+ $ref: "#/components/schemas/InterviewCapture"
6653
+ createdAt:
6654
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6655
+ expiresAt:
6656
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6657
+ failure:
6658
+ $ref: "#/components/schemas/InterviewFailure"
6659
+ finishedAt:
6660
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6661
+ hasDraft:
6662
+ type: boolean
6663
+ interviewId:
6664
+ format: uuid
6665
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6666
+ type: string
6667
+ organizationId:
6668
+ format: uuid
6669
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6670
+ type: string
6671
+ progress:
6672
+ $ref: "#/components/schemas/InterviewProgress"
6673
+ publicationId:
6674
+ format: uuid
6675
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6676
+ type: string
6677
+ startedAt:
6678
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6679
+ state:
6680
+ $ref: "#/components/schemas/InterviewState"
6681
+ turnCount:
6682
+ format: int64
6683
+ minimum: 0
6684
+ type: integer
6685
+ updatedAt:
6686
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6687
+ required:
6688
+ - interviewId
6689
+ - organizationId
6690
+ - publicationId
6691
+ - state
6692
+ - capture
6693
+ - progress
6694
+ - createdAt
6695
+ - updatedAt
6696
+ - expiresAt
6697
+ - turnCount
6698
+ - hasDraft
6699
+ type: object
6700
+ InterviewPhase:
6701
+ description: "Where the interview is: asking for the author's own details (`OWNED`), pushing for a view (`INSIGHTFUL`), or finished asking (`DONE`)."
6702
+ enum:
6703
+ - OWNED
6704
+ - INSIGHTFUL
6705
+ - DONE
6706
+ type: string
6707
+ InterviewPolicy:
6708
+ additionalProperties: false
6709
+ description: "SCHEMA-3.34.0. Whether Interview is available to this publication and how many interviews are left this period (UTC month). `enabled: false` means the feature is off; the editor says so and stays usable."
6710
+ properties:
6711
+ budget:
6712
+ additionalProperties: false
6713
+ description: "`available` is false when the platform's monthly spend cap is reached."
6714
+ properties:
6715
+ available:
6716
+ type: boolean
6717
+ required:
6718
+ - available
6719
+ type: object
6720
+ enabled:
6721
+ description: False when the platform switch is off or the provider is not configured.
6722
+ type: boolean
6723
+ plan:
6724
+ additionalProperties: false
6725
+ properties:
6726
+ allowed:
6727
+ type: boolean
6728
+ requiredTier:
6729
+ description: "The API tier the feature needs: `BUSINESS`, sold as Pro."
6730
+ enum:
6731
+ - FREE
6732
+ - PRO
6733
+ - BUSINESS
6734
+ type: string
6735
+ required:
6736
+ - allowed
6737
+ - requiredTier
6738
+ type: object
6739
+ quota:
6740
+ additionalProperties: false
6741
+ properties:
6742
+ limit:
6743
+ format: int64
6744
+ minimum: 0
6745
+ type: integer
6746
+ period:
6747
+ description: The UTC month, `YYYY-MM`.
6748
+ pattern: ^[0-9]{4}-(?:0[1-9]|1[0-2])$
6749
+ type: string
6750
+ remaining:
6751
+ format: int64
6752
+ minimum: 0
6753
+ type: integer
6754
+ used:
6755
+ format: int64
6756
+ minimum: 0
6757
+ type: integer
6758
+ required:
6759
+ - period
6760
+ - limit
6761
+ - used
6762
+ - remaining
6763
+ type: object
6764
+ required:
6765
+ - enabled
6766
+ - plan
6767
+ - quota
6768
+ - budget
6769
+ type: object
6770
+ InterviewProfile:
6771
+ additionalProperties: false
6772
+ description: SCHEMA-3.34.0. The two facts the interviewer keeps about the site between interviews.
6773
+ properties:
6774
+ niche:
6775
+ description: What the site is about, in the author's words. May be empty.
6776
+ maxLength: 200
6777
+ minLength: 0
6778
+ type: string
6779
+ reader:
6780
+ description: Who it is for. May be empty.
6781
+ maxLength: 300
6782
+ minLength: 0
6783
+ type: string
6784
+ required:
6785
+ - niche
6786
+ - reader
6787
+ type: object
6788
+ InterviewProgress:
6789
+ additionalProperties: false
6790
+ properties:
6791
+ beliefDone:
6792
+ type: boolean
6793
+ canFinish:
6794
+ description: True once at least three details are on record.
6795
+ type: boolean
6796
+ details:
6797
+ format: int64
6798
+ minimum: 0
6799
+ type: integer
6800
+ detailsTarget:
6801
+ description: How many details the interviewer aims for (5).
6802
+ format: int64
6803
+ minimum: 0
6804
+ type: integer
6805
+ phase:
6806
+ $ref: "#/components/schemas/InterviewPhase"
6807
+ skepticRounds:
6808
+ format: int64
6809
+ minimum: 0
6810
+ type: integer
6811
+ required:
6812
+ - phase
6813
+ - details
6814
+ - detailsTarget
6815
+ - beliefDone
6816
+ - skepticRounds
6817
+ - canFinish
6818
+ type: object
6819
+ InterviewReview:
6820
+ additionalProperties: false
6821
+ description: "SCHEMA-3.34.0. What the draft was checked against: each claim is `VERIFIED` against a source, `UNVERIFIED`, or in `CONFLICT` with the author's earlier posts, plus a three-sentence read-back and any passages flagged as unclear."
6822
+ properties:
6823
+ claims:
6824
+ items:
6825
+ additionalProperties: false
6826
+ properties:
6827
+ source:
6828
+ additionalProperties: false
6829
+ properties:
6830
+ contentPath:
6831
+ maxLength: 512
6832
+ minLength: 1
6833
+ pattern: ^(?!/)(?!.*(?:^|/)\.)(?!gala(?:/|$))(?!gala\.lock\.json$)[^\x00-\x1f\x7f\\]+$
6834
+ type: string
6835
+ note:
6836
+ maxLength: 500
6837
+ minLength: 1
6838
+ type: string
6839
+ url:
6840
+ format: uri
6841
+ maxLength: 2048
6842
+ minLength: 1
6843
+ type: string
6844
+ required: []
6845
+ type: object
6846
+ status:
6847
+ enum:
6848
+ - VERIFIED
6849
+ - UNVERIFIED
6850
+ - CONFLICT
6851
+ type: string
6852
+ text:
6853
+ maxLength: 1000
6854
+ minLength: 1
6855
+ type: string
6856
+ required:
6857
+ - text
6858
+ - status
6859
+ type: object
6860
+ maxItems: 100
6861
+ type: array
6862
+ clear:
6863
+ additionalProperties: false
6864
+ properties:
6865
+ flagged:
6866
+ items:
6867
+ additionalProperties: false
6868
+ properties:
6869
+ quote:
6870
+ maxLength: 500
6871
+ minLength: 1
6872
+ type: string
6873
+ why:
6874
+ maxLength: 500
6875
+ minLength: 1
6876
+ type: string
6877
+ required:
6878
+ - quote
6879
+ - why
6880
+ type: object
6881
+ maxItems: 50
6882
+ type: array
6883
+ threeSentences:
6884
+ items:
6885
+ maxLength: 500
6886
+ minLength: 1
6887
+ type: string
6888
+ maxItems: 3
6889
+ minItems: 3
6890
+ type: array
6891
+ required:
6892
+ - threeSentences
6893
+ - flagged
6894
+ type: object
6895
+ pastPostsRead:
6896
+ description: Content paths of the author's earlier posts the interviewer read.
6897
+ items:
6898
+ maxLength: 512
6899
+ minLength: 1
6900
+ pattern: ^(?!/)(?!.*(?:^|/)\.)(?!gala(?:/|$))(?!gala\.lock\.json$)[^\x00-\x1f\x7f\\]+$
6901
+ type: string
6902
+ maxItems: 50
6903
+ type: array
6904
+ sources:
6905
+ items:
6906
+ additionalProperties: false
6907
+ properties:
6908
+ title:
6909
+ maxLength: 300
6910
+ minLength: 1
6911
+ type: string
6912
+ url:
6913
+ format: uri
6914
+ maxLength: 2048
6915
+ minLength: 1
6916
+ type: string
6917
+ required:
6918
+ - url
6919
+ - title
6920
+ type: object
6921
+ maxItems: 50
6922
+ type: array
6923
+ required:
6924
+ - claims
6925
+ - clear
6926
+ - sources
6927
+ - pastPostsRead
6928
+ type: object
6929
+ InterviewState:
6930
+ description: SCHEMA-3.34.0. `CAPTURED` (the material is saved, no question asked yet) -> `INTERVIEWING` (a quota unit is reserved) -> `WRITING` -> `DRAFT_READY` -> `ACCEPTED`; `CANCELLED` from any state before `ACCEPTED`; `FAILED` and `EXPIRED` are terminal.
6931
+ enum:
6932
+ - CAPTURED
6933
+ - INTERVIEWING
6934
+ - WRITING
6935
+ - DRAFT_READY
6936
+ - ACCEPTED
6937
+ - CANCELLED
6938
+ - FAILED
6939
+ - EXPIRED
6940
+ type: string
6941
+ InterviewTurn:
6942
+ additionalProperties: false
6943
+ properties:
6944
+ at:
6945
+ $ref: "#/components/schemas/PortableProblemRfc3339"
6946
+ kind:
6947
+ $ref: "#/components/schemas/InterviewTurnKind"
6948
+ role:
6949
+ $ref: "#/components/schemas/InterviewTurnRole"
6950
+ seq:
6951
+ format: int64
6952
+ minimum: 0
6953
+ type: integer
6954
+ text:
6955
+ maxLength: 20000
6956
+ minLength: 1
6957
+ type: string
6958
+ required:
6959
+ - seq
6960
+ - role
6961
+ - kind
6962
+ - text
6963
+ - at
6964
+ type: object
6965
+ InterviewTurnKind:
6966
+ description: "What the turn is: an interviewer `QUESTION`, `RECAP`, `SKEPTIC` challenge or `CLOSING`, or the author's `ANSWER`."
6967
+ enum:
6968
+ - QUESTION
6969
+ - RECAP
6970
+ - SKEPTIC
6971
+ - CLOSING
6972
+ - ANSWER
6973
+ type: string
6974
+ InterviewTurnRole:
6975
+ description: Who spoke.
6976
+ enum:
6977
+ - INTERVIEWER
6978
+ - AUTHOR
6979
+ type: string
6437
6980
  KernelAttemptSubmission:
6438
6981
  additionalProperties: false
6439
6982
  allOf:
@@ -9395,6 +9938,40 @@ components:
9395
9938
  - source
9396
9939
  - description
9397
9940
  type: object
9941
+ PlatformInterviewUsage:
9942
+ additionalProperties: false
9943
+ description: SCHEMA-3.34.0. Interview volume and spend for the current UTC month, platform-wide. Counts and money only, never interview text.
9944
+ properties:
9945
+ cap:
9946
+ additionalProperties: false
9947
+ description: The monthly spend cap.
9948
+ properties:
9949
+ usdMicros:
9950
+ format: int64
9951
+ minimum: 0
9952
+ type: integer
9953
+ required:
9954
+ - usdMicros
9955
+ type: object
9956
+ interviews:
9957
+ format: int64
9958
+ minimum: 0
9959
+ type: integer
9960
+ period:
9961
+ description: The current UTC month, `YYYY-MM`.
9962
+ pattern: ^[0-9]{4}-(?:0[1-9]|1[0-2])$
9963
+ type: string
9964
+ usdMicros:
9965
+ description: Spend so far this month, in millionths of a US dollar.
9966
+ format: int64
9967
+ minimum: 0
9968
+ type: integer
9969
+ required:
9970
+ - period
9971
+ - interviews
9972
+ - usdMicros
9973
+ - cap
9974
+ type: object
9398
9975
  PlatformOauthClient:
9399
9976
  additionalProperties: false
9400
9977
  properties:
@@ -16181,6 +16758,14 @@ components:
16181
16758
  PortableProblemDocument:
16182
16759
  additionalProperties: false
16183
16760
  properties:
16761
+ changeIds:
16762
+ description: "SCHEMA-3.35.0, optional, carried by a CANONICAL_BASE_MISMATCH problem and absent from every other: the ids of the waiting changes whose saved copy of `gala/publication.json` carries a different site address than the one the site is served at, in request order (the same id format as the publish request's `changeIds`). Present only when the server could not rewrite those changes' address itself right now (publish again in a moment) or when main itself still carries the old address."
16763
+ items:
16764
+ $ref: "#/components/schemas/PortableProblemStableId"
16765
+ maxItems: 20
16766
+ minItems: 1
16767
+ type: array
16768
+ uniqueItems: true
16184
16769
  code:
16185
16770
  $ref: "#/components/schemas/PortableProblemProblemCode"
16186
16771
  correlationId:
@@ -17993,6 +18578,43 @@ components:
17993
18578
  type: object
17994
18579
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverResponse:
17995
18580
  $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverResponse"
18581
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdAcceptResponse:
18582
+ allOf:
18583
+ - $ref: "#/components/schemas/Interview"
18584
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdCancelResponse:
18585
+ allOf:
18586
+ - $ref: "#/components/schemas/Interview"
18587
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdFinishResponse:
18588
+ allOf:
18589
+ - $ref: "#/components/schemas/Interview"
18590
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdStartResponse:
18591
+ allOf:
18592
+ - $ref: "#/components/schemas/Interview"
18593
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurnsRequest:
18594
+ additionalProperties: false
18595
+ description: SCHEMA-3.34.0. The author's answer to the last question.
18596
+ properties:
18597
+ text:
18598
+ maxLength: 8000
18599
+ minLength: 1
18600
+ type: string
18601
+ required:
18602
+ - text
18603
+ type: object
18604
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurnsResponse:
18605
+ allOf:
18606
+ - $ref: "#/components/schemas/Interview"
18607
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsRequest:
18608
+ additionalProperties: false
18609
+ properties:
18610
+ capture:
18611
+ $ref: "#/components/schemas/InterviewCapture"
18612
+ required:
18613
+ - capture
18614
+ type: object
18615
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsResponse:
18616
+ allOf:
18617
+ - $ref: "#/components/schemas/Interview"
17996
18618
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdModerationCommentsByCommentIdDecideRequest:
17997
18619
  additionalProperties: false
17998
18620
  properties:
@@ -21136,6 +21758,27 @@ components:
21136
21758
  required:
21137
21759
  - change
21138
21760
  type: object
21761
+ PutOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileRequest:
21762
+ additionalProperties: false
21763
+ description: SCHEMA-3.34.0. The two facts the interviewer keeps about the site between interviews.
21764
+ properties:
21765
+ niche:
21766
+ description: What the site is about, in the author's words. May be empty.
21767
+ maxLength: 200
21768
+ minLength: 0
21769
+ type: string
21770
+ reader:
21771
+ description: Who it is for. May be empty.
21772
+ maxLength: 300
21773
+ minLength: 0
21774
+ type: string
21775
+ required:
21776
+ - niche
21777
+ - reader
21778
+ type: object
21779
+ PutOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileResponse:
21780
+ allOf:
21781
+ - $ref: "#/components/schemas/InterviewProfile"
21139
21782
  PutOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsRequest:
21140
21783
  additionalProperties: false
21141
21784
  properties:
@@ -37453,6 +38096,18 @@ paths:
37453
38096
  verified (after the Pages CNAME is set and before the certificate
37454
38097
  serves); it resolves on its own, and the domain read's `nextStep` says
37455
38098
  what is being waited on.
38099
+
38100
+ SCHEMA-3.35.0: `409 CANONICAL_BASE_MISMATCH` also carries the optional
38101
+ member `changeIds`: an array of change ids (the same format as this
38102
+ request's `changeIds`), in request order, naming the waiting changes
38103
+ whose saved copy of `gala/publication.json` carries a different site
38104
+ address than the one the site is served at. When main already carries
38105
+ the right address the server rewrites those changes' address itself
38106
+ (same change id) and publishes; the problem is returned with
38107
+ `changeIds` only when that rewrite could not be done right now
38108
+ (publish again in a moment) or when main itself still carries the old
38109
+ address (then the server includes or proposes the Site address change
38110
+ as before).
37456
38111
  operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdChangesPublish
37457
38112
  parameters:
37458
38113
  - $ref: "#/components/parameters/XCorrelationId"
@@ -37637,6 +38292,8 @@ paths:
37637
38292
  CANONICAL_BASE_MISMATCH:
37638
38293
  summary: CANONICAL_BASE_MISMATCH
37639
38294
  value:
38295
+ changeIds:
38296
+ - 018f0000-0000-7000-8000-000000000001
37640
38297
  code: CANONICAL_BASE_MISMATCH
37641
38298
  correlationId: 018f0000-0000-7000-8000-000000000001
37642
38299
  detail: See the operation contract.
@@ -49297,10 +49954,11 @@ paths:
49297
49954
  - RepositoryChange:REQUESTED -> PLANNED
49298
49955
  x-gala-success-category: protocol
49299
49956
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
49300
- /v2/organizations/{organizationId}/publications/{publicationId}/listen-settings:
49957
+ /v2/organizations/{organizationId}/publications/{publicationId}/interview-policy:
49301
49958
  get:
49302
- description: Reads the `listen` member of `gala/publication.json` at the linked repository's current main branch head. A publication with no `listen` member reads `enabled` false. `planAllows` is the API's own status and is never written to the repository.
49303
- operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettings
49959
+ description: |
49960
+ Whether Interview is available to this publication (`enabled`), whether the plan includes it (`plan.allowed`, `BUSINESS` tier, sold as Pro), how many interviews are left this period (UTC month) and whether the platform's monthly spend cap still has room. `enabled: false` means the feature is off; the editor says so and stays usable.
49961
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewPolicy
49304
49962
  parameters:
49305
49963
  - $ref: "#/components/parameters/XCorrelationId"
49306
49964
  - example: 018f0000-0000-7000-8000-000000000001
@@ -49327,20 +49985,52 @@ paths:
49327
49985
  nominal:
49328
49986
  summary: Nominal successful response
49329
49987
  value:
49330
- enabled: false
49331
- openChange: null
49332
- planAllows: false
49333
- setUp: true
49988
+ budget:
49989
+ available: true
49990
+ enabled: true
49991
+ plan:
49992
+ allowed: true
49993
+ requiredTier: BUSINESS
49994
+ quota:
49995
+ limit: 10
49996
+ period: 2026-11
49997
+ remaining: 7
49998
+ used: 3
49334
49999
  schema:
49335
- $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsResponse"
49336
- description: read this publication's listen settings at the main branch head succeeded
50000
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewPolicyResponse"
50001
+ description: read the Interview policy succeeded
49337
50002
  headers:
49338
50003
  Cache-Control:
49339
50004
  $ref: "#/components/headers/CacheControlNoStore"
49340
50005
  X-Correlation-Id:
49341
50006
  $ref: "#/components/headers/XCorrelationId"
49342
50007
  "400":
49343
- $ref: "#/components/responses/ValidationFailed"
50008
+ content:
50009
+ application/problem+json:
50010
+ examples:
50011
+ VALIDATION_FAILED:
50012
+ summary: VALIDATION_FAILED
50013
+ value:
50014
+ code: VALIDATION_FAILED
50015
+ correlationId: 018f0000-0000-7000-8000-000000000001
50016
+ detail: See the operation contract.
50017
+ errors: []
50018
+ retryable: false
50019
+ schemaId: urn:gala:schema:problem:2.0.0
50020
+ schemaVersion: 2.0.0
50021
+ status: 400
50022
+ title: VALIDATION_FAILED
50023
+ type: urn:gala:problem:validation-failed
50024
+ schema:
50025
+ $ref: "#/components/schemas/Problem"
50026
+ description: VALIDATION_FAILED
50027
+ headers:
50028
+ Cache-Control:
50029
+ $ref: "#/components/headers/CacheControlNoStore"
50030
+ X-Correlation-Id:
50031
+ $ref: "#/components/headers/XCorrelationId"
50032
+ x-gala-problem-codes:
50033
+ - VALIDATION_FAILED
49344
50034
  "401":
49345
50035
  content:
49346
50036
  application/problem+json:
@@ -49369,99 +50059,249 @@ paths:
49369
50059
  x-gala-problem-codes:
49370
50060
  - AUTHENTICATION_REQUIRED
49371
50061
  "403":
49372
- $ref: "#/components/responses/AuthorizationDenied"
50062
+ content:
50063
+ application/problem+json:
50064
+ examples:
50065
+ AUTHORIZATION_DENIED:
50066
+ summary: AUTHORIZATION_DENIED
50067
+ value:
50068
+ code: AUTHORIZATION_DENIED
50069
+ correlationId: 018f0000-0000-7000-8000-000000000001
50070
+ detail: See the operation contract.
50071
+ errors: []
50072
+ retryable: false
50073
+ schemaId: urn:gala:schema:problem:2.0.0
50074
+ schemaVersion: 2.0.0
50075
+ status: 403
50076
+ title: AUTHORIZATION_DENIED
50077
+ type: urn:gala:problem:authorization-denied
50078
+ schema:
50079
+ $ref: "#/components/schemas/Problem"
50080
+ description: AUTHORIZATION_DENIED
50081
+ headers:
50082
+ Cache-Control:
50083
+ $ref: "#/components/headers/CacheControlNoStore"
50084
+ X-Correlation-Id:
50085
+ $ref: "#/components/headers/XCorrelationId"
50086
+ x-gala-problem-codes:
50087
+ - AUTHORIZATION_DENIED
49373
50088
  "404":
49374
- $ref: "#/components/responses/ResourceNotFound"
49375
- "429":
49376
50089
  content:
49377
50090
  application/problem+json:
49378
50091
  examples:
49379
- RATE_LIMITED:
49380
- summary: RATE_LIMITED
50092
+ RESOURCE_NOT_FOUND:
50093
+ summary: RESOURCE_NOT_FOUND
49381
50094
  value:
49382
- code: RATE_LIMITED
50095
+ code: RESOURCE_NOT_FOUND
49383
50096
  correlationId: 018f0000-0000-7000-8000-000000000001
49384
50097
  detail: See the operation contract.
49385
50098
  errors: []
49386
- retryable: true
50099
+ retryable: false
49387
50100
  schemaId: urn:gala:schema:problem:2.0.0
49388
50101
  schemaVersion: 2.0.0
49389
- status: 429
49390
- title: RATE_LIMITED
49391
- type: urn:gala:problem:rate-limited
50102
+ status: 404
50103
+ title: RESOURCE_NOT_FOUND
50104
+ type: urn:gala:problem:resource-not-found
49392
50105
  schema:
49393
50106
  $ref: "#/components/schemas/Problem"
49394
- description: RATE_LIMITED
50107
+ description: RESOURCE_NOT_FOUND
49395
50108
  headers:
49396
50109
  Cache-Control:
49397
50110
  $ref: "#/components/headers/CacheControlNoStore"
49398
- Retry-After:
49399
- $ref: "#/components/headers/RetryAfter"
49400
50111
  X-Correlation-Id:
49401
50112
  $ref: "#/components/headers/XCorrelationId"
49402
50113
  x-gala-problem-codes:
49403
- - RATE_LIMITED
49404
- "503":
50114
+ - RESOURCE_NOT_FOUND
50115
+ security:
50116
+ - browserSession: []
50117
+ summary: read the Interview policy
50118
+ tags:
50119
+ - interview
50120
+ x-gala-activation-gate: MVP
50121
+ x-gala-activation-guards:
50122
+ - NONE
50123
+ x-gala-capability-key: publication.source.write
50124
+ x-gala-concurrency: authorization-and-publication-epochs
50125
+ x-gala-conditional-capabilities: []
50126
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
50127
+ x-gala-nullability: required-and-nullable-are-explicit
50128
+ x-gala-purpose: read the Interview policy
50129
+ x-gala-reachable-problems:
50130
+ - AUTHENTICATION_REQUIRED
50131
+ - AUTHORIZATION_DENIED
50132
+ - RESOURCE_NOT_FOUND
50133
+ - VALIDATION_FAILED
50134
+ x-gala-replay-identity: safe-query
50135
+ x-gala-state-guards:
50136
+ - NONE
50137
+ x-gala-success-category: query
50138
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
50139
+ /v2/organizations/{organizationId}/publications/{publicationId}/interview-profile:
50140
+ get:
50141
+ description: |
50142
+ The two facts the interviewer keeps about this site between interviews: its niche and its reader. Either may be an empty string.
50143
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfile
50144
+ parameters:
50145
+ - $ref: "#/components/parameters/XCorrelationId"
50146
+ - example: 018f0000-0000-7000-8000-000000000001
50147
+ in: path
50148
+ name: organizationId
50149
+ required: true
50150
+ schema:
50151
+ format: uuid
50152
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50153
+ type: string
50154
+ - example: 018f0000-0000-7000-8000-000000000001
50155
+ in: path
50156
+ name: publicationId
50157
+ required: true
50158
+ schema:
50159
+ format: uuid
50160
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50161
+ type: string
50162
+ responses:
50163
+ "200":
50164
+ content:
50165
+ application/json:
50166
+ examples:
50167
+ nominal:
50168
+ summary: Nominal successful response
50169
+ value:
50170
+ niche: Product-led growth for small SaaS teams
50171
+ reader: Founders running their first onboarding
50172
+ schema:
50173
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileResponse"
50174
+ description: read the Interview profile succeeded
50175
+ headers:
50176
+ Cache-Control:
50177
+ $ref: "#/components/headers/CacheControlNoStore"
50178
+ X-Correlation-Id:
50179
+ $ref: "#/components/headers/XCorrelationId"
50180
+ "400":
49405
50181
  content:
49406
50182
  application/problem+json:
49407
50183
  examples:
49408
- CAPABILITY_UNAVAILABLE:
49409
- summary: CAPABILITY_UNAVAILABLE
50184
+ VALIDATION_FAILED:
50185
+ summary: VALIDATION_FAILED
49410
50186
  value:
49411
- code: CAPABILITY_UNAVAILABLE
50187
+ code: VALIDATION_FAILED
49412
50188
  correlationId: 018f0000-0000-7000-8000-000000000001
49413
50189
  detail: See the operation contract.
49414
50190
  errors: []
49415
50191
  retryable: false
49416
50192
  schemaId: urn:gala:schema:problem:2.0.0
49417
50193
  schemaVersion: 2.0.0
49418
- status: 503
49419
- title: CAPABILITY_UNAVAILABLE
49420
- type: urn:gala:problem:capability-unavailable
49421
- DEPENDENCY_UNAVAILABLE:
49422
- summary: DEPENDENCY_UNAVAILABLE
50194
+ status: 400
50195
+ title: VALIDATION_FAILED
50196
+ type: urn:gala:problem:validation-failed
50197
+ schema:
50198
+ $ref: "#/components/schemas/Problem"
50199
+ description: VALIDATION_FAILED
50200
+ headers:
50201
+ Cache-Control:
50202
+ $ref: "#/components/headers/CacheControlNoStore"
50203
+ X-Correlation-Id:
50204
+ $ref: "#/components/headers/XCorrelationId"
50205
+ x-gala-problem-codes:
50206
+ - VALIDATION_FAILED
50207
+ "401":
50208
+ content:
50209
+ application/problem+json:
50210
+ examples:
50211
+ AUTHENTICATION_REQUIRED:
50212
+ summary: AUTHENTICATION_REQUIRED
49423
50213
  value:
49424
- code: DEPENDENCY_UNAVAILABLE
50214
+ code: AUTHENTICATION_REQUIRED
49425
50215
  correlationId: 018f0000-0000-7000-8000-000000000001
49426
50216
  detail: See the operation contract.
49427
50217
  errors: []
49428
- retryable: true
50218
+ retryable: false
49429
50219
  schemaId: urn:gala:schema:problem:2.0.0
49430
50220
  schemaVersion: 2.0.0
49431
- status: 503
49432
- title: DEPENDENCY_UNAVAILABLE
49433
- type: urn:gala:problem:dependency-unavailable
50221
+ status: 401
50222
+ title: AUTHENTICATION_REQUIRED
50223
+ type: urn:gala:problem:authentication-required
49434
50224
  schema:
49435
50225
  $ref: "#/components/schemas/Problem"
49436
- description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
50226
+ description: AUTHENTICATION_REQUIRED
49437
50227
  headers:
49438
50228
  Cache-Control:
49439
50229
  $ref: "#/components/headers/CacheControlNoStore"
49440
50230
  X-Correlation-Id:
49441
50231
  $ref: "#/components/headers/XCorrelationId"
49442
50232
  x-gala-problem-codes:
49443
- - CAPABILITY_UNAVAILABLE
49444
- - DEPENDENCY_UNAVAILABLE
50233
+ - AUTHENTICATION_REQUIRED
50234
+ "403":
50235
+ content:
50236
+ application/problem+json:
50237
+ examples:
50238
+ AUTHORIZATION_DENIED:
50239
+ summary: AUTHORIZATION_DENIED
50240
+ value:
50241
+ code: AUTHORIZATION_DENIED
50242
+ correlationId: 018f0000-0000-7000-8000-000000000001
50243
+ detail: See the operation contract.
50244
+ errors: []
50245
+ retryable: false
50246
+ schemaId: urn:gala:schema:problem:2.0.0
50247
+ schemaVersion: 2.0.0
50248
+ status: 403
50249
+ title: AUTHORIZATION_DENIED
50250
+ type: urn:gala:problem:authorization-denied
50251
+ schema:
50252
+ $ref: "#/components/schemas/Problem"
50253
+ description: AUTHORIZATION_DENIED
50254
+ headers:
50255
+ Cache-Control:
50256
+ $ref: "#/components/headers/CacheControlNoStore"
50257
+ X-Correlation-Id:
50258
+ $ref: "#/components/headers/XCorrelationId"
50259
+ x-gala-problem-codes:
50260
+ - AUTHORIZATION_DENIED
50261
+ "404":
50262
+ content:
50263
+ application/problem+json:
50264
+ examples:
50265
+ RESOURCE_NOT_FOUND:
50266
+ summary: RESOURCE_NOT_FOUND
50267
+ value:
50268
+ code: RESOURCE_NOT_FOUND
50269
+ correlationId: 018f0000-0000-7000-8000-000000000001
50270
+ detail: See the operation contract.
50271
+ errors: []
50272
+ retryable: false
50273
+ schemaId: urn:gala:schema:problem:2.0.0
50274
+ schemaVersion: 2.0.0
50275
+ status: 404
50276
+ title: RESOURCE_NOT_FOUND
50277
+ type: urn:gala:problem:resource-not-found
50278
+ schema:
50279
+ $ref: "#/components/schemas/Problem"
50280
+ description: RESOURCE_NOT_FOUND
50281
+ headers:
50282
+ Cache-Control:
50283
+ $ref: "#/components/headers/CacheControlNoStore"
50284
+ X-Correlation-Id:
50285
+ $ref: "#/components/headers/XCorrelationId"
50286
+ x-gala-problem-codes:
50287
+ - RESOURCE_NOT_FOUND
49445
50288
  security:
49446
50289
  - browserSession: []
49447
- summary: read this publication's listen settings at the main branch head
50290
+ summary: read the Interview profile
49448
50291
  tags:
49449
- - interaction-settings
50292
+ - interview
49450
50293
  x-gala-activation-gate: MVP
49451
50294
  x-gala-activation-guards:
49452
- - Active repository binding and configured GitHub App identity capability
49453
- x-gala-capability-key: publication.view
49454
- x-gala-concurrency: binding-epoch
50295
+ - NONE
50296
+ x-gala-capability-key: publication.source.write
50297
+ x-gala-concurrency: authorization-and-publication-epochs
49455
50298
  x-gala-conditional-capabilities: []
49456
50299
  x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
49457
50300
  x-gala-nullability: required-and-nullable-are-explicit
49458
- x-gala-purpose: read this publication's listen settings at the main branch head
50301
+ x-gala-purpose: read the Interview profile
49459
50302
  x-gala-reachable-problems:
49460
50303
  - AUTHENTICATION_REQUIRED
49461
50304
  - AUTHORIZATION_DENIED
49462
- - CAPABILITY_UNAVAILABLE
49463
- - DEPENDENCY_UNAVAILABLE
49464
- - RATE_LIMITED
49465
50305
  - RESOURCE_NOT_FOUND
49466
50306
  - VALIDATION_FAILED
49467
50307
  x-gala-replay-identity: safe-query
@@ -49470,8 +50310,2817 @@ paths:
49470
50310
  x-gala-success-category: query
49471
50311
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
49472
50312
  put:
49473
- description: The server writes the `listen` member of `gala/publication.json` as one repository change, the way `sharing-settings` writes the `sharing` member. Publishing the change uses the normal publish flow. `change` has the shape the theme-selection write returns. Turning `enabled` on while the plan does not include Listen is `409 PLAN_REQUIRED` pointed at `/enabled`. Saving it off, or unchanged, is always allowed.
49474
- operationId: putOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettings
50313
+ description: |
50314
+ Replaces the niche and reader the interviewer keeps for this site; the values live in the platform database, not in the repository, so no publish is involved. Empty strings clear them. Authorized by `publication.settings.manage`.
50315
+ operationId: putOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfile
50316
+ parameters:
50317
+ - $ref: "#/components/parameters/XCorrelationId"
50318
+ - example: 018f0000-0000-7000-8000-000000000001
50319
+ in: path
50320
+ name: organizationId
50321
+ required: true
50322
+ schema:
50323
+ format: uuid
50324
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50325
+ type: string
50326
+ - example: 018f0000-0000-7000-8000-000000000001
50327
+ in: path
50328
+ name: publicationId
50329
+ required: true
50330
+ schema:
50331
+ format: uuid
50332
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50333
+ type: string
50334
+ - $ref: "#/components/parameters/IdempotencyKey"
50335
+ - $ref: "#/components/parameters/XCsrfToken"
50336
+ requestBody:
50337
+ content:
50338
+ application/json:
50339
+ examples:
50340
+ nominal:
50341
+ summary: Nominal valid request
50342
+ value:
50343
+ niche: Product-led growth for small SaaS teams
50344
+ reader: Founders running their first onboarding
50345
+ schema:
50346
+ $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileRequest"
50347
+ required: true
50348
+ responses:
50349
+ "200":
50350
+ content:
50351
+ application/json:
50352
+ examples:
50353
+ nominal:
50354
+ summary: Nominal successful response
50355
+ value:
50356
+ niche: Product-led growth for small SaaS teams
50357
+ reader: Founders running their first onboarding
50358
+ schema:
50359
+ $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileResponse"
50360
+ description: save the Interview profile succeeded
50361
+ headers:
50362
+ Cache-Control:
50363
+ $ref: "#/components/headers/CacheControlNoStore"
50364
+ X-Correlation-Id:
50365
+ $ref: "#/components/headers/XCorrelationId"
50366
+ "400":
50367
+ content:
50368
+ application/problem+json:
50369
+ examples:
50370
+ REQUEST_FIELD_UNKNOWN:
50371
+ summary: REQUEST_FIELD_UNKNOWN
50372
+ value:
50373
+ code: REQUEST_FIELD_UNKNOWN
50374
+ correlationId: 018f0000-0000-7000-8000-000000000001
50375
+ detail: See the operation contract.
50376
+ errors: []
50377
+ retryable: false
50378
+ schemaId: urn:gala:schema:problem:2.0.0
50379
+ schemaVersion: 2.0.0
50380
+ status: 400
50381
+ title: REQUEST_FIELD_UNKNOWN
50382
+ type: urn:gala:problem:request-field-unknown
50383
+ VALIDATION_FAILED:
50384
+ summary: VALIDATION_FAILED
50385
+ value:
50386
+ code: VALIDATION_FAILED
50387
+ correlationId: 018f0000-0000-7000-8000-000000000001
50388
+ detail: See the operation contract.
50389
+ errors: []
50390
+ retryable: false
50391
+ schemaId: urn:gala:schema:problem:2.0.0
50392
+ schemaVersion: 2.0.0
50393
+ status: 400
50394
+ title: VALIDATION_FAILED
50395
+ type: urn:gala:problem:validation-failed
50396
+ schema:
50397
+ $ref: "#/components/schemas/Problem"
50398
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
50399
+ headers:
50400
+ Cache-Control:
50401
+ $ref: "#/components/headers/CacheControlNoStore"
50402
+ X-Correlation-Id:
50403
+ $ref: "#/components/headers/XCorrelationId"
50404
+ x-gala-problem-codes:
50405
+ - REQUEST_FIELD_UNKNOWN
50406
+ - VALIDATION_FAILED
50407
+ "401":
50408
+ content:
50409
+ application/problem+json:
50410
+ examples:
50411
+ AUTHENTICATION_REQUIRED:
50412
+ summary: AUTHENTICATION_REQUIRED
50413
+ value:
50414
+ code: AUTHENTICATION_REQUIRED
50415
+ correlationId: 018f0000-0000-7000-8000-000000000001
50416
+ detail: See the operation contract.
50417
+ errors: []
50418
+ retryable: false
50419
+ schemaId: urn:gala:schema:problem:2.0.0
50420
+ schemaVersion: 2.0.0
50421
+ status: 401
50422
+ title: AUTHENTICATION_REQUIRED
50423
+ type: urn:gala:problem:authentication-required
50424
+ schema:
50425
+ $ref: "#/components/schemas/Problem"
50426
+ description: AUTHENTICATION_REQUIRED
50427
+ headers:
50428
+ Cache-Control:
50429
+ $ref: "#/components/headers/CacheControlNoStore"
50430
+ X-Correlation-Id:
50431
+ $ref: "#/components/headers/XCorrelationId"
50432
+ x-gala-problem-codes:
50433
+ - AUTHENTICATION_REQUIRED
50434
+ "403":
50435
+ content:
50436
+ application/problem+json:
50437
+ examples:
50438
+ AUTHORIZATION_DENIED:
50439
+ summary: AUTHORIZATION_DENIED
50440
+ value:
50441
+ code: AUTHORIZATION_DENIED
50442
+ correlationId: 018f0000-0000-7000-8000-000000000001
50443
+ detail: See the operation contract.
50444
+ errors: []
50445
+ retryable: false
50446
+ schemaId: urn:gala:schema:problem:2.0.0
50447
+ schemaVersion: 2.0.0
50448
+ status: 403
50449
+ title: AUTHORIZATION_DENIED
50450
+ type: urn:gala:problem:authorization-denied
50451
+ schema:
50452
+ $ref: "#/components/schemas/Problem"
50453
+ description: AUTHORIZATION_DENIED
50454
+ headers:
50455
+ Cache-Control:
50456
+ $ref: "#/components/headers/CacheControlNoStore"
50457
+ X-Correlation-Id:
50458
+ $ref: "#/components/headers/XCorrelationId"
50459
+ x-gala-problem-codes:
50460
+ - AUTHORIZATION_DENIED
50461
+ "404":
50462
+ content:
50463
+ application/problem+json:
50464
+ examples:
50465
+ RESOURCE_NOT_FOUND:
50466
+ summary: RESOURCE_NOT_FOUND
50467
+ value:
50468
+ code: RESOURCE_NOT_FOUND
50469
+ correlationId: 018f0000-0000-7000-8000-000000000001
50470
+ detail: See the operation contract.
50471
+ errors: []
50472
+ retryable: false
50473
+ schemaId: urn:gala:schema:problem:2.0.0
50474
+ schemaVersion: 2.0.0
50475
+ status: 404
50476
+ title: RESOURCE_NOT_FOUND
50477
+ type: urn:gala:problem:resource-not-found
50478
+ schema:
50479
+ $ref: "#/components/schemas/Problem"
50480
+ description: RESOURCE_NOT_FOUND
50481
+ headers:
50482
+ Cache-Control:
50483
+ $ref: "#/components/headers/CacheControlNoStore"
50484
+ X-Correlation-Id:
50485
+ $ref: "#/components/headers/XCorrelationId"
50486
+ x-gala-problem-codes:
50487
+ - RESOURCE_NOT_FOUND
50488
+ "409":
50489
+ content:
50490
+ application/problem+json:
50491
+ examples:
50492
+ COMMAND_REPLAY_CONFLICT:
50493
+ summary: COMMAND_REPLAY_CONFLICT
50494
+ value:
50495
+ code: COMMAND_REPLAY_CONFLICT
50496
+ correlationId: 018f0000-0000-7000-8000-000000000001
50497
+ detail: See the operation contract.
50498
+ errors: []
50499
+ retryable: false
50500
+ schemaId: urn:gala:schema:problem:2.0.0
50501
+ schemaVersion: 2.0.0
50502
+ status: 409
50503
+ title: COMMAND_REPLAY_CONFLICT
50504
+ type: urn:gala:problem:command-replay-conflict
50505
+ TRANSFER_PENDING:
50506
+ summary: TRANSFER_PENDING
50507
+ value:
50508
+ code: TRANSFER_PENDING
50509
+ correlationId: 018f0000-0000-7000-8000-000000000001
50510
+ detail: See the operation contract.
50511
+ errors: []
50512
+ retryable: false
50513
+ schemaId: urn:gala:schema:problem:2.0.0
50514
+ schemaVersion: 2.0.0
50515
+ status: 409
50516
+ title: TRANSFER_PENDING
50517
+ type: urn:gala:problem:transfer-pending
50518
+ schema:
50519
+ $ref: "#/components/schemas/Problem"
50520
+ description: COMMAND_REPLAY_CONFLICT, TRANSFER_PENDING
50521
+ headers:
50522
+ Cache-Control:
50523
+ $ref: "#/components/headers/CacheControlNoStore"
50524
+ X-Correlation-Id:
50525
+ $ref: "#/components/headers/XCorrelationId"
50526
+ x-gala-problem-codes:
50527
+ - COMMAND_REPLAY_CONFLICT
50528
+ - TRANSFER_PENDING
50529
+ security:
50530
+ - browserSession: []
50531
+ summary: save the Interview profile
50532
+ tags:
50533
+ - interview
50534
+ x-gala-activation-gate: MVP
50535
+ x-gala-activation-guards:
50536
+ - NONE
50537
+ x-gala-capability-key: publication.settings.manage
50538
+ x-gala-concurrency: interview-version
50539
+ x-gala-conditional-capabilities: []
50540
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
50541
+ x-gala-nullability: required-and-nullable-are-explicit
50542
+ x-gala-purpose: save the Interview profile
50543
+ x-gala-reachable-problems:
50544
+ - AUTHENTICATION_REQUIRED
50545
+ - AUTHORIZATION_DENIED
50546
+ - COMMAND_REPLAY_CONFLICT
50547
+ - REQUEST_FIELD_UNKNOWN
50548
+ - RESOURCE_NOT_FOUND
50549
+ - TRANSFER_PENDING
50550
+ - VALIDATION_FAILED
50551
+ x-gala-replay-identity: idempotency-key
50552
+ x-gala-state-guards:
50553
+ - NONE
50554
+ x-gala-success-category: protocol
50555
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
50556
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews:
50557
+ get:
50558
+ description: |
50559
+ This publication's interviews, newest first, one cursor page at a time. Items carry `turnCount` and `hasDraft` instead of the conversation, draft and review; read one interview for those.
50560
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdInterviews
50561
+ parameters:
50562
+ - $ref: "#/components/parameters/XCorrelationId"
50563
+ - example: 018f0000-0000-7000-8000-000000000001
50564
+ in: path
50565
+ name: organizationId
50566
+ required: true
50567
+ schema:
50568
+ format: uuid
50569
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50570
+ type: string
50571
+ - example: 018f0000-0000-7000-8000-000000000001
50572
+ in: path
50573
+ name: publicationId
50574
+ required: true
50575
+ schema:
50576
+ format: uuid
50577
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50578
+ type: string
50579
+ - $ref: "#/components/parameters/Cursor"
50580
+ - $ref: "#/components/parameters/Limit"
50581
+ responses:
50582
+ "200":
50583
+ content:
50584
+ application/json:
50585
+ examples:
50586
+ nominal:
50587
+ summary: Nominal successful response
50588
+ value:
50589
+ hasMore: false
50590
+ items:
50591
+ - capture:
50592
+ kind: NOTE
50593
+ text: We cut our onboarding from nine steps to four and signups doubled.
50594
+ createdAt: "2026-11-04T12:00:00.000Z"
50595
+ expiresAt: "2026-11-11T12:00:00.000Z"
50596
+ hasDraft: false
50597
+ interviewId: 018f0000-0000-7000-8000-000000000001
50598
+ organizationId: 018f0000-0000-7000-8000-000000000003
50599
+ progress:
50600
+ beliefDone: false
50601
+ canFinish: false
50602
+ details: 0
50603
+ detailsTarget: 5
50604
+ phase: OWNED
50605
+ skepticRounds: 0
50606
+ publicationId: 018f0000-0000-7000-8000-000000000002
50607
+ state: CAPTURED
50608
+ turnCount: 0
50609
+ updatedAt: "2026-11-04T12:00:00.000Z"
50610
+ schema:
50611
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsResponse"
50612
+ description: list Interviews succeeded
50613
+ headers:
50614
+ Cache-Control:
50615
+ $ref: "#/components/headers/CacheControlNoStore"
50616
+ X-Correlation-Id:
50617
+ $ref: "#/components/headers/XCorrelationId"
50618
+ "400":
50619
+ content:
50620
+ application/problem+json:
50621
+ examples:
50622
+ VALIDATION_FAILED:
50623
+ summary: VALIDATION_FAILED
50624
+ value:
50625
+ code: VALIDATION_FAILED
50626
+ correlationId: 018f0000-0000-7000-8000-000000000001
50627
+ detail: See the operation contract.
50628
+ errors: []
50629
+ retryable: false
50630
+ schemaId: urn:gala:schema:problem:2.0.0
50631
+ schemaVersion: 2.0.0
50632
+ status: 400
50633
+ title: VALIDATION_FAILED
50634
+ type: urn:gala:problem:validation-failed
50635
+ schema:
50636
+ $ref: "#/components/schemas/Problem"
50637
+ description: VALIDATION_FAILED
50638
+ headers:
50639
+ Cache-Control:
50640
+ $ref: "#/components/headers/CacheControlNoStore"
50641
+ X-Correlation-Id:
50642
+ $ref: "#/components/headers/XCorrelationId"
50643
+ x-gala-problem-codes:
50644
+ - VALIDATION_FAILED
50645
+ "401":
50646
+ content:
50647
+ application/problem+json:
50648
+ examples:
50649
+ AUTHENTICATION_REQUIRED:
50650
+ summary: AUTHENTICATION_REQUIRED
50651
+ value:
50652
+ code: AUTHENTICATION_REQUIRED
50653
+ correlationId: 018f0000-0000-7000-8000-000000000001
50654
+ detail: See the operation contract.
50655
+ errors: []
50656
+ retryable: false
50657
+ schemaId: urn:gala:schema:problem:2.0.0
50658
+ schemaVersion: 2.0.0
50659
+ status: 401
50660
+ title: AUTHENTICATION_REQUIRED
50661
+ type: urn:gala:problem:authentication-required
50662
+ schema:
50663
+ $ref: "#/components/schemas/Problem"
50664
+ description: AUTHENTICATION_REQUIRED
50665
+ headers:
50666
+ Cache-Control:
50667
+ $ref: "#/components/headers/CacheControlNoStore"
50668
+ X-Correlation-Id:
50669
+ $ref: "#/components/headers/XCorrelationId"
50670
+ x-gala-problem-codes:
50671
+ - AUTHENTICATION_REQUIRED
50672
+ "403":
50673
+ content:
50674
+ application/problem+json:
50675
+ examples:
50676
+ AUTHORIZATION_DENIED:
50677
+ summary: AUTHORIZATION_DENIED
50678
+ value:
50679
+ code: AUTHORIZATION_DENIED
50680
+ correlationId: 018f0000-0000-7000-8000-000000000001
50681
+ detail: See the operation contract.
50682
+ errors: []
50683
+ retryable: false
50684
+ schemaId: urn:gala:schema:problem:2.0.0
50685
+ schemaVersion: 2.0.0
50686
+ status: 403
50687
+ title: AUTHORIZATION_DENIED
50688
+ type: urn:gala:problem:authorization-denied
50689
+ schema:
50690
+ $ref: "#/components/schemas/Problem"
50691
+ description: AUTHORIZATION_DENIED
50692
+ headers:
50693
+ Cache-Control:
50694
+ $ref: "#/components/headers/CacheControlNoStore"
50695
+ X-Correlation-Id:
50696
+ $ref: "#/components/headers/XCorrelationId"
50697
+ x-gala-problem-codes:
50698
+ - AUTHORIZATION_DENIED
50699
+ "404":
50700
+ content:
50701
+ application/problem+json:
50702
+ examples:
50703
+ RESOURCE_NOT_FOUND:
50704
+ summary: RESOURCE_NOT_FOUND
50705
+ value:
50706
+ code: RESOURCE_NOT_FOUND
50707
+ correlationId: 018f0000-0000-7000-8000-000000000001
50708
+ detail: See the operation contract.
50709
+ errors: []
50710
+ retryable: false
50711
+ schemaId: urn:gala:schema:problem:2.0.0
50712
+ schemaVersion: 2.0.0
50713
+ status: 404
50714
+ title: RESOURCE_NOT_FOUND
50715
+ type: urn:gala:problem:resource-not-found
50716
+ schema:
50717
+ $ref: "#/components/schemas/Problem"
50718
+ description: RESOURCE_NOT_FOUND
50719
+ headers:
50720
+ Cache-Control:
50721
+ $ref: "#/components/headers/CacheControlNoStore"
50722
+ X-Correlation-Id:
50723
+ $ref: "#/components/headers/XCorrelationId"
50724
+ x-gala-problem-codes:
50725
+ - RESOURCE_NOT_FOUND
50726
+ security:
50727
+ - browserSession: []
50728
+ summary: list Interviews
50729
+ tags:
50730
+ - interview
50731
+ x-gala-activation-gate: MVP
50732
+ x-gala-activation-guards:
50733
+ - NONE
50734
+ x-gala-capability-key: publication.source.write
50735
+ x-gala-concurrency: authorization-and-publication-epochs
50736
+ x-gala-conditional-capabilities: []
50737
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
50738
+ x-gala-nullability: required-and-nullable-are-explicit
50739
+ x-gala-purpose: list Interviews
50740
+ x-gala-reachable-problems:
50741
+ - AUTHENTICATION_REQUIRED
50742
+ - AUTHORIZATION_DENIED
50743
+ - RESOURCE_NOT_FOUND
50744
+ - VALIDATION_FAILED
50745
+ x-gala-replay-identity: safe-query
50746
+ x-gala-state-guards:
50747
+ - NONE
50748
+ x-gala-success-category: query
50749
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
50750
+ post:
50751
+ description: |
50752
+ Saves the material (a note, a voice transcript or a link with its text) as an interview in `CAPTURED`. Nothing is asked and no quota unit is used yet; `POST .../interviews/{interviewId}:start` begins the conversation. `409 PLAN_REQUIRED` when the plan is below `BUSINESS`; `503 CAPABILITY_UNAVAILABLE` when Interview is off. `201`.
50753
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviews
50754
+ parameters:
50755
+ - $ref: "#/components/parameters/XCorrelationId"
50756
+ - example: 018f0000-0000-7000-8000-000000000001
50757
+ in: path
50758
+ name: organizationId
50759
+ required: true
50760
+ schema:
50761
+ format: uuid
50762
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50763
+ type: string
50764
+ - example: 018f0000-0000-7000-8000-000000000001
50765
+ in: path
50766
+ name: publicationId
50767
+ required: true
50768
+ schema:
50769
+ format: uuid
50770
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50771
+ type: string
50772
+ - $ref: "#/components/parameters/IdempotencyKey"
50773
+ - $ref: "#/components/parameters/XCsrfToken"
50774
+ requestBody:
50775
+ content:
50776
+ application/json:
50777
+ examples:
50778
+ nominal:
50779
+ summary: Nominal valid request
50780
+ value:
50781
+ capture:
50782
+ kind: NOTE
50783
+ text: We cut our onboarding from nine steps to four and signups doubled.
50784
+ schema:
50785
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsRequest"
50786
+ required: true
50787
+ responses:
50788
+ "201":
50789
+ content:
50790
+ application/json:
50791
+ examples:
50792
+ nominal:
50793
+ summary: Nominal successful response
50794
+ value:
50795
+ capture:
50796
+ kind: NOTE
50797
+ text: We cut our onboarding from nine steps to four and signups doubled.
50798
+ createdAt: "2026-11-04T12:00:00.000Z"
50799
+ expiresAt: "2026-11-11T12:00:00.000Z"
50800
+ interviewId: 018f0000-0000-7000-8000-000000000001
50801
+ organizationId: 018f0000-0000-7000-8000-000000000003
50802
+ progress:
50803
+ beliefDone: false
50804
+ canFinish: false
50805
+ details: 0
50806
+ detailsTarget: 5
50807
+ phase: OWNED
50808
+ skepticRounds: 0
50809
+ publicationId: 018f0000-0000-7000-8000-000000000002
50810
+ state: CAPTURED
50811
+ turns: []
50812
+ updatedAt: "2026-11-04T12:00:00.000Z"
50813
+ schema:
50814
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsResponse"
50815
+ description: capture material for an Interview succeeded
50816
+ headers:
50817
+ Cache-Control:
50818
+ $ref: "#/components/headers/CacheControlNoStore"
50819
+ Location:
50820
+ $ref: "#/components/headers/Location"
50821
+ X-Correlation-Id:
50822
+ $ref: "#/components/headers/XCorrelationId"
50823
+ "400":
50824
+ content:
50825
+ application/problem+json:
50826
+ examples:
50827
+ REQUEST_FIELD_UNKNOWN:
50828
+ summary: REQUEST_FIELD_UNKNOWN
50829
+ value:
50830
+ code: REQUEST_FIELD_UNKNOWN
50831
+ correlationId: 018f0000-0000-7000-8000-000000000001
50832
+ detail: See the operation contract.
50833
+ errors: []
50834
+ retryable: false
50835
+ schemaId: urn:gala:schema:problem:2.0.0
50836
+ schemaVersion: 2.0.0
50837
+ status: 400
50838
+ title: REQUEST_FIELD_UNKNOWN
50839
+ type: urn:gala:problem:request-field-unknown
50840
+ VALIDATION_FAILED:
50841
+ summary: VALIDATION_FAILED
50842
+ value:
50843
+ code: VALIDATION_FAILED
50844
+ correlationId: 018f0000-0000-7000-8000-000000000001
50845
+ detail: See the operation contract.
50846
+ errors: []
50847
+ retryable: false
50848
+ schemaId: urn:gala:schema:problem:2.0.0
50849
+ schemaVersion: 2.0.0
50850
+ status: 400
50851
+ title: VALIDATION_FAILED
50852
+ type: urn:gala:problem:validation-failed
50853
+ schema:
50854
+ $ref: "#/components/schemas/Problem"
50855
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
50856
+ headers:
50857
+ Cache-Control:
50858
+ $ref: "#/components/headers/CacheControlNoStore"
50859
+ X-Correlation-Id:
50860
+ $ref: "#/components/headers/XCorrelationId"
50861
+ x-gala-problem-codes:
50862
+ - REQUEST_FIELD_UNKNOWN
50863
+ - VALIDATION_FAILED
50864
+ "401":
50865
+ content:
50866
+ application/problem+json:
50867
+ examples:
50868
+ AUTHENTICATION_REQUIRED:
50869
+ summary: AUTHENTICATION_REQUIRED
50870
+ value:
50871
+ code: AUTHENTICATION_REQUIRED
50872
+ correlationId: 018f0000-0000-7000-8000-000000000001
50873
+ detail: See the operation contract.
50874
+ errors: []
50875
+ retryable: false
50876
+ schemaId: urn:gala:schema:problem:2.0.0
50877
+ schemaVersion: 2.0.0
50878
+ status: 401
50879
+ title: AUTHENTICATION_REQUIRED
50880
+ type: urn:gala:problem:authentication-required
50881
+ schema:
50882
+ $ref: "#/components/schemas/Problem"
50883
+ description: AUTHENTICATION_REQUIRED
50884
+ headers:
50885
+ Cache-Control:
50886
+ $ref: "#/components/headers/CacheControlNoStore"
50887
+ X-Correlation-Id:
50888
+ $ref: "#/components/headers/XCorrelationId"
50889
+ x-gala-problem-codes:
50890
+ - AUTHENTICATION_REQUIRED
50891
+ "403":
50892
+ content:
50893
+ application/problem+json:
50894
+ examples:
50895
+ AUTHORIZATION_DENIED:
50896
+ summary: AUTHORIZATION_DENIED
50897
+ value:
50898
+ code: AUTHORIZATION_DENIED
50899
+ correlationId: 018f0000-0000-7000-8000-000000000001
50900
+ detail: See the operation contract.
50901
+ errors: []
50902
+ retryable: false
50903
+ schemaId: urn:gala:schema:problem:2.0.0
50904
+ schemaVersion: 2.0.0
50905
+ status: 403
50906
+ title: AUTHORIZATION_DENIED
50907
+ type: urn:gala:problem:authorization-denied
50908
+ schema:
50909
+ $ref: "#/components/schemas/Problem"
50910
+ description: AUTHORIZATION_DENIED
50911
+ headers:
50912
+ Cache-Control:
50913
+ $ref: "#/components/headers/CacheControlNoStore"
50914
+ X-Correlation-Id:
50915
+ $ref: "#/components/headers/XCorrelationId"
50916
+ x-gala-problem-codes:
50917
+ - AUTHORIZATION_DENIED
50918
+ "404":
50919
+ content:
50920
+ application/problem+json:
50921
+ examples:
50922
+ RESOURCE_NOT_FOUND:
50923
+ summary: RESOURCE_NOT_FOUND
50924
+ value:
50925
+ code: RESOURCE_NOT_FOUND
50926
+ correlationId: 018f0000-0000-7000-8000-000000000001
50927
+ detail: See the operation contract.
50928
+ errors: []
50929
+ retryable: false
50930
+ schemaId: urn:gala:schema:problem:2.0.0
50931
+ schemaVersion: 2.0.0
50932
+ status: 404
50933
+ title: RESOURCE_NOT_FOUND
50934
+ type: urn:gala:problem:resource-not-found
50935
+ schema:
50936
+ $ref: "#/components/schemas/Problem"
50937
+ description: RESOURCE_NOT_FOUND
50938
+ headers:
50939
+ Cache-Control:
50940
+ $ref: "#/components/headers/CacheControlNoStore"
50941
+ X-Correlation-Id:
50942
+ $ref: "#/components/headers/XCorrelationId"
50943
+ x-gala-problem-codes:
50944
+ - RESOURCE_NOT_FOUND
50945
+ "409":
50946
+ content:
50947
+ application/problem+json:
50948
+ examples:
50949
+ COMMAND_REPLAY_CONFLICT:
50950
+ summary: COMMAND_REPLAY_CONFLICT
50951
+ value:
50952
+ code: COMMAND_REPLAY_CONFLICT
50953
+ correlationId: 018f0000-0000-7000-8000-000000000001
50954
+ detail: See the operation contract.
50955
+ errors: []
50956
+ retryable: false
50957
+ schemaId: urn:gala:schema:problem:2.0.0
50958
+ schemaVersion: 2.0.0
50959
+ status: 409
50960
+ title: COMMAND_REPLAY_CONFLICT
50961
+ type: urn:gala:problem:command-replay-conflict
50962
+ PLAN_REQUIRED:
50963
+ summary: PLAN_REQUIRED
50964
+ value:
50965
+ code: PLAN_REQUIRED
50966
+ correlationId: 018f0000-0000-7000-8000-000000000001
50967
+ detail: See the operation contract.
50968
+ errors: []
50969
+ retryable: false
50970
+ schemaId: urn:gala:schema:problem:2.0.0
50971
+ schemaVersion: 2.0.0
50972
+ status: 409
50973
+ title: PLAN_REQUIRED
50974
+ type: urn:gala:problem:plan-required
50975
+ TRANSFER_PENDING:
50976
+ summary: TRANSFER_PENDING
50977
+ value:
50978
+ code: TRANSFER_PENDING
50979
+ correlationId: 018f0000-0000-7000-8000-000000000001
50980
+ detail: See the operation contract.
50981
+ errors: []
50982
+ retryable: false
50983
+ schemaId: urn:gala:schema:problem:2.0.0
50984
+ schemaVersion: 2.0.0
50985
+ status: 409
50986
+ title: TRANSFER_PENDING
50987
+ type: urn:gala:problem:transfer-pending
50988
+ schema:
50989
+ $ref: "#/components/schemas/Problem"
50990
+ description: COMMAND_REPLAY_CONFLICT, PLAN_REQUIRED, TRANSFER_PENDING
50991
+ headers:
50992
+ Cache-Control:
50993
+ $ref: "#/components/headers/CacheControlNoStore"
50994
+ X-Correlation-Id:
50995
+ $ref: "#/components/headers/XCorrelationId"
50996
+ x-gala-problem-codes:
50997
+ - COMMAND_REPLAY_CONFLICT
50998
+ - PLAN_REQUIRED
50999
+ - TRANSFER_PENDING
51000
+ "503":
51001
+ content:
51002
+ application/problem+json:
51003
+ examples:
51004
+ CAPABILITY_UNAVAILABLE:
51005
+ summary: CAPABILITY_UNAVAILABLE
51006
+ value:
51007
+ code: CAPABILITY_UNAVAILABLE
51008
+ correlationId: 018f0000-0000-7000-8000-000000000001
51009
+ detail: See the operation contract.
51010
+ errors: []
51011
+ retryable: false
51012
+ schemaId: urn:gala:schema:problem:2.0.0
51013
+ schemaVersion: 2.0.0
51014
+ status: 503
51015
+ title: CAPABILITY_UNAVAILABLE
51016
+ type: urn:gala:problem:capability-unavailable
51017
+ schema:
51018
+ $ref: "#/components/schemas/Problem"
51019
+ description: CAPABILITY_UNAVAILABLE
51020
+ headers:
51021
+ Cache-Control:
51022
+ $ref: "#/components/headers/CacheControlNoStore"
51023
+ X-Correlation-Id:
51024
+ $ref: "#/components/headers/XCorrelationId"
51025
+ x-gala-problem-codes:
51026
+ - CAPABILITY_UNAVAILABLE
51027
+ security:
51028
+ - browserSession: []
51029
+ summary: capture material for an Interview
51030
+ tags:
51031
+ - interview
51032
+ x-gala-activation-gate: MVP
51033
+ x-gala-activation-guards:
51034
+ - Interview enabled for this deployment and publication
51035
+ x-gala-capability-key: publication.source.write
51036
+ x-gala-concurrency: interview-version
51037
+ x-gala-conditional-capabilities: []
51038
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
51039
+ x-gala-nullability: required-and-nullable-are-explicit
51040
+ x-gala-purpose: capture material for an Interview
51041
+ x-gala-reachable-problems:
51042
+ - AUTHENTICATION_REQUIRED
51043
+ - AUTHORIZATION_DENIED
51044
+ - CAPABILITY_UNAVAILABLE
51045
+ - COMMAND_REPLAY_CONFLICT
51046
+ - PLAN_REQUIRED
51047
+ - REQUEST_FIELD_UNKNOWN
51048
+ - RESOURCE_NOT_FOUND
51049
+ - TRANSFER_PENDING
51050
+ - VALIDATION_FAILED
51051
+ x-gala-replay-identity: idempotency-key
51052
+ x-gala-state-guards:
51053
+ - NONE
51054
+ x-gala-success-category: create
51055
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
51056
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:
51057
+ get:
51058
+ description: |
51059
+ One interview with its conversation (`turns`), and from `DRAFT_READY` its `draft` and `review`. Poll it while `state` is `WRITING`.
51060
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewId
51061
+ parameters:
51062
+ - $ref: "#/components/parameters/XCorrelationId"
51063
+ - example: 018f0000-0000-7000-8000-000000000001
51064
+ in: path
51065
+ name: organizationId
51066
+ required: true
51067
+ schema:
51068
+ format: uuid
51069
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51070
+ type: string
51071
+ - example: 018f0000-0000-7000-8000-000000000001
51072
+ in: path
51073
+ name: publicationId
51074
+ required: true
51075
+ schema:
51076
+ format: uuid
51077
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51078
+ type: string
51079
+ - example: 018f0000-0000-7000-8000-000000000001
51080
+ in: path
51081
+ name: interviewId
51082
+ required: true
51083
+ schema:
51084
+ format: uuid
51085
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51086
+ type: string
51087
+ responses:
51088
+ "200":
51089
+ content:
51090
+ application/json:
51091
+ examples:
51092
+ nominal:
51093
+ summary: Nominal successful response
51094
+ value:
51095
+ capture:
51096
+ kind: NOTE
51097
+ text: We cut our onboarding from nine steps to four and signups doubled.
51098
+ createdAt: "2026-11-04T12:00:00.000Z"
51099
+ draft:
51100
+ body: |-
51101
+ We cut onboarding from nine steps to four.
51102
+
51103
+ The first step to go was the account type.
51104
+ description: How cutting onboarding steps doubled signups.
51105
+ language: en
51106
+ title: Nine steps to four
51107
+ tldr: Fewer steps, twice the signups.
51108
+ expiresAt: "2026-11-11T12:00:00.000Z"
51109
+ finishedAt: "2026-11-04T12:00:00.000Z"
51110
+ interviewId: 018f0000-0000-7000-8000-000000000001
51111
+ organizationId: 018f0000-0000-7000-8000-000000000003
51112
+ progress:
51113
+ beliefDone: false
51114
+ canFinish: true
51115
+ details: 3
51116
+ detailsTarget: 5
51117
+ phase: DONE
51118
+ skepticRounds: 0
51119
+ publicationId: 018f0000-0000-7000-8000-000000000002
51120
+ review:
51121
+ claims:
51122
+ - source:
51123
+ note: From the author's note.
51124
+ status: VERIFIED
51125
+ text: Signups doubled.
51126
+ clear:
51127
+ flagged: []
51128
+ threeSentences:
51129
+ - Onboarding was nine steps.
51130
+ - You cut it to four.
51131
+ - Signups doubled.
51132
+ pastPostsRead:
51133
+ - content/my-post.md
51134
+ sources: []
51135
+ startedAt: "2026-11-04T12:00:00.000Z"
51136
+ state: DRAFT_READY
51137
+ turns:
51138
+ - at: "2026-11-04T12:00:00.000Z"
51139
+ kind: QUESTION
51140
+ role: INTERVIEWER
51141
+ seq: 1
51142
+ text: What did you cut first, and what did you expect to happen?
51143
+ - at: "2026-11-04T12:00:00.000Z"
51144
+ kind: ANSWER
51145
+ role: AUTHOR
51146
+ seq: 2
51147
+ text: The account-type step. I expected no one to notice.
51148
+ updatedAt: "2026-11-04T12:00:00.000Z"
51149
+ schema:
51150
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdResponse"
51151
+ description: read an Interview succeeded
51152
+ headers:
51153
+ Cache-Control:
51154
+ $ref: "#/components/headers/CacheControlNoStore"
51155
+ X-Correlation-Id:
51156
+ $ref: "#/components/headers/XCorrelationId"
51157
+ "400":
51158
+ content:
51159
+ application/problem+json:
51160
+ examples:
51161
+ VALIDATION_FAILED:
51162
+ summary: VALIDATION_FAILED
51163
+ value:
51164
+ code: VALIDATION_FAILED
51165
+ correlationId: 018f0000-0000-7000-8000-000000000001
51166
+ detail: See the operation contract.
51167
+ errors: []
51168
+ retryable: false
51169
+ schemaId: urn:gala:schema:problem:2.0.0
51170
+ schemaVersion: 2.0.0
51171
+ status: 400
51172
+ title: VALIDATION_FAILED
51173
+ type: urn:gala:problem:validation-failed
51174
+ schema:
51175
+ $ref: "#/components/schemas/Problem"
51176
+ description: VALIDATION_FAILED
51177
+ headers:
51178
+ Cache-Control:
51179
+ $ref: "#/components/headers/CacheControlNoStore"
51180
+ X-Correlation-Id:
51181
+ $ref: "#/components/headers/XCorrelationId"
51182
+ x-gala-problem-codes:
51183
+ - VALIDATION_FAILED
51184
+ "401":
51185
+ content:
51186
+ application/problem+json:
51187
+ examples:
51188
+ AUTHENTICATION_REQUIRED:
51189
+ summary: AUTHENTICATION_REQUIRED
51190
+ value:
51191
+ code: AUTHENTICATION_REQUIRED
51192
+ correlationId: 018f0000-0000-7000-8000-000000000001
51193
+ detail: See the operation contract.
51194
+ errors: []
51195
+ retryable: false
51196
+ schemaId: urn:gala:schema:problem:2.0.0
51197
+ schemaVersion: 2.0.0
51198
+ status: 401
51199
+ title: AUTHENTICATION_REQUIRED
51200
+ type: urn:gala:problem:authentication-required
51201
+ schema:
51202
+ $ref: "#/components/schemas/Problem"
51203
+ description: AUTHENTICATION_REQUIRED
51204
+ headers:
51205
+ Cache-Control:
51206
+ $ref: "#/components/headers/CacheControlNoStore"
51207
+ X-Correlation-Id:
51208
+ $ref: "#/components/headers/XCorrelationId"
51209
+ x-gala-problem-codes:
51210
+ - AUTHENTICATION_REQUIRED
51211
+ "403":
51212
+ content:
51213
+ application/problem+json:
51214
+ examples:
51215
+ AUTHORIZATION_DENIED:
51216
+ summary: AUTHORIZATION_DENIED
51217
+ value:
51218
+ code: AUTHORIZATION_DENIED
51219
+ correlationId: 018f0000-0000-7000-8000-000000000001
51220
+ detail: See the operation contract.
51221
+ errors: []
51222
+ retryable: false
51223
+ schemaId: urn:gala:schema:problem:2.0.0
51224
+ schemaVersion: 2.0.0
51225
+ status: 403
51226
+ title: AUTHORIZATION_DENIED
51227
+ type: urn:gala:problem:authorization-denied
51228
+ schema:
51229
+ $ref: "#/components/schemas/Problem"
51230
+ description: AUTHORIZATION_DENIED
51231
+ headers:
51232
+ Cache-Control:
51233
+ $ref: "#/components/headers/CacheControlNoStore"
51234
+ X-Correlation-Id:
51235
+ $ref: "#/components/headers/XCorrelationId"
51236
+ x-gala-problem-codes:
51237
+ - AUTHORIZATION_DENIED
51238
+ "404":
51239
+ content:
51240
+ application/problem+json:
51241
+ examples:
51242
+ RESOURCE_NOT_FOUND:
51243
+ summary: RESOURCE_NOT_FOUND
51244
+ value:
51245
+ code: RESOURCE_NOT_FOUND
51246
+ correlationId: 018f0000-0000-7000-8000-000000000001
51247
+ detail: See the operation contract.
51248
+ errors: []
51249
+ retryable: false
51250
+ schemaId: urn:gala:schema:problem:2.0.0
51251
+ schemaVersion: 2.0.0
51252
+ status: 404
51253
+ title: RESOURCE_NOT_FOUND
51254
+ type: urn:gala:problem:resource-not-found
51255
+ schema:
51256
+ $ref: "#/components/schemas/Problem"
51257
+ description: RESOURCE_NOT_FOUND
51258
+ headers:
51259
+ Cache-Control:
51260
+ $ref: "#/components/headers/CacheControlNoStore"
51261
+ X-Correlation-Id:
51262
+ $ref: "#/components/headers/XCorrelationId"
51263
+ x-gala-problem-codes:
51264
+ - RESOURCE_NOT_FOUND
51265
+ security:
51266
+ - browserSession: []
51267
+ summary: read an Interview
51268
+ tags:
51269
+ - interview
51270
+ x-gala-activation-gate: MVP
51271
+ x-gala-activation-guards:
51272
+ - NONE
51273
+ x-gala-capability-key: publication.source.write
51274
+ x-gala-concurrency: interview-version
51275
+ x-gala-conditional-capabilities: []
51276
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
51277
+ x-gala-nullability: required-and-nullable-are-explicit
51278
+ x-gala-purpose: read an Interview
51279
+ x-gala-reachable-problems:
51280
+ - AUTHENTICATION_REQUIRED
51281
+ - AUTHORIZATION_DENIED
51282
+ - RESOURCE_NOT_FOUND
51283
+ - VALIDATION_FAILED
51284
+ x-gala-replay-identity: safe-query
51285
+ x-gala-state-guards:
51286
+ - NONE
51287
+ x-gala-success-category: query
51288
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
51289
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}/turns:
51290
+ post:
51291
+ description: |
51292
+ Adds the author's answer and the interviewer's reply (a question, a recap, a challenge or the closing) to the conversation and returns the interview. Only while `INTERVIEWING`. `503 PROVIDER_UNAVAILABLE` when the reply could not be produced: nothing is stored, so the same answer can be sent again.
51293
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurns
51294
+ parameters:
51295
+ - $ref: "#/components/parameters/XCorrelationId"
51296
+ - example: 018f0000-0000-7000-8000-000000000001
51297
+ in: path
51298
+ name: organizationId
51299
+ required: true
51300
+ schema:
51301
+ format: uuid
51302
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51303
+ type: string
51304
+ - example: 018f0000-0000-7000-8000-000000000001
51305
+ in: path
51306
+ name: publicationId
51307
+ required: true
51308
+ schema:
51309
+ format: uuid
51310
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51311
+ type: string
51312
+ - example: 018f0000-0000-7000-8000-000000000001
51313
+ in: path
51314
+ name: interviewId
51315
+ required: true
51316
+ schema:
51317
+ format: uuid
51318
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51319
+ type: string
51320
+ - $ref: "#/components/parameters/IdempotencyKey"
51321
+ - $ref: "#/components/parameters/XCsrfToken"
51322
+ requestBody:
51323
+ content:
51324
+ application/json:
51325
+ examples:
51326
+ nominal:
51327
+ summary: Nominal valid request
51328
+ value:
51329
+ text: The account-type step. I expected no one to notice.
51330
+ schema:
51331
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurnsRequest"
51332
+ required: true
51333
+ responses:
51334
+ "200":
51335
+ content:
51336
+ application/json:
51337
+ examples:
51338
+ nominal:
51339
+ summary: Nominal successful response
51340
+ value:
51341
+ capture:
51342
+ kind: NOTE
51343
+ text: We cut our onboarding from nine steps to four and signups doubled.
51344
+ createdAt: "2026-11-04T12:00:00.000Z"
51345
+ expiresAt: "2026-11-11T12:00:00.000Z"
51346
+ interviewId: 018f0000-0000-7000-8000-000000000001
51347
+ organizationId: 018f0000-0000-7000-8000-000000000003
51348
+ progress:
51349
+ beliefDone: false
51350
+ canFinish: false
51351
+ details: 1
51352
+ detailsTarget: 5
51353
+ phase: OWNED
51354
+ skepticRounds: 0
51355
+ publicationId: 018f0000-0000-7000-8000-000000000002
51356
+ startedAt: "2026-11-04T12:00:00.000Z"
51357
+ state: INTERVIEWING
51358
+ turns:
51359
+ - at: "2026-11-04T12:00:00.000Z"
51360
+ kind: QUESTION
51361
+ role: INTERVIEWER
51362
+ seq: 1
51363
+ text: What did you cut first, and what did you expect to happen?
51364
+ - at: "2026-11-04T12:00:00.000Z"
51365
+ kind: ANSWER
51366
+ role: AUTHOR
51367
+ seq: 2
51368
+ text: The account-type step. I expected no one to notice.
51369
+ - at: "2026-11-04T12:00:00.000Z"
51370
+ kind: QUESTION
51371
+ role: INTERVIEWER
51372
+ seq: 3
51373
+ text: Who noticed first?
51374
+ updatedAt: "2026-11-04T12:00:00.000Z"
51375
+ schema:
51376
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurnsResponse"
51377
+ description: answer the Interviewer succeeded
51378
+ headers:
51379
+ Cache-Control:
51380
+ $ref: "#/components/headers/CacheControlNoStore"
51381
+ X-Correlation-Id:
51382
+ $ref: "#/components/headers/XCorrelationId"
51383
+ "400":
51384
+ content:
51385
+ application/problem+json:
51386
+ examples:
51387
+ REQUEST_FIELD_UNKNOWN:
51388
+ summary: REQUEST_FIELD_UNKNOWN
51389
+ value:
51390
+ code: REQUEST_FIELD_UNKNOWN
51391
+ correlationId: 018f0000-0000-7000-8000-000000000001
51392
+ detail: See the operation contract.
51393
+ errors: []
51394
+ retryable: false
51395
+ schemaId: urn:gala:schema:problem:2.0.0
51396
+ schemaVersion: 2.0.0
51397
+ status: 400
51398
+ title: REQUEST_FIELD_UNKNOWN
51399
+ type: urn:gala:problem:request-field-unknown
51400
+ VALIDATION_FAILED:
51401
+ summary: VALIDATION_FAILED
51402
+ value:
51403
+ code: VALIDATION_FAILED
51404
+ correlationId: 018f0000-0000-7000-8000-000000000001
51405
+ detail: See the operation contract.
51406
+ errors: []
51407
+ retryable: false
51408
+ schemaId: urn:gala:schema:problem:2.0.0
51409
+ schemaVersion: 2.0.0
51410
+ status: 400
51411
+ title: VALIDATION_FAILED
51412
+ type: urn:gala:problem:validation-failed
51413
+ schema:
51414
+ $ref: "#/components/schemas/Problem"
51415
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
51416
+ headers:
51417
+ Cache-Control:
51418
+ $ref: "#/components/headers/CacheControlNoStore"
51419
+ X-Correlation-Id:
51420
+ $ref: "#/components/headers/XCorrelationId"
51421
+ x-gala-problem-codes:
51422
+ - REQUEST_FIELD_UNKNOWN
51423
+ - VALIDATION_FAILED
51424
+ "401":
51425
+ content:
51426
+ application/problem+json:
51427
+ examples:
51428
+ AUTHENTICATION_REQUIRED:
51429
+ summary: AUTHENTICATION_REQUIRED
51430
+ value:
51431
+ code: AUTHENTICATION_REQUIRED
51432
+ correlationId: 018f0000-0000-7000-8000-000000000001
51433
+ detail: See the operation contract.
51434
+ errors: []
51435
+ retryable: false
51436
+ schemaId: urn:gala:schema:problem:2.0.0
51437
+ schemaVersion: 2.0.0
51438
+ status: 401
51439
+ title: AUTHENTICATION_REQUIRED
51440
+ type: urn:gala:problem:authentication-required
51441
+ schema:
51442
+ $ref: "#/components/schemas/Problem"
51443
+ description: AUTHENTICATION_REQUIRED
51444
+ headers:
51445
+ Cache-Control:
51446
+ $ref: "#/components/headers/CacheControlNoStore"
51447
+ X-Correlation-Id:
51448
+ $ref: "#/components/headers/XCorrelationId"
51449
+ x-gala-problem-codes:
51450
+ - AUTHENTICATION_REQUIRED
51451
+ "403":
51452
+ content:
51453
+ application/problem+json:
51454
+ examples:
51455
+ AUTHORIZATION_DENIED:
51456
+ summary: AUTHORIZATION_DENIED
51457
+ value:
51458
+ code: AUTHORIZATION_DENIED
51459
+ correlationId: 018f0000-0000-7000-8000-000000000001
51460
+ detail: See the operation contract.
51461
+ errors: []
51462
+ retryable: false
51463
+ schemaId: urn:gala:schema:problem:2.0.0
51464
+ schemaVersion: 2.0.0
51465
+ status: 403
51466
+ title: AUTHORIZATION_DENIED
51467
+ type: urn:gala:problem:authorization-denied
51468
+ schema:
51469
+ $ref: "#/components/schemas/Problem"
51470
+ description: AUTHORIZATION_DENIED
51471
+ headers:
51472
+ Cache-Control:
51473
+ $ref: "#/components/headers/CacheControlNoStore"
51474
+ X-Correlation-Id:
51475
+ $ref: "#/components/headers/XCorrelationId"
51476
+ x-gala-problem-codes:
51477
+ - AUTHORIZATION_DENIED
51478
+ "404":
51479
+ content:
51480
+ application/problem+json:
51481
+ examples:
51482
+ RESOURCE_NOT_FOUND:
51483
+ summary: RESOURCE_NOT_FOUND
51484
+ value:
51485
+ code: RESOURCE_NOT_FOUND
51486
+ correlationId: 018f0000-0000-7000-8000-000000000001
51487
+ detail: See the operation contract.
51488
+ errors: []
51489
+ retryable: false
51490
+ schemaId: urn:gala:schema:problem:2.0.0
51491
+ schemaVersion: 2.0.0
51492
+ status: 404
51493
+ title: RESOURCE_NOT_FOUND
51494
+ type: urn:gala:problem:resource-not-found
51495
+ schema:
51496
+ $ref: "#/components/schemas/Problem"
51497
+ description: RESOURCE_NOT_FOUND
51498
+ headers:
51499
+ Cache-Control:
51500
+ $ref: "#/components/headers/CacheControlNoStore"
51501
+ X-Correlation-Id:
51502
+ $ref: "#/components/headers/XCorrelationId"
51503
+ x-gala-problem-codes:
51504
+ - RESOURCE_NOT_FOUND
51505
+ "409":
51506
+ content:
51507
+ application/problem+json:
51508
+ examples:
51509
+ COMMAND_REPLAY_CONFLICT:
51510
+ summary: COMMAND_REPLAY_CONFLICT
51511
+ value:
51512
+ code: COMMAND_REPLAY_CONFLICT
51513
+ correlationId: 018f0000-0000-7000-8000-000000000001
51514
+ detail: See the operation contract.
51515
+ errors: []
51516
+ retryable: false
51517
+ schemaId: urn:gala:schema:problem:2.0.0
51518
+ schemaVersion: 2.0.0
51519
+ status: 409
51520
+ title: COMMAND_REPLAY_CONFLICT
51521
+ type: urn:gala:problem:command-replay-conflict
51522
+ INTERVIEW_STATE_CONFLICT:
51523
+ summary: INTERVIEW_STATE_CONFLICT
51524
+ value:
51525
+ code: INTERVIEW_STATE_CONFLICT
51526
+ correlationId: 018f0000-0000-7000-8000-000000000001
51527
+ detail: See the operation contract.
51528
+ errors: []
51529
+ retryable: false
51530
+ schemaId: urn:gala:schema:problem:2.0.0
51531
+ schemaVersion: 2.0.0
51532
+ status: 409
51533
+ title: INTERVIEW_STATE_CONFLICT
51534
+ type: urn:gala:problem:interview-state-conflict
51535
+ TRANSFER_PENDING:
51536
+ summary: TRANSFER_PENDING
51537
+ value:
51538
+ code: TRANSFER_PENDING
51539
+ correlationId: 018f0000-0000-7000-8000-000000000001
51540
+ detail: See the operation contract.
51541
+ errors: []
51542
+ retryable: false
51543
+ schemaId: urn:gala:schema:problem:2.0.0
51544
+ schemaVersion: 2.0.0
51545
+ status: 409
51546
+ title: TRANSFER_PENDING
51547
+ type: urn:gala:problem:transfer-pending
51548
+ schema:
51549
+ $ref: "#/components/schemas/Problem"
51550
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, TRANSFER_PENDING
51551
+ headers:
51552
+ Cache-Control:
51553
+ $ref: "#/components/headers/CacheControlNoStore"
51554
+ X-Correlation-Id:
51555
+ $ref: "#/components/headers/XCorrelationId"
51556
+ x-gala-problem-codes:
51557
+ - COMMAND_REPLAY_CONFLICT
51558
+ - INTERVIEW_STATE_CONFLICT
51559
+ - TRANSFER_PENDING
51560
+ "429":
51561
+ content:
51562
+ application/problem+json:
51563
+ examples:
51564
+ RATE_LIMITED:
51565
+ summary: RATE_LIMITED
51566
+ value:
51567
+ code: RATE_LIMITED
51568
+ correlationId: 018f0000-0000-7000-8000-000000000001
51569
+ detail: See the operation contract.
51570
+ errors: []
51571
+ retryable: true
51572
+ schemaId: urn:gala:schema:problem:2.0.0
51573
+ schemaVersion: 2.0.0
51574
+ status: 429
51575
+ title: RATE_LIMITED
51576
+ type: urn:gala:problem:rate-limited
51577
+ schema:
51578
+ $ref: "#/components/schemas/Problem"
51579
+ description: RATE_LIMITED
51580
+ headers:
51581
+ Cache-Control:
51582
+ $ref: "#/components/headers/CacheControlNoStore"
51583
+ Retry-After:
51584
+ $ref: "#/components/headers/RetryAfter"
51585
+ X-Correlation-Id:
51586
+ $ref: "#/components/headers/XCorrelationId"
51587
+ x-gala-problem-codes:
51588
+ - RATE_LIMITED
51589
+ "503":
51590
+ content:
51591
+ application/problem+json:
51592
+ examples:
51593
+ BUDGET_EXHAUSTED:
51594
+ summary: BUDGET_EXHAUSTED
51595
+ value:
51596
+ code: BUDGET_EXHAUSTED
51597
+ correlationId: 018f0000-0000-7000-8000-000000000001
51598
+ detail: See the operation contract.
51599
+ errors: []
51600
+ retryable: false
51601
+ schemaId: urn:gala:schema:problem:2.0.0
51602
+ schemaVersion: 2.0.0
51603
+ status: 503
51604
+ title: BUDGET_EXHAUSTED
51605
+ type: urn:gala:problem:budget-exhausted
51606
+ CAPABILITY_UNAVAILABLE:
51607
+ summary: CAPABILITY_UNAVAILABLE
51608
+ value:
51609
+ code: CAPABILITY_UNAVAILABLE
51610
+ correlationId: 018f0000-0000-7000-8000-000000000001
51611
+ detail: See the operation contract.
51612
+ errors: []
51613
+ retryable: false
51614
+ schemaId: urn:gala:schema:problem:2.0.0
51615
+ schemaVersion: 2.0.0
51616
+ status: 503
51617
+ title: CAPABILITY_UNAVAILABLE
51618
+ type: urn:gala:problem:capability-unavailable
51619
+ PROVIDER_UNAVAILABLE:
51620
+ summary: PROVIDER_UNAVAILABLE
51621
+ value:
51622
+ code: PROVIDER_UNAVAILABLE
51623
+ correlationId: 018f0000-0000-7000-8000-000000000001
51624
+ detail: See the operation contract.
51625
+ errors: []
51626
+ retryable: true
51627
+ schemaId: urn:gala:schema:problem:2.0.0
51628
+ schemaVersion: 2.0.0
51629
+ status: 503
51630
+ title: PROVIDER_UNAVAILABLE
51631
+ type: urn:gala:problem:provider-unavailable
51632
+ schema:
51633
+ $ref: "#/components/schemas/Problem"
51634
+ description: BUDGET_EXHAUSTED, CAPABILITY_UNAVAILABLE, PROVIDER_UNAVAILABLE
51635
+ headers:
51636
+ Cache-Control:
51637
+ $ref: "#/components/headers/CacheControlNoStore"
51638
+ X-Correlation-Id:
51639
+ $ref: "#/components/headers/XCorrelationId"
51640
+ x-gala-problem-codes:
51641
+ - BUDGET_EXHAUSTED
51642
+ - CAPABILITY_UNAVAILABLE
51643
+ - PROVIDER_UNAVAILABLE
51644
+ security:
51645
+ - browserSession: []
51646
+ summary: answer the Interviewer
51647
+ tags:
51648
+ - interview
51649
+ x-gala-activation-gate: MVP
51650
+ x-gala-activation-guards:
51651
+ - Interview enabled for this deployment and publication
51652
+ x-gala-capability-key: publication.source.write
51653
+ x-gala-concurrency: interview-version
51654
+ x-gala-conditional-capabilities: []
51655
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
51656
+ x-gala-nullability: required-and-nullable-are-explicit
51657
+ x-gala-purpose: answer the Interviewer
51658
+ x-gala-reachable-problems:
51659
+ - AUTHENTICATION_REQUIRED
51660
+ - AUTHORIZATION_DENIED
51661
+ - BUDGET_EXHAUSTED
51662
+ - CAPABILITY_UNAVAILABLE
51663
+ - COMMAND_REPLAY_CONFLICT
51664
+ - INTERVIEW_STATE_CONFLICT
51665
+ - PROVIDER_UNAVAILABLE
51666
+ - RATE_LIMITED
51667
+ - REQUEST_FIELD_UNKNOWN
51668
+ - RESOURCE_NOT_FOUND
51669
+ - TRANSFER_PENDING
51670
+ - VALIDATION_FAILED
51671
+ x-gala-replay-identity: idempotency-key
51672
+ x-gala-state-guards:
51673
+ - NONE
51674
+ x-gala-success-category: protocol
51675
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
51676
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:accept:
51677
+ post:
51678
+ description: |
51679
+ Marks the draft as taken. Only from `DRAFT_READY`; `409 INTERVIEW_STATE_CONFLICT` otherwise. The post itself is written and saved through the content endpoints; accepting publishes nothing.
51680
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdAccept
51681
+ parameters:
51682
+ - $ref: "#/components/parameters/XCorrelationId"
51683
+ - example: 018f0000-0000-7000-8000-000000000001
51684
+ in: path
51685
+ name: organizationId
51686
+ required: true
51687
+ schema:
51688
+ format: uuid
51689
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51690
+ type: string
51691
+ - example: 018f0000-0000-7000-8000-000000000001
51692
+ in: path
51693
+ name: publicationId
51694
+ required: true
51695
+ schema:
51696
+ format: uuid
51697
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51698
+ type: string
51699
+ - example: 018f0000-0000-7000-8000-000000000001
51700
+ in: path
51701
+ name: interviewId
51702
+ required: true
51703
+ schema:
51704
+ format: uuid
51705
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51706
+ type: string
51707
+ - $ref: "#/components/parameters/IdempotencyKey"
51708
+ - $ref: "#/components/parameters/XCsrfToken"
51709
+ responses:
51710
+ "200":
51711
+ content:
51712
+ application/json:
51713
+ examples:
51714
+ nominal:
51715
+ summary: Nominal successful response
51716
+ value:
51717
+ capture:
51718
+ kind: NOTE
51719
+ text: We cut our onboarding from nine steps to four and signups doubled.
51720
+ createdAt: "2026-11-04T12:00:00.000Z"
51721
+ draft:
51722
+ body: |-
51723
+ We cut onboarding from nine steps to four.
51724
+
51725
+ The first step to go was the account type.
51726
+ description: How cutting onboarding steps doubled signups.
51727
+ language: en
51728
+ title: Nine steps to four
51729
+ tldr: Fewer steps, twice the signups.
51730
+ expiresAt: "2026-11-11T12:00:00.000Z"
51731
+ finishedAt: "2026-11-04T12:00:00.000Z"
51732
+ interviewId: 018f0000-0000-7000-8000-000000000001
51733
+ organizationId: 018f0000-0000-7000-8000-000000000003
51734
+ progress:
51735
+ beliefDone: false
51736
+ canFinish: true
51737
+ details: 3
51738
+ detailsTarget: 5
51739
+ phase: DONE
51740
+ skepticRounds: 0
51741
+ publicationId: 018f0000-0000-7000-8000-000000000002
51742
+ review:
51743
+ claims:
51744
+ - source:
51745
+ note: From the author's note.
51746
+ status: VERIFIED
51747
+ text: Signups doubled.
51748
+ clear:
51749
+ flagged: []
51750
+ threeSentences:
51751
+ - Onboarding was nine steps.
51752
+ - You cut it to four.
51753
+ - Signups doubled.
51754
+ pastPostsRead:
51755
+ - content/my-post.md
51756
+ sources: []
51757
+ startedAt: "2026-11-04T12:00:00.000Z"
51758
+ state: ACCEPTED
51759
+ turns:
51760
+ - at: "2026-11-04T12:00:00.000Z"
51761
+ kind: QUESTION
51762
+ role: INTERVIEWER
51763
+ seq: 1
51764
+ text: What did you cut first, and what did you expect to happen?
51765
+ - at: "2026-11-04T12:00:00.000Z"
51766
+ kind: ANSWER
51767
+ role: AUTHOR
51768
+ seq: 2
51769
+ text: The account-type step. I expected no one to notice.
51770
+ updatedAt: "2026-11-04T12:00:00.000Z"
51771
+ schema:
51772
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdAcceptResponse"
51773
+ description: accept an Interview draft succeeded
51774
+ headers:
51775
+ Cache-Control:
51776
+ $ref: "#/components/headers/CacheControlNoStore"
51777
+ X-Correlation-Id:
51778
+ $ref: "#/components/headers/XCorrelationId"
51779
+ "400":
51780
+ content:
51781
+ application/problem+json:
51782
+ examples:
51783
+ VALIDATION_FAILED:
51784
+ summary: VALIDATION_FAILED
51785
+ value:
51786
+ code: VALIDATION_FAILED
51787
+ correlationId: 018f0000-0000-7000-8000-000000000001
51788
+ detail: See the operation contract.
51789
+ errors: []
51790
+ retryable: false
51791
+ schemaId: urn:gala:schema:problem:2.0.0
51792
+ schemaVersion: 2.0.0
51793
+ status: 400
51794
+ title: VALIDATION_FAILED
51795
+ type: urn:gala:problem:validation-failed
51796
+ schema:
51797
+ $ref: "#/components/schemas/Problem"
51798
+ description: VALIDATION_FAILED
51799
+ headers:
51800
+ Cache-Control:
51801
+ $ref: "#/components/headers/CacheControlNoStore"
51802
+ X-Correlation-Id:
51803
+ $ref: "#/components/headers/XCorrelationId"
51804
+ x-gala-problem-codes:
51805
+ - VALIDATION_FAILED
51806
+ "401":
51807
+ content:
51808
+ application/problem+json:
51809
+ examples:
51810
+ AUTHENTICATION_REQUIRED:
51811
+ summary: AUTHENTICATION_REQUIRED
51812
+ value:
51813
+ code: AUTHENTICATION_REQUIRED
51814
+ correlationId: 018f0000-0000-7000-8000-000000000001
51815
+ detail: See the operation contract.
51816
+ errors: []
51817
+ retryable: false
51818
+ schemaId: urn:gala:schema:problem:2.0.0
51819
+ schemaVersion: 2.0.0
51820
+ status: 401
51821
+ title: AUTHENTICATION_REQUIRED
51822
+ type: urn:gala:problem:authentication-required
51823
+ schema:
51824
+ $ref: "#/components/schemas/Problem"
51825
+ description: AUTHENTICATION_REQUIRED
51826
+ headers:
51827
+ Cache-Control:
51828
+ $ref: "#/components/headers/CacheControlNoStore"
51829
+ X-Correlation-Id:
51830
+ $ref: "#/components/headers/XCorrelationId"
51831
+ x-gala-problem-codes:
51832
+ - AUTHENTICATION_REQUIRED
51833
+ "403":
51834
+ content:
51835
+ application/problem+json:
51836
+ examples:
51837
+ AUTHORIZATION_DENIED:
51838
+ summary: AUTHORIZATION_DENIED
51839
+ value:
51840
+ code: AUTHORIZATION_DENIED
51841
+ correlationId: 018f0000-0000-7000-8000-000000000001
51842
+ detail: See the operation contract.
51843
+ errors: []
51844
+ retryable: false
51845
+ schemaId: urn:gala:schema:problem:2.0.0
51846
+ schemaVersion: 2.0.0
51847
+ status: 403
51848
+ title: AUTHORIZATION_DENIED
51849
+ type: urn:gala:problem:authorization-denied
51850
+ schema:
51851
+ $ref: "#/components/schemas/Problem"
51852
+ description: AUTHORIZATION_DENIED
51853
+ headers:
51854
+ Cache-Control:
51855
+ $ref: "#/components/headers/CacheControlNoStore"
51856
+ X-Correlation-Id:
51857
+ $ref: "#/components/headers/XCorrelationId"
51858
+ x-gala-problem-codes:
51859
+ - AUTHORIZATION_DENIED
51860
+ "404":
51861
+ content:
51862
+ application/problem+json:
51863
+ examples:
51864
+ RESOURCE_NOT_FOUND:
51865
+ summary: RESOURCE_NOT_FOUND
51866
+ value:
51867
+ code: RESOURCE_NOT_FOUND
51868
+ correlationId: 018f0000-0000-7000-8000-000000000001
51869
+ detail: See the operation contract.
51870
+ errors: []
51871
+ retryable: false
51872
+ schemaId: urn:gala:schema:problem:2.0.0
51873
+ schemaVersion: 2.0.0
51874
+ status: 404
51875
+ title: RESOURCE_NOT_FOUND
51876
+ type: urn:gala:problem:resource-not-found
51877
+ schema:
51878
+ $ref: "#/components/schemas/Problem"
51879
+ description: RESOURCE_NOT_FOUND
51880
+ headers:
51881
+ Cache-Control:
51882
+ $ref: "#/components/headers/CacheControlNoStore"
51883
+ X-Correlation-Id:
51884
+ $ref: "#/components/headers/XCorrelationId"
51885
+ x-gala-problem-codes:
51886
+ - RESOURCE_NOT_FOUND
51887
+ "409":
51888
+ content:
51889
+ application/problem+json:
51890
+ examples:
51891
+ COMMAND_REPLAY_CONFLICT:
51892
+ summary: COMMAND_REPLAY_CONFLICT
51893
+ value:
51894
+ code: COMMAND_REPLAY_CONFLICT
51895
+ correlationId: 018f0000-0000-7000-8000-000000000001
51896
+ detail: See the operation contract.
51897
+ errors: []
51898
+ retryable: false
51899
+ schemaId: urn:gala:schema:problem:2.0.0
51900
+ schemaVersion: 2.0.0
51901
+ status: 409
51902
+ title: COMMAND_REPLAY_CONFLICT
51903
+ type: urn:gala:problem:command-replay-conflict
51904
+ INTERVIEW_STATE_CONFLICT:
51905
+ summary: INTERVIEW_STATE_CONFLICT
51906
+ value:
51907
+ code: INTERVIEW_STATE_CONFLICT
51908
+ correlationId: 018f0000-0000-7000-8000-000000000001
51909
+ detail: See the operation contract.
51910
+ errors: []
51911
+ retryable: false
51912
+ schemaId: urn:gala:schema:problem:2.0.0
51913
+ schemaVersion: 2.0.0
51914
+ status: 409
51915
+ title: INTERVIEW_STATE_CONFLICT
51916
+ type: urn:gala:problem:interview-state-conflict
51917
+ TRANSFER_PENDING:
51918
+ summary: TRANSFER_PENDING
51919
+ value:
51920
+ code: TRANSFER_PENDING
51921
+ correlationId: 018f0000-0000-7000-8000-000000000001
51922
+ detail: See the operation contract.
51923
+ errors: []
51924
+ retryable: false
51925
+ schemaId: urn:gala:schema:problem:2.0.0
51926
+ schemaVersion: 2.0.0
51927
+ status: 409
51928
+ title: TRANSFER_PENDING
51929
+ type: urn:gala:problem:transfer-pending
51930
+ schema:
51931
+ $ref: "#/components/schemas/Problem"
51932
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, TRANSFER_PENDING
51933
+ headers:
51934
+ Cache-Control:
51935
+ $ref: "#/components/headers/CacheControlNoStore"
51936
+ X-Correlation-Id:
51937
+ $ref: "#/components/headers/XCorrelationId"
51938
+ x-gala-problem-codes:
51939
+ - COMMAND_REPLAY_CONFLICT
51940
+ - INTERVIEW_STATE_CONFLICT
51941
+ - TRANSFER_PENDING
51942
+ security:
51943
+ - browserSession: []
51944
+ summary: accept an Interview draft
51945
+ tags:
51946
+ - interview
51947
+ x-gala-activation-gate: MVP
51948
+ x-gala-activation-guards:
51949
+ - NONE
51950
+ x-gala-capability-key: publication.source.write
51951
+ x-gala-concurrency: interview-version
51952
+ x-gala-conditional-capabilities: []
51953
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
51954
+ x-gala-nullability: required-and-nullable-are-explicit
51955
+ x-gala-purpose: accept an Interview draft
51956
+ x-gala-reachable-problems:
51957
+ - AUTHENTICATION_REQUIRED
51958
+ - AUTHORIZATION_DENIED
51959
+ - COMMAND_REPLAY_CONFLICT
51960
+ - INTERVIEW_STATE_CONFLICT
51961
+ - RESOURCE_NOT_FOUND
51962
+ - TRANSFER_PENDING
51963
+ - VALIDATION_FAILED
51964
+ x-gala-replay-identity: idempotency-key
51965
+ x-gala-state-guards:
51966
+ - NONE
51967
+ x-gala-success-category: protocol
51968
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
51969
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:cancel:
51970
+ post:
51971
+ description: |
51972
+ Stops an interview that has not been accepted. Allowed from `CAPTURED`, `INTERVIEWING`, `WRITING` and `DRAFT_READY`; `409 INTERVIEW_STATE_CONFLICT` otherwise. A quota unit already used is not returned.
51973
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdCancel
51974
+ parameters:
51975
+ - $ref: "#/components/parameters/XCorrelationId"
51976
+ - example: 018f0000-0000-7000-8000-000000000001
51977
+ in: path
51978
+ name: organizationId
51979
+ required: true
51980
+ schema:
51981
+ format: uuid
51982
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51983
+ type: string
51984
+ - example: 018f0000-0000-7000-8000-000000000001
51985
+ in: path
51986
+ name: publicationId
51987
+ required: true
51988
+ schema:
51989
+ format: uuid
51990
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51991
+ type: string
51992
+ - example: 018f0000-0000-7000-8000-000000000001
51993
+ in: path
51994
+ name: interviewId
51995
+ required: true
51996
+ schema:
51997
+ format: uuid
51998
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51999
+ type: string
52000
+ - $ref: "#/components/parameters/IdempotencyKey"
52001
+ - $ref: "#/components/parameters/XCsrfToken"
52002
+ responses:
52003
+ "200":
52004
+ content:
52005
+ application/json:
52006
+ examples:
52007
+ nominal:
52008
+ summary: Nominal successful response
52009
+ value:
52010
+ capture:
52011
+ kind: NOTE
52012
+ text: We cut our onboarding from nine steps to four and signups doubled.
52013
+ createdAt: "2026-11-04T12:00:00.000Z"
52014
+ expiresAt: "2026-11-11T12:00:00.000Z"
52015
+ interviewId: 018f0000-0000-7000-8000-000000000001
52016
+ organizationId: 018f0000-0000-7000-8000-000000000003
52017
+ progress:
52018
+ beliefDone: false
52019
+ canFinish: false
52020
+ details: 0
52021
+ detailsTarget: 5
52022
+ phase: OWNED
52023
+ skepticRounds: 0
52024
+ publicationId: 018f0000-0000-7000-8000-000000000002
52025
+ state: CANCELLED
52026
+ turns: []
52027
+ updatedAt: "2026-11-04T12:00:00.000Z"
52028
+ schema:
52029
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdCancelResponse"
52030
+ description: cancel an Interview succeeded
52031
+ headers:
52032
+ Cache-Control:
52033
+ $ref: "#/components/headers/CacheControlNoStore"
52034
+ X-Correlation-Id:
52035
+ $ref: "#/components/headers/XCorrelationId"
52036
+ "400":
52037
+ content:
52038
+ application/problem+json:
52039
+ examples:
52040
+ VALIDATION_FAILED:
52041
+ summary: VALIDATION_FAILED
52042
+ value:
52043
+ code: VALIDATION_FAILED
52044
+ correlationId: 018f0000-0000-7000-8000-000000000001
52045
+ detail: See the operation contract.
52046
+ errors: []
52047
+ retryable: false
52048
+ schemaId: urn:gala:schema:problem:2.0.0
52049
+ schemaVersion: 2.0.0
52050
+ status: 400
52051
+ title: VALIDATION_FAILED
52052
+ type: urn:gala:problem:validation-failed
52053
+ schema:
52054
+ $ref: "#/components/schemas/Problem"
52055
+ description: VALIDATION_FAILED
52056
+ headers:
52057
+ Cache-Control:
52058
+ $ref: "#/components/headers/CacheControlNoStore"
52059
+ X-Correlation-Id:
52060
+ $ref: "#/components/headers/XCorrelationId"
52061
+ x-gala-problem-codes:
52062
+ - VALIDATION_FAILED
52063
+ "401":
52064
+ content:
52065
+ application/problem+json:
52066
+ examples:
52067
+ AUTHENTICATION_REQUIRED:
52068
+ summary: AUTHENTICATION_REQUIRED
52069
+ value:
52070
+ code: AUTHENTICATION_REQUIRED
52071
+ correlationId: 018f0000-0000-7000-8000-000000000001
52072
+ detail: See the operation contract.
52073
+ errors: []
52074
+ retryable: false
52075
+ schemaId: urn:gala:schema:problem:2.0.0
52076
+ schemaVersion: 2.0.0
52077
+ status: 401
52078
+ title: AUTHENTICATION_REQUIRED
52079
+ type: urn:gala:problem:authentication-required
52080
+ schema:
52081
+ $ref: "#/components/schemas/Problem"
52082
+ description: AUTHENTICATION_REQUIRED
52083
+ headers:
52084
+ Cache-Control:
52085
+ $ref: "#/components/headers/CacheControlNoStore"
52086
+ X-Correlation-Id:
52087
+ $ref: "#/components/headers/XCorrelationId"
52088
+ x-gala-problem-codes:
52089
+ - AUTHENTICATION_REQUIRED
52090
+ "403":
52091
+ content:
52092
+ application/problem+json:
52093
+ examples:
52094
+ AUTHORIZATION_DENIED:
52095
+ summary: AUTHORIZATION_DENIED
52096
+ value:
52097
+ code: AUTHORIZATION_DENIED
52098
+ correlationId: 018f0000-0000-7000-8000-000000000001
52099
+ detail: See the operation contract.
52100
+ errors: []
52101
+ retryable: false
52102
+ schemaId: urn:gala:schema:problem:2.0.0
52103
+ schemaVersion: 2.0.0
52104
+ status: 403
52105
+ title: AUTHORIZATION_DENIED
52106
+ type: urn:gala:problem:authorization-denied
52107
+ schema:
52108
+ $ref: "#/components/schemas/Problem"
52109
+ description: AUTHORIZATION_DENIED
52110
+ headers:
52111
+ Cache-Control:
52112
+ $ref: "#/components/headers/CacheControlNoStore"
52113
+ X-Correlation-Id:
52114
+ $ref: "#/components/headers/XCorrelationId"
52115
+ x-gala-problem-codes:
52116
+ - AUTHORIZATION_DENIED
52117
+ "404":
52118
+ content:
52119
+ application/problem+json:
52120
+ examples:
52121
+ RESOURCE_NOT_FOUND:
52122
+ summary: RESOURCE_NOT_FOUND
52123
+ value:
52124
+ code: RESOURCE_NOT_FOUND
52125
+ correlationId: 018f0000-0000-7000-8000-000000000001
52126
+ detail: See the operation contract.
52127
+ errors: []
52128
+ retryable: false
52129
+ schemaId: urn:gala:schema:problem:2.0.0
52130
+ schemaVersion: 2.0.0
52131
+ status: 404
52132
+ title: RESOURCE_NOT_FOUND
52133
+ type: urn:gala:problem:resource-not-found
52134
+ schema:
52135
+ $ref: "#/components/schemas/Problem"
52136
+ description: RESOURCE_NOT_FOUND
52137
+ headers:
52138
+ Cache-Control:
52139
+ $ref: "#/components/headers/CacheControlNoStore"
52140
+ X-Correlation-Id:
52141
+ $ref: "#/components/headers/XCorrelationId"
52142
+ x-gala-problem-codes:
52143
+ - RESOURCE_NOT_FOUND
52144
+ "409":
52145
+ content:
52146
+ application/problem+json:
52147
+ examples:
52148
+ COMMAND_REPLAY_CONFLICT:
52149
+ summary: COMMAND_REPLAY_CONFLICT
52150
+ value:
52151
+ code: COMMAND_REPLAY_CONFLICT
52152
+ correlationId: 018f0000-0000-7000-8000-000000000001
52153
+ detail: See the operation contract.
52154
+ errors: []
52155
+ retryable: false
52156
+ schemaId: urn:gala:schema:problem:2.0.0
52157
+ schemaVersion: 2.0.0
52158
+ status: 409
52159
+ title: COMMAND_REPLAY_CONFLICT
52160
+ type: urn:gala:problem:command-replay-conflict
52161
+ INTERVIEW_STATE_CONFLICT:
52162
+ summary: INTERVIEW_STATE_CONFLICT
52163
+ value:
52164
+ code: INTERVIEW_STATE_CONFLICT
52165
+ correlationId: 018f0000-0000-7000-8000-000000000001
52166
+ detail: See the operation contract.
52167
+ errors: []
52168
+ retryable: false
52169
+ schemaId: urn:gala:schema:problem:2.0.0
52170
+ schemaVersion: 2.0.0
52171
+ status: 409
52172
+ title: INTERVIEW_STATE_CONFLICT
52173
+ type: urn:gala:problem:interview-state-conflict
52174
+ TRANSFER_PENDING:
52175
+ summary: TRANSFER_PENDING
52176
+ value:
52177
+ code: TRANSFER_PENDING
52178
+ correlationId: 018f0000-0000-7000-8000-000000000001
52179
+ detail: See the operation contract.
52180
+ errors: []
52181
+ retryable: false
52182
+ schemaId: urn:gala:schema:problem:2.0.0
52183
+ schemaVersion: 2.0.0
52184
+ status: 409
52185
+ title: TRANSFER_PENDING
52186
+ type: urn:gala:problem:transfer-pending
52187
+ schema:
52188
+ $ref: "#/components/schemas/Problem"
52189
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, TRANSFER_PENDING
52190
+ headers:
52191
+ Cache-Control:
52192
+ $ref: "#/components/headers/CacheControlNoStore"
52193
+ X-Correlation-Id:
52194
+ $ref: "#/components/headers/XCorrelationId"
52195
+ x-gala-problem-codes:
52196
+ - COMMAND_REPLAY_CONFLICT
52197
+ - INTERVIEW_STATE_CONFLICT
52198
+ - TRANSFER_PENDING
52199
+ security:
52200
+ - browserSession: []
52201
+ summary: cancel an Interview
52202
+ tags:
52203
+ - interview
52204
+ x-gala-activation-gate: MVP
52205
+ x-gala-activation-guards:
52206
+ - NONE
52207
+ x-gala-capability-key: publication.source.write
52208
+ x-gala-concurrency: interview-version
52209
+ x-gala-conditional-capabilities: []
52210
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
52211
+ x-gala-nullability: required-and-nullable-are-explicit
52212
+ x-gala-purpose: cancel an Interview
52213
+ x-gala-reachable-problems:
52214
+ - AUTHENTICATION_REQUIRED
52215
+ - AUTHORIZATION_DENIED
52216
+ - COMMAND_REPLAY_CONFLICT
52217
+ - INTERVIEW_STATE_CONFLICT
52218
+ - RESOURCE_NOT_FOUND
52219
+ - TRANSFER_PENDING
52220
+ - VALIDATION_FAILED
52221
+ x-gala-replay-identity: idempotency-key
52222
+ x-gala-state-guards:
52223
+ - NONE
52224
+ x-gala-success-category: protocol
52225
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
52226
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:finish:
52227
+ post:
52228
+ description: |
52229
+ Ends the questions and starts writing the draft. Only while `INTERVIEWING`, and only once at least three details are on record (`progress.canFinish`); otherwise `409 INTERVIEW_TOO_THIN`. `202` with the interview in `WRITING`; poll `GET .../interviews/{interviewId}` until `DRAFT_READY` or `FAILED`.
52230
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdFinish
52231
+ parameters:
52232
+ - $ref: "#/components/parameters/XCorrelationId"
52233
+ - example: 018f0000-0000-7000-8000-000000000001
52234
+ in: path
52235
+ name: organizationId
52236
+ required: true
52237
+ schema:
52238
+ format: uuid
52239
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52240
+ type: string
52241
+ - example: 018f0000-0000-7000-8000-000000000001
52242
+ in: path
52243
+ name: publicationId
52244
+ required: true
52245
+ schema:
52246
+ format: uuid
52247
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52248
+ type: string
52249
+ - example: 018f0000-0000-7000-8000-000000000001
52250
+ in: path
52251
+ name: interviewId
52252
+ required: true
52253
+ schema:
52254
+ format: uuid
52255
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52256
+ type: string
52257
+ - $ref: "#/components/parameters/IdempotencyKey"
52258
+ - $ref: "#/components/parameters/XCsrfToken"
52259
+ responses:
52260
+ "202":
52261
+ content:
52262
+ application/json:
52263
+ examples:
52264
+ nominal:
52265
+ summary: Nominal successful response
52266
+ value:
52267
+ capture:
52268
+ kind: NOTE
52269
+ text: We cut our onboarding from nine steps to four and signups doubled.
52270
+ createdAt: "2026-11-04T12:00:00.000Z"
52271
+ expiresAt: "2026-11-11T12:00:00.000Z"
52272
+ finishedAt: "2026-11-04T12:00:00.000Z"
52273
+ interviewId: 018f0000-0000-7000-8000-000000000001
52274
+ organizationId: 018f0000-0000-7000-8000-000000000003
52275
+ progress:
52276
+ beliefDone: false
52277
+ canFinish: true
52278
+ details: 3
52279
+ detailsTarget: 5
52280
+ phase: DONE
52281
+ skepticRounds: 0
52282
+ publicationId: 018f0000-0000-7000-8000-000000000002
52283
+ startedAt: "2026-11-04T12:00:00.000Z"
52284
+ state: WRITING
52285
+ turns:
52286
+ - at: "2026-11-04T12:00:00.000Z"
52287
+ kind: QUESTION
52288
+ role: INTERVIEWER
52289
+ seq: 1
52290
+ text: What did you cut first, and what did you expect to happen?
52291
+ - at: "2026-11-04T12:00:00.000Z"
52292
+ kind: ANSWER
52293
+ role: AUTHOR
52294
+ seq: 2
52295
+ text: The account-type step. I expected no one to notice.
52296
+ updatedAt: "2026-11-04T12:00:00.000Z"
52297
+ schema:
52298
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdFinishResponse"
52299
+ description: finish an Interview and write the draft succeeded
52300
+ headers:
52301
+ Cache-Control:
52302
+ $ref: "#/components/headers/CacheControlNoStore"
52303
+ X-Correlation-Id:
52304
+ $ref: "#/components/headers/XCorrelationId"
52305
+ "400":
52306
+ content:
52307
+ application/problem+json:
52308
+ examples:
52309
+ VALIDATION_FAILED:
52310
+ summary: VALIDATION_FAILED
52311
+ value:
52312
+ code: VALIDATION_FAILED
52313
+ correlationId: 018f0000-0000-7000-8000-000000000001
52314
+ detail: See the operation contract.
52315
+ errors: []
52316
+ retryable: false
52317
+ schemaId: urn:gala:schema:problem:2.0.0
52318
+ schemaVersion: 2.0.0
52319
+ status: 400
52320
+ title: VALIDATION_FAILED
52321
+ type: urn:gala:problem:validation-failed
52322
+ schema:
52323
+ $ref: "#/components/schemas/Problem"
52324
+ description: VALIDATION_FAILED
52325
+ headers:
52326
+ Cache-Control:
52327
+ $ref: "#/components/headers/CacheControlNoStore"
52328
+ X-Correlation-Id:
52329
+ $ref: "#/components/headers/XCorrelationId"
52330
+ x-gala-problem-codes:
52331
+ - VALIDATION_FAILED
52332
+ "401":
52333
+ content:
52334
+ application/problem+json:
52335
+ examples:
52336
+ AUTHENTICATION_REQUIRED:
52337
+ summary: AUTHENTICATION_REQUIRED
52338
+ value:
52339
+ code: AUTHENTICATION_REQUIRED
52340
+ correlationId: 018f0000-0000-7000-8000-000000000001
52341
+ detail: See the operation contract.
52342
+ errors: []
52343
+ retryable: false
52344
+ schemaId: urn:gala:schema:problem:2.0.0
52345
+ schemaVersion: 2.0.0
52346
+ status: 401
52347
+ title: AUTHENTICATION_REQUIRED
52348
+ type: urn:gala:problem:authentication-required
52349
+ schema:
52350
+ $ref: "#/components/schemas/Problem"
52351
+ description: AUTHENTICATION_REQUIRED
52352
+ headers:
52353
+ Cache-Control:
52354
+ $ref: "#/components/headers/CacheControlNoStore"
52355
+ X-Correlation-Id:
52356
+ $ref: "#/components/headers/XCorrelationId"
52357
+ x-gala-problem-codes:
52358
+ - AUTHENTICATION_REQUIRED
52359
+ "403":
52360
+ content:
52361
+ application/problem+json:
52362
+ examples:
52363
+ AUTHORIZATION_DENIED:
52364
+ summary: AUTHORIZATION_DENIED
52365
+ value:
52366
+ code: AUTHORIZATION_DENIED
52367
+ correlationId: 018f0000-0000-7000-8000-000000000001
52368
+ detail: See the operation contract.
52369
+ errors: []
52370
+ retryable: false
52371
+ schemaId: urn:gala:schema:problem:2.0.0
52372
+ schemaVersion: 2.0.0
52373
+ status: 403
52374
+ title: AUTHORIZATION_DENIED
52375
+ type: urn:gala:problem:authorization-denied
52376
+ schema:
52377
+ $ref: "#/components/schemas/Problem"
52378
+ description: AUTHORIZATION_DENIED
52379
+ headers:
52380
+ Cache-Control:
52381
+ $ref: "#/components/headers/CacheControlNoStore"
52382
+ X-Correlation-Id:
52383
+ $ref: "#/components/headers/XCorrelationId"
52384
+ x-gala-problem-codes:
52385
+ - AUTHORIZATION_DENIED
52386
+ "404":
52387
+ content:
52388
+ application/problem+json:
52389
+ examples:
52390
+ RESOURCE_NOT_FOUND:
52391
+ summary: RESOURCE_NOT_FOUND
52392
+ value:
52393
+ code: RESOURCE_NOT_FOUND
52394
+ correlationId: 018f0000-0000-7000-8000-000000000001
52395
+ detail: See the operation contract.
52396
+ errors: []
52397
+ retryable: false
52398
+ schemaId: urn:gala:schema:problem:2.0.0
52399
+ schemaVersion: 2.0.0
52400
+ status: 404
52401
+ title: RESOURCE_NOT_FOUND
52402
+ type: urn:gala:problem:resource-not-found
52403
+ schema:
52404
+ $ref: "#/components/schemas/Problem"
52405
+ description: RESOURCE_NOT_FOUND
52406
+ headers:
52407
+ Cache-Control:
52408
+ $ref: "#/components/headers/CacheControlNoStore"
52409
+ X-Correlation-Id:
52410
+ $ref: "#/components/headers/XCorrelationId"
52411
+ x-gala-problem-codes:
52412
+ - RESOURCE_NOT_FOUND
52413
+ "409":
52414
+ content:
52415
+ application/problem+json:
52416
+ examples:
52417
+ COMMAND_REPLAY_CONFLICT:
52418
+ summary: COMMAND_REPLAY_CONFLICT
52419
+ value:
52420
+ code: COMMAND_REPLAY_CONFLICT
52421
+ correlationId: 018f0000-0000-7000-8000-000000000001
52422
+ detail: See the operation contract.
52423
+ errors: []
52424
+ retryable: false
52425
+ schemaId: urn:gala:schema:problem:2.0.0
52426
+ schemaVersion: 2.0.0
52427
+ status: 409
52428
+ title: COMMAND_REPLAY_CONFLICT
52429
+ type: urn:gala:problem:command-replay-conflict
52430
+ INTERVIEW_STATE_CONFLICT:
52431
+ summary: INTERVIEW_STATE_CONFLICT
52432
+ value:
52433
+ code: INTERVIEW_STATE_CONFLICT
52434
+ correlationId: 018f0000-0000-7000-8000-000000000001
52435
+ detail: See the operation contract.
52436
+ errors: []
52437
+ retryable: false
52438
+ schemaId: urn:gala:schema:problem:2.0.0
52439
+ schemaVersion: 2.0.0
52440
+ status: 409
52441
+ title: INTERVIEW_STATE_CONFLICT
52442
+ type: urn:gala:problem:interview-state-conflict
52443
+ INTERVIEW_TOO_THIN:
52444
+ summary: INTERVIEW_TOO_THIN
52445
+ value:
52446
+ code: INTERVIEW_TOO_THIN
52447
+ correlationId: 018f0000-0000-7000-8000-000000000001
52448
+ detail: See the operation contract.
52449
+ errors: []
52450
+ retryable: false
52451
+ schemaId: urn:gala:schema:problem:2.0.0
52452
+ schemaVersion: 2.0.0
52453
+ status: 409
52454
+ title: INTERVIEW_TOO_THIN
52455
+ type: urn:gala:problem:interview-too-thin
52456
+ TRANSFER_PENDING:
52457
+ summary: TRANSFER_PENDING
52458
+ value:
52459
+ code: TRANSFER_PENDING
52460
+ correlationId: 018f0000-0000-7000-8000-000000000001
52461
+ detail: See the operation contract.
52462
+ errors: []
52463
+ retryable: false
52464
+ schemaId: urn:gala:schema:problem:2.0.0
52465
+ schemaVersion: 2.0.0
52466
+ status: 409
52467
+ title: TRANSFER_PENDING
52468
+ type: urn:gala:problem:transfer-pending
52469
+ schema:
52470
+ $ref: "#/components/schemas/Problem"
52471
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, INTERVIEW_TOO_THIN, TRANSFER_PENDING
52472
+ headers:
52473
+ Cache-Control:
52474
+ $ref: "#/components/headers/CacheControlNoStore"
52475
+ X-Correlation-Id:
52476
+ $ref: "#/components/headers/XCorrelationId"
52477
+ x-gala-problem-codes:
52478
+ - COMMAND_REPLAY_CONFLICT
52479
+ - INTERVIEW_STATE_CONFLICT
52480
+ - INTERVIEW_TOO_THIN
52481
+ - TRANSFER_PENDING
52482
+ "503":
52483
+ content:
52484
+ application/problem+json:
52485
+ examples:
52486
+ BUDGET_EXHAUSTED:
52487
+ summary: BUDGET_EXHAUSTED
52488
+ value:
52489
+ code: BUDGET_EXHAUSTED
52490
+ correlationId: 018f0000-0000-7000-8000-000000000001
52491
+ detail: See the operation contract.
52492
+ errors: []
52493
+ retryable: false
52494
+ schemaId: urn:gala:schema:problem:2.0.0
52495
+ schemaVersion: 2.0.0
52496
+ status: 503
52497
+ title: BUDGET_EXHAUSTED
52498
+ type: urn:gala:problem:budget-exhausted
52499
+ CAPABILITY_UNAVAILABLE:
52500
+ summary: CAPABILITY_UNAVAILABLE
52501
+ value:
52502
+ code: CAPABILITY_UNAVAILABLE
52503
+ correlationId: 018f0000-0000-7000-8000-000000000001
52504
+ detail: See the operation contract.
52505
+ errors: []
52506
+ retryable: false
52507
+ schemaId: urn:gala:schema:problem:2.0.0
52508
+ schemaVersion: 2.0.0
52509
+ status: 503
52510
+ title: CAPABILITY_UNAVAILABLE
52511
+ type: urn:gala:problem:capability-unavailable
52512
+ PROVIDER_UNAVAILABLE:
52513
+ summary: PROVIDER_UNAVAILABLE
52514
+ value:
52515
+ code: PROVIDER_UNAVAILABLE
52516
+ correlationId: 018f0000-0000-7000-8000-000000000001
52517
+ detail: See the operation contract.
52518
+ errors: []
52519
+ retryable: true
52520
+ schemaId: urn:gala:schema:problem:2.0.0
52521
+ schemaVersion: 2.0.0
52522
+ status: 503
52523
+ title: PROVIDER_UNAVAILABLE
52524
+ type: urn:gala:problem:provider-unavailable
52525
+ schema:
52526
+ $ref: "#/components/schemas/Problem"
52527
+ description: BUDGET_EXHAUSTED, CAPABILITY_UNAVAILABLE, PROVIDER_UNAVAILABLE
52528
+ headers:
52529
+ Cache-Control:
52530
+ $ref: "#/components/headers/CacheControlNoStore"
52531
+ X-Correlation-Id:
52532
+ $ref: "#/components/headers/XCorrelationId"
52533
+ x-gala-problem-codes:
52534
+ - BUDGET_EXHAUSTED
52535
+ - CAPABILITY_UNAVAILABLE
52536
+ - PROVIDER_UNAVAILABLE
52537
+ security:
52538
+ - browserSession: []
52539
+ summary: finish an Interview and write the draft
52540
+ tags:
52541
+ - interview
52542
+ x-gala-activation-gate: MVP
52543
+ x-gala-activation-guards:
52544
+ - Interview enabled for this deployment and publication
52545
+ x-gala-capability-key: publication.source.write
52546
+ x-gala-concurrency: interview-version
52547
+ x-gala-conditional-capabilities: []
52548
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
52549
+ x-gala-nullability: required-and-nullable-are-explicit
52550
+ x-gala-purpose: finish an Interview and write the draft
52551
+ x-gala-reachable-problems:
52552
+ - AUTHENTICATION_REQUIRED
52553
+ - AUTHORIZATION_DENIED
52554
+ - BUDGET_EXHAUSTED
52555
+ - CAPABILITY_UNAVAILABLE
52556
+ - COMMAND_REPLAY_CONFLICT
52557
+ - INTERVIEW_STATE_CONFLICT
52558
+ - INTERVIEW_TOO_THIN
52559
+ - PROVIDER_UNAVAILABLE
52560
+ - RESOURCE_NOT_FOUND
52561
+ - TRANSFER_PENDING
52562
+ - VALIDATION_FAILED
52563
+ x-gala-replay-identity: idempotency-key
52564
+ x-gala-state-guards:
52565
+ - NONE
52566
+ x-gala-success-category: async
52567
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
52568
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:start:
52569
+ post:
52570
+ description: |
52571
+ Reserves one unit of the organization's monthly allowance and asks the first question. Only from `CAPTURED`. `429 QUOTA_EXHAUSTED` with `Retry-After` when no unit is left this period; `503 BUDGET_EXHAUSTED` when the platform's monthly spend cap is reached; `503 PROVIDER_UNAVAILABLE` when the question could not be asked (nothing is stored and no unit is used; retry).
52572
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdStart
52573
+ parameters:
52574
+ - $ref: "#/components/parameters/XCorrelationId"
52575
+ - example: 018f0000-0000-7000-8000-000000000001
52576
+ in: path
52577
+ name: organizationId
52578
+ required: true
52579
+ schema:
52580
+ format: uuid
52581
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52582
+ type: string
52583
+ - example: 018f0000-0000-7000-8000-000000000001
52584
+ in: path
52585
+ name: publicationId
52586
+ required: true
52587
+ schema:
52588
+ format: uuid
52589
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52590
+ type: string
52591
+ - example: 018f0000-0000-7000-8000-000000000001
52592
+ in: path
52593
+ name: interviewId
52594
+ required: true
52595
+ schema:
52596
+ format: uuid
52597
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52598
+ type: string
52599
+ - $ref: "#/components/parameters/IdempotencyKey"
52600
+ - $ref: "#/components/parameters/XCsrfToken"
52601
+ responses:
52602
+ "200":
52603
+ content:
52604
+ application/json:
52605
+ examples:
52606
+ nominal:
52607
+ summary: Nominal successful response
52608
+ value:
52609
+ capture:
52610
+ kind: NOTE
52611
+ text: We cut our onboarding from nine steps to four and signups doubled.
52612
+ createdAt: "2026-11-04T12:00:00.000Z"
52613
+ expiresAt: "2026-11-11T12:00:00.000Z"
52614
+ interviewId: 018f0000-0000-7000-8000-000000000001
52615
+ organizationId: 018f0000-0000-7000-8000-000000000003
52616
+ progress:
52617
+ beliefDone: false
52618
+ canFinish: false
52619
+ details: 1
52620
+ detailsTarget: 5
52621
+ phase: OWNED
52622
+ skepticRounds: 0
52623
+ publicationId: 018f0000-0000-7000-8000-000000000002
52624
+ startedAt: "2026-11-04T12:00:00.000Z"
52625
+ state: INTERVIEWING
52626
+ turns:
52627
+ - at: "2026-11-04T12:00:00.000Z"
52628
+ kind: QUESTION
52629
+ role: INTERVIEWER
52630
+ seq: 1
52631
+ text: What did you cut first, and what did you expect to happen?
52632
+ updatedAt: "2026-11-04T12:00:00.000Z"
52633
+ schema:
52634
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdStartResponse"
52635
+ description: start an Interview succeeded
52636
+ headers:
52637
+ Cache-Control:
52638
+ $ref: "#/components/headers/CacheControlNoStore"
52639
+ X-Correlation-Id:
52640
+ $ref: "#/components/headers/XCorrelationId"
52641
+ "400":
52642
+ content:
52643
+ application/problem+json:
52644
+ examples:
52645
+ VALIDATION_FAILED:
52646
+ summary: VALIDATION_FAILED
52647
+ value:
52648
+ code: VALIDATION_FAILED
52649
+ correlationId: 018f0000-0000-7000-8000-000000000001
52650
+ detail: See the operation contract.
52651
+ errors: []
52652
+ retryable: false
52653
+ schemaId: urn:gala:schema:problem:2.0.0
52654
+ schemaVersion: 2.0.0
52655
+ status: 400
52656
+ title: VALIDATION_FAILED
52657
+ type: urn:gala:problem:validation-failed
52658
+ schema:
52659
+ $ref: "#/components/schemas/Problem"
52660
+ description: VALIDATION_FAILED
52661
+ headers:
52662
+ Cache-Control:
52663
+ $ref: "#/components/headers/CacheControlNoStore"
52664
+ X-Correlation-Id:
52665
+ $ref: "#/components/headers/XCorrelationId"
52666
+ x-gala-problem-codes:
52667
+ - VALIDATION_FAILED
52668
+ "401":
52669
+ content:
52670
+ application/problem+json:
52671
+ examples:
52672
+ AUTHENTICATION_REQUIRED:
52673
+ summary: AUTHENTICATION_REQUIRED
52674
+ value:
52675
+ code: AUTHENTICATION_REQUIRED
52676
+ correlationId: 018f0000-0000-7000-8000-000000000001
52677
+ detail: See the operation contract.
52678
+ errors: []
52679
+ retryable: false
52680
+ schemaId: urn:gala:schema:problem:2.0.0
52681
+ schemaVersion: 2.0.0
52682
+ status: 401
52683
+ title: AUTHENTICATION_REQUIRED
52684
+ type: urn:gala:problem:authentication-required
52685
+ schema:
52686
+ $ref: "#/components/schemas/Problem"
52687
+ description: AUTHENTICATION_REQUIRED
52688
+ headers:
52689
+ Cache-Control:
52690
+ $ref: "#/components/headers/CacheControlNoStore"
52691
+ X-Correlation-Id:
52692
+ $ref: "#/components/headers/XCorrelationId"
52693
+ x-gala-problem-codes:
52694
+ - AUTHENTICATION_REQUIRED
52695
+ "403":
52696
+ content:
52697
+ application/problem+json:
52698
+ examples:
52699
+ AUTHORIZATION_DENIED:
52700
+ summary: AUTHORIZATION_DENIED
52701
+ value:
52702
+ code: AUTHORIZATION_DENIED
52703
+ correlationId: 018f0000-0000-7000-8000-000000000001
52704
+ detail: See the operation contract.
52705
+ errors: []
52706
+ retryable: false
52707
+ schemaId: urn:gala:schema:problem:2.0.0
52708
+ schemaVersion: 2.0.0
52709
+ status: 403
52710
+ title: AUTHORIZATION_DENIED
52711
+ type: urn:gala:problem:authorization-denied
52712
+ schema:
52713
+ $ref: "#/components/schemas/Problem"
52714
+ description: AUTHORIZATION_DENIED
52715
+ headers:
52716
+ Cache-Control:
52717
+ $ref: "#/components/headers/CacheControlNoStore"
52718
+ X-Correlation-Id:
52719
+ $ref: "#/components/headers/XCorrelationId"
52720
+ x-gala-problem-codes:
52721
+ - AUTHORIZATION_DENIED
52722
+ "404":
52723
+ content:
52724
+ application/problem+json:
52725
+ examples:
52726
+ RESOURCE_NOT_FOUND:
52727
+ summary: RESOURCE_NOT_FOUND
52728
+ value:
52729
+ code: RESOURCE_NOT_FOUND
52730
+ correlationId: 018f0000-0000-7000-8000-000000000001
52731
+ detail: See the operation contract.
52732
+ errors: []
52733
+ retryable: false
52734
+ schemaId: urn:gala:schema:problem:2.0.0
52735
+ schemaVersion: 2.0.0
52736
+ status: 404
52737
+ title: RESOURCE_NOT_FOUND
52738
+ type: urn:gala:problem:resource-not-found
52739
+ schema:
52740
+ $ref: "#/components/schemas/Problem"
52741
+ description: RESOURCE_NOT_FOUND
52742
+ headers:
52743
+ Cache-Control:
52744
+ $ref: "#/components/headers/CacheControlNoStore"
52745
+ X-Correlation-Id:
52746
+ $ref: "#/components/headers/XCorrelationId"
52747
+ x-gala-problem-codes:
52748
+ - RESOURCE_NOT_FOUND
52749
+ "409":
52750
+ content:
52751
+ application/problem+json:
52752
+ examples:
52753
+ COMMAND_REPLAY_CONFLICT:
52754
+ summary: COMMAND_REPLAY_CONFLICT
52755
+ value:
52756
+ code: COMMAND_REPLAY_CONFLICT
52757
+ correlationId: 018f0000-0000-7000-8000-000000000001
52758
+ detail: See the operation contract.
52759
+ errors: []
52760
+ retryable: false
52761
+ schemaId: urn:gala:schema:problem:2.0.0
52762
+ schemaVersion: 2.0.0
52763
+ status: 409
52764
+ title: COMMAND_REPLAY_CONFLICT
52765
+ type: urn:gala:problem:command-replay-conflict
52766
+ INTERVIEW_STATE_CONFLICT:
52767
+ summary: INTERVIEW_STATE_CONFLICT
52768
+ value:
52769
+ code: INTERVIEW_STATE_CONFLICT
52770
+ correlationId: 018f0000-0000-7000-8000-000000000001
52771
+ detail: See the operation contract.
52772
+ errors: []
52773
+ retryable: false
52774
+ schemaId: urn:gala:schema:problem:2.0.0
52775
+ schemaVersion: 2.0.0
52776
+ status: 409
52777
+ title: INTERVIEW_STATE_CONFLICT
52778
+ type: urn:gala:problem:interview-state-conflict
52779
+ PLAN_REQUIRED:
52780
+ summary: PLAN_REQUIRED
52781
+ value:
52782
+ code: PLAN_REQUIRED
52783
+ correlationId: 018f0000-0000-7000-8000-000000000001
52784
+ detail: See the operation contract.
52785
+ errors: []
52786
+ retryable: false
52787
+ schemaId: urn:gala:schema:problem:2.0.0
52788
+ schemaVersion: 2.0.0
52789
+ status: 409
52790
+ title: PLAN_REQUIRED
52791
+ type: urn:gala:problem:plan-required
52792
+ TRANSFER_PENDING:
52793
+ summary: TRANSFER_PENDING
52794
+ value:
52795
+ code: TRANSFER_PENDING
52796
+ correlationId: 018f0000-0000-7000-8000-000000000001
52797
+ detail: See the operation contract.
52798
+ errors: []
52799
+ retryable: false
52800
+ schemaId: urn:gala:schema:problem:2.0.0
52801
+ schemaVersion: 2.0.0
52802
+ status: 409
52803
+ title: TRANSFER_PENDING
52804
+ type: urn:gala:problem:transfer-pending
52805
+ schema:
52806
+ $ref: "#/components/schemas/Problem"
52807
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, PLAN_REQUIRED, TRANSFER_PENDING
52808
+ headers:
52809
+ Cache-Control:
52810
+ $ref: "#/components/headers/CacheControlNoStore"
52811
+ X-Correlation-Id:
52812
+ $ref: "#/components/headers/XCorrelationId"
52813
+ x-gala-problem-codes:
52814
+ - COMMAND_REPLAY_CONFLICT
52815
+ - INTERVIEW_STATE_CONFLICT
52816
+ - PLAN_REQUIRED
52817
+ - TRANSFER_PENDING
52818
+ "429":
52819
+ content:
52820
+ application/problem+json:
52821
+ examples:
52822
+ QUOTA_EXHAUSTED:
52823
+ summary: QUOTA_EXHAUSTED
52824
+ value:
52825
+ code: QUOTA_EXHAUSTED
52826
+ correlationId: 018f0000-0000-7000-8000-000000000001
52827
+ detail: See the operation contract.
52828
+ errors: []
52829
+ retryable: false
52830
+ schemaId: urn:gala:schema:problem:2.0.0
52831
+ schemaVersion: 2.0.0
52832
+ status: 429
52833
+ title: QUOTA_EXHAUSTED
52834
+ type: urn:gala:problem:quota-exhausted
52835
+ RATE_LIMITED:
52836
+ summary: RATE_LIMITED
52837
+ value:
52838
+ code: RATE_LIMITED
52839
+ correlationId: 018f0000-0000-7000-8000-000000000001
52840
+ detail: See the operation contract.
52841
+ errors: []
52842
+ retryable: true
52843
+ schemaId: urn:gala:schema:problem:2.0.0
52844
+ schemaVersion: 2.0.0
52845
+ status: 429
52846
+ title: RATE_LIMITED
52847
+ type: urn:gala:problem:rate-limited
52848
+ schema:
52849
+ $ref: "#/components/schemas/Problem"
52850
+ description: QUOTA_EXHAUSTED, RATE_LIMITED
52851
+ headers:
52852
+ Cache-Control:
52853
+ $ref: "#/components/headers/CacheControlNoStore"
52854
+ Retry-After:
52855
+ $ref: "#/components/headers/RetryAfter"
52856
+ X-Correlation-Id:
52857
+ $ref: "#/components/headers/XCorrelationId"
52858
+ x-gala-problem-codes:
52859
+ - QUOTA_EXHAUSTED
52860
+ - RATE_LIMITED
52861
+ "503":
52862
+ content:
52863
+ application/problem+json:
52864
+ examples:
52865
+ BUDGET_EXHAUSTED:
52866
+ summary: BUDGET_EXHAUSTED
52867
+ value:
52868
+ code: BUDGET_EXHAUSTED
52869
+ correlationId: 018f0000-0000-7000-8000-000000000001
52870
+ detail: See the operation contract.
52871
+ errors: []
52872
+ retryable: false
52873
+ schemaId: urn:gala:schema:problem:2.0.0
52874
+ schemaVersion: 2.0.0
52875
+ status: 503
52876
+ title: BUDGET_EXHAUSTED
52877
+ type: urn:gala:problem:budget-exhausted
52878
+ CAPABILITY_UNAVAILABLE:
52879
+ summary: CAPABILITY_UNAVAILABLE
52880
+ value:
52881
+ code: CAPABILITY_UNAVAILABLE
52882
+ correlationId: 018f0000-0000-7000-8000-000000000001
52883
+ detail: See the operation contract.
52884
+ errors: []
52885
+ retryable: false
52886
+ schemaId: urn:gala:schema:problem:2.0.0
52887
+ schemaVersion: 2.0.0
52888
+ status: 503
52889
+ title: CAPABILITY_UNAVAILABLE
52890
+ type: urn:gala:problem:capability-unavailable
52891
+ PROVIDER_UNAVAILABLE:
52892
+ summary: PROVIDER_UNAVAILABLE
52893
+ value:
52894
+ code: PROVIDER_UNAVAILABLE
52895
+ correlationId: 018f0000-0000-7000-8000-000000000001
52896
+ detail: See the operation contract.
52897
+ errors: []
52898
+ retryable: true
52899
+ schemaId: urn:gala:schema:problem:2.0.0
52900
+ schemaVersion: 2.0.0
52901
+ status: 503
52902
+ title: PROVIDER_UNAVAILABLE
52903
+ type: urn:gala:problem:provider-unavailable
52904
+ schema:
52905
+ $ref: "#/components/schemas/Problem"
52906
+ description: BUDGET_EXHAUSTED, CAPABILITY_UNAVAILABLE, PROVIDER_UNAVAILABLE
52907
+ headers:
52908
+ Cache-Control:
52909
+ $ref: "#/components/headers/CacheControlNoStore"
52910
+ X-Correlation-Id:
52911
+ $ref: "#/components/headers/XCorrelationId"
52912
+ x-gala-problem-codes:
52913
+ - BUDGET_EXHAUSTED
52914
+ - CAPABILITY_UNAVAILABLE
52915
+ - PROVIDER_UNAVAILABLE
52916
+ security:
52917
+ - browserSession: []
52918
+ summary: start an Interview
52919
+ tags:
52920
+ - interview
52921
+ x-gala-activation-gate: MVP
52922
+ x-gala-activation-guards:
52923
+ - Interview enabled for this deployment and publication
52924
+ x-gala-capability-key: publication.source.write
52925
+ x-gala-concurrency: interview-version
52926
+ x-gala-conditional-capabilities: []
52927
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
52928
+ x-gala-nullability: required-and-nullable-are-explicit
52929
+ x-gala-purpose: start an Interview
52930
+ x-gala-reachable-problems:
52931
+ - AUTHENTICATION_REQUIRED
52932
+ - AUTHORIZATION_DENIED
52933
+ - BUDGET_EXHAUSTED
52934
+ - CAPABILITY_UNAVAILABLE
52935
+ - COMMAND_REPLAY_CONFLICT
52936
+ - INTERVIEW_STATE_CONFLICT
52937
+ - PLAN_REQUIRED
52938
+ - PROVIDER_UNAVAILABLE
52939
+ - QUOTA_EXHAUSTED
52940
+ - RATE_LIMITED
52941
+ - RESOURCE_NOT_FOUND
52942
+ - TRANSFER_PENDING
52943
+ - VALIDATION_FAILED
52944
+ x-gala-replay-identity: idempotency-key
52945
+ x-gala-state-guards:
52946
+ - NONE
52947
+ x-gala-success-category: protocol
52948
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
52949
+ /v2/organizations/{organizationId}/publications/{publicationId}/listen-settings:
52950
+ get:
52951
+ description: Reads the `listen` member of `gala/publication.json` at the linked repository's current main branch head. A publication with no `listen` member reads `enabled` false. `planAllows` is the API's own status and is never written to the repository.
52952
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettings
52953
+ parameters:
52954
+ - $ref: "#/components/parameters/XCorrelationId"
52955
+ - example: 018f0000-0000-7000-8000-000000000001
52956
+ in: path
52957
+ name: organizationId
52958
+ required: true
52959
+ schema:
52960
+ format: uuid
52961
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52962
+ type: string
52963
+ - example: 018f0000-0000-7000-8000-000000000001
52964
+ in: path
52965
+ name: publicationId
52966
+ required: true
52967
+ schema:
52968
+ format: uuid
52969
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52970
+ type: string
52971
+ responses:
52972
+ "200":
52973
+ content:
52974
+ application/json:
52975
+ examples:
52976
+ nominal:
52977
+ summary: Nominal successful response
52978
+ value:
52979
+ enabled: false
52980
+ openChange: null
52981
+ planAllows: false
52982
+ setUp: true
52983
+ schema:
52984
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsResponse"
52985
+ description: read this publication's listen settings at the main branch head succeeded
52986
+ headers:
52987
+ Cache-Control:
52988
+ $ref: "#/components/headers/CacheControlNoStore"
52989
+ X-Correlation-Id:
52990
+ $ref: "#/components/headers/XCorrelationId"
52991
+ "400":
52992
+ $ref: "#/components/responses/ValidationFailed"
52993
+ "401":
52994
+ content:
52995
+ application/problem+json:
52996
+ examples:
52997
+ AUTHENTICATION_REQUIRED:
52998
+ summary: AUTHENTICATION_REQUIRED
52999
+ value:
53000
+ code: AUTHENTICATION_REQUIRED
53001
+ correlationId: 018f0000-0000-7000-8000-000000000001
53002
+ detail: See the operation contract.
53003
+ errors: []
53004
+ retryable: false
53005
+ schemaId: urn:gala:schema:problem:2.0.0
53006
+ schemaVersion: 2.0.0
53007
+ status: 401
53008
+ title: AUTHENTICATION_REQUIRED
53009
+ type: urn:gala:problem:authentication-required
53010
+ schema:
53011
+ $ref: "#/components/schemas/Problem"
53012
+ description: AUTHENTICATION_REQUIRED
53013
+ headers:
53014
+ Cache-Control:
53015
+ $ref: "#/components/headers/CacheControlNoStore"
53016
+ X-Correlation-Id:
53017
+ $ref: "#/components/headers/XCorrelationId"
53018
+ x-gala-problem-codes:
53019
+ - AUTHENTICATION_REQUIRED
53020
+ "403":
53021
+ $ref: "#/components/responses/AuthorizationDenied"
53022
+ "404":
53023
+ $ref: "#/components/responses/ResourceNotFound"
53024
+ "429":
53025
+ content:
53026
+ application/problem+json:
53027
+ examples:
53028
+ RATE_LIMITED:
53029
+ summary: RATE_LIMITED
53030
+ value:
53031
+ code: RATE_LIMITED
53032
+ correlationId: 018f0000-0000-7000-8000-000000000001
53033
+ detail: See the operation contract.
53034
+ errors: []
53035
+ retryable: true
53036
+ schemaId: urn:gala:schema:problem:2.0.0
53037
+ schemaVersion: 2.0.0
53038
+ status: 429
53039
+ title: RATE_LIMITED
53040
+ type: urn:gala:problem:rate-limited
53041
+ schema:
53042
+ $ref: "#/components/schemas/Problem"
53043
+ description: RATE_LIMITED
53044
+ headers:
53045
+ Cache-Control:
53046
+ $ref: "#/components/headers/CacheControlNoStore"
53047
+ Retry-After:
53048
+ $ref: "#/components/headers/RetryAfter"
53049
+ X-Correlation-Id:
53050
+ $ref: "#/components/headers/XCorrelationId"
53051
+ x-gala-problem-codes:
53052
+ - RATE_LIMITED
53053
+ "503":
53054
+ content:
53055
+ application/problem+json:
53056
+ examples:
53057
+ CAPABILITY_UNAVAILABLE:
53058
+ summary: CAPABILITY_UNAVAILABLE
53059
+ value:
53060
+ code: CAPABILITY_UNAVAILABLE
53061
+ correlationId: 018f0000-0000-7000-8000-000000000001
53062
+ detail: See the operation contract.
53063
+ errors: []
53064
+ retryable: false
53065
+ schemaId: urn:gala:schema:problem:2.0.0
53066
+ schemaVersion: 2.0.0
53067
+ status: 503
53068
+ title: CAPABILITY_UNAVAILABLE
53069
+ type: urn:gala:problem:capability-unavailable
53070
+ DEPENDENCY_UNAVAILABLE:
53071
+ summary: DEPENDENCY_UNAVAILABLE
53072
+ value:
53073
+ code: DEPENDENCY_UNAVAILABLE
53074
+ correlationId: 018f0000-0000-7000-8000-000000000001
53075
+ detail: See the operation contract.
53076
+ errors: []
53077
+ retryable: true
53078
+ schemaId: urn:gala:schema:problem:2.0.0
53079
+ schemaVersion: 2.0.0
53080
+ status: 503
53081
+ title: DEPENDENCY_UNAVAILABLE
53082
+ type: urn:gala:problem:dependency-unavailable
53083
+ schema:
53084
+ $ref: "#/components/schemas/Problem"
53085
+ description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
53086
+ headers:
53087
+ Cache-Control:
53088
+ $ref: "#/components/headers/CacheControlNoStore"
53089
+ X-Correlation-Id:
53090
+ $ref: "#/components/headers/XCorrelationId"
53091
+ x-gala-problem-codes:
53092
+ - CAPABILITY_UNAVAILABLE
53093
+ - DEPENDENCY_UNAVAILABLE
53094
+ security:
53095
+ - browserSession: []
53096
+ summary: read this publication's listen settings at the main branch head
53097
+ tags:
53098
+ - interaction-settings
53099
+ x-gala-activation-gate: MVP
53100
+ x-gala-activation-guards:
53101
+ - Active repository binding and configured GitHub App identity capability
53102
+ x-gala-capability-key: publication.view
53103
+ x-gala-concurrency: binding-epoch
53104
+ x-gala-conditional-capabilities: []
53105
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
53106
+ x-gala-nullability: required-and-nullable-are-explicit
53107
+ x-gala-purpose: read this publication's listen settings at the main branch head
53108
+ x-gala-reachable-problems:
53109
+ - AUTHENTICATION_REQUIRED
53110
+ - AUTHORIZATION_DENIED
53111
+ - CAPABILITY_UNAVAILABLE
53112
+ - DEPENDENCY_UNAVAILABLE
53113
+ - RATE_LIMITED
53114
+ - RESOURCE_NOT_FOUND
53115
+ - VALIDATION_FAILED
53116
+ x-gala-replay-identity: safe-query
53117
+ x-gala-state-guards:
53118
+ - NONE
53119
+ x-gala-success-category: query
53120
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
53121
+ put:
53122
+ description: The server writes the `listen` member of `gala/publication.json` as one repository change, the way `sharing-settings` writes the `sharing` member. Publishing the change uses the normal publish flow. `change` has the shape the theme-selection write returns. Turning `enabled` on while the plan does not include Listen is `409 PLAN_REQUIRED` pointed at `/enabled`. Saving it off, or unchanged, is always allowed.
53123
+ operationId: putOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettings
49475
53124
  parameters:
49476
53125
  - $ref: "#/components/parameters/XCorrelationId"
49477
53126
  - example: 018f0000-0000-7000-8000-000000000001
@@ -53678,6 +57327,18 @@ paths:
53678
57327
  `remedy` without parsing `detail`. The server first tries to fix the
53679
57328
  mismatch itself by including the pending "Site address" change in the
53680
57329
  publish; the problem is returned only when it cannot.
57330
+
57331
+ SCHEMA-3.35.0: `409 CANONICAL_BASE_MISMATCH` also carries the optional
57332
+ member `changeIds`: an array of change ids (the same format as this
57333
+ request's `changeIds`), in request order, naming the waiting changes
57334
+ whose saved copy of `gala/publication.json` carries a different site
57335
+ address than the one the site is served at. When main already carries
57336
+ the right address the server rewrites those changes' address itself
57337
+ (same change id) and publishes; the problem is returned with
57338
+ `changeIds` only when that rewrite could not be done right now
57339
+ (publish again in a moment) or when main itself still carries the old
57340
+ address (then the server includes or proposes the Site address change
57341
+ as before).
53681
57342
  operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdPublishes
53682
57343
  parameters:
53683
57344
  - $ref: "#/components/parameters/XCorrelationId"
@@ -53862,6 +57523,8 @@ paths:
53862
57523
  CANONICAL_BASE_MISMATCH:
53863
57524
  summary: CANONICAL_BASE_MISMATCH
53864
57525
  value:
57526
+ changeIds:
57527
+ - 018f0000-0000-7000-8000-000000000001
53865
57528
  code: CANONICAL_BASE_MISMATCH
53866
57529
  correlationId: 018f0000-0000-7000-8000-000000000001
53867
57530
  detail: See the operation contract.
@@ -56008,7 +59671,376 @@ paths:
56008
59671
  type: urn:gala:problem:authentication-required
56009
59672
  schema:
56010
59673
  $ref: "#/components/schemas/Problem"
56011
- description: AUTHENTICATION_REQUIRED
59674
+ description: AUTHENTICATION_REQUIRED
59675
+ headers:
59676
+ Cache-Control:
59677
+ $ref: "#/components/headers/CacheControlNoStore"
59678
+ X-Correlation-Id:
59679
+ $ref: "#/components/headers/XCorrelationId"
59680
+ x-gala-problem-codes:
59681
+ - AUTHENTICATION_REQUIRED
59682
+ "403":
59683
+ content:
59684
+ application/problem+json:
59685
+ examples:
59686
+ AUTHORIZATION_DENIED:
59687
+ summary: AUTHORIZATION_DENIED
59688
+ value:
59689
+ code: AUTHORIZATION_DENIED
59690
+ correlationId: 018f0000-0000-7000-8000-000000000001
59691
+ detail: See the operation contract.
59692
+ errors: []
59693
+ retryable: false
59694
+ schemaId: urn:gala:schema:problem:2.0.0
59695
+ schemaVersion: 2.0.0
59696
+ status: 403
59697
+ title: AUTHORIZATION_DENIED
59698
+ type: urn:gala:problem:authorization-denied
59699
+ schema:
59700
+ $ref: "#/components/schemas/Problem"
59701
+ description: AUTHORIZATION_DENIED
59702
+ headers:
59703
+ Cache-Control:
59704
+ $ref: "#/components/headers/CacheControlNoStore"
59705
+ X-Correlation-Id:
59706
+ $ref: "#/components/headers/XCorrelationId"
59707
+ x-gala-problem-codes:
59708
+ - AUTHORIZATION_DENIED
59709
+ "404":
59710
+ content:
59711
+ application/problem+json:
59712
+ examples:
59713
+ RESOURCE_NOT_FOUND:
59714
+ summary: RESOURCE_NOT_FOUND
59715
+ value:
59716
+ code: RESOURCE_NOT_FOUND
59717
+ correlationId: 018f0000-0000-7000-8000-000000000001
59718
+ detail: See the operation contract.
59719
+ errors: []
59720
+ retryable: false
59721
+ schemaId: urn:gala:schema:problem:2.0.0
59722
+ schemaVersion: 2.0.0
59723
+ status: 404
59724
+ title: RESOURCE_NOT_FOUND
59725
+ type: urn:gala:problem:resource-not-found
59726
+ schema:
59727
+ $ref: "#/components/schemas/Problem"
59728
+ description: RESOURCE_NOT_FOUND
59729
+ headers:
59730
+ Cache-Control:
59731
+ $ref: "#/components/headers/CacheControlNoStore"
59732
+ X-Correlation-Id:
59733
+ $ref: "#/components/headers/XCorrelationId"
59734
+ x-gala-problem-codes:
59735
+ - RESOURCE_NOT_FOUND
59736
+ "409":
59737
+ content:
59738
+ application/problem+json:
59739
+ examples:
59740
+ COMMAND_REPLAY_CONFLICT:
59741
+ summary: COMMAND_REPLAY_CONFLICT
59742
+ value:
59743
+ code: COMMAND_REPLAY_CONFLICT
59744
+ correlationId: 018f0000-0000-7000-8000-000000000001
59745
+ detail: See the operation contract.
59746
+ errors: []
59747
+ retryable: false
59748
+ schemaId: urn:gala:schema:problem:2.0.0
59749
+ schemaVersion: 2.0.0
59750
+ status: 409
59751
+ title: COMMAND_REPLAY_CONFLICT
59752
+ type: urn:gala:problem:command-replay-conflict
59753
+ INVALID_SOURCE_STATE:
59754
+ summary: INVALID_SOURCE_STATE
59755
+ value:
59756
+ code: INVALID_SOURCE_STATE
59757
+ correlationId: 018f0000-0000-7000-8000-000000000001
59758
+ detail: "One or more paths conflict at file level between changeId and the current main head: nothing was written and no change was created. Read each named path through the document or asset read at baseRevision (Before), proposedRevision (Yours) and X-Gala-Current-Head (Theirs), merge in the browser, and submit a new content-changes:plan. This code is also used, with an empty errors[], when the change is in flight, failed, cancelled or already published. See the operation contract."
59759
+ errors:
59760
+ - code: CONTENT_CONFLICT
59761
+ pointer: /documents/content~1articles~1example.md
59762
+ - code: CONTENT_CONFLICT
59763
+ pointer: /assets/example.png
59764
+ retryable: false
59765
+ schemaId: urn:gala:schema:problem:2.0.0
59766
+ schemaVersion: 2.0.0
59767
+ status: 409
59768
+ title: INVALID_SOURCE_STATE
59769
+ type: urn:gala:problem:invalid-source-state
59770
+ TRANSFER_PENDING:
59771
+ summary: TRANSFER_PENDING
59772
+ value:
59773
+ code: TRANSFER_PENDING
59774
+ correlationId: 018f0000-0000-7000-8000-000000000001
59775
+ detail: See the operation contract.
59776
+ errors: []
59777
+ retryable: false
59778
+ schemaId: urn:gala:schema:problem:2.0.0
59779
+ schemaVersion: 2.0.0
59780
+ status: 409
59781
+ title: TRANSFER_PENDING
59782
+ type: urn:gala:problem:transfer-pending
59783
+ schema:
59784
+ $ref: "#/components/schemas/Problem"
59785
+ description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, TRANSFER_PENDING
59786
+ headers:
59787
+ Cache-Control:
59788
+ $ref: "#/components/headers/CacheControlNoStore"
59789
+ X-Correlation-Id:
59790
+ $ref: "#/components/headers/XCorrelationId"
59791
+ X-Gala-Current-Head:
59792
+ $ref: "#/components/headers/XGalaCurrentHead"
59793
+ x-gala-problem-codes:
59794
+ - COMMAND_REPLAY_CONFLICT
59795
+ - INVALID_SOURCE_STATE
59796
+ - TRANSFER_PENDING
59797
+ "429":
59798
+ content:
59799
+ application/problem+json:
59800
+ examples:
59801
+ RATE_LIMITED:
59802
+ summary: RATE_LIMITED
59803
+ value:
59804
+ code: RATE_LIMITED
59805
+ correlationId: 018f0000-0000-7000-8000-000000000001
59806
+ detail: See the operation contract.
59807
+ errors: []
59808
+ retryable: true
59809
+ schemaId: urn:gala:schema:problem:2.0.0
59810
+ schemaVersion: 2.0.0
59811
+ status: 429
59812
+ title: RATE_LIMITED
59813
+ type: urn:gala:problem:rate-limited
59814
+ schema:
59815
+ $ref: "#/components/schemas/Problem"
59816
+ description: RATE_LIMITED
59817
+ headers:
59818
+ Cache-Control:
59819
+ $ref: "#/components/headers/CacheControlNoStore"
59820
+ Retry-After:
59821
+ $ref: "#/components/headers/RetryAfter"
59822
+ X-Correlation-Id:
59823
+ $ref: "#/components/headers/XCorrelationId"
59824
+ x-gala-problem-codes:
59825
+ - RATE_LIMITED
59826
+ "503":
59827
+ content:
59828
+ application/problem+json:
59829
+ examples:
59830
+ CAPABILITY_UNAVAILABLE:
59831
+ summary: CAPABILITY_UNAVAILABLE
59832
+ value:
59833
+ code: CAPABILITY_UNAVAILABLE
59834
+ correlationId: 018f0000-0000-7000-8000-000000000001
59835
+ detail: See the operation contract.
59836
+ errors: []
59837
+ retryable: false
59838
+ schemaId: urn:gala:schema:problem:2.0.0
59839
+ schemaVersion: 2.0.0
59840
+ status: 503
59841
+ title: CAPABILITY_UNAVAILABLE
59842
+ type: urn:gala:problem:capability-unavailable
59843
+ DEPENDENCY_UNAVAILABLE:
59844
+ summary: DEPENDENCY_UNAVAILABLE
59845
+ value:
59846
+ code: DEPENDENCY_UNAVAILABLE
59847
+ correlationId: 018f0000-0000-7000-8000-000000000001
59848
+ detail: See the operation contract.
59849
+ errors: []
59850
+ retryable: true
59851
+ schemaId: urn:gala:schema:problem:2.0.0
59852
+ schemaVersion: 2.0.0
59853
+ status: 503
59854
+ title: DEPENDENCY_UNAVAILABLE
59855
+ type: urn:gala:problem:dependency-unavailable
59856
+ schema:
59857
+ $ref: "#/components/schemas/Problem"
59858
+ description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
59859
+ headers:
59860
+ Cache-Control:
59861
+ $ref: "#/components/headers/CacheControlNoStore"
59862
+ X-Correlation-Id:
59863
+ $ref: "#/components/headers/XCorrelationId"
59864
+ x-gala-problem-codes:
59865
+ - CAPABILITY_UNAVAILABLE
59866
+ - DEPENDENCY_UNAVAILABLE
59867
+ security:
59868
+ - browserSession: []
59869
+ summary: plan a new change merging a proposed change onto the current main head
59870
+ tags:
59871
+ - organizations
59872
+ x-gala-activation-gate: MVP
59873
+ x-gala-activation-guards:
59874
+ - Active binding epoch and admitted author-source contract
59875
+ x-gala-capability-key: publication.source.write
59876
+ x-gala-concurrency: binding-epoch
59877
+ x-gala-conditional-capabilities: []
59878
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
59879
+ x-gala-nullability: required-and-nullable-are-explicit
59880
+ x-gala-purpose: plan a new change merging a proposed change onto the current main head
59881
+ x-gala-reachable-problems:
59882
+ - AUTHENTICATION_REQUIRED
59883
+ - AUTHORIZATION_DENIED
59884
+ - CAPABILITY_UNAVAILABLE
59885
+ - COMMAND_REPLAY_CONFLICT
59886
+ - DEPENDENCY_UNAVAILABLE
59887
+ - INVALID_SOURCE_STATE
59888
+ - RATE_LIMITED
59889
+ - REQUEST_FIELD_UNKNOWN
59890
+ - RESOURCE_NOT_FOUND
59891
+ - TRANSFER_PENDING
59892
+ - VALIDATION_FAILED
59893
+ x-gala-replay-identity: idempotency-key
59894
+ x-gala-state-guards:
59895
+ - RepositoryChange:REQUESTED|PLANNED|AWAITING_CONFIRMATION|COMMITTED -> PLANNED (new change)
59896
+ x-gala-success-category: create
59897
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
59898
+ /v2/organizations/{organizationId}/publications/{publicationId}/repository-changes/{changeId}:confirm:
59899
+ post:
59900
+ description: |
59901
+ Confirm the persisted plan and enqueue creation of its candidate ref,
59902
+ commit and GitHub pull request. `expectedHead` and `diffDigest` are
59903
+ optional compatibility assertions: an omitted member is read from the
59904
+ persisted plan, while a supplied member must match it exactly.
59905
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdRepositoryChangesByChangeIdConfirm
59906
+ parameters:
59907
+ - $ref: "#/components/parameters/XCorrelationId"
59908
+ - example: 018f0000-0000-7000-8000-000000000001
59909
+ in: path
59910
+ name: organizationId
59911
+ required: true
59912
+ schema:
59913
+ format: uuid
59914
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
59915
+ type: string
59916
+ - example: 018f0000-0000-7000-8000-000000000001
59917
+ in: path
59918
+ name: publicationId
59919
+ required: true
59920
+ schema:
59921
+ format: uuid
59922
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
59923
+ type: string
59924
+ - example: 018f0000-0000-7000-8000-000000000001
59925
+ in: path
59926
+ name: changeId
59927
+ required: true
59928
+ schema:
59929
+ format: uuid
59930
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
59931
+ type: string
59932
+ - $ref: "#/components/parameters/IdempotencyKey"
59933
+ - $ref: "#/components/parameters/XCsrfToken"
59934
+ requestBody:
59935
+ content:
59936
+ application/json:
59937
+ examples:
59938
+ asserted:
59939
+ summary: Confirm while asserting the echoed plan facts
59940
+ value:
59941
+ diffDigest: sha256:0000000000000000000000000000000000000000000000000000000000000000
59942
+ expectedHead: sha1:0000000000000000000000000000000000000000
59943
+ nominal:
59944
+ summary: Confirm using the server-persisted plan facts
59945
+ value: {}
59946
+ schema:
59947
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdRepositoryChangesByChangeIdConfirmRequest"
59948
+ required: true
59949
+ responses:
59950
+ "202":
59951
+ content:
59952
+ application/json:
59953
+ examples:
59954
+ nominal:
59955
+ summary: Nominal successful response
59956
+ value:
59957
+ commandId: 018f0000-0000-7000-8000-000000000001
59958
+ operationId: 018f0000-0000-7000-8000-000000000001
59959
+ phase: accepted
59960
+ resourceVersion: 0
59961
+ statusUrl: /v2/organizations/018f0000-0000-7000-8000-000000000001/operations/018f0000-0000-7000-8000-000000000002
59962
+ schema:
59963
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdRepositoryChangesByChangeIdConfirmResponse"
59964
+ description: candidate ref, commit and GitHub pull-request creation was accepted
59965
+ headers:
59966
+ Cache-Control:
59967
+ $ref: "#/components/headers/CacheControlNoStore"
59968
+ X-Correlation-Id:
59969
+ $ref: "#/components/headers/XCorrelationId"
59970
+ "400":
59971
+ content:
59972
+ application/problem+json:
59973
+ examples:
59974
+ REQUEST_FIELD_UNKNOWN:
59975
+ summary: REQUEST_FIELD_UNKNOWN
59976
+ value:
59977
+ code: REQUEST_FIELD_UNKNOWN
59978
+ correlationId: 018f0000-0000-7000-8000-000000000001
59979
+ detail: See the operation contract.
59980
+ errors: []
59981
+ retryable: false
59982
+ schemaId: urn:gala:schema:problem:2.0.0
59983
+ schemaVersion: 2.0.0
59984
+ status: 400
59985
+ title: REQUEST_FIELD_UNKNOWN
59986
+ type: urn:gala:problem:request-field-unknown
59987
+ VALIDATION_FAILED:
59988
+ summary: VALIDATION_FAILED
59989
+ value:
59990
+ code: VALIDATION_FAILED
59991
+ correlationId: 018f0000-0000-7000-8000-000000000001
59992
+ detail: See the operation contract.
59993
+ errors: []
59994
+ retryable: false
59995
+ schemaId: urn:gala:schema:problem:2.0.0
59996
+ schemaVersion: 2.0.0
59997
+ status: 400
59998
+ title: VALIDATION_FAILED
59999
+ type: urn:gala:problem:validation-failed
60000
+ schema:
60001
+ $ref: "#/components/schemas/Problem"
60002
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
60003
+ headers:
60004
+ Cache-Control:
60005
+ $ref: "#/components/headers/CacheControlNoStore"
60006
+ X-Correlation-Id:
60007
+ $ref: "#/components/headers/XCorrelationId"
60008
+ x-gala-problem-codes:
60009
+ - REQUEST_FIELD_UNKNOWN
60010
+ - VALIDATION_FAILED
60011
+ "401":
60012
+ content:
60013
+ application/problem+json:
60014
+ examples:
60015
+ AUTHENTICATION_REQUIRED:
60016
+ summary: AUTHENTICATION_REQUIRED
60017
+ value:
60018
+ code: AUTHENTICATION_REQUIRED
60019
+ correlationId: 018f0000-0000-7000-8000-000000000001
60020
+ detail: See the operation contract.
60021
+ errors: []
60022
+ retryable: false
60023
+ schemaId: urn:gala:schema:problem:2.0.0
60024
+ schemaVersion: 2.0.0
60025
+ status: 401
60026
+ title: AUTHENTICATION_REQUIRED
60027
+ type: urn:gala:problem:authentication-required
60028
+ REAUTH_REQUIRED:
60029
+ summary: REAUTH_REQUIRED
60030
+ value:
60031
+ code: REAUTH_REQUIRED
60032
+ correlationId: 018f0000-0000-7000-8000-000000000001
60033
+ detail: See the operation contract.
60034
+ errors: []
60035
+ retryable: false
60036
+ schemaId: urn:gala:schema:problem:2.0.0
60037
+ schemaVersion: 2.0.0
60038
+ status: 401
60039
+ title: REAUTH_REQUIRED
60040
+ type: urn:gala:problem:reauth-required
60041
+ schema:
60042
+ $ref: "#/components/schemas/Problem"
60043
+ description: AUTHENTICATION_REQUIRED, REAUTH_REQUIRED
56012
60044
  headers:
56013
60045
  Cache-Control:
56014
60046
  $ref: "#/components/headers/CacheControlNoStore"
@@ -56016,6 +60048,7 @@ paths:
56016
60048
  $ref: "#/components/headers/XCorrelationId"
56017
60049
  x-gala-problem-codes:
56018
60050
  - AUTHENTICATION_REQUIRED
60051
+ - REAUTH_REQUIRED
56019
60052
  "403":
56020
60053
  content:
56021
60054
  application/problem+json:
@@ -56092,12 +60125,8 @@ paths:
56092
60125
  value:
56093
60126
  code: INVALID_SOURCE_STATE
56094
60127
  correlationId: 018f0000-0000-7000-8000-000000000001
56095
- detail: "One or more paths conflict at file level between changeId and the current main head: nothing was written and no change was created. Read each named path through the document or asset read at baseRevision (Before), proposedRevision (Yours) and X-Gala-Current-Head (Theirs), merge in the browser, and submit a new content-changes:plan. This code is also used, with an empty errors[], when the change is in flight, failed, cancelled or already published. See the operation contract."
56096
- errors:
56097
- - code: CONTENT_CONFLICT
56098
- pointer: /documents/content~1articles~1example.md
56099
- - code: CONTENT_CONFLICT
56100
- pointer: /assets/example.png
60128
+ detail: See the operation contract.
60129
+ errors: []
56101
60130
  retryable: false
56102
60131
  schemaId: urn:gala:schema:problem:2.0.0
56103
60132
  schemaVersion: 2.0.0
@@ -56125,41 +60154,37 @@ paths:
56125
60154
  $ref: "#/components/headers/CacheControlNoStore"
56126
60155
  X-Correlation-Id:
56127
60156
  $ref: "#/components/headers/XCorrelationId"
56128
- X-Gala-Current-Head:
56129
- $ref: "#/components/headers/XGalaCurrentHead"
56130
60157
  x-gala-problem-codes:
56131
60158
  - COMMAND_REPLAY_CONFLICT
56132
60159
  - INVALID_SOURCE_STATE
56133
60160
  - TRANSFER_PENDING
56134
- "429":
60161
+ "422":
56135
60162
  content:
56136
60163
  application/problem+json:
56137
60164
  examples:
56138
- RATE_LIMITED:
56139
- summary: RATE_LIMITED
60165
+ VALIDATION_FAILED:
60166
+ summary: VALIDATION_FAILED
56140
60167
  value:
56141
- code: RATE_LIMITED
60168
+ code: VALIDATION_FAILED
56142
60169
  correlationId: 018f0000-0000-7000-8000-000000000001
56143
60170
  detail: See the operation contract.
56144
60171
  errors: []
56145
- retryable: true
60172
+ retryable: false
56146
60173
  schemaId: urn:gala:schema:problem:2.0.0
56147
60174
  schemaVersion: 2.0.0
56148
- status: 429
56149
- title: RATE_LIMITED
56150
- type: urn:gala:problem:rate-limited
60175
+ status: 422
60176
+ title: VALIDATION_FAILED
60177
+ type: urn:gala:problem:validation-failed
56151
60178
  schema:
56152
60179
  $ref: "#/components/schemas/Problem"
56153
- description: RATE_LIMITED
60180
+ description: VALIDATION_FAILED
56154
60181
  headers:
56155
60182
  Cache-Control:
56156
60183
  $ref: "#/components/headers/CacheControlNoStore"
56157
- Retry-After:
56158
- $ref: "#/components/headers/RetryAfter"
56159
60184
  X-Correlation-Id:
56160
60185
  $ref: "#/components/headers/XCorrelationId"
56161
60186
  x-gala-problem-codes:
56162
- - RATE_LIMITED
60187
+ - VALIDATION_FAILED
56163
60188
  "503":
56164
60189
  content:
56165
60190
  application/problem+json:
@@ -56177,22 +60202,9 @@ paths:
56177
60202
  status: 503
56178
60203
  title: CAPABILITY_UNAVAILABLE
56179
60204
  type: urn:gala:problem:capability-unavailable
56180
- DEPENDENCY_UNAVAILABLE:
56181
- summary: DEPENDENCY_UNAVAILABLE
56182
- value:
56183
- code: DEPENDENCY_UNAVAILABLE
56184
- correlationId: 018f0000-0000-7000-8000-000000000001
56185
- detail: See the operation contract.
56186
- errors: []
56187
- retryable: true
56188
- schemaId: urn:gala:schema:problem:2.0.0
56189
- schemaVersion: 2.0.0
56190
- status: 503
56191
- title: DEPENDENCY_UNAVAILABLE
56192
- type: urn:gala:problem:dependency-unavailable
56193
60205
  schema:
56194
60206
  $ref: "#/components/schemas/Problem"
56195
- description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
60207
+ description: CAPABILITY_UNAVAILABLE
56196
60208
  headers:
56197
60209
  Cache-Control:
56198
60210
  $ref: "#/components/headers/CacheControlNoStore"
@@ -56200,46 +60212,54 @@ paths:
56200
60212
  $ref: "#/components/headers/XCorrelationId"
56201
60213
  x-gala-problem-codes:
56202
60214
  - CAPABILITY_UNAVAILABLE
56203
- - DEPENDENCY_UNAVAILABLE
56204
60215
  security:
56205
60216
  - browserSession: []
56206
- summary: plan a new change merging a proposed change onto the current main head
60217
+ - adminApiKey: []
60218
+ summary: create candidate ref and commit after exact confirmation
56207
60219
  tags:
56208
60220
  - organizations
56209
60221
  x-gala-activation-gate: MVP
56210
60222
  x-gala-activation-guards:
56211
- - Active binding epoch and admitted author-source contract
60223
+ - Unchanged persisted expected Git head, normalized reviewed diff, schema version, and actor confirmation
60224
+ x-gala-api-key-scope: content:write
56212
60225
  x-gala-capability-key: publication.source.write
56213
- x-gala-concurrency: binding-epoch
60226
+ x-gala-concurrency: planned-change-digest-and-expected-git-head
56214
60227
  x-gala-conditional-capabilities: []
56215
60228
  x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
56216
60229
  x-gala-nullability: required-and-nullable-are-explicit
56217
- x-gala-purpose: plan a new change merging a proposed change onto the current main head
60230
+ x-gala-purpose: create candidate ref and commit after exact confirmation
56218
60231
  x-gala-reachable-problems:
56219
60232
  - AUTHENTICATION_REQUIRED
56220
60233
  - AUTHORIZATION_DENIED
56221
60234
  - CAPABILITY_UNAVAILABLE
56222
60235
  - COMMAND_REPLAY_CONFLICT
56223
- - DEPENDENCY_UNAVAILABLE
56224
60236
  - INVALID_SOURCE_STATE
56225
- - RATE_LIMITED
60237
+ - REAUTH_REQUIRED
56226
60238
  - REQUEST_FIELD_UNKNOWN
56227
60239
  - RESOURCE_NOT_FOUND
56228
60240
  - TRANSFER_PENDING
56229
60241
  - VALIDATION_FAILED
56230
60242
  x-gala-replay-identity: idempotency-key
56231
60243
  x-gala-state-guards:
56232
- - RepositoryChange:REQUESTED|PLANNED|AWAITING_CONFIRMATION|COMMITTED -> PLANNED (new change)
56233
- x-gala-success-category: create
60244
+ - RepositoryChange:AWAITING_CONFIRMATION -> COMMIT_REQUESTED
60245
+ x-gala-success-category: async
56234
60246
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
56235
- /v2/organizations/{organizationId}/publications/{publicationId}/repository-changes/{changeId}:confirm:
60247
+ /v2/organizations/{organizationId}/publications/{publicationId}/repository-changes/{changeId}:discard:
56236
60248
  post:
56237
60249
  description: |
56238
- Confirm the persisted plan and enqueue creation of its candidate ref,
56239
- commit and GitHub pull request. `expectedHead` and `diffDigest` are
56240
- optional compatibility assertions: an omitted member is read from the
56241
- persisted plan, while a supplied member must match it exactly.
56242
- operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdRepositoryChangesByChangeIdConfirm
60250
+ SCHEMA-3.35.0. Discards a waiting change: closes its pull request on
60251
+ GitHub and deletes its branch `gala/candidate/<id>`. A change whose
60252
+ pull request is OPEN is closed on GitHub, its branch is deleted, and
60253
+ the change is recorded closed and dismissed, so its pending-change row
60254
+ and attention item disappear everywhere. A change already CLOSED on
60255
+ GitHub is simply recorded dismissed (the same effect as `:dismiss`). A
60256
+ change already MERGED on GitHub cannot be discarded because it is on
60257
+ main: `409 CHANGE_NOT_DISCARDABLE`. When GitHub cannot be reached,
60258
+ `503 DEPENDENCY_UNAVAILABLE` (retryable) and nothing is recorded.
60259
+ `204` with no body. `404 CHANGE_NOT_FOUND` when `changeId` does not
60260
+ exist on this publication. A replay with the same `Idempotency-Key`
60261
+ returns `204` again.
60262
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdRepositoryChangesByChangeIdDiscard
56243
60263
  parameters:
56244
60264
  - $ref: "#/components/parameters/XCorrelationId"
56245
60265
  - example: 018f0000-0000-7000-8000-000000000001
@@ -56268,37 +60288,9 @@ paths:
56268
60288
  type: string
56269
60289
  - $ref: "#/components/parameters/IdempotencyKey"
56270
60290
  - $ref: "#/components/parameters/XCsrfToken"
56271
- requestBody:
56272
- content:
56273
- application/json:
56274
- examples:
56275
- asserted:
56276
- summary: Confirm while asserting the echoed plan facts
56277
- value:
56278
- diffDigest: sha256:0000000000000000000000000000000000000000000000000000000000000000
56279
- expectedHead: sha1:0000000000000000000000000000000000000000
56280
- nominal:
56281
- summary: Confirm using the server-persisted plan facts
56282
- value: {}
56283
- schema:
56284
- $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdRepositoryChangesByChangeIdConfirmRequest"
56285
- required: true
56286
60291
  responses:
56287
- "202":
56288
- content:
56289
- application/json:
56290
- examples:
56291
- nominal:
56292
- summary: Nominal successful response
56293
- value:
56294
- commandId: 018f0000-0000-7000-8000-000000000001
56295
- operationId: 018f0000-0000-7000-8000-000000000001
56296
- phase: accepted
56297
- resourceVersion: 0
56298
- statusUrl: /v2/organizations/018f0000-0000-7000-8000-000000000001/operations/018f0000-0000-7000-8000-000000000002
56299
- schema:
56300
- $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdRepositoryChangesByChangeIdConfirmResponse"
56301
- description: candidate ref, commit and GitHub pull-request creation was accepted
60292
+ "204":
60293
+ description: discard a waiting change succeeded
56302
60294
  headers:
56303
60295
  Cache-Control:
56304
60296
  $ref: "#/components/headers/CacheControlNoStore"
@@ -56362,22 +60354,9 @@ paths:
56362
60354
  status: 401
56363
60355
  title: AUTHENTICATION_REQUIRED
56364
60356
  type: urn:gala:problem:authentication-required
56365
- REAUTH_REQUIRED:
56366
- summary: REAUTH_REQUIRED
56367
- value:
56368
- code: REAUTH_REQUIRED
56369
- correlationId: 018f0000-0000-7000-8000-000000000001
56370
- detail: See the operation contract.
56371
- errors: []
56372
- retryable: false
56373
- schemaId: urn:gala:schema:problem:2.0.0
56374
- schemaVersion: 2.0.0
56375
- status: 401
56376
- title: REAUTH_REQUIRED
56377
- type: urn:gala:problem:reauth-required
56378
60357
  schema:
56379
60358
  $ref: "#/components/schemas/Problem"
56380
- description: AUTHENTICATION_REQUIRED, REAUTH_REQUIRED
60359
+ description: AUTHENTICATION_REQUIRED
56381
60360
  headers:
56382
60361
  Cache-Control:
56383
60362
  $ref: "#/components/headers/CacheControlNoStore"
@@ -56385,7 +60364,6 @@ paths:
56385
60364
  $ref: "#/components/headers/XCorrelationId"
56386
60365
  x-gala-problem-codes:
56387
60366
  - AUTHENTICATION_REQUIRED
56388
- - REAUTH_REQUIRED
56389
60367
  "403":
56390
60368
  content:
56391
60369
  application/problem+json:
@@ -56417,6 +60395,19 @@ paths:
56417
60395
  content:
56418
60396
  application/problem+json:
56419
60397
  examples:
60398
+ CHANGE_NOT_FOUND:
60399
+ summary: CHANGE_NOT_FOUND
60400
+ value:
60401
+ code: CHANGE_NOT_FOUND
60402
+ correlationId: 018f0000-0000-7000-8000-000000000001
60403
+ detail: See the operation contract.
60404
+ errors: []
60405
+ retryable: false
60406
+ schemaId: urn:gala:schema:problem:2.0.0
60407
+ schemaVersion: 2.0.0
60408
+ status: 404
60409
+ title: CHANGE_NOT_FOUND
60410
+ type: urn:gala:problem:change-not-found
56420
60411
  RESOURCE_NOT_FOUND:
56421
60412
  summary: RESOURCE_NOT_FOUND
56422
60413
  value:
@@ -56432,22 +60423,23 @@ paths:
56432
60423
  type: urn:gala:problem:resource-not-found
56433
60424
  schema:
56434
60425
  $ref: "#/components/schemas/Problem"
56435
- description: RESOURCE_NOT_FOUND
60426
+ description: CHANGE_NOT_FOUND, RESOURCE_NOT_FOUND
56436
60427
  headers:
56437
60428
  Cache-Control:
56438
60429
  $ref: "#/components/headers/CacheControlNoStore"
56439
60430
  X-Correlation-Id:
56440
60431
  $ref: "#/components/headers/XCorrelationId"
56441
60432
  x-gala-problem-codes:
60433
+ - CHANGE_NOT_FOUND
56442
60434
  - RESOURCE_NOT_FOUND
56443
60435
  "409":
56444
60436
  content:
56445
60437
  application/problem+json:
56446
60438
  examples:
56447
- COMMAND_REPLAY_CONFLICT:
56448
- summary: COMMAND_REPLAY_CONFLICT
60439
+ CHANGE_NOT_DISCARDABLE:
60440
+ summary: CHANGE_NOT_DISCARDABLE
56449
60441
  value:
56450
- code: COMMAND_REPLAY_CONFLICT
60442
+ code: CHANGE_NOT_DISCARDABLE
56451
60443
  correlationId: 018f0000-0000-7000-8000-000000000001
56452
60444
  detail: See the operation contract.
56453
60445
  errors: []
@@ -56455,12 +60447,12 @@ paths:
56455
60447
  schemaId: urn:gala:schema:problem:2.0.0
56456
60448
  schemaVersion: 2.0.0
56457
60449
  status: 409
56458
- title: COMMAND_REPLAY_CONFLICT
56459
- type: urn:gala:problem:command-replay-conflict
56460
- INVALID_SOURCE_STATE:
56461
- summary: INVALID_SOURCE_STATE
60450
+ title: CHANGE_NOT_DISCARDABLE
60451
+ type: urn:gala:problem:change-not-discardable
60452
+ COMMAND_REPLAY_CONFLICT:
60453
+ summary: COMMAND_REPLAY_CONFLICT
56462
60454
  value:
56463
- code: INVALID_SOURCE_STATE
60455
+ code: COMMAND_REPLAY_CONFLICT
56464
60456
  correlationId: 018f0000-0000-7000-8000-000000000001
56465
60457
  detail: See the operation contract.
56466
60458
  errors: []
@@ -56468,8 +60460,8 @@ paths:
56468
60460
  schemaId: urn:gala:schema:problem:2.0.0
56469
60461
  schemaVersion: 2.0.0
56470
60462
  status: 409
56471
- title: INVALID_SOURCE_STATE
56472
- type: urn:gala:problem:invalid-source-state
60463
+ title: COMMAND_REPLAY_CONFLICT
60464
+ type: urn:gala:problem:command-replay-conflict
56473
60465
  TRANSFER_PENDING:
56474
60466
  summary: TRANSFER_PENDING
56475
60467
  value:
@@ -56485,43 +60477,45 @@ paths:
56485
60477
  type: urn:gala:problem:transfer-pending
56486
60478
  schema:
56487
60479
  $ref: "#/components/schemas/Problem"
56488
- description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, TRANSFER_PENDING
60480
+ description: CHANGE_NOT_DISCARDABLE, COMMAND_REPLAY_CONFLICT, TRANSFER_PENDING
56489
60481
  headers:
56490
60482
  Cache-Control:
56491
60483
  $ref: "#/components/headers/CacheControlNoStore"
56492
60484
  X-Correlation-Id:
56493
60485
  $ref: "#/components/headers/XCorrelationId"
56494
60486
  x-gala-problem-codes:
60487
+ - CHANGE_NOT_DISCARDABLE
56495
60488
  - COMMAND_REPLAY_CONFLICT
56496
- - INVALID_SOURCE_STATE
56497
60489
  - TRANSFER_PENDING
56498
- "422":
60490
+ "429":
56499
60491
  content:
56500
60492
  application/problem+json:
56501
60493
  examples:
56502
- VALIDATION_FAILED:
56503
- summary: VALIDATION_FAILED
60494
+ RATE_LIMITED:
60495
+ summary: RATE_LIMITED
56504
60496
  value:
56505
- code: VALIDATION_FAILED
60497
+ code: RATE_LIMITED
56506
60498
  correlationId: 018f0000-0000-7000-8000-000000000001
56507
60499
  detail: See the operation contract.
56508
60500
  errors: []
56509
- retryable: false
60501
+ retryable: true
56510
60502
  schemaId: urn:gala:schema:problem:2.0.0
56511
60503
  schemaVersion: 2.0.0
56512
- status: 422
56513
- title: VALIDATION_FAILED
56514
- type: urn:gala:problem:validation-failed
60504
+ status: 429
60505
+ title: RATE_LIMITED
60506
+ type: urn:gala:problem:rate-limited
56515
60507
  schema:
56516
60508
  $ref: "#/components/schemas/Problem"
56517
- description: VALIDATION_FAILED
60509
+ description: RATE_LIMITED
56518
60510
  headers:
56519
60511
  Cache-Control:
56520
60512
  $ref: "#/components/headers/CacheControlNoStore"
60513
+ Retry-After:
60514
+ $ref: "#/components/headers/RetryAfter"
56521
60515
  X-Correlation-Id:
56522
60516
  $ref: "#/components/headers/XCorrelationId"
56523
60517
  x-gala-problem-codes:
56524
- - VALIDATION_FAILED
60518
+ - RATE_LIMITED
56525
60519
  "503":
56526
60520
  content:
56527
60521
  application/problem+json:
@@ -56539,9 +60533,22 @@ paths:
56539
60533
  status: 503
56540
60534
  title: CAPABILITY_UNAVAILABLE
56541
60535
  type: urn:gala:problem:capability-unavailable
60536
+ DEPENDENCY_UNAVAILABLE:
60537
+ summary: DEPENDENCY_UNAVAILABLE
60538
+ value:
60539
+ code: DEPENDENCY_UNAVAILABLE
60540
+ correlationId: 018f0000-0000-7000-8000-000000000001
60541
+ detail: See the operation contract.
60542
+ errors: []
60543
+ retryable: true
60544
+ schemaId: urn:gala:schema:problem:2.0.0
60545
+ schemaVersion: 2.0.0
60546
+ status: 503
60547
+ title: DEPENDENCY_UNAVAILABLE
60548
+ type: urn:gala:problem:dependency-unavailable
56542
60549
  schema:
56543
60550
  $ref: "#/components/schemas/Problem"
56544
- description: CAPABILITY_UNAVAILABLE
60551
+ description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
56545
60552
  headers:
56546
60553
  Cache-Control:
56547
60554
  $ref: "#/components/headers/CacheControlNoStore"
@@ -56549,37 +60556,38 @@ paths:
56549
60556
  $ref: "#/components/headers/XCorrelationId"
56550
60557
  x-gala-problem-codes:
56551
60558
  - CAPABILITY_UNAVAILABLE
60559
+ - DEPENDENCY_UNAVAILABLE
56552
60560
  security:
56553
60561
  - browserSession: []
56554
- - adminApiKey: []
56555
- summary: create candidate ref and commit after exact confirmation
60562
+ summary: discard a waiting change
56556
60563
  tags:
56557
60564
  - organizations
56558
60565
  x-gala-activation-gate: MVP
56559
60566
  x-gala-activation-guards:
56560
- - Unchanged persisted expected Git head, normalized reviewed diff, schema version, and actor confirmation
56561
- x-gala-api-key-scope: content:write
60567
+ - Active binding epoch and admitted author-source contract
56562
60568
  x-gala-capability-key: publication.source.write
56563
- x-gala-concurrency: planned-change-digest-and-expected-git-head
60569
+ x-gala-concurrency: binding-epoch
56564
60570
  x-gala-conditional-capabilities: []
56565
60571
  x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
56566
60572
  x-gala-nullability: required-and-nullable-are-explicit
56567
- x-gala-purpose: create candidate ref and commit after exact confirmation
60573
+ x-gala-purpose: discard a waiting change
56568
60574
  x-gala-reachable-problems:
56569
60575
  - AUTHENTICATION_REQUIRED
56570
60576
  - AUTHORIZATION_DENIED
56571
60577
  - CAPABILITY_UNAVAILABLE
60578
+ - CHANGE_NOT_DISCARDABLE
60579
+ - CHANGE_NOT_FOUND
56572
60580
  - COMMAND_REPLAY_CONFLICT
56573
- - INVALID_SOURCE_STATE
56574
- - REAUTH_REQUIRED
60581
+ - DEPENDENCY_UNAVAILABLE
60582
+ - RATE_LIMITED
56575
60583
  - REQUEST_FIELD_UNKNOWN
56576
60584
  - RESOURCE_NOT_FOUND
56577
60585
  - TRANSFER_PENDING
56578
60586
  - VALIDATION_FAILED
56579
60587
  x-gala-replay-identity: idempotency-key
56580
60588
  x-gala-state-guards:
56581
- - RepositoryChange:AWAITING_CONFIRMATION -> COMMIT_REQUESTED
56582
- x-gala-success-category: async
60589
+ - NONE
60590
+ x-gala-success-category: delete
56583
60591
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
56584
60592
  /v2/organizations/{organizationId}/publications/{publicationId}/repository-changes/{changeId}:dismiss:
56585
60593
  post:
@@ -65184,6 +69192,64 @@ paths:
65184
69192
  - NONE
65185
69193
  x-gala-success-category: query
65186
69194
  x-gala-tenant-scope: NONE
69195
+ /v2/platform/interview-usage:
69196
+ get:
69197
+ description: |
69198
+ Operators only (`ADMIN` or `ROOT`). Interview volume and spend for the current UTC month across the platform: how many interviews were started, what they cost in millionths of a US dollar and the monthly cap. Counts and money only, never interview text.
69199
+ operationId: getPlatformInterviewUsage
69200
+ parameters:
69201
+ - $ref: "#/components/parameters/XCorrelationId"
69202
+ responses:
69203
+ "200":
69204
+ content:
69205
+ application/json:
69206
+ examples:
69207
+ nominal:
69208
+ summary: Nominal successful response
69209
+ value:
69210
+ cap:
69211
+ usdMicros: 50000000
69212
+ interviews: 42
69213
+ period: 2026-11
69214
+ usdMicros: 12500000
69215
+ schema:
69216
+ $ref: "#/components/schemas/GetPlatformInterviewUsageResponse"
69217
+ description: read platform Interview usage succeeded
69218
+ headers:
69219
+ Cache-Control:
69220
+ $ref: "#/components/headers/CacheControlNoStore"
69221
+ X-Correlation-Id:
69222
+ $ref: "#/components/headers/XCorrelationId"
69223
+ "400":
69224
+ $ref: "#/components/responses/ValidationFailed"
69225
+ "401":
69226
+ $ref: "#/components/responses/PlatformAuthenticationRequired"
69227
+ "403":
69228
+ $ref: "#/components/responses/AuthorizationDenied"
69229
+ security:
69230
+ - browserSession: []
69231
+ summary: read platform Interview usage
69232
+ tags:
69233
+ - platform
69234
+ x-gala-activation-gate: MVP
69235
+ x-gala-activation-guards:
69236
+ - NONE
69237
+ x-gala-capability-key: platform.interview.view
69238
+ x-gala-concurrency: none
69239
+ x-gala-conditional-capabilities: []
69240
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
69241
+ x-gala-nullability: required-and-nullable-are-explicit
69242
+ x-gala-purpose: read platform Interview usage
69243
+ x-gala-reachable-problems:
69244
+ - AUTHENTICATION_REQUIRED
69245
+ - AUTHORIZATION_DENIED
69246
+ - REAUTH_REQUIRED
69247
+ - VALIDATION_FAILED
69248
+ x-gala-replay-identity: safe-query
69249
+ x-gala-state-guards:
69250
+ - NONE
69251
+ x-gala-success-category: query
69252
+ x-gala-tenant-scope: NONE
65187
69253
  /v2/platform/oauth-clients:
65188
69254
  get:
65189
69255
  description: |
@@ -77211,6 +81277,7 @@ tags:
77211
81277
  - name: github
77212
81278
  - name: interaction-settings
77213
81279
  - name: internal
81280
+ - name: interview
77214
81281
  - name: membership-invitations
77215
81282
  - name: moderation
77216
81283
  - name: notifications