@rathnasgala2/schemas 3.33.0 → 3.34.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:
@@ -17993,6 +18570,43 @@ components:
17993
18570
  type: object
17994
18571
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverResponse:
17995
18572
  $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdHandoverResponse"
18573
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdAcceptResponse:
18574
+ allOf:
18575
+ - $ref: "#/components/schemas/Interview"
18576
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdCancelResponse:
18577
+ allOf:
18578
+ - $ref: "#/components/schemas/Interview"
18579
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdFinishResponse:
18580
+ allOf:
18581
+ - $ref: "#/components/schemas/Interview"
18582
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdStartResponse:
18583
+ allOf:
18584
+ - $ref: "#/components/schemas/Interview"
18585
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurnsRequest:
18586
+ additionalProperties: false
18587
+ description: SCHEMA-3.34.0. The author's answer to the last question.
18588
+ properties:
18589
+ text:
18590
+ maxLength: 8000
18591
+ minLength: 1
18592
+ type: string
18593
+ required:
18594
+ - text
18595
+ type: object
18596
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurnsResponse:
18597
+ allOf:
18598
+ - $ref: "#/components/schemas/Interview"
18599
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsRequest:
18600
+ additionalProperties: false
18601
+ properties:
18602
+ capture:
18603
+ $ref: "#/components/schemas/InterviewCapture"
18604
+ required:
18605
+ - capture
18606
+ type: object
18607
+ PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsResponse:
18608
+ allOf:
18609
+ - $ref: "#/components/schemas/Interview"
17996
18610
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdModerationCommentsByCommentIdDecideRequest:
17997
18611
  additionalProperties: false
17998
18612
  properties:
@@ -21136,6 +21750,27 @@ components:
21136
21750
  required:
21137
21751
  - change
21138
21752
  type: object
21753
+ PutOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileRequest:
21754
+ additionalProperties: false
21755
+ description: SCHEMA-3.34.0. The two facts the interviewer keeps about the site between interviews.
21756
+ properties:
21757
+ niche:
21758
+ description: What the site is about, in the author's words. May be empty.
21759
+ maxLength: 200
21760
+ minLength: 0
21761
+ type: string
21762
+ reader:
21763
+ description: Who it is for. May be empty.
21764
+ maxLength: 300
21765
+ minLength: 0
21766
+ type: string
21767
+ required:
21768
+ - niche
21769
+ - reader
21770
+ type: object
21771
+ PutOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileResponse:
21772
+ allOf:
21773
+ - $ref: "#/components/schemas/InterviewProfile"
21139
21774
  PutOrganizationsByOrganizationIdPublicationsByPublicationIdListenSettingsRequest:
21140
21775
  additionalProperties: false
21141
21776
  properties:
@@ -48866,39 +49501,2979 @@ paths:
48866
49501
  $ref: "#/components/headers/XCorrelationId"
48867
49502
  x-gala-problem-codes:
48868
49503
  - RESOURCE_NOT_FOUND
48869
- "429":
49504
+ "429":
49505
+ content:
49506
+ application/problem+json:
49507
+ examples:
49508
+ RATE_LIMITED:
49509
+ summary: RATE_LIMITED
49510
+ value:
49511
+ code: RATE_LIMITED
49512
+ correlationId: 018f0000-0000-7000-8000-000000000001
49513
+ detail: See the operation contract.
49514
+ errors: []
49515
+ retryable: true
49516
+ schemaId: urn:gala:schema:problem:2.0.0
49517
+ schemaVersion: 2.0.0
49518
+ status: 429
49519
+ title: RATE_LIMITED
49520
+ type: urn:gala:problem:rate-limited
49521
+ schema:
49522
+ $ref: "#/components/schemas/Problem"
49523
+ description: RATE_LIMITED
49524
+ headers:
49525
+ Cache-Control:
49526
+ $ref: "#/components/headers/CacheControlNoStore"
49527
+ Retry-After:
49528
+ $ref: "#/components/headers/RetryAfter"
49529
+ X-Correlation-Id:
49530
+ $ref: "#/components/headers/XCorrelationId"
49531
+ x-gala-problem-codes:
49532
+ - RATE_LIMITED
49533
+ "503":
49534
+ content:
49535
+ application/problem+json:
49536
+ examples:
49537
+ CAPABILITY_UNAVAILABLE:
49538
+ summary: CAPABILITY_UNAVAILABLE
49539
+ value:
49540
+ code: CAPABILITY_UNAVAILABLE
49541
+ correlationId: 018f0000-0000-7000-8000-000000000001
49542
+ detail: See the operation contract.
49543
+ errors: []
49544
+ retryable: false
49545
+ schemaId: urn:gala:schema:problem:2.0.0
49546
+ schemaVersion: 2.0.0
49547
+ status: 503
49548
+ title: CAPABILITY_UNAVAILABLE
49549
+ type: urn:gala:problem:capability-unavailable
49550
+ DEPENDENCY_UNAVAILABLE:
49551
+ summary: DEPENDENCY_UNAVAILABLE
49552
+ value:
49553
+ code: DEPENDENCY_UNAVAILABLE
49554
+ correlationId: 018f0000-0000-7000-8000-000000000001
49555
+ detail: See the operation contract.
49556
+ errors: []
49557
+ retryable: true
49558
+ schemaId: urn:gala:schema:problem:2.0.0
49559
+ schemaVersion: 2.0.0
49560
+ status: 503
49561
+ title: DEPENDENCY_UNAVAILABLE
49562
+ type: urn:gala:problem:dependency-unavailable
49563
+ schema:
49564
+ $ref: "#/components/schemas/Problem"
49565
+ description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
49566
+ headers:
49567
+ Cache-Control:
49568
+ $ref: "#/components/headers/CacheControlNoStore"
49569
+ X-Correlation-Id:
49570
+ $ref: "#/components/headers/XCorrelationId"
49571
+ x-gala-problem-codes:
49572
+ - CAPABILITY_UNAVAILABLE
49573
+ - DEPENDENCY_UNAVAILABLE
49574
+ security:
49575
+ - browserSession: []
49576
+ - adminApiKey: []
49577
+ summary: read this publication's reader interaction settings at the main branch head
49578
+ tags:
49579
+ - interaction-settings
49580
+ x-gala-activation-gate: MVP
49581
+ x-gala-activation-guards:
49582
+ - Active repository binding and configured GitHub App identity capability
49583
+ x-gala-api-key-scope: read
49584
+ x-gala-capability-key: publication.view
49585
+ x-gala-concurrency: binding-epoch
49586
+ x-gala-conditional-capabilities: []
49587
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
49588
+ x-gala-nullability: required-and-nullable-are-explicit
49589
+ x-gala-purpose: read this publication's reader interaction settings at the main branch head
49590
+ x-gala-reachable-problems:
49591
+ - AUTHENTICATION_REQUIRED
49592
+ - AUTHORIZATION_DENIED
49593
+ - CAPABILITY_UNAVAILABLE
49594
+ - DEPENDENCY_UNAVAILABLE
49595
+ - RATE_LIMITED
49596
+ - RESOURCE_NOT_FOUND
49597
+ - VALIDATION_FAILED
49598
+ x-gala-replay-identity: safe-query
49599
+ x-gala-state-guards:
49600
+ - NONE
49601
+ x-gala-success-category: query
49602
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
49603
+ put:
49604
+ description: The server writes `gala/modules/interactions.json` as a repository change, the way a theme selection writes `gala/appearance.json`. Publishing the change uses the normal publish flow. `change` has the shape the theme-selection write returns. `settings.follows.enabled` (SCHEMA-3.23.0) turns the Follow button on; absent means off.
49605
+ operationId: putOrganizationsByOrganizationIdPublicationsByPublicationIdInteractionSettings
49606
+ parameters:
49607
+ - $ref: "#/components/parameters/XCorrelationId"
49608
+ - example: 018f0000-0000-7000-8000-000000000001
49609
+ in: path
49610
+ name: organizationId
49611
+ required: true
49612
+ schema:
49613
+ format: uuid
49614
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
49615
+ type: string
49616
+ - example: 018f0000-0000-7000-8000-000000000001
49617
+ in: path
49618
+ name: publicationId
49619
+ required: true
49620
+ schema:
49621
+ format: uuid
49622
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
49623
+ type: string
49624
+ - $ref: "#/components/parameters/IdempotencyKey"
49625
+ - $ref: "#/components/parameters/XCsrfToken"
49626
+ requestBody:
49627
+ content:
49628
+ application/json:
49629
+ examples:
49630
+ nominal:
49631
+ summary: Nominal valid request
49632
+ value:
49633
+ settings:
49634
+ comments:
49635
+ allowReplies: true
49636
+ enabled: true
49637
+ maxDepth: 3
49638
+ publicCounts:
49639
+ comments: true
49640
+ reactions: true
49641
+ reactions:
49642
+ definitions: []
49643
+ enabled: true
49644
+ schemaId: urn:gala:schema:interactions-config:2.0.0
49645
+ schemaVersion: 2.0.0
49646
+ schema:
49647
+ $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdInteractionSettingsRequest"
49648
+ required: true
49649
+ responses:
49650
+ "200":
49651
+ content:
49652
+ application/json:
49653
+ examples:
49654
+ nominal:
49655
+ summary: Nominal successful response
49656
+ value:
49657
+ change:
49658
+ changeId: 018f0000-0000-7000-8000-000000000001
49659
+ diffDigest: sha256:0000000000000000000000000000000000000000000000000000000000000000
49660
+ expectedHead: sha1:0000000000000000000000000000000000000000
49661
+ state: REQUESTED
49662
+ version: 0
49663
+ schema:
49664
+ $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdInteractionSettingsResponse"
49665
+ description: save this publication's reader interaction settings as a repository change succeeded
49666
+ headers:
49667
+ Cache-Control:
49668
+ $ref: "#/components/headers/CacheControlNoStore"
49669
+ X-Correlation-Id:
49670
+ $ref: "#/components/headers/XCorrelationId"
49671
+ "400":
49672
+ content:
49673
+ application/problem+json:
49674
+ examples:
49675
+ REQUEST_FIELD_UNKNOWN:
49676
+ summary: REQUEST_FIELD_UNKNOWN
49677
+ value:
49678
+ code: REQUEST_FIELD_UNKNOWN
49679
+ correlationId: 018f0000-0000-7000-8000-000000000001
49680
+ detail: See the operation contract.
49681
+ errors: []
49682
+ retryable: false
49683
+ schemaId: urn:gala:schema:problem:2.0.0
49684
+ schemaVersion: 2.0.0
49685
+ status: 400
49686
+ title: REQUEST_FIELD_UNKNOWN
49687
+ type: urn:gala:problem:request-field-unknown
49688
+ VALIDATION_FAILED:
49689
+ summary: VALIDATION_FAILED
49690
+ value:
49691
+ code: VALIDATION_FAILED
49692
+ correlationId: 018f0000-0000-7000-8000-000000000001
49693
+ detail: See the operation contract.
49694
+ errors: []
49695
+ retryable: false
49696
+ schemaId: urn:gala:schema:problem:2.0.0
49697
+ schemaVersion: 2.0.0
49698
+ status: 400
49699
+ title: VALIDATION_FAILED
49700
+ type: urn:gala:problem:validation-failed
49701
+ schema:
49702
+ $ref: "#/components/schemas/Problem"
49703
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
49704
+ headers:
49705
+ Cache-Control:
49706
+ $ref: "#/components/headers/CacheControlNoStore"
49707
+ X-Correlation-Id:
49708
+ $ref: "#/components/headers/XCorrelationId"
49709
+ x-gala-problem-codes:
49710
+ - REQUEST_FIELD_UNKNOWN
49711
+ - VALIDATION_FAILED
49712
+ "401":
49713
+ content:
49714
+ application/problem+json:
49715
+ examples:
49716
+ AUTHENTICATION_REQUIRED:
49717
+ summary: AUTHENTICATION_REQUIRED
49718
+ value:
49719
+ code: AUTHENTICATION_REQUIRED
49720
+ correlationId: 018f0000-0000-7000-8000-000000000001
49721
+ detail: See the operation contract.
49722
+ errors: []
49723
+ retryable: false
49724
+ schemaId: urn:gala:schema:problem:2.0.0
49725
+ schemaVersion: 2.0.0
49726
+ status: 401
49727
+ title: AUTHENTICATION_REQUIRED
49728
+ type: urn:gala:problem:authentication-required
49729
+ schema:
49730
+ $ref: "#/components/schemas/Problem"
49731
+ description: AUTHENTICATION_REQUIRED
49732
+ headers:
49733
+ Cache-Control:
49734
+ $ref: "#/components/headers/CacheControlNoStore"
49735
+ X-Correlation-Id:
49736
+ $ref: "#/components/headers/XCorrelationId"
49737
+ x-gala-problem-codes:
49738
+ - AUTHENTICATION_REQUIRED
49739
+ "403":
49740
+ content:
49741
+ application/problem+json:
49742
+ examples:
49743
+ AUTHORIZATION_DENIED:
49744
+ summary: AUTHORIZATION_DENIED
49745
+ value:
49746
+ code: AUTHORIZATION_DENIED
49747
+ correlationId: 018f0000-0000-7000-8000-000000000001
49748
+ detail: See the operation contract.
49749
+ errors: []
49750
+ retryable: false
49751
+ schemaId: urn:gala:schema:problem:2.0.0
49752
+ schemaVersion: 2.0.0
49753
+ status: 403
49754
+ title: AUTHORIZATION_DENIED
49755
+ type: urn:gala:problem:authorization-denied
49756
+ schema:
49757
+ $ref: "#/components/schemas/Problem"
49758
+ description: AUTHORIZATION_DENIED
49759
+ headers:
49760
+ Cache-Control:
49761
+ $ref: "#/components/headers/CacheControlNoStore"
49762
+ X-Correlation-Id:
49763
+ $ref: "#/components/headers/XCorrelationId"
49764
+ x-gala-problem-codes:
49765
+ - AUTHORIZATION_DENIED
49766
+ "404":
49767
+ content:
49768
+ application/problem+json:
49769
+ examples:
49770
+ RESOURCE_NOT_FOUND:
49771
+ summary: RESOURCE_NOT_FOUND
49772
+ value:
49773
+ code: RESOURCE_NOT_FOUND
49774
+ correlationId: 018f0000-0000-7000-8000-000000000001
49775
+ detail: See the operation contract.
49776
+ errors: []
49777
+ retryable: false
49778
+ schemaId: urn:gala:schema:problem:2.0.0
49779
+ schemaVersion: 2.0.0
49780
+ status: 404
49781
+ title: RESOURCE_NOT_FOUND
49782
+ type: urn:gala:problem:resource-not-found
49783
+ schema:
49784
+ $ref: "#/components/schemas/Problem"
49785
+ description: RESOURCE_NOT_FOUND
49786
+ headers:
49787
+ Cache-Control:
49788
+ $ref: "#/components/headers/CacheControlNoStore"
49789
+ X-Correlation-Id:
49790
+ $ref: "#/components/headers/XCorrelationId"
49791
+ x-gala-problem-codes:
49792
+ - RESOURCE_NOT_FOUND
49793
+ "409":
49794
+ content:
49795
+ application/problem+json:
49796
+ examples:
49797
+ COMMAND_REPLAY_CONFLICT:
49798
+ summary: COMMAND_REPLAY_CONFLICT
49799
+ value:
49800
+ code: COMMAND_REPLAY_CONFLICT
49801
+ correlationId: 018f0000-0000-7000-8000-000000000001
49802
+ detail: See the operation contract.
49803
+ errors: []
49804
+ retryable: false
49805
+ schemaId: urn:gala:schema:problem:2.0.0
49806
+ schemaVersion: 2.0.0
49807
+ status: 409
49808
+ title: COMMAND_REPLAY_CONFLICT
49809
+ type: urn:gala:problem:command-replay-conflict
49810
+ INVALID_SOURCE_STATE:
49811
+ summary: INVALID_SOURCE_STATE
49812
+ value:
49813
+ code: INVALID_SOURCE_STATE
49814
+ correlationId: 018f0000-0000-7000-8000-000000000001
49815
+ detail: See the operation contract.
49816
+ errors: []
49817
+ retryable: false
49818
+ schemaId: urn:gala:schema:problem:2.0.0
49819
+ schemaVersion: 2.0.0
49820
+ status: 409
49821
+ title: INVALID_SOURCE_STATE
49822
+ type: urn:gala:problem:invalid-source-state
49823
+ TRANSFER_PENDING:
49824
+ summary: TRANSFER_PENDING
49825
+ value:
49826
+ code: TRANSFER_PENDING
49827
+ correlationId: 018f0000-0000-7000-8000-000000000001
49828
+ detail: See the operation contract.
49829
+ errors: []
49830
+ retryable: false
49831
+ schemaId: urn:gala:schema:problem:2.0.0
49832
+ schemaVersion: 2.0.0
49833
+ status: 409
49834
+ title: TRANSFER_PENDING
49835
+ type: urn:gala:problem:transfer-pending
49836
+ schema:
49837
+ $ref: "#/components/schemas/Problem"
49838
+ description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, TRANSFER_PENDING
49839
+ headers:
49840
+ Cache-Control:
49841
+ $ref: "#/components/headers/CacheControlNoStore"
49842
+ X-Correlation-Id:
49843
+ $ref: "#/components/headers/XCorrelationId"
49844
+ x-gala-problem-codes:
49845
+ - COMMAND_REPLAY_CONFLICT
49846
+ - INVALID_SOURCE_STATE
49847
+ - TRANSFER_PENDING
49848
+ "422":
49849
+ content:
49850
+ application/problem+json:
49851
+ examples:
49852
+ VALIDATION_FAILED:
49853
+ summary: VALIDATION_FAILED
49854
+ value:
49855
+ code: VALIDATION_FAILED
49856
+ correlationId: 018f0000-0000-7000-8000-000000000001
49857
+ detail: See the operation contract.
49858
+ errors: []
49859
+ retryable: false
49860
+ schemaId: urn:gala:schema:problem:2.0.0
49861
+ schemaVersion: 2.0.0
49862
+ status: 422
49863
+ title: VALIDATION_FAILED
49864
+ type: urn:gala:problem:validation-failed
49865
+ schema:
49866
+ $ref: "#/components/schemas/Problem"
49867
+ description: VALIDATION_FAILED
49868
+ headers:
49869
+ Cache-Control:
49870
+ $ref: "#/components/headers/CacheControlNoStore"
49871
+ X-Correlation-Id:
49872
+ $ref: "#/components/headers/XCorrelationId"
49873
+ x-gala-problem-codes:
49874
+ - VALIDATION_FAILED
49875
+ "503":
49876
+ content:
49877
+ application/problem+json:
49878
+ examples:
49879
+ CAPABILITY_UNAVAILABLE:
49880
+ summary: CAPABILITY_UNAVAILABLE
49881
+ value:
49882
+ code: CAPABILITY_UNAVAILABLE
49883
+ correlationId: 018f0000-0000-7000-8000-000000000001
49884
+ detail: See the operation contract.
49885
+ errors: []
49886
+ retryable: false
49887
+ schemaId: urn:gala:schema:problem:2.0.0
49888
+ schemaVersion: 2.0.0
49889
+ status: 503
49890
+ title: CAPABILITY_UNAVAILABLE
49891
+ type: urn:gala:problem:capability-unavailable
49892
+ schema:
49893
+ $ref: "#/components/schemas/Problem"
49894
+ description: CAPABILITY_UNAVAILABLE
49895
+ headers:
49896
+ Cache-Control:
49897
+ $ref: "#/components/headers/CacheControlNoStore"
49898
+ X-Correlation-Id:
49899
+ $ref: "#/components/headers/XCorrelationId"
49900
+ x-gala-problem-codes:
49901
+ - CAPABILITY_UNAVAILABLE
49902
+ security:
49903
+ - browserSession: []
49904
+ - adminApiKey: []
49905
+ summary: save this publication's reader interaction settings as a repository change
49906
+ tags:
49907
+ - interaction-settings
49908
+ x-gala-activation-gate: MVP
49909
+ x-gala-activation-guards:
49910
+ - Active repository binding and configured GitHub App identity capability
49911
+ x-gala-api-key-scope: content:write
49912
+ x-gala-capability-key: publication.source.write
49913
+ x-gala-concurrency: expected-git-head-and-binding-epoch
49914
+ x-gala-conditional-capabilities: []
49915
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
49916
+ x-gala-nullability: required-and-nullable-are-explicit
49917
+ x-gala-purpose: save this publication's reader interaction settings as a repository change
49918
+ x-gala-reachable-problems:
49919
+ - AUTHENTICATION_REQUIRED
49920
+ - AUTHORIZATION_DENIED
49921
+ - CAPABILITY_UNAVAILABLE
49922
+ - COMMAND_REPLAY_CONFLICT
49923
+ - INVALID_SOURCE_STATE
49924
+ - REQUEST_FIELD_UNKNOWN
49925
+ - RESOURCE_NOT_FOUND
49926
+ - TRANSFER_PENDING
49927
+ - VALIDATION_FAILED
49928
+ x-gala-replay-identity: idempotency-key
49929
+ x-gala-state-guards:
49930
+ - Publication:ACTIVE
49931
+ - RepositoryBinding:ACTIVE
49932
+ - RepositoryChange:REQUESTED -> PLANNED
49933
+ x-gala-success-category: protocol
49934
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
49935
+ /v2/organizations/{organizationId}/publications/{publicationId}/interview-policy:
49936
+ get:
49937
+ description: |
49938
+ 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.
49939
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewPolicy
49940
+ parameters:
49941
+ - $ref: "#/components/parameters/XCorrelationId"
49942
+ - example: 018f0000-0000-7000-8000-000000000001
49943
+ in: path
49944
+ name: organizationId
49945
+ required: true
49946
+ schema:
49947
+ format: uuid
49948
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
49949
+ type: string
49950
+ - example: 018f0000-0000-7000-8000-000000000001
49951
+ in: path
49952
+ name: publicationId
49953
+ required: true
49954
+ schema:
49955
+ format: uuid
49956
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
49957
+ type: string
49958
+ responses:
49959
+ "200":
49960
+ content:
49961
+ application/json:
49962
+ examples:
49963
+ nominal:
49964
+ summary: Nominal successful response
49965
+ value:
49966
+ budget:
49967
+ available: true
49968
+ enabled: true
49969
+ plan:
49970
+ allowed: true
49971
+ requiredTier: BUSINESS
49972
+ quota:
49973
+ limit: 10
49974
+ period: 2026-11
49975
+ remaining: 7
49976
+ used: 3
49977
+ schema:
49978
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewPolicyResponse"
49979
+ description: read the Interview policy succeeded
49980
+ headers:
49981
+ Cache-Control:
49982
+ $ref: "#/components/headers/CacheControlNoStore"
49983
+ X-Correlation-Id:
49984
+ $ref: "#/components/headers/XCorrelationId"
49985
+ "400":
49986
+ content:
49987
+ application/problem+json:
49988
+ examples:
49989
+ VALIDATION_FAILED:
49990
+ summary: VALIDATION_FAILED
49991
+ value:
49992
+ code: VALIDATION_FAILED
49993
+ correlationId: 018f0000-0000-7000-8000-000000000001
49994
+ detail: See the operation contract.
49995
+ errors: []
49996
+ retryable: false
49997
+ schemaId: urn:gala:schema:problem:2.0.0
49998
+ schemaVersion: 2.0.0
49999
+ status: 400
50000
+ title: VALIDATION_FAILED
50001
+ type: urn:gala:problem:validation-failed
50002
+ schema:
50003
+ $ref: "#/components/schemas/Problem"
50004
+ description: VALIDATION_FAILED
50005
+ headers:
50006
+ Cache-Control:
50007
+ $ref: "#/components/headers/CacheControlNoStore"
50008
+ X-Correlation-Id:
50009
+ $ref: "#/components/headers/XCorrelationId"
50010
+ x-gala-problem-codes:
50011
+ - VALIDATION_FAILED
50012
+ "401":
50013
+ content:
50014
+ application/problem+json:
50015
+ examples:
50016
+ AUTHENTICATION_REQUIRED:
50017
+ summary: AUTHENTICATION_REQUIRED
50018
+ value:
50019
+ code: AUTHENTICATION_REQUIRED
50020
+ correlationId: 018f0000-0000-7000-8000-000000000001
50021
+ detail: See the operation contract.
50022
+ errors: []
50023
+ retryable: false
50024
+ schemaId: urn:gala:schema:problem:2.0.0
50025
+ schemaVersion: 2.0.0
50026
+ status: 401
50027
+ title: AUTHENTICATION_REQUIRED
50028
+ type: urn:gala:problem:authentication-required
50029
+ schema:
50030
+ $ref: "#/components/schemas/Problem"
50031
+ description: AUTHENTICATION_REQUIRED
50032
+ headers:
50033
+ Cache-Control:
50034
+ $ref: "#/components/headers/CacheControlNoStore"
50035
+ X-Correlation-Id:
50036
+ $ref: "#/components/headers/XCorrelationId"
50037
+ x-gala-problem-codes:
50038
+ - AUTHENTICATION_REQUIRED
50039
+ "403":
50040
+ content:
50041
+ application/problem+json:
50042
+ examples:
50043
+ AUTHORIZATION_DENIED:
50044
+ summary: AUTHORIZATION_DENIED
50045
+ value:
50046
+ code: AUTHORIZATION_DENIED
50047
+ correlationId: 018f0000-0000-7000-8000-000000000001
50048
+ detail: See the operation contract.
50049
+ errors: []
50050
+ retryable: false
50051
+ schemaId: urn:gala:schema:problem:2.0.0
50052
+ schemaVersion: 2.0.0
50053
+ status: 403
50054
+ title: AUTHORIZATION_DENIED
50055
+ type: urn:gala:problem:authorization-denied
50056
+ schema:
50057
+ $ref: "#/components/schemas/Problem"
50058
+ description: AUTHORIZATION_DENIED
50059
+ headers:
50060
+ Cache-Control:
50061
+ $ref: "#/components/headers/CacheControlNoStore"
50062
+ X-Correlation-Id:
50063
+ $ref: "#/components/headers/XCorrelationId"
50064
+ x-gala-problem-codes:
50065
+ - AUTHORIZATION_DENIED
50066
+ "404":
50067
+ content:
50068
+ application/problem+json:
50069
+ examples:
50070
+ RESOURCE_NOT_FOUND:
50071
+ summary: RESOURCE_NOT_FOUND
50072
+ value:
50073
+ code: RESOURCE_NOT_FOUND
50074
+ correlationId: 018f0000-0000-7000-8000-000000000001
50075
+ detail: See the operation contract.
50076
+ errors: []
50077
+ retryable: false
50078
+ schemaId: urn:gala:schema:problem:2.0.0
50079
+ schemaVersion: 2.0.0
50080
+ status: 404
50081
+ title: RESOURCE_NOT_FOUND
50082
+ type: urn:gala:problem:resource-not-found
50083
+ schema:
50084
+ $ref: "#/components/schemas/Problem"
50085
+ description: RESOURCE_NOT_FOUND
50086
+ headers:
50087
+ Cache-Control:
50088
+ $ref: "#/components/headers/CacheControlNoStore"
50089
+ X-Correlation-Id:
50090
+ $ref: "#/components/headers/XCorrelationId"
50091
+ x-gala-problem-codes:
50092
+ - RESOURCE_NOT_FOUND
50093
+ security:
50094
+ - browserSession: []
50095
+ summary: read the Interview policy
50096
+ tags:
50097
+ - interview
50098
+ x-gala-activation-gate: MVP
50099
+ x-gala-activation-guards:
50100
+ - NONE
50101
+ x-gala-capability-key: publication.source.write
50102
+ x-gala-concurrency: authorization-and-publication-epochs
50103
+ x-gala-conditional-capabilities: []
50104
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
50105
+ x-gala-nullability: required-and-nullable-are-explicit
50106
+ x-gala-purpose: read the Interview policy
50107
+ x-gala-reachable-problems:
50108
+ - AUTHENTICATION_REQUIRED
50109
+ - AUTHORIZATION_DENIED
50110
+ - RESOURCE_NOT_FOUND
50111
+ - VALIDATION_FAILED
50112
+ x-gala-replay-identity: safe-query
50113
+ x-gala-state-guards:
50114
+ - NONE
50115
+ x-gala-success-category: query
50116
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
50117
+ /v2/organizations/{organizationId}/publications/{publicationId}/interview-profile:
50118
+ get:
50119
+ description: |
50120
+ The two facts the interviewer keeps about this site between interviews: its niche and its reader. Either may be an empty string.
50121
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfile
50122
+ parameters:
50123
+ - $ref: "#/components/parameters/XCorrelationId"
50124
+ - example: 018f0000-0000-7000-8000-000000000001
50125
+ in: path
50126
+ name: organizationId
50127
+ required: true
50128
+ schema:
50129
+ format: uuid
50130
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50131
+ type: string
50132
+ - example: 018f0000-0000-7000-8000-000000000001
50133
+ in: path
50134
+ name: publicationId
50135
+ required: true
50136
+ schema:
50137
+ format: uuid
50138
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50139
+ type: string
50140
+ responses:
50141
+ "200":
50142
+ content:
50143
+ application/json:
50144
+ examples:
50145
+ nominal:
50146
+ summary: Nominal successful response
50147
+ value:
50148
+ niche: Product-led growth for small SaaS teams
50149
+ reader: Founders running their first onboarding
50150
+ schema:
50151
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileResponse"
50152
+ description: read the Interview profile succeeded
50153
+ headers:
50154
+ Cache-Control:
50155
+ $ref: "#/components/headers/CacheControlNoStore"
50156
+ X-Correlation-Id:
50157
+ $ref: "#/components/headers/XCorrelationId"
50158
+ "400":
50159
+ content:
50160
+ application/problem+json:
50161
+ examples:
50162
+ VALIDATION_FAILED:
50163
+ summary: VALIDATION_FAILED
50164
+ value:
50165
+ code: VALIDATION_FAILED
50166
+ correlationId: 018f0000-0000-7000-8000-000000000001
50167
+ detail: See the operation contract.
50168
+ errors: []
50169
+ retryable: false
50170
+ schemaId: urn:gala:schema:problem:2.0.0
50171
+ schemaVersion: 2.0.0
50172
+ status: 400
50173
+ title: VALIDATION_FAILED
50174
+ type: urn:gala:problem:validation-failed
50175
+ schema:
50176
+ $ref: "#/components/schemas/Problem"
50177
+ description: VALIDATION_FAILED
50178
+ headers:
50179
+ Cache-Control:
50180
+ $ref: "#/components/headers/CacheControlNoStore"
50181
+ X-Correlation-Id:
50182
+ $ref: "#/components/headers/XCorrelationId"
50183
+ x-gala-problem-codes:
50184
+ - VALIDATION_FAILED
50185
+ "401":
50186
+ content:
50187
+ application/problem+json:
50188
+ examples:
50189
+ AUTHENTICATION_REQUIRED:
50190
+ summary: AUTHENTICATION_REQUIRED
50191
+ value:
50192
+ code: AUTHENTICATION_REQUIRED
50193
+ correlationId: 018f0000-0000-7000-8000-000000000001
50194
+ detail: See the operation contract.
50195
+ errors: []
50196
+ retryable: false
50197
+ schemaId: urn:gala:schema:problem:2.0.0
50198
+ schemaVersion: 2.0.0
50199
+ status: 401
50200
+ title: AUTHENTICATION_REQUIRED
50201
+ type: urn:gala:problem:authentication-required
50202
+ schema:
50203
+ $ref: "#/components/schemas/Problem"
50204
+ description: AUTHENTICATION_REQUIRED
50205
+ headers:
50206
+ Cache-Control:
50207
+ $ref: "#/components/headers/CacheControlNoStore"
50208
+ X-Correlation-Id:
50209
+ $ref: "#/components/headers/XCorrelationId"
50210
+ x-gala-problem-codes:
50211
+ - AUTHENTICATION_REQUIRED
50212
+ "403":
50213
+ content:
50214
+ application/problem+json:
50215
+ examples:
50216
+ AUTHORIZATION_DENIED:
50217
+ summary: AUTHORIZATION_DENIED
50218
+ value:
50219
+ code: AUTHORIZATION_DENIED
50220
+ correlationId: 018f0000-0000-7000-8000-000000000001
50221
+ detail: See the operation contract.
50222
+ errors: []
50223
+ retryable: false
50224
+ schemaId: urn:gala:schema:problem:2.0.0
50225
+ schemaVersion: 2.0.0
50226
+ status: 403
50227
+ title: AUTHORIZATION_DENIED
50228
+ type: urn:gala:problem:authorization-denied
50229
+ schema:
50230
+ $ref: "#/components/schemas/Problem"
50231
+ description: AUTHORIZATION_DENIED
50232
+ headers:
50233
+ Cache-Control:
50234
+ $ref: "#/components/headers/CacheControlNoStore"
50235
+ X-Correlation-Id:
50236
+ $ref: "#/components/headers/XCorrelationId"
50237
+ x-gala-problem-codes:
50238
+ - AUTHORIZATION_DENIED
50239
+ "404":
50240
+ content:
50241
+ application/problem+json:
50242
+ examples:
50243
+ RESOURCE_NOT_FOUND:
50244
+ summary: RESOURCE_NOT_FOUND
50245
+ value:
50246
+ code: RESOURCE_NOT_FOUND
50247
+ correlationId: 018f0000-0000-7000-8000-000000000001
50248
+ detail: See the operation contract.
50249
+ errors: []
50250
+ retryable: false
50251
+ schemaId: urn:gala:schema:problem:2.0.0
50252
+ schemaVersion: 2.0.0
50253
+ status: 404
50254
+ title: RESOURCE_NOT_FOUND
50255
+ type: urn:gala:problem:resource-not-found
50256
+ schema:
50257
+ $ref: "#/components/schemas/Problem"
50258
+ description: RESOURCE_NOT_FOUND
50259
+ headers:
50260
+ Cache-Control:
50261
+ $ref: "#/components/headers/CacheControlNoStore"
50262
+ X-Correlation-Id:
50263
+ $ref: "#/components/headers/XCorrelationId"
50264
+ x-gala-problem-codes:
50265
+ - RESOURCE_NOT_FOUND
50266
+ security:
50267
+ - browserSession: []
50268
+ summary: read the Interview profile
50269
+ tags:
50270
+ - interview
50271
+ x-gala-activation-gate: MVP
50272
+ x-gala-activation-guards:
50273
+ - NONE
50274
+ x-gala-capability-key: publication.source.write
50275
+ x-gala-concurrency: authorization-and-publication-epochs
50276
+ x-gala-conditional-capabilities: []
50277
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
50278
+ x-gala-nullability: required-and-nullable-are-explicit
50279
+ x-gala-purpose: read the Interview profile
50280
+ x-gala-reachable-problems:
50281
+ - AUTHENTICATION_REQUIRED
50282
+ - AUTHORIZATION_DENIED
50283
+ - RESOURCE_NOT_FOUND
50284
+ - VALIDATION_FAILED
50285
+ x-gala-replay-identity: safe-query
50286
+ x-gala-state-guards:
50287
+ - NONE
50288
+ x-gala-success-category: query
50289
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
50290
+ put:
50291
+ description: |
50292
+ 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`.
50293
+ operationId: putOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfile
50294
+ parameters:
50295
+ - $ref: "#/components/parameters/XCorrelationId"
50296
+ - example: 018f0000-0000-7000-8000-000000000001
50297
+ in: path
50298
+ name: organizationId
50299
+ required: true
50300
+ schema:
50301
+ format: uuid
50302
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50303
+ type: string
50304
+ - example: 018f0000-0000-7000-8000-000000000001
50305
+ in: path
50306
+ name: publicationId
50307
+ required: true
50308
+ schema:
50309
+ format: uuid
50310
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50311
+ type: string
50312
+ - $ref: "#/components/parameters/IdempotencyKey"
50313
+ - $ref: "#/components/parameters/XCsrfToken"
50314
+ requestBody:
50315
+ content:
50316
+ application/json:
50317
+ examples:
50318
+ nominal:
50319
+ summary: Nominal valid request
50320
+ value:
50321
+ niche: Product-led growth for small SaaS teams
50322
+ reader: Founders running their first onboarding
50323
+ schema:
50324
+ $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileRequest"
50325
+ required: true
50326
+ responses:
50327
+ "200":
50328
+ content:
50329
+ application/json:
50330
+ examples:
50331
+ nominal:
50332
+ summary: Nominal successful response
50333
+ value:
50334
+ niche: Product-led growth for small SaaS teams
50335
+ reader: Founders running their first onboarding
50336
+ schema:
50337
+ $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewProfileResponse"
50338
+ description: save the Interview profile succeeded
50339
+ headers:
50340
+ Cache-Control:
50341
+ $ref: "#/components/headers/CacheControlNoStore"
50342
+ X-Correlation-Id:
50343
+ $ref: "#/components/headers/XCorrelationId"
50344
+ "400":
50345
+ content:
50346
+ application/problem+json:
50347
+ examples:
50348
+ REQUEST_FIELD_UNKNOWN:
50349
+ summary: REQUEST_FIELD_UNKNOWN
50350
+ value:
50351
+ code: REQUEST_FIELD_UNKNOWN
50352
+ correlationId: 018f0000-0000-7000-8000-000000000001
50353
+ detail: See the operation contract.
50354
+ errors: []
50355
+ retryable: false
50356
+ schemaId: urn:gala:schema:problem:2.0.0
50357
+ schemaVersion: 2.0.0
50358
+ status: 400
50359
+ title: REQUEST_FIELD_UNKNOWN
50360
+ type: urn:gala:problem:request-field-unknown
50361
+ VALIDATION_FAILED:
50362
+ summary: VALIDATION_FAILED
50363
+ value:
50364
+ code: VALIDATION_FAILED
50365
+ correlationId: 018f0000-0000-7000-8000-000000000001
50366
+ detail: See the operation contract.
50367
+ errors: []
50368
+ retryable: false
50369
+ schemaId: urn:gala:schema:problem:2.0.0
50370
+ schemaVersion: 2.0.0
50371
+ status: 400
50372
+ title: VALIDATION_FAILED
50373
+ type: urn:gala:problem:validation-failed
50374
+ schema:
50375
+ $ref: "#/components/schemas/Problem"
50376
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
50377
+ headers:
50378
+ Cache-Control:
50379
+ $ref: "#/components/headers/CacheControlNoStore"
50380
+ X-Correlation-Id:
50381
+ $ref: "#/components/headers/XCorrelationId"
50382
+ x-gala-problem-codes:
50383
+ - REQUEST_FIELD_UNKNOWN
50384
+ - VALIDATION_FAILED
50385
+ "401":
50386
+ content:
50387
+ application/problem+json:
50388
+ examples:
50389
+ AUTHENTICATION_REQUIRED:
50390
+ summary: AUTHENTICATION_REQUIRED
50391
+ value:
50392
+ code: AUTHENTICATION_REQUIRED
50393
+ correlationId: 018f0000-0000-7000-8000-000000000001
50394
+ detail: See the operation contract.
50395
+ errors: []
50396
+ retryable: false
50397
+ schemaId: urn:gala:schema:problem:2.0.0
50398
+ schemaVersion: 2.0.0
50399
+ status: 401
50400
+ title: AUTHENTICATION_REQUIRED
50401
+ type: urn:gala:problem:authentication-required
50402
+ schema:
50403
+ $ref: "#/components/schemas/Problem"
50404
+ description: AUTHENTICATION_REQUIRED
50405
+ headers:
50406
+ Cache-Control:
50407
+ $ref: "#/components/headers/CacheControlNoStore"
50408
+ X-Correlation-Id:
50409
+ $ref: "#/components/headers/XCorrelationId"
50410
+ x-gala-problem-codes:
50411
+ - AUTHENTICATION_REQUIRED
50412
+ "403":
50413
+ content:
50414
+ application/problem+json:
50415
+ examples:
50416
+ AUTHORIZATION_DENIED:
50417
+ summary: AUTHORIZATION_DENIED
50418
+ value:
50419
+ code: AUTHORIZATION_DENIED
50420
+ correlationId: 018f0000-0000-7000-8000-000000000001
50421
+ detail: See the operation contract.
50422
+ errors: []
50423
+ retryable: false
50424
+ schemaId: urn:gala:schema:problem:2.0.0
50425
+ schemaVersion: 2.0.0
50426
+ status: 403
50427
+ title: AUTHORIZATION_DENIED
50428
+ type: urn:gala:problem:authorization-denied
50429
+ schema:
50430
+ $ref: "#/components/schemas/Problem"
50431
+ description: AUTHORIZATION_DENIED
50432
+ headers:
50433
+ Cache-Control:
50434
+ $ref: "#/components/headers/CacheControlNoStore"
50435
+ X-Correlation-Id:
50436
+ $ref: "#/components/headers/XCorrelationId"
50437
+ x-gala-problem-codes:
50438
+ - AUTHORIZATION_DENIED
50439
+ "404":
50440
+ content:
50441
+ application/problem+json:
50442
+ examples:
50443
+ RESOURCE_NOT_FOUND:
50444
+ summary: RESOURCE_NOT_FOUND
50445
+ value:
50446
+ code: RESOURCE_NOT_FOUND
50447
+ correlationId: 018f0000-0000-7000-8000-000000000001
50448
+ detail: See the operation contract.
50449
+ errors: []
50450
+ retryable: false
50451
+ schemaId: urn:gala:schema:problem:2.0.0
50452
+ schemaVersion: 2.0.0
50453
+ status: 404
50454
+ title: RESOURCE_NOT_FOUND
50455
+ type: urn:gala:problem:resource-not-found
50456
+ schema:
50457
+ $ref: "#/components/schemas/Problem"
50458
+ description: RESOURCE_NOT_FOUND
50459
+ headers:
50460
+ Cache-Control:
50461
+ $ref: "#/components/headers/CacheControlNoStore"
50462
+ X-Correlation-Id:
50463
+ $ref: "#/components/headers/XCorrelationId"
50464
+ x-gala-problem-codes:
50465
+ - RESOURCE_NOT_FOUND
50466
+ "409":
50467
+ content:
50468
+ application/problem+json:
50469
+ examples:
50470
+ COMMAND_REPLAY_CONFLICT:
50471
+ summary: COMMAND_REPLAY_CONFLICT
50472
+ value:
50473
+ code: COMMAND_REPLAY_CONFLICT
50474
+ correlationId: 018f0000-0000-7000-8000-000000000001
50475
+ detail: See the operation contract.
50476
+ errors: []
50477
+ retryable: false
50478
+ schemaId: urn:gala:schema:problem:2.0.0
50479
+ schemaVersion: 2.0.0
50480
+ status: 409
50481
+ title: COMMAND_REPLAY_CONFLICT
50482
+ type: urn:gala:problem:command-replay-conflict
50483
+ TRANSFER_PENDING:
50484
+ summary: TRANSFER_PENDING
50485
+ value:
50486
+ code: TRANSFER_PENDING
50487
+ correlationId: 018f0000-0000-7000-8000-000000000001
50488
+ detail: See the operation contract.
50489
+ errors: []
50490
+ retryable: false
50491
+ schemaId: urn:gala:schema:problem:2.0.0
50492
+ schemaVersion: 2.0.0
50493
+ status: 409
50494
+ title: TRANSFER_PENDING
50495
+ type: urn:gala:problem:transfer-pending
50496
+ schema:
50497
+ $ref: "#/components/schemas/Problem"
50498
+ description: COMMAND_REPLAY_CONFLICT, TRANSFER_PENDING
50499
+ headers:
50500
+ Cache-Control:
50501
+ $ref: "#/components/headers/CacheControlNoStore"
50502
+ X-Correlation-Id:
50503
+ $ref: "#/components/headers/XCorrelationId"
50504
+ x-gala-problem-codes:
50505
+ - COMMAND_REPLAY_CONFLICT
50506
+ - TRANSFER_PENDING
50507
+ security:
50508
+ - browserSession: []
50509
+ summary: save the Interview profile
50510
+ tags:
50511
+ - interview
50512
+ x-gala-activation-gate: MVP
50513
+ x-gala-activation-guards:
50514
+ - NONE
50515
+ x-gala-capability-key: publication.settings.manage
50516
+ x-gala-concurrency: interview-version
50517
+ x-gala-conditional-capabilities: []
50518
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
50519
+ x-gala-nullability: required-and-nullable-are-explicit
50520
+ x-gala-purpose: save the Interview profile
50521
+ x-gala-reachable-problems:
50522
+ - AUTHENTICATION_REQUIRED
50523
+ - AUTHORIZATION_DENIED
50524
+ - COMMAND_REPLAY_CONFLICT
50525
+ - REQUEST_FIELD_UNKNOWN
50526
+ - RESOURCE_NOT_FOUND
50527
+ - TRANSFER_PENDING
50528
+ - VALIDATION_FAILED
50529
+ x-gala-replay-identity: idempotency-key
50530
+ x-gala-state-guards:
50531
+ - NONE
50532
+ x-gala-success-category: protocol
50533
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
50534
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews:
50535
+ get:
50536
+ description: |
50537
+ 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.
50538
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdInterviews
50539
+ parameters:
50540
+ - $ref: "#/components/parameters/XCorrelationId"
50541
+ - example: 018f0000-0000-7000-8000-000000000001
50542
+ in: path
50543
+ name: organizationId
50544
+ required: true
50545
+ schema:
50546
+ format: uuid
50547
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50548
+ type: string
50549
+ - example: 018f0000-0000-7000-8000-000000000001
50550
+ in: path
50551
+ name: publicationId
50552
+ required: true
50553
+ schema:
50554
+ format: uuid
50555
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50556
+ type: string
50557
+ - $ref: "#/components/parameters/Cursor"
50558
+ - $ref: "#/components/parameters/Limit"
50559
+ responses:
50560
+ "200":
50561
+ content:
50562
+ application/json:
50563
+ examples:
50564
+ nominal:
50565
+ summary: Nominal successful response
50566
+ value:
50567
+ hasMore: false
50568
+ items:
50569
+ - capture:
50570
+ kind: NOTE
50571
+ text: We cut our onboarding from nine steps to four and signups doubled.
50572
+ createdAt: "2026-11-04T12:00:00.000Z"
50573
+ expiresAt: "2026-11-11T12:00:00.000Z"
50574
+ hasDraft: false
50575
+ interviewId: 018f0000-0000-7000-8000-000000000001
50576
+ organizationId: 018f0000-0000-7000-8000-000000000003
50577
+ progress:
50578
+ beliefDone: false
50579
+ canFinish: false
50580
+ details: 0
50581
+ detailsTarget: 5
50582
+ phase: OWNED
50583
+ skepticRounds: 0
50584
+ publicationId: 018f0000-0000-7000-8000-000000000002
50585
+ state: CAPTURED
50586
+ turnCount: 0
50587
+ updatedAt: "2026-11-04T12:00:00.000Z"
50588
+ schema:
50589
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsResponse"
50590
+ description: list Interviews succeeded
50591
+ headers:
50592
+ Cache-Control:
50593
+ $ref: "#/components/headers/CacheControlNoStore"
50594
+ X-Correlation-Id:
50595
+ $ref: "#/components/headers/XCorrelationId"
50596
+ "400":
50597
+ content:
50598
+ application/problem+json:
50599
+ examples:
50600
+ VALIDATION_FAILED:
50601
+ summary: VALIDATION_FAILED
50602
+ value:
50603
+ code: VALIDATION_FAILED
50604
+ correlationId: 018f0000-0000-7000-8000-000000000001
50605
+ detail: See the operation contract.
50606
+ errors: []
50607
+ retryable: false
50608
+ schemaId: urn:gala:schema:problem:2.0.0
50609
+ schemaVersion: 2.0.0
50610
+ status: 400
50611
+ title: VALIDATION_FAILED
50612
+ type: urn:gala:problem:validation-failed
50613
+ schema:
50614
+ $ref: "#/components/schemas/Problem"
50615
+ description: VALIDATION_FAILED
50616
+ headers:
50617
+ Cache-Control:
50618
+ $ref: "#/components/headers/CacheControlNoStore"
50619
+ X-Correlation-Id:
50620
+ $ref: "#/components/headers/XCorrelationId"
50621
+ x-gala-problem-codes:
50622
+ - VALIDATION_FAILED
50623
+ "401":
50624
+ content:
50625
+ application/problem+json:
50626
+ examples:
50627
+ AUTHENTICATION_REQUIRED:
50628
+ summary: AUTHENTICATION_REQUIRED
50629
+ value:
50630
+ code: AUTHENTICATION_REQUIRED
50631
+ correlationId: 018f0000-0000-7000-8000-000000000001
50632
+ detail: See the operation contract.
50633
+ errors: []
50634
+ retryable: false
50635
+ schemaId: urn:gala:schema:problem:2.0.0
50636
+ schemaVersion: 2.0.0
50637
+ status: 401
50638
+ title: AUTHENTICATION_REQUIRED
50639
+ type: urn:gala:problem:authentication-required
50640
+ schema:
50641
+ $ref: "#/components/schemas/Problem"
50642
+ description: AUTHENTICATION_REQUIRED
50643
+ headers:
50644
+ Cache-Control:
50645
+ $ref: "#/components/headers/CacheControlNoStore"
50646
+ X-Correlation-Id:
50647
+ $ref: "#/components/headers/XCorrelationId"
50648
+ x-gala-problem-codes:
50649
+ - AUTHENTICATION_REQUIRED
50650
+ "403":
50651
+ content:
50652
+ application/problem+json:
50653
+ examples:
50654
+ AUTHORIZATION_DENIED:
50655
+ summary: AUTHORIZATION_DENIED
50656
+ value:
50657
+ code: AUTHORIZATION_DENIED
50658
+ correlationId: 018f0000-0000-7000-8000-000000000001
50659
+ detail: See the operation contract.
50660
+ errors: []
50661
+ retryable: false
50662
+ schemaId: urn:gala:schema:problem:2.0.0
50663
+ schemaVersion: 2.0.0
50664
+ status: 403
50665
+ title: AUTHORIZATION_DENIED
50666
+ type: urn:gala:problem:authorization-denied
50667
+ schema:
50668
+ $ref: "#/components/schemas/Problem"
50669
+ description: AUTHORIZATION_DENIED
50670
+ headers:
50671
+ Cache-Control:
50672
+ $ref: "#/components/headers/CacheControlNoStore"
50673
+ X-Correlation-Id:
50674
+ $ref: "#/components/headers/XCorrelationId"
50675
+ x-gala-problem-codes:
50676
+ - AUTHORIZATION_DENIED
50677
+ "404":
50678
+ content:
50679
+ application/problem+json:
50680
+ examples:
50681
+ RESOURCE_NOT_FOUND:
50682
+ summary: RESOURCE_NOT_FOUND
50683
+ value:
50684
+ code: RESOURCE_NOT_FOUND
50685
+ correlationId: 018f0000-0000-7000-8000-000000000001
50686
+ detail: See the operation contract.
50687
+ errors: []
50688
+ retryable: false
50689
+ schemaId: urn:gala:schema:problem:2.0.0
50690
+ schemaVersion: 2.0.0
50691
+ status: 404
50692
+ title: RESOURCE_NOT_FOUND
50693
+ type: urn:gala:problem:resource-not-found
50694
+ schema:
50695
+ $ref: "#/components/schemas/Problem"
50696
+ description: RESOURCE_NOT_FOUND
50697
+ headers:
50698
+ Cache-Control:
50699
+ $ref: "#/components/headers/CacheControlNoStore"
50700
+ X-Correlation-Id:
50701
+ $ref: "#/components/headers/XCorrelationId"
50702
+ x-gala-problem-codes:
50703
+ - RESOURCE_NOT_FOUND
50704
+ security:
50705
+ - browserSession: []
50706
+ summary: list Interviews
50707
+ tags:
50708
+ - interview
50709
+ x-gala-activation-gate: MVP
50710
+ x-gala-activation-guards:
50711
+ - NONE
50712
+ x-gala-capability-key: publication.source.write
50713
+ x-gala-concurrency: authorization-and-publication-epochs
50714
+ x-gala-conditional-capabilities: []
50715
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
50716
+ x-gala-nullability: required-and-nullable-are-explicit
50717
+ x-gala-purpose: list Interviews
50718
+ x-gala-reachable-problems:
50719
+ - AUTHENTICATION_REQUIRED
50720
+ - AUTHORIZATION_DENIED
50721
+ - RESOURCE_NOT_FOUND
50722
+ - VALIDATION_FAILED
50723
+ x-gala-replay-identity: safe-query
50724
+ x-gala-state-guards:
50725
+ - NONE
50726
+ x-gala-success-category: query
50727
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
50728
+ post:
50729
+ description: |
50730
+ 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`.
50731
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviews
50732
+ parameters:
50733
+ - $ref: "#/components/parameters/XCorrelationId"
50734
+ - example: 018f0000-0000-7000-8000-000000000001
50735
+ in: path
50736
+ name: organizationId
50737
+ required: true
50738
+ schema:
50739
+ format: uuid
50740
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50741
+ type: string
50742
+ - example: 018f0000-0000-7000-8000-000000000001
50743
+ in: path
50744
+ name: publicationId
50745
+ required: true
50746
+ schema:
50747
+ format: uuid
50748
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
50749
+ type: string
50750
+ - $ref: "#/components/parameters/IdempotencyKey"
50751
+ - $ref: "#/components/parameters/XCsrfToken"
50752
+ requestBody:
50753
+ content:
50754
+ application/json:
50755
+ examples:
50756
+ nominal:
50757
+ summary: Nominal valid request
50758
+ value:
50759
+ capture:
50760
+ kind: NOTE
50761
+ text: We cut our onboarding from nine steps to four and signups doubled.
50762
+ schema:
50763
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsRequest"
50764
+ required: true
50765
+ responses:
50766
+ "201":
50767
+ content:
50768
+ application/json:
50769
+ examples:
50770
+ nominal:
50771
+ summary: Nominal successful response
50772
+ value:
50773
+ capture:
50774
+ kind: NOTE
50775
+ text: We cut our onboarding from nine steps to four and signups doubled.
50776
+ createdAt: "2026-11-04T12:00:00.000Z"
50777
+ expiresAt: "2026-11-11T12:00:00.000Z"
50778
+ interviewId: 018f0000-0000-7000-8000-000000000001
50779
+ organizationId: 018f0000-0000-7000-8000-000000000003
50780
+ progress:
50781
+ beliefDone: false
50782
+ canFinish: false
50783
+ details: 0
50784
+ detailsTarget: 5
50785
+ phase: OWNED
50786
+ skepticRounds: 0
50787
+ publicationId: 018f0000-0000-7000-8000-000000000002
50788
+ state: CAPTURED
50789
+ turns: []
50790
+ updatedAt: "2026-11-04T12:00:00.000Z"
50791
+ schema:
50792
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsResponse"
50793
+ description: capture material for an Interview succeeded
50794
+ headers:
50795
+ Cache-Control:
50796
+ $ref: "#/components/headers/CacheControlNoStore"
50797
+ Location:
50798
+ $ref: "#/components/headers/Location"
50799
+ X-Correlation-Id:
50800
+ $ref: "#/components/headers/XCorrelationId"
50801
+ "400":
50802
+ content:
50803
+ application/problem+json:
50804
+ examples:
50805
+ REQUEST_FIELD_UNKNOWN:
50806
+ summary: REQUEST_FIELD_UNKNOWN
50807
+ value:
50808
+ code: REQUEST_FIELD_UNKNOWN
50809
+ correlationId: 018f0000-0000-7000-8000-000000000001
50810
+ detail: See the operation contract.
50811
+ errors: []
50812
+ retryable: false
50813
+ schemaId: urn:gala:schema:problem:2.0.0
50814
+ schemaVersion: 2.0.0
50815
+ status: 400
50816
+ title: REQUEST_FIELD_UNKNOWN
50817
+ type: urn:gala:problem:request-field-unknown
50818
+ VALIDATION_FAILED:
50819
+ summary: VALIDATION_FAILED
50820
+ value:
50821
+ code: VALIDATION_FAILED
50822
+ correlationId: 018f0000-0000-7000-8000-000000000001
50823
+ detail: See the operation contract.
50824
+ errors: []
50825
+ retryable: false
50826
+ schemaId: urn:gala:schema:problem:2.0.0
50827
+ schemaVersion: 2.0.0
50828
+ status: 400
50829
+ title: VALIDATION_FAILED
50830
+ type: urn:gala:problem:validation-failed
50831
+ schema:
50832
+ $ref: "#/components/schemas/Problem"
50833
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
50834
+ headers:
50835
+ Cache-Control:
50836
+ $ref: "#/components/headers/CacheControlNoStore"
50837
+ X-Correlation-Id:
50838
+ $ref: "#/components/headers/XCorrelationId"
50839
+ x-gala-problem-codes:
50840
+ - REQUEST_FIELD_UNKNOWN
50841
+ - VALIDATION_FAILED
50842
+ "401":
50843
+ content:
50844
+ application/problem+json:
50845
+ examples:
50846
+ AUTHENTICATION_REQUIRED:
50847
+ summary: AUTHENTICATION_REQUIRED
50848
+ value:
50849
+ code: AUTHENTICATION_REQUIRED
50850
+ correlationId: 018f0000-0000-7000-8000-000000000001
50851
+ detail: See the operation contract.
50852
+ errors: []
50853
+ retryable: false
50854
+ schemaId: urn:gala:schema:problem:2.0.0
50855
+ schemaVersion: 2.0.0
50856
+ status: 401
50857
+ title: AUTHENTICATION_REQUIRED
50858
+ type: urn:gala:problem:authentication-required
50859
+ schema:
50860
+ $ref: "#/components/schemas/Problem"
50861
+ description: AUTHENTICATION_REQUIRED
50862
+ headers:
50863
+ Cache-Control:
50864
+ $ref: "#/components/headers/CacheControlNoStore"
50865
+ X-Correlation-Id:
50866
+ $ref: "#/components/headers/XCorrelationId"
50867
+ x-gala-problem-codes:
50868
+ - AUTHENTICATION_REQUIRED
50869
+ "403":
50870
+ content:
50871
+ application/problem+json:
50872
+ examples:
50873
+ AUTHORIZATION_DENIED:
50874
+ summary: AUTHORIZATION_DENIED
50875
+ value:
50876
+ code: AUTHORIZATION_DENIED
50877
+ correlationId: 018f0000-0000-7000-8000-000000000001
50878
+ detail: See the operation contract.
50879
+ errors: []
50880
+ retryable: false
50881
+ schemaId: urn:gala:schema:problem:2.0.0
50882
+ schemaVersion: 2.0.0
50883
+ status: 403
50884
+ title: AUTHORIZATION_DENIED
50885
+ type: urn:gala:problem:authorization-denied
50886
+ schema:
50887
+ $ref: "#/components/schemas/Problem"
50888
+ description: AUTHORIZATION_DENIED
50889
+ headers:
50890
+ Cache-Control:
50891
+ $ref: "#/components/headers/CacheControlNoStore"
50892
+ X-Correlation-Id:
50893
+ $ref: "#/components/headers/XCorrelationId"
50894
+ x-gala-problem-codes:
50895
+ - AUTHORIZATION_DENIED
50896
+ "404":
50897
+ content:
50898
+ application/problem+json:
50899
+ examples:
50900
+ RESOURCE_NOT_FOUND:
50901
+ summary: RESOURCE_NOT_FOUND
50902
+ value:
50903
+ code: RESOURCE_NOT_FOUND
50904
+ correlationId: 018f0000-0000-7000-8000-000000000001
50905
+ detail: See the operation contract.
50906
+ errors: []
50907
+ retryable: false
50908
+ schemaId: urn:gala:schema:problem:2.0.0
50909
+ schemaVersion: 2.0.0
50910
+ status: 404
50911
+ title: RESOURCE_NOT_FOUND
50912
+ type: urn:gala:problem:resource-not-found
50913
+ schema:
50914
+ $ref: "#/components/schemas/Problem"
50915
+ description: RESOURCE_NOT_FOUND
50916
+ headers:
50917
+ Cache-Control:
50918
+ $ref: "#/components/headers/CacheControlNoStore"
50919
+ X-Correlation-Id:
50920
+ $ref: "#/components/headers/XCorrelationId"
50921
+ x-gala-problem-codes:
50922
+ - RESOURCE_NOT_FOUND
50923
+ "409":
50924
+ content:
50925
+ application/problem+json:
50926
+ examples:
50927
+ COMMAND_REPLAY_CONFLICT:
50928
+ summary: COMMAND_REPLAY_CONFLICT
50929
+ value:
50930
+ code: COMMAND_REPLAY_CONFLICT
50931
+ correlationId: 018f0000-0000-7000-8000-000000000001
50932
+ detail: See the operation contract.
50933
+ errors: []
50934
+ retryable: false
50935
+ schemaId: urn:gala:schema:problem:2.0.0
50936
+ schemaVersion: 2.0.0
50937
+ status: 409
50938
+ title: COMMAND_REPLAY_CONFLICT
50939
+ type: urn:gala:problem:command-replay-conflict
50940
+ PLAN_REQUIRED:
50941
+ summary: PLAN_REQUIRED
50942
+ value:
50943
+ code: PLAN_REQUIRED
50944
+ correlationId: 018f0000-0000-7000-8000-000000000001
50945
+ detail: See the operation contract.
50946
+ errors: []
50947
+ retryable: false
50948
+ schemaId: urn:gala:schema:problem:2.0.0
50949
+ schemaVersion: 2.0.0
50950
+ status: 409
50951
+ title: PLAN_REQUIRED
50952
+ type: urn:gala:problem:plan-required
50953
+ TRANSFER_PENDING:
50954
+ summary: TRANSFER_PENDING
50955
+ value:
50956
+ code: TRANSFER_PENDING
50957
+ correlationId: 018f0000-0000-7000-8000-000000000001
50958
+ detail: See the operation contract.
50959
+ errors: []
50960
+ retryable: false
50961
+ schemaId: urn:gala:schema:problem:2.0.0
50962
+ schemaVersion: 2.0.0
50963
+ status: 409
50964
+ title: TRANSFER_PENDING
50965
+ type: urn:gala:problem:transfer-pending
50966
+ schema:
50967
+ $ref: "#/components/schemas/Problem"
50968
+ description: COMMAND_REPLAY_CONFLICT, PLAN_REQUIRED, TRANSFER_PENDING
50969
+ headers:
50970
+ Cache-Control:
50971
+ $ref: "#/components/headers/CacheControlNoStore"
50972
+ X-Correlation-Id:
50973
+ $ref: "#/components/headers/XCorrelationId"
50974
+ x-gala-problem-codes:
50975
+ - COMMAND_REPLAY_CONFLICT
50976
+ - PLAN_REQUIRED
50977
+ - TRANSFER_PENDING
50978
+ "503":
50979
+ content:
50980
+ application/problem+json:
50981
+ examples:
50982
+ CAPABILITY_UNAVAILABLE:
50983
+ summary: CAPABILITY_UNAVAILABLE
50984
+ value:
50985
+ code: CAPABILITY_UNAVAILABLE
50986
+ correlationId: 018f0000-0000-7000-8000-000000000001
50987
+ detail: See the operation contract.
50988
+ errors: []
50989
+ retryable: false
50990
+ schemaId: urn:gala:schema:problem:2.0.0
50991
+ schemaVersion: 2.0.0
50992
+ status: 503
50993
+ title: CAPABILITY_UNAVAILABLE
50994
+ type: urn:gala:problem:capability-unavailable
50995
+ schema:
50996
+ $ref: "#/components/schemas/Problem"
50997
+ description: CAPABILITY_UNAVAILABLE
50998
+ headers:
50999
+ Cache-Control:
51000
+ $ref: "#/components/headers/CacheControlNoStore"
51001
+ X-Correlation-Id:
51002
+ $ref: "#/components/headers/XCorrelationId"
51003
+ x-gala-problem-codes:
51004
+ - CAPABILITY_UNAVAILABLE
51005
+ security:
51006
+ - browserSession: []
51007
+ summary: capture material for an Interview
51008
+ tags:
51009
+ - interview
51010
+ x-gala-activation-gate: MVP
51011
+ x-gala-activation-guards:
51012
+ - Interview enabled for this deployment and publication
51013
+ x-gala-capability-key: publication.source.write
51014
+ x-gala-concurrency: interview-version
51015
+ x-gala-conditional-capabilities: []
51016
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
51017
+ x-gala-nullability: required-and-nullable-are-explicit
51018
+ x-gala-purpose: capture material for an Interview
51019
+ x-gala-reachable-problems:
51020
+ - AUTHENTICATION_REQUIRED
51021
+ - AUTHORIZATION_DENIED
51022
+ - CAPABILITY_UNAVAILABLE
51023
+ - COMMAND_REPLAY_CONFLICT
51024
+ - PLAN_REQUIRED
51025
+ - REQUEST_FIELD_UNKNOWN
51026
+ - RESOURCE_NOT_FOUND
51027
+ - TRANSFER_PENDING
51028
+ - VALIDATION_FAILED
51029
+ x-gala-replay-identity: idempotency-key
51030
+ x-gala-state-guards:
51031
+ - NONE
51032
+ x-gala-success-category: create
51033
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
51034
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:
51035
+ get:
51036
+ description: |
51037
+ One interview with its conversation (`turns`), and from `DRAFT_READY` its `draft` and `review`. Poll it while `state` is `WRITING`.
51038
+ operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewId
51039
+ parameters:
51040
+ - $ref: "#/components/parameters/XCorrelationId"
51041
+ - example: 018f0000-0000-7000-8000-000000000001
51042
+ in: path
51043
+ name: organizationId
51044
+ required: true
51045
+ schema:
51046
+ format: uuid
51047
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51048
+ type: string
51049
+ - example: 018f0000-0000-7000-8000-000000000001
51050
+ in: path
51051
+ name: publicationId
51052
+ required: true
51053
+ schema:
51054
+ format: uuid
51055
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51056
+ type: string
51057
+ - example: 018f0000-0000-7000-8000-000000000001
51058
+ in: path
51059
+ name: interviewId
51060
+ required: true
51061
+ schema:
51062
+ format: uuid
51063
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51064
+ type: string
51065
+ responses:
51066
+ "200":
51067
+ content:
51068
+ application/json:
51069
+ examples:
51070
+ nominal:
51071
+ summary: Nominal successful response
51072
+ value:
51073
+ capture:
51074
+ kind: NOTE
51075
+ text: We cut our onboarding from nine steps to four and signups doubled.
51076
+ createdAt: "2026-11-04T12:00:00.000Z"
51077
+ draft:
51078
+ body: |-
51079
+ We cut onboarding from nine steps to four.
51080
+
51081
+ The first step to go was the account type.
51082
+ description: How cutting onboarding steps doubled signups.
51083
+ language: en
51084
+ title: Nine steps to four
51085
+ tldr: Fewer steps, twice the signups.
51086
+ expiresAt: "2026-11-11T12:00:00.000Z"
51087
+ finishedAt: "2026-11-04T12:00:00.000Z"
51088
+ interviewId: 018f0000-0000-7000-8000-000000000001
51089
+ organizationId: 018f0000-0000-7000-8000-000000000003
51090
+ progress:
51091
+ beliefDone: false
51092
+ canFinish: true
51093
+ details: 3
51094
+ detailsTarget: 5
51095
+ phase: DONE
51096
+ skepticRounds: 0
51097
+ publicationId: 018f0000-0000-7000-8000-000000000002
51098
+ review:
51099
+ claims:
51100
+ - source:
51101
+ note: From the author's note.
51102
+ status: VERIFIED
51103
+ text: Signups doubled.
51104
+ clear:
51105
+ flagged: []
51106
+ threeSentences:
51107
+ - Onboarding was nine steps.
51108
+ - You cut it to four.
51109
+ - Signups doubled.
51110
+ pastPostsRead:
51111
+ - content/my-post.md
51112
+ sources: []
51113
+ startedAt: "2026-11-04T12:00:00.000Z"
51114
+ state: DRAFT_READY
51115
+ turns:
51116
+ - at: "2026-11-04T12:00:00.000Z"
51117
+ kind: QUESTION
51118
+ role: INTERVIEWER
51119
+ seq: 1
51120
+ text: What did you cut first, and what did you expect to happen?
51121
+ - at: "2026-11-04T12:00:00.000Z"
51122
+ kind: ANSWER
51123
+ role: AUTHOR
51124
+ seq: 2
51125
+ text: The account-type step. I expected no one to notice.
51126
+ updatedAt: "2026-11-04T12:00:00.000Z"
51127
+ schema:
51128
+ $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdResponse"
51129
+ description: read an Interview succeeded
51130
+ headers:
51131
+ Cache-Control:
51132
+ $ref: "#/components/headers/CacheControlNoStore"
51133
+ X-Correlation-Id:
51134
+ $ref: "#/components/headers/XCorrelationId"
51135
+ "400":
51136
+ content:
51137
+ application/problem+json:
51138
+ examples:
51139
+ VALIDATION_FAILED:
51140
+ summary: VALIDATION_FAILED
51141
+ value:
51142
+ code: VALIDATION_FAILED
51143
+ correlationId: 018f0000-0000-7000-8000-000000000001
51144
+ detail: See the operation contract.
51145
+ errors: []
51146
+ retryable: false
51147
+ schemaId: urn:gala:schema:problem:2.0.0
51148
+ schemaVersion: 2.0.0
51149
+ status: 400
51150
+ title: VALIDATION_FAILED
51151
+ type: urn:gala:problem:validation-failed
51152
+ schema:
51153
+ $ref: "#/components/schemas/Problem"
51154
+ description: VALIDATION_FAILED
51155
+ headers:
51156
+ Cache-Control:
51157
+ $ref: "#/components/headers/CacheControlNoStore"
51158
+ X-Correlation-Id:
51159
+ $ref: "#/components/headers/XCorrelationId"
51160
+ x-gala-problem-codes:
51161
+ - VALIDATION_FAILED
51162
+ "401":
51163
+ content:
51164
+ application/problem+json:
51165
+ examples:
51166
+ AUTHENTICATION_REQUIRED:
51167
+ summary: AUTHENTICATION_REQUIRED
51168
+ value:
51169
+ code: AUTHENTICATION_REQUIRED
51170
+ correlationId: 018f0000-0000-7000-8000-000000000001
51171
+ detail: See the operation contract.
51172
+ errors: []
51173
+ retryable: false
51174
+ schemaId: urn:gala:schema:problem:2.0.0
51175
+ schemaVersion: 2.0.0
51176
+ status: 401
51177
+ title: AUTHENTICATION_REQUIRED
51178
+ type: urn:gala:problem:authentication-required
51179
+ schema:
51180
+ $ref: "#/components/schemas/Problem"
51181
+ description: AUTHENTICATION_REQUIRED
51182
+ headers:
51183
+ Cache-Control:
51184
+ $ref: "#/components/headers/CacheControlNoStore"
51185
+ X-Correlation-Id:
51186
+ $ref: "#/components/headers/XCorrelationId"
51187
+ x-gala-problem-codes:
51188
+ - AUTHENTICATION_REQUIRED
51189
+ "403":
51190
+ content:
51191
+ application/problem+json:
51192
+ examples:
51193
+ AUTHORIZATION_DENIED:
51194
+ summary: AUTHORIZATION_DENIED
51195
+ value:
51196
+ code: AUTHORIZATION_DENIED
51197
+ correlationId: 018f0000-0000-7000-8000-000000000001
51198
+ detail: See the operation contract.
51199
+ errors: []
51200
+ retryable: false
51201
+ schemaId: urn:gala:schema:problem:2.0.0
51202
+ schemaVersion: 2.0.0
51203
+ status: 403
51204
+ title: AUTHORIZATION_DENIED
51205
+ type: urn:gala:problem:authorization-denied
51206
+ schema:
51207
+ $ref: "#/components/schemas/Problem"
51208
+ description: AUTHORIZATION_DENIED
51209
+ headers:
51210
+ Cache-Control:
51211
+ $ref: "#/components/headers/CacheControlNoStore"
51212
+ X-Correlation-Id:
51213
+ $ref: "#/components/headers/XCorrelationId"
51214
+ x-gala-problem-codes:
51215
+ - AUTHORIZATION_DENIED
51216
+ "404":
51217
+ content:
51218
+ application/problem+json:
51219
+ examples:
51220
+ RESOURCE_NOT_FOUND:
51221
+ summary: RESOURCE_NOT_FOUND
51222
+ value:
51223
+ code: RESOURCE_NOT_FOUND
51224
+ correlationId: 018f0000-0000-7000-8000-000000000001
51225
+ detail: See the operation contract.
51226
+ errors: []
51227
+ retryable: false
51228
+ schemaId: urn:gala:schema:problem:2.0.0
51229
+ schemaVersion: 2.0.0
51230
+ status: 404
51231
+ title: RESOURCE_NOT_FOUND
51232
+ type: urn:gala:problem:resource-not-found
51233
+ schema:
51234
+ $ref: "#/components/schemas/Problem"
51235
+ description: RESOURCE_NOT_FOUND
51236
+ headers:
51237
+ Cache-Control:
51238
+ $ref: "#/components/headers/CacheControlNoStore"
51239
+ X-Correlation-Id:
51240
+ $ref: "#/components/headers/XCorrelationId"
51241
+ x-gala-problem-codes:
51242
+ - RESOURCE_NOT_FOUND
51243
+ security:
51244
+ - browserSession: []
51245
+ summary: read an Interview
51246
+ tags:
51247
+ - interview
51248
+ x-gala-activation-gate: MVP
51249
+ x-gala-activation-guards:
51250
+ - NONE
51251
+ x-gala-capability-key: publication.source.write
51252
+ x-gala-concurrency: interview-version
51253
+ x-gala-conditional-capabilities: []
51254
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
51255
+ x-gala-nullability: required-and-nullable-are-explicit
51256
+ x-gala-purpose: read an Interview
51257
+ x-gala-reachable-problems:
51258
+ - AUTHENTICATION_REQUIRED
51259
+ - AUTHORIZATION_DENIED
51260
+ - RESOURCE_NOT_FOUND
51261
+ - VALIDATION_FAILED
51262
+ x-gala-replay-identity: safe-query
51263
+ x-gala-state-guards:
51264
+ - NONE
51265
+ x-gala-success-category: query
51266
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
51267
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}/turns:
51268
+ post:
51269
+ description: |
51270
+ 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.
51271
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurns
51272
+ parameters:
51273
+ - $ref: "#/components/parameters/XCorrelationId"
51274
+ - example: 018f0000-0000-7000-8000-000000000001
51275
+ in: path
51276
+ name: organizationId
51277
+ required: true
51278
+ schema:
51279
+ format: uuid
51280
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51281
+ type: string
51282
+ - example: 018f0000-0000-7000-8000-000000000001
51283
+ in: path
51284
+ name: publicationId
51285
+ required: true
51286
+ schema:
51287
+ format: uuid
51288
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51289
+ type: string
51290
+ - example: 018f0000-0000-7000-8000-000000000001
51291
+ in: path
51292
+ name: interviewId
51293
+ required: true
51294
+ schema:
51295
+ format: uuid
51296
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51297
+ type: string
51298
+ - $ref: "#/components/parameters/IdempotencyKey"
51299
+ - $ref: "#/components/parameters/XCsrfToken"
51300
+ requestBody:
51301
+ content:
51302
+ application/json:
51303
+ examples:
51304
+ nominal:
51305
+ summary: Nominal valid request
51306
+ value:
51307
+ text: The account-type step. I expected no one to notice.
51308
+ schema:
51309
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurnsRequest"
51310
+ required: true
51311
+ responses:
51312
+ "200":
51313
+ content:
51314
+ application/json:
51315
+ examples:
51316
+ nominal:
51317
+ summary: Nominal successful response
51318
+ value:
51319
+ capture:
51320
+ kind: NOTE
51321
+ text: We cut our onboarding from nine steps to four and signups doubled.
51322
+ createdAt: "2026-11-04T12:00:00.000Z"
51323
+ expiresAt: "2026-11-11T12:00:00.000Z"
51324
+ interviewId: 018f0000-0000-7000-8000-000000000001
51325
+ organizationId: 018f0000-0000-7000-8000-000000000003
51326
+ progress:
51327
+ beliefDone: false
51328
+ canFinish: false
51329
+ details: 1
51330
+ detailsTarget: 5
51331
+ phase: OWNED
51332
+ skepticRounds: 0
51333
+ publicationId: 018f0000-0000-7000-8000-000000000002
51334
+ startedAt: "2026-11-04T12:00:00.000Z"
51335
+ state: INTERVIEWING
51336
+ turns:
51337
+ - at: "2026-11-04T12:00:00.000Z"
51338
+ kind: QUESTION
51339
+ role: INTERVIEWER
51340
+ seq: 1
51341
+ text: What did you cut first, and what did you expect to happen?
51342
+ - at: "2026-11-04T12:00:00.000Z"
51343
+ kind: ANSWER
51344
+ role: AUTHOR
51345
+ seq: 2
51346
+ text: The account-type step. I expected no one to notice.
51347
+ - at: "2026-11-04T12:00:00.000Z"
51348
+ kind: QUESTION
51349
+ role: INTERVIEWER
51350
+ seq: 3
51351
+ text: Who noticed first?
51352
+ updatedAt: "2026-11-04T12:00:00.000Z"
51353
+ schema:
51354
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdTurnsResponse"
51355
+ description: answer the Interviewer succeeded
51356
+ headers:
51357
+ Cache-Control:
51358
+ $ref: "#/components/headers/CacheControlNoStore"
51359
+ X-Correlation-Id:
51360
+ $ref: "#/components/headers/XCorrelationId"
51361
+ "400":
51362
+ content:
51363
+ application/problem+json:
51364
+ examples:
51365
+ REQUEST_FIELD_UNKNOWN:
51366
+ summary: REQUEST_FIELD_UNKNOWN
51367
+ value:
51368
+ code: REQUEST_FIELD_UNKNOWN
51369
+ correlationId: 018f0000-0000-7000-8000-000000000001
51370
+ detail: See the operation contract.
51371
+ errors: []
51372
+ retryable: false
51373
+ schemaId: urn:gala:schema:problem:2.0.0
51374
+ schemaVersion: 2.0.0
51375
+ status: 400
51376
+ title: REQUEST_FIELD_UNKNOWN
51377
+ type: urn:gala:problem:request-field-unknown
51378
+ VALIDATION_FAILED:
51379
+ summary: VALIDATION_FAILED
51380
+ value:
51381
+ code: VALIDATION_FAILED
51382
+ correlationId: 018f0000-0000-7000-8000-000000000001
51383
+ detail: See the operation contract.
51384
+ errors: []
51385
+ retryable: false
51386
+ schemaId: urn:gala:schema:problem:2.0.0
51387
+ schemaVersion: 2.0.0
51388
+ status: 400
51389
+ title: VALIDATION_FAILED
51390
+ type: urn:gala:problem:validation-failed
51391
+ schema:
51392
+ $ref: "#/components/schemas/Problem"
51393
+ description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
51394
+ headers:
51395
+ Cache-Control:
51396
+ $ref: "#/components/headers/CacheControlNoStore"
51397
+ X-Correlation-Id:
51398
+ $ref: "#/components/headers/XCorrelationId"
51399
+ x-gala-problem-codes:
51400
+ - REQUEST_FIELD_UNKNOWN
51401
+ - VALIDATION_FAILED
51402
+ "401":
51403
+ content:
51404
+ application/problem+json:
51405
+ examples:
51406
+ AUTHENTICATION_REQUIRED:
51407
+ summary: AUTHENTICATION_REQUIRED
51408
+ value:
51409
+ code: AUTHENTICATION_REQUIRED
51410
+ correlationId: 018f0000-0000-7000-8000-000000000001
51411
+ detail: See the operation contract.
51412
+ errors: []
51413
+ retryable: false
51414
+ schemaId: urn:gala:schema:problem:2.0.0
51415
+ schemaVersion: 2.0.0
51416
+ status: 401
51417
+ title: AUTHENTICATION_REQUIRED
51418
+ type: urn:gala:problem:authentication-required
51419
+ schema:
51420
+ $ref: "#/components/schemas/Problem"
51421
+ description: AUTHENTICATION_REQUIRED
51422
+ headers:
51423
+ Cache-Control:
51424
+ $ref: "#/components/headers/CacheControlNoStore"
51425
+ X-Correlation-Id:
51426
+ $ref: "#/components/headers/XCorrelationId"
51427
+ x-gala-problem-codes:
51428
+ - AUTHENTICATION_REQUIRED
51429
+ "403":
51430
+ content:
51431
+ application/problem+json:
51432
+ examples:
51433
+ AUTHORIZATION_DENIED:
51434
+ summary: AUTHORIZATION_DENIED
51435
+ value:
51436
+ code: AUTHORIZATION_DENIED
51437
+ correlationId: 018f0000-0000-7000-8000-000000000001
51438
+ detail: See the operation contract.
51439
+ errors: []
51440
+ retryable: false
51441
+ schemaId: urn:gala:schema:problem:2.0.0
51442
+ schemaVersion: 2.0.0
51443
+ status: 403
51444
+ title: AUTHORIZATION_DENIED
51445
+ type: urn:gala:problem:authorization-denied
51446
+ schema:
51447
+ $ref: "#/components/schemas/Problem"
51448
+ description: AUTHORIZATION_DENIED
51449
+ headers:
51450
+ Cache-Control:
51451
+ $ref: "#/components/headers/CacheControlNoStore"
51452
+ X-Correlation-Id:
51453
+ $ref: "#/components/headers/XCorrelationId"
51454
+ x-gala-problem-codes:
51455
+ - AUTHORIZATION_DENIED
51456
+ "404":
51457
+ content:
51458
+ application/problem+json:
51459
+ examples:
51460
+ RESOURCE_NOT_FOUND:
51461
+ summary: RESOURCE_NOT_FOUND
51462
+ value:
51463
+ code: RESOURCE_NOT_FOUND
51464
+ correlationId: 018f0000-0000-7000-8000-000000000001
51465
+ detail: See the operation contract.
51466
+ errors: []
51467
+ retryable: false
51468
+ schemaId: urn:gala:schema:problem:2.0.0
51469
+ schemaVersion: 2.0.0
51470
+ status: 404
51471
+ title: RESOURCE_NOT_FOUND
51472
+ type: urn:gala:problem:resource-not-found
51473
+ schema:
51474
+ $ref: "#/components/schemas/Problem"
51475
+ description: RESOURCE_NOT_FOUND
51476
+ headers:
51477
+ Cache-Control:
51478
+ $ref: "#/components/headers/CacheControlNoStore"
51479
+ X-Correlation-Id:
51480
+ $ref: "#/components/headers/XCorrelationId"
51481
+ x-gala-problem-codes:
51482
+ - RESOURCE_NOT_FOUND
51483
+ "409":
51484
+ content:
51485
+ application/problem+json:
51486
+ examples:
51487
+ COMMAND_REPLAY_CONFLICT:
51488
+ summary: COMMAND_REPLAY_CONFLICT
51489
+ value:
51490
+ code: COMMAND_REPLAY_CONFLICT
51491
+ correlationId: 018f0000-0000-7000-8000-000000000001
51492
+ detail: See the operation contract.
51493
+ errors: []
51494
+ retryable: false
51495
+ schemaId: urn:gala:schema:problem:2.0.0
51496
+ schemaVersion: 2.0.0
51497
+ status: 409
51498
+ title: COMMAND_REPLAY_CONFLICT
51499
+ type: urn:gala:problem:command-replay-conflict
51500
+ INTERVIEW_STATE_CONFLICT:
51501
+ summary: INTERVIEW_STATE_CONFLICT
51502
+ value:
51503
+ code: INTERVIEW_STATE_CONFLICT
51504
+ correlationId: 018f0000-0000-7000-8000-000000000001
51505
+ detail: See the operation contract.
51506
+ errors: []
51507
+ retryable: false
51508
+ schemaId: urn:gala:schema:problem:2.0.0
51509
+ schemaVersion: 2.0.0
51510
+ status: 409
51511
+ title: INTERVIEW_STATE_CONFLICT
51512
+ type: urn:gala:problem:interview-state-conflict
51513
+ TRANSFER_PENDING:
51514
+ summary: TRANSFER_PENDING
51515
+ value:
51516
+ code: TRANSFER_PENDING
51517
+ correlationId: 018f0000-0000-7000-8000-000000000001
51518
+ detail: See the operation contract.
51519
+ errors: []
51520
+ retryable: false
51521
+ schemaId: urn:gala:schema:problem:2.0.0
51522
+ schemaVersion: 2.0.0
51523
+ status: 409
51524
+ title: TRANSFER_PENDING
51525
+ type: urn:gala:problem:transfer-pending
51526
+ schema:
51527
+ $ref: "#/components/schemas/Problem"
51528
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, TRANSFER_PENDING
51529
+ headers:
51530
+ Cache-Control:
51531
+ $ref: "#/components/headers/CacheControlNoStore"
51532
+ X-Correlation-Id:
51533
+ $ref: "#/components/headers/XCorrelationId"
51534
+ x-gala-problem-codes:
51535
+ - COMMAND_REPLAY_CONFLICT
51536
+ - INTERVIEW_STATE_CONFLICT
51537
+ - TRANSFER_PENDING
51538
+ "429":
51539
+ content:
51540
+ application/problem+json:
51541
+ examples:
51542
+ RATE_LIMITED:
51543
+ summary: RATE_LIMITED
51544
+ value:
51545
+ code: RATE_LIMITED
51546
+ correlationId: 018f0000-0000-7000-8000-000000000001
51547
+ detail: See the operation contract.
51548
+ errors: []
51549
+ retryable: true
51550
+ schemaId: urn:gala:schema:problem:2.0.0
51551
+ schemaVersion: 2.0.0
51552
+ status: 429
51553
+ title: RATE_LIMITED
51554
+ type: urn:gala:problem:rate-limited
51555
+ schema:
51556
+ $ref: "#/components/schemas/Problem"
51557
+ description: RATE_LIMITED
51558
+ headers:
51559
+ Cache-Control:
51560
+ $ref: "#/components/headers/CacheControlNoStore"
51561
+ Retry-After:
51562
+ $ref: "#/components/headers/RetryAfter"
51563
+ X-Correlation-Id:
51564
+ $ref: "#/components/headers/XCorrelationId"
51565
+ x-gala-problem-codes:
51566
+ - RATE_LIMITED
51567
+ "503":
51568
+ content:
51569
+ application/problem+json:
51570
+ examples:
51571
+ BUDGET_EXHAUSTED:
51572
+ summary: BUDGET_EXHAUSTED
51573
+ value:
51574
+ code: BUDGET_EXHAUSTED
51575
+ correlationId: 018f0000-0000-7000-8000-000000000001
51576
+ detail: See the operation contract.
51577
+ errors: []
51578
+ retryable: false
51579
+ schemaId: urn:gala:schema:problem:2.0.0
51580
+ schemaVersion: 2.0.0
51581
+ status: 503
51582
+ title: BUDGET_EXHAUSTED
51583
+ type: urn:gala:problem:budget-exhausted
51584
+ CAPABILITY_UNAVAILABLE:
51585
+ summary: CAPABILITY_UNAVAILABLE
51586
+ value:
51587
+ code: CAPABILITY_UNAVAILABLE
51588
+ correlationId: 018f0000-0000-7000-8000-000000000001
51589
+ detail: See the operation contract.
51590
+ errors: []
51591
+ retryable: false
51592
+ schemaId: urn:gala:schema:problem:2.0.0
51593
+ schemaVersion: 2.0.0
51594
+ status: 503
51595
+ title: CAPABILITY_UNAVAILABLE
51596
+ type: urn:gala:problem:capability-unavailable
51597
+ PROVIDER_UNAVAILABLE:
51598
+ summary: PROVIDER_UNAVAILABLE
51599
+ value:
51600
+ code: PROVIDER_UNAVAILABLE
51601
+ correlationId: 018f0000-0000-7000-8000-000000000001
51602
+ detail: See the operation contract.
51603
+ errors: []
51604
+ retryable: true
51605
+ schemaId: urn:gala:schema:problem:2.0.0
51606
+ schemaVersion: 2.0.0
51607
+ status: 503
51608
+ title: PROVIDER_UNAVAILABLE
51609
+ type: urn:gala:problem:provider-unavailable
51610
+ schema:
51611
+ $ref: "#/components/schemas/Problem"
51612
+ description: BUDGET_EXHAUSTED, CAPABILITY_UNAVAILABLE, PROVIDER_UNAVAILABLE
51613
+ headers:
51614
+ Cache-Control:
51615
+ $ref: "#/components/headers/CacheControlNoStore"
51616
+ X-Correlation-Id:
51617
+ $ref: "#/components/headers/XCorrelationId"
51618
+ x-gala-problem-codes:
51619
+ - BUDGET_EXHAUSTED
51620
+ - CAPABILITY_UNAVAILABLE
51621
+ - PROVIDER_UNAVAILABLE
51622
+ security:
51623
+ - browserSession: []
51624
+ summary: answer the Interviewer
51625
+ tags:
51626
+ - interview
51627
+ x-gala-activation-gate: MVP
51628
+ x-gala-activation-guards:
51629
+ - Interview enabled for this deployment and publication
51630
+ x-gala-capability-key: publication.source.write
51631
+ x-gala-concurrency: interview-version
51632
+ x-gala-conditional-capabilities: []
51633
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
51634
+ x-gala-nullability: required-and-nullable-are-explicit
51635
+ x-gala-purpose: answer the Interviewer
51636
+ x-gala-reachable-problems:
51637
+ - AUTHENTICATION_REQUIRED
51638
+ - AUTHORIZATION_DENIED
51639
+ - BUDGET_EXHAUSTED
51640
+ - CAPABILITY_UNAVAILABLE
51641
+ - COMMAND_REPLAY_CONFLICT
51642
+ - INTERVIEW_STATE_CONFLICT
51643
+ - PROVIDER_UNAVAILABLE
51644
+ - RATE_LIMITED
51645
+ - REQUEST_FIELD_UNKNOWN
51646
+ - RESOURCE_NOT_FOUND
51647
+ - TRANSFER_PENDING
51648
+ - VALIDATION_FAILED
51649
+ x-gala-replay-identity: idempotency-key
51650
+ x-gala-state-guards:
51651
+ - NONE
51652
+ x-gala-success-category: protocol
51653
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
51654
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:accept:
51655
+ post:
51656
+ description: |
51657
+ 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.
51658
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdAccept
51659
+ parameters:
51660
+ - $ref: "#/components/parameters/XCorrelationId"
51661
+ - example: 018f0000-0000-7000-8000-000000000001
51662
+ in: path
51663
+ name: organizationId
51664
+ required: true
51665
+ schema:
51666
+ format: uuid
51667
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51668
+ type: string
51669
+ - example: 018f0000-0000-7000-8000-000000000001
51670
+ in: path
51671
+ name: publicationId
51672
+ required: true
51673
+ schema:
51674
+ format: uuid
51675
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51676
+ type: string
51677
+ - example: 018f0000-0000-7000-8000-000000000001
51678
+ in: path
51679
+ name: interviewId
51680
+ required: true
51681
+ schema:
51682
+ format: uuid
51683
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51684
+ type: string
51685
+ - $ref: "#/components/parameters/IdempotencyKey"
51686
+ - $ref: "#/components/parameters/XCsrfToken"
51687
+ responses:
51688
+ "200":
51689
+ content:
51690
+ application/json:
51691
+ examples:
51692
+ nominal:
51693
+ summary: Nominal successful response
51694
+ value:
51695
+ capture:
51696
+ kind: NOTE
51697
+ text: We cut our onboarding from nine steps to four and signups doubled.
51698
+ createdAt: "2026-11-04T12:00:00.000Z"
51699
+ draft:
51700
+ body: |-
51701
+ We cut onboarding from nine steps to four.
51702
+
51703
+ The first step to go was the account type.
51704
+ description: How cutting onboarding steps doubled signups.
51705
+ language: en
51706
+ title: Nine steps to four
51707
+ tldr: Fewer steps, twice the signups.
51708
+ expiresAt: "2026-11-11T12:00:00.000Z"
51709
+ finishedAt: "2026-11-04T12:00:00.000Z"
51710
+ interviewId: 018f0000-0000-7000-8000-000000000001
51711
+ organizationId: 018f0000-0000-7000-8000-000000000003
51712
+ progress:
51713
+ beliefDone: false
51714
+ canFinish: true
51715
+ details: 3
51716
+ detailsTarget: 5
51717
+ phase: DONE
51718
+ skepticRounds: 0
51719
+ publicationId: 018f0000-0000-7000-8000-000000000002
51720
+ review:
51721
+ claims:
51722
+ - source:
51723
+ note: From the author's note.
51724
+ status: VERIFIED
51725
+ text: Signups doubled.
51726
+ clear:
51727
+ flagged: []
51728
+ threeSentences:
51729
+ - Onboarding was nine steps.
51730
+ - You cut it to four.
51731
+ - Signups doubled.
51732
+ pastPostsRead:
51733
+ - content/my-post.md
51734
+ sources: []
51735
+ startedAt: "2026-11-04T12:00:00.000Z"
51736
+ state: ACCEPTED
51737
+ turns:
51738
+ - at: "2026-11-04T12:00:00.000Z"
51739
+ kind: QUESTION
51740
+ role: INTERVIEWER
51741
+ seq: 1
51742
+ text: What did you cut first, and what did you expect to happen?
51743
+ - at: "2026-11-04T12:00:00.000Z"
51744
+ kind: ANSWER
51745
+ role: AUTHOR
51746
+ seq: 2
51747
+ text: The account-type step. I expected no one to notice.
51748
+ updatedAt: "2026-11-04T12:00:00.000Z"
51749
+ schema:
51750
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdAcceptResponse"
51751
+ description: accept an Interview draft succeeded
51752
+ headers:
51753
+ Cache-Control:
51754
+ $ref: "#/components/headers/CacheControlNoStore"
51755
+ X-Correlation-Id:
51756
+ $ref: "#/components/headers/XCorrelationId"
51757
+ "400":
51758
+ content:
51759
+ application/problem+json:
51760
+ examples:
51761
+ VALIDATION_FAILED:
51762
+ summary: VALIDATION_FAILED
51763
+ value:
51764
+ code: VALIDATION_FAILED
51765
+ correlationId: 018f0000-0000-7000-8000-000000000001
51766
+ detail: See the operation contract.
51767
+ errors: []
51768
+ retryable: false
51769
+ schemaId: urn:gala:schema:problem:2.0.0
51770
+ schemaVersion: 2.0.0
51771
+ status: 400
51772
+ title: VALIDATION_FAILED
51773
+ type: urn:gala:problem:validation-failed
51774
+ schema:
51775
+ $ref: "#/components/schemas/Problem"
51776
+ description: VALIDATION_FAILED
51777
+ headers:
51778
+ Cache-Control:
51779
+ $ref: "#/components/headers/CacheControlNoStore"
51780
+ X-Correlation-Id:
51781
+ $ref: "#/components/headers/XCorrelationId"
51782
+ x-gala-problem-codes:
51783
+ - VALIDATION_FAILED
51784
+ "401":
51785
+ content:
51786
+ application/problem+json:
51787
+ examples:
51788
+ AUTHENTICATION_REQUIRED:
51789
+ summary: AUTHENTICATION_REQUIRED
51790
+ value:
51791
+ code: AUTHENTICATION_REQUIRED
51792
+ correlationId: 018f0000-0000-7000-8000-000000000001
51793
+ detail: See the operation contract.
51794
+ errors: []
51795
+ retryable: false
51796
+ schemaId: urn:gala:schema:problem:2.0.0
51797
+ schemaVersion: 2.0.0
51798
+ status: 401
51799
+ title: AUTHENTICATION_REQUIRED
51800
+ type: urn:gala:problem:authentication-required
51801
+ schema:
51802
+ $ref: "#/components/schemas/Problem"
51803
+ description: AUTHENTICATION_REQUIRED
51804
+ headers:
51805
+ Cache-Control:
51806
+ $ref: "#/components/headers/CacheControlNoStore"
51807
+ X-Correlation-Id:
51808
+ $ref: "#/components/headers/XCorrelationId"
51809
+ x-gala-problem-codes:
51810
+ - AUTHENTICATION_REQUIRED
51811
+ "403":
51812
+ content:
51813
+ application/problem+json:
51814
+ examples:
51815
+ AUTHORIZATION_DENIED:
51816
+ summary: AUTHORIZATION_DENIED
51817
+ value:
51818
+ code: AUTHORIZATION_DENIED
51819
+ correlationId: 018f0000-0000-7000-8000-000000000001
51820
+ detail: See the operation contract.
51821
+ errors: []
51822
+ retryable: false
51823
+ schemaId: urn:gala:schema:problem:2.0.0
51824
+ schemaVersion: 2.0.0
51825
+ status: 403
51826
+ title: AUTHORIZATION_DENIED
51827
+ type: urn:gala:problem:authorization-denied
51828
+ schema:
51829
+ $ref: "#/components/schemas/Problem"
51830
+ description: AUTHORIZATION_DENIED
51831
+ headers:
51832
+ Cache-Control:
51833
+ $ref: "#/components/headers/CacheControlNoStore"
51834
+ X-Correlation-Id:
51835
+ $ref: "#/components/headers/XCorrelationId"
51836
+ x-gala-problem-codes:
51837
+ - AUTHORIZATION_DENIED
51838
+ "404":
51839
+ content:
51840
+ application/problem+json:
51841
+ examples:
51842
+ RESOURCE_NOT_FOUND:
51843
+ summary: RESOURCE_NOT_FOUND
51844
+ value:
51845
+ code: RESOURCE_NOT_FOUND
51846
+ correlationId: 018f0000-0000-7000-8000-000000000001
51847
+ detail: See the operation contract.
51848
+ errors: []
51849
+ retryable: false
51850
+ schemaId: urn:gala:schema:problem:2.0.0
51851
+ schemaVersion: 2.0.0
51852
+ status: 404
51853
+ title: RESOURCE_NOT_FOUND
51854
+ type: urn:gala:problem:resource-not-found
51855
+ schema:
51856
+ $ref: "#/components/schemas/Problem"
51857
+ description: RESOURCE_NOT_FOUND
51858
+ headers:
51859
+ Cache-Control:
51860
+ $ref: "#/components/headers/CacheControlNoStore"
51861
+ X-Correlation-Id:
51862
+ $ref: "#/components/headers/XCorrelationId"
51863
+ x-gala-problem-codes:
51864
+ - RESOURCE_NOT_FOUND
51865
+ "409":
51866
+ content:
51867
+ application/problem+json:
51868
+ examples:
51869
+ COMMAND_REPLAY_CONFLICT:
51870
+ summary: COMMAND_REPLAY_CONFLICT
51871
+ value:
51872
+ code: COMMAND_REPLAY_CONFLICT
51873
+ correlationId: 018f0000-0000-7000-8000-000000000001
51874
+ detail: See the operation contract.
51875
+ errors: []
51876
+ retryable: false
51877
+ schemaId: urn:gala:schema:problem:2.0.0
51878
+ schemaVersion: 2.0.0
51879
+ status: 409
51880
+ title: COMMAND_REPLAY_CONFLICT
51881
+ type: urn:gala:problem:command-replay-conflict
51882
+ INTERVIEW_STATE_CONFLICT:
51883
+ summary: INTERVIEW_STATE_CONFLICT
51884
+ value:
51885
+ code: INTERVIEW_STATE_CONFLICT
51886
+ correlationId: 018f0000-0000-7000-8000-000000000001
51887
+ detail: See the operation contract.
51888
+ errors: []
51889
+ retryable: false
51890
+ schemaId: urn:gala:schema:problem:2.0.0
51891
+ schemaVersion: 2.0.0
51892
+ status: 409
51893
+ title: INTERVIEW_STATE_CONFLICT
51894
+ type: urn:gala:problem:interview-state-conflict
51895
+ TRANSFER_PENDING:
51896
+ summary: TRANSFER_PENDING
51897
+ value:
51898
+ code: TRANSFER_PENDING
51899
+ correlationId: 018f0000-0000-7000-8000-000000000001
51900
+ detail: See the operation contract.
51901
+ errors: []
51902
+ retryable: false
51903
+ schemaId: urn:gala:schema:problem:2.0.0
51904
+ schemaVersion: 2.0.0
51905
+ status: 409
51906
+ title: TRANSFER_PENDING
51907
+ type: urn:gala:problem:transfer-pending
51908
+ schema:
51909
+ $ref: "#/components/schemas/Problem"
51910
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, TRANSFER_PENDING
51911
+ headers:
51912
+ Cache-Control:
51913
+ $ref: "#/components/headers/CacheControlNoStore"
51914
+ X-Correlation-Id:
51915
+ $ref: "#/components/headers/XCorrelationId"
51916
+ x-gala-problem-codes:
51917
+ - COMMAND_REPLAY_CONFLICT
51918
+ - INTERVIEW_STATE_CONFLICT
51919
+ - TRANSFER_PENDING
51920
+ security:
51921
+ - browserSession: []
51922
+ summary: accept an Interview draft
51923
+ tags:
51924
+ - interview
51925
+ x-gala-activation-gate: MVP
51926
+ x-gala-activation-guards:
51927
+ - NONE
51928
+ x-gala-capability-key: publication.source.write
51929
+ x-gala-concurrency: interview-version
51930
+ x-gala-conditional-capabilities: []
51931
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
51932
+ x-gala-nullability: required-and-nullable-are-explicit
51933
+ x-gala-purpose: accept an Interview draft
51934
+ x-gala-reachable-problems:
51935
+ - AUTHENTICATION_REQUIRED
51936
+ - AUTHORIZATION_DENIED
51937
+ - COMMAND_REPLAY_CONFLICT
51938
+ - INTERVIEW_STATE_CONFLICT
51939
+ - RESOURCE_NOT_FOUND
51940
+ - TRANSFER_PENDING
51941
+ - VALIDATION_FAILED
51942
+ x-gala-replay-identity: idempotency-key
51943
+ x-gala-state-guards:
51944
+ - NONE
51945
+ x-gala-success-category: protocol
51946
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
51947
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:cancel:
51948
+ post:
51949
+ description: |
51950
+ 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.
51951
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdCancel
51952
+ parameters:
51953
+ - $ref: "#/components/parameters/XCorrelationId"
51954
+ - example: 018f0000-0000-7000-8000-000000000001
51955
+ in: path
51956
+ name: organizationId
51957
+ required: true
51958
+ schema:
51959
+ format: uuid
51960
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51961
+ type: string
51962
+ - example: 018f0000-0000-7000-8000-000000000001
51963
+ in: path
51964
+ name: publicationId
51965
+ required: true
51966
+ schema:
51967
+ format: uuid
51968
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51969
+ type: string
51970
+ - example: 018f0000-0000-7000-8000-000000000001
51971
+ in: path
51972
+ name: interviewId
51973
+ required: true
51974
+ schema:
51975
+ format: uuid
51976
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
51977
+ type: string
51978
+ - $ref: "#/components/parameters/IdempotencyKey"
51979
+ - $ref: "#/components/parameters/XCsrfToken"
51980
+ responses:
51981
+ "200":
51982
+ content:
51983
+ application/json:
51984
+ examples:
51985
+ nominal:
51986
+ summary: Nominal successful response
51987
+ value:
51988
+ capture:
51989
+ kind: NOTE
51990
+ text: We cut our onboarding from nine steps to four and signups doubled.
51991
+ createdAt: "2026-11-04T12:00:00.000Z"
51992
+ expiresAt: "2026-11-11T12:00:00.000Z"
51993
+ interviewId: 018f0000-0000-7000-8000-000000000001
51994
+ organizationId: 018f0000-0000-7000-8000-000000000003
51995
+ progress:
51996
+ beliefDone: false
51997
+ canFinish: false
51998
+ details: 0
51999
+ detailsTarget: 5
52000
+ phase: OWNED
52001
+ skepticRounds: 0
52002
+ publicationId: 018f0000-0000-7000-8000-000000000002
52003
+ state: CANCELLED
52004
+ turns: []
52005
+ updatedAt: "2026-11-04T12:00:00.000Z"
52006
+ schema:
52007
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdCancelResponse"
52008
+ description: cancel an Interview succeeded
52009
+ headers:
52010
+ Cache-Control:
52011
+ $ref: "#/components/headers/CacheControlNoStore"
52012
+ X-Correlation-Id:
52013
+ $ref: "#/components/headers/XCorrelationId"
52014
+ "400":
52015
+ content:
52016
+ application/problem+json:
52017
+ examples:
52018
+ VALIDATION_FAILED:
52019
+ summary: VALIDATION_FAILED
52020
+ value:
52021
+ code: VALIDATION_FAILED
52022
+ correlationId: 018f0000-0000-7000-8000-000000000001
52023
+ detail: See the operation contract.
52024
+ errors: []
52025
+ retryable: false
52026
+ schemaId: urn:gala:schema:problem:2.0.0
52027
+ schemaVersion: 2.0.0
52028
+ status: 400
52029
+ title: VALIDATION_FAILED
52030
+ type: urn:gala:problem:validation-failed
52031
+ schema:
52032
+ $ref: "#/components/schemas/Problem"
52033
+ description: VALIDATION_FAILED
52034
+ headers:
52035
+ Cache-Control:
52036
+ $ref: "#/components/headers/CacheControlNoStore"
52037
+ X-Correlation-Id:
52038
+ $ref: "#/components/headers/XCorrelationId"
52039
+ x-gala-problem-codes:
52040
+ - VALIDATION_FAILED
52041
+ "401":
52042
+ content:
52043
+ application/problem+json:
52044
+ examples:
52045
+ AUTHENTICATION_REQUIRED:
52046
+ summary: AUTHENTICATION_REQUIRED
52047
+ value:
52048
+ code: AUTHENTICATION_REQUIRED
52049
+ correlationId: 018f0000-0000-7000-8000-000000000001
52050
+ detail: See the operation contract.
52051
+ errors: []
52052
+ retryable: false
52053
+ schemaId: urn:gala:schema:problem:2.0.0
52054
+ schemaVersion: 2.0.0
52055
+ status: 401
52056
+ title: AUTHENTICATION_REQUIRED
52057
+ type: urn:gala:problem:authentication-required
52058
+ schema:
52059
+ $ref: "#/components/schemas/Problem"
52060
+ description: AUTHENTICATION_REQUIRED
52061
+ headers:
52062
+ Cache-Control:
52063
+ $ref: "#/components/headers/CacheControlNoStore"
52064
+ X-Correlation-Id:
52065
+ $ref: "#/components/headers/XCorrelationId"
52066
+ x-gala-problem-codes:
52067
+ - AUTHENTICATION_REQUIRED
52068
+ "403":
52069
+ content:
52070
+ application/problem+json:
52071
+ examples:
52072
+ AUTHORIZATION_DENIED:
52073
+ summary: AUTHORIZATION_DENIED
52074
+ value:
52075
+ code: AUTHORIZATION_DENIED
52076
+ correlationId: 018f0000-0000-7000-8000-000000000001
52077
+ detail: See the operation contract.
52078
+ errors: []
52079
+ retryable: false
52080
+ schemaId: urn:gala:schema:problem:2.0.0
52081
+ schemaVersion: 2.0.0
52082
+ status: 403
52083
+ title: AUTHORIZATION_DENIED
52084
+ type: urn:gala:problem:authorization-denied
52085
+ schema:
52086
+ $ref: "#/components/schemas/Problem"
52087
+ description: AUTHORIZATION_DENIED
52088
+ headers:
52089
+ Cache-Control:
52090
+ $ref: "#/components/headers/CacheControlNoStore"
52091
+ X-Correlation-Id:
52092
+ $ref: "#/components/headers/XCorrelationId"
52093
+ x-gala-problem-codes:
52094
+ - AUTHORIZATION_DENIED
52095
+ "404":
52096
+ content:
52097
+ application/problem+json:
52098
+ examples:
52099
+ RESOURCE_NOT_FOUND:
52100
+ summary: RESOURCE_NOT_FOUND
52101
+ value:
52102
+ code: RESOURCE_NOT_FOUND
52103
+ correlationId: 018f0000-0000-7000-8000-000000000001
52104
+ detail: See the operation contract.
52105
+ errors: []
52106
+ retryable: false
52107
+ schemaId: urn:gala:schema:problem:2.0.0
52108
+ schemaVersion: 2.0.0
52109
+ status: 404
52110
+ title: RESOURCE_NOT_FOUND
52111
+ type: urn:gala:problem:resource-not-found
52112
+ schema:
52113
+ $ref: "#/components/schemas/Problem"
52114
+ description: RESOURCE_NOT_FOUND
52115
+ headers:
52116
+ Cache-Control:
52117
+ $ref: "#/components/headers/CacheControlNoStore"
52118
+ X-Correlation-Id:
52119
+ $ref: "#/components/headers/XCorrelationId"
52120
+ x-gala-problem-codes:
52121
+ - RESOURCE_NOT_FOUND
52122
+ "409":
52123
+ content:
52124
+ application/problem+json:
52125
+ examples:
52126
+ COMMAND_REPLAY_CONFLICT:
52127
+ summary: COMMAND_REPLAY_CONFLICT
52128
+ value:
52129
+ code: COMMAND_REPLAY_CONFLICT
52130
+ correlationId: 018f0000-0000-7000-8000-000000000001
52131
+ detail: See the operation contract.
52132
+ errors: []
52133
+ retryable: false
52134
+ schemaId: urn:gala:schema:problem:2.0.0
52135
+ schemaVersion: 2.0.0
52136
+ status: 409
52137
+ title: COMMAND_REPLAY_CONFLICT
52138
+ type: urn:gala:problem:command-replay-conflict
52139
+ INTERVIEW_STATE_CONFLICT:
52140
+ summary: INTERVIEW_STATE_CONFLICT
52141
+ value:
52142
+ code: INTERVIEW_STATE_CONFLICT
52143
+ correlationId: 018f0000-0000-7000-8000-000000000001
52144
+ detail: See the operation contract.
52145
+ errors: []
52146
+ retryable: false
52147
+ schemaId: urn:gala:schema:problem:2.0.0
52148
+ schemaVersion: 2.0.0
52149
+ status: 409
52150
+ title: INTERVIEW_STATE_CONFLICT
52151
+ type: urn:gala:problem:interview-state-conflict
52152
+ TRANSFER_PENDING:
52153
+ summary: TRANSFER_PENDING
52154
+ value:
52155
+ code: TRANSFER_PENDING
52156
+ correlationId: 018f0000-0000-7000-8000-000000000001
52157
+ detail: See the operation contract.
52158
+ errors: []
52159
+ retryable: false
52160
+ schemaId: urn:gala:schema:problem:2.0.0
52161
+ schemaVersion: 2.0.0
52162
+ status: 409
52163
+ title: TRANSFER_PENDING
52164
+ type: urn:gala:problem:transfer-pending
52165
+ schema:
52166
+ $ref: "#/components/schemas/Problem"
52167
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, TRANSFER_PENDING
52168
+ headers:
52169
+ Cache-Control:
52170
+ $ref: "#/components/headers/CacheControlNoStore"
52171
+ X-Correlation-Id:
52172
+ $ref: "#/components/headers/XCorrelationId"
52173
+ x-gala-problem-codes:
52174
+ - COMMAND_REPLAY_CONFLICT
52175
+ - INTERVIEW_STATE_CONFLICT
52176
+ - TRANSFER_PENDING
52177
+ security:
52178
+ - browserSession: []
52179
+ summary: cancel an Interview
52180
+ tags:
52181
+ - interview
52182
+ x-gala-activation-gate: MVP
52183
+ x-gala-activation-guards:
52184
+ - NONE
52185
+ x-gala-capability-key: publication.source.write
52186
+ x-gala-concurrency: interview-version
52187
+ x-gala-conditional-capabilities: []
52188
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
52189
+ x-gala-nullability: required-and-nullable-are-explicit
52190
+ x-gala-purpose: cancel an Interview
52191
+ x-gala-reachable-problems:
52192
+ - AUTHENTICATION_REQUIRED
52193
+ - AUTHORIZATION_DENIED
52194
+ - COMMAND_REPLAY_CONFLICT
52195
+ - INTERVIEW_STATE_CONFLICT
52196
+ - RESOURCE_NOT_FOUND
52197
+ - TRANSFER_PENDING
52198
+ - VALIDATION_FAILED
52199
+ x-gala-replay-identity: idempotency-key
52200
+ x-gala-state-guards:
52201
+ - NONE
52202
+ x-gala-success-category: protocol
52203
+ x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
52204
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:finish:
52205
+ post:
52206
+ description: |
52207
+ 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`.
52208
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdFinish
52209
+ parameters:
52210
+ - $ref: "#/components/parameters/XCorrelationId"
52211
+ - example: 018f0000-0000-7000-8000-000000000001
52212
+ in: path
52213
+ name: organizationId
52214
+ required: true
52215
+ schema:
52216
+ format: uuid
52217
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52218
+ type: string
52219
+ - example: 018f0000-0000-7000-8000-000000000001
52220
+ in: path
52221
+ name: publicationId
52222
+ required: true
52223
+ schema:
52224
+ format: uuid
52225
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52226
+ type: string
52227
+ - example: 018f0000-0000-7000-8000-000000000001
52228
+ in: path
52229
+ name: interviewId
52230
+ required: true
52231
+ schema:
52232
+ format: uuid
52233
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52234
+ type: string
52235
+ - $ref: "#/components/parameters/IdempotencyKey"
52236
+ - $ref: "#/components/parameters/XCsrfToken"
52237
+ responses:
52238
+ "202":
52239
+ content:
52240
+ application/json:
52241
+ examples:
52242
+ nominal:
52243
+ summary: Nominal successful response
52244
+ value:
52245
+ capture:
52246
+ kind: NOTE
52247
+ text: We cut our onboarding from nine steps to four and signups doubled.
52248
+ createdAt: "2026-11-04T12:00:00.000Z"
52249
+ expiresAt: "2026-11-11T12:00:00.000Z"
52250
+ finishedAt: "2026-11-04T12:00:00.000Z"
52251
+ interviewId: 018f0000-0000-7000-8000-000000000001
52252
+ organizationId: 018f0000-0000-7000-8000-000000000003
52253
+ progress:
52254
+ beliefDone: false
52255
+ canFinish: true
52256
+ details: 3
52257
+ detailsTarget: 5
52258
+ phase: DONE
52259
+ skepticRounds: 0
52260
+ publicationId: 018f0000-0000-7000-8000-000000000002
52261
+ startedAt: "2026-11-04T12:00:00.000Z"
52262
+ state: WRITING
52263
+ turns:
52264
+ - at: "2026-11-04T12:00:00.000Z"
52265
+ kind: QUESTION
52266
+ role: INTERVIEWER
52267
+ seq: 1
52268
+ text: What did you cut first, and what did you expect to happen?
52269
+ - at: "2026-11-04T12:00:00.000Z"
52270
+ kind: ANSWER
52271
+ role: AUTHOR
52272
+ seq: 2
52273
+ text: The account-type step. I expected no one to notice.
52274
+ updatedAt: "2026-11-04T12:00:00.000Z"
52275
+ schema:
52276
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdFinishResponse"
52277
+ description: finish an Interview and write the draft succeeded
52278
+ headers:
52279
+ Cache-Control:
52280
+ $ref: "#/components/headers/CacheControlNoStore"
52281
+ X-Correlation-Id:
52282
+ $ref: "#/components/headers/XCorrelationId"
52283
+ "400":
52284
+ content:
52285
+ application/problem+json:
52286
+ examples:
52287
+ VALIDATION_FAILED:
52288
+ summary: VALIDATION_FAILED
52289
+ value:
52290
+ code: VALIDATION_FAILED
52291
+ correlationId: 018f0000-0000-7000-8000-000000000001
52292
+ detail: See the operation contract.
52293
+ errors: []
52294
+ retryable: false
52295
+ schemaId: urn:gala:schema:problem:2.0.0
52296
+ schemaVersion: 2.0.0
52297
+ status: 400
52298
+ title: VALIDATION_FAILED
52299
+ type: urn:gala:problem:validation-failed
52300
+ schema:
52301
+ $ref: "#/components/schemas/Problem"
52302
+ description: VALIDATION_FAILED
52303
+ headers:
52304
+ Cache-Control:
52305
+ $ref: "#/components/headers/CacheControlNoStore"
52306
+ X-Correlation-Id:
52307
+ $ref: "#/components/headers/XCorrelationId"
52308
+ x-gala-problem-codes:
52309
+ - VALIDATION_FAILED
52310
+ "401":
52311
+ content:
52312
+ application/problem+json:
52313
+ examples:
52314
+ AUTHENTICATION_REQUIRED:
52315
+ summary: AUTHENTICATION_REQUIRED
52316
+ value:
52317
+ code: AUTHENTICATION_REQUIRED
52318
+ correlationId: 018f0000-0000-7000-8000-000000000001
52319
+ detail: See the operation contract.
52320
+ errors: []
52321
+ retryable: false
52322
+ schemaId: urn:gala:schema:problem:2.0.0
52323
+ schemaVersion: 2.0.0
52324
+ status: 401
52325
+ title: AUTHENTICATION_REQUIRED
52326
+ type: urn:gala:problem:authentication-required
52327
+ schema:
52328
+ $ref: "#/components/schemas/Problem"
52329
+ description: AUTHENTICATION_REQUIRED
52330
+ headers:
52331
+ Cache-Control:
52332
+ $ref: "#/components/headers/CacheControlNoStore"
52333
+ X-Correlation-Id:
52334
+ $ref: "#/components/headers/XCorrelationId"
52335
+ x-gala-problem-codes:
52336
+ - AUTHENTICATION_REQUIRED
52337
+ "403":
52338
+ content:
52339
+ application/problem+json:
52340
+ examples:
52341
+ AUTHORIZATION_DENIED:
52342
+ summary: AUTHORIZATION_DENIED
52343
+ value:
52344
+ code: AUTHORIZATION_DENIED
52345
+ correlationId: 018f0000-0000-7000-8000-000000000001
52346
+ detail: See the operation contract.
52347
+ errors: []
52348
+ retryable: false
52349
+ schemaId: urn:gala:schema:problem:2.0.0
52350
+ schemaVersion: 2.0.0
52351
+ status: 403
52352
+ title: AUTHORIZATION_DENIED
52353
+ type: urn:gala:problem:authorization-denied
52354
+ schema:
52355
+ $ref: "#/components/schemas/Problem"
52356
+ description: AUTHORIZATION_DENIED
52357
+ headers:
52358
+ Cache-Control:
52359
+ $ref: "#/components/headers/CacheControlNoStore"
52360
+ X-Correlation-Id:
52361
+ $ref: "#/components/headers/XCorrelationId"
52362
+ x-gala-problem-codes:
52363
+ - AUTHORIZATION_DENIED
52364
+ "404":
52365
+ content:
52366
+ application/problem+json:
52367
+ examples:
52368
+ RESOURCE_NOT_FOUND:
52369
+ summary: RESOURCE_NOT_FOUND
52370
+ value:
52371
+ code: RESOURCE_NOT_FOUND
52372
+ correlationId: 018f0000-0000-7000-8000-000000000001
52373
+ detail: See the operation contract.
52374
+ errors: []
52375
+ retryable: false
52376
+ schemaId: urn:gala:schema:problem:2.0.0
52377
+ schemaVersion: 2.0.0
52378
+ status: 404
52379
+ title: RESOURCE_NOT_FOUND
52380
+ type: urn:gala:problem:resource-not-found
52381
+ schema:
52382
+ $ref: "#/components/schemas/Problem"
52383
+ description: RESOURCE_NOT_FOUND
52384
+ headers:
52385
+ Cache-Control:
52386
+ $ref: "#/components/headers/CacheControlNoStore"
52387
+ X-Correlation-Id:
52388
+ $ref: "#/components/headers/XCorrelationId"
52389
+ x-gala-problem-codes:
52390
+ - RESOURCE_NOT_FOUND
52391
+ "409":
48870
52392
  content:
48871
52393
  application/problem+json:
48872
52394
  examples:
48873
- RATE_LIMITED:
48874
- summary: RATE_LIMITED
52395
+ COMMAND_REPLAY_CONFLICT:
52396
+ summary: COMMAND_REPLAY_CONFLICT
48875
52397
  value:
48876
- code: RATE_LIMITED
52398
+ code: COMMAND_REPLAY_CONFLICT
48877
52399
  correlationId: 018f0000-0000-7000-8000-000000000001
48878
52400
  detail: See the operation contract.
48879
52401
  errors: []
48880
- retryable: true
52402
+ retryable: false
48881
52403
  schemaId: urn:gala:schema:problem:2.0.0
48882
52404
  schemaVersion: 2.0.0
48883
- status: 429
48884
- title: RATE_LIMITED
48885
- type: urn:gala:problem:rate-limited
52405
+ status: 409
52406
+ title: COMMAND_REPLAY_CONFLICT
52407
+ type: urn:gala:problem:command-replay-conflict
52408
+ INTERVIEW_STATE_CONFLICT:
52409
+ summary: INTERVIEW_STATE_CONFLICT
52410
+ value:
52411
+ code: INTERVIEW_STATE_CONFLICT
52412
+ correlationId: 018f0000-0000-7000-8000-000000000001
52413
+ detail: See the operation contract.
52414
+ errors: []
52415
+ retryable: false
52416
+ schemaId: urn:gala:schema:problem:2.0.0
52417
+ schemaVersion: 2.0.0
52418
+ status: 409
52419
+ title: INTERVIEW_STATE_CONFLICT
52420
+ type: urn:gala:problem:interview-state-conflict
52421
+ INTERVIEW_TOO_THIN:
52422
+ summary: INTERVIEW_TOO_THIN
52423
+ value:
52424
+ code: INTERVIEW_TOO_THIN
52425
+ correlationId: 018f0000-0000-7000-8000-000000000001
52426
+ detail: See the operation contract.
52427
+ errors: []
52428
+ retryable: false
52429
+ schemaId: urn:gala:schema:problem:2.0.0
52430
+ schemaVersion: 2.0.0
52431
+ status: 409
52432
+ title: INTERVIEW_TOO_THIN
52433
+ type: urn:gala:problem:interview-too-thin
52434
+ TRANSFER_PENDING:
52435
+ summary: TRANSFER_PENDING
52436
+ value:
52437
+ code: TRANSFER_PENDING
52438
+ correlationId: 018f0000-0000-7000-8000-000000000001
52439
+ detail: See the operation contract.
52440
+ errors: []
52441
+ retryable: false
52442
+ schemaId: urn:gala:schema:problem:2.0.0
52443
+ schemaVersion: 2.0.0
52444
+ status: 409
52445
+ title: TRANSFER_PENDING
52446
+ type: urn:gala:problem:transfer-pending
48886
52447
  schema:
48887
52448
  $ref: "#/components/schemas/Problem"
48888
- description: RATE_LIMITED
52449
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, INTERVIEW_TOO_THIN, TRANSFER_PENDING
48889
52450
  headers:
48890
52451
  Cache-Control:
48891
52452
  $ref: "#/components/headers/CacheControlNoStore"
48892
- Retry-After:
48893
- $ref: "#/components/headers/RetryAfter"
48894
52453
  X-Correlation-Id:
48895
52454
  $ref: "#/components/headers/XCorrelationId"
48896
52455
  x-gala-problem-codes:
48897
- - RATE_LIMITED
52456
+ - COMMAND_REPLAY_CONFLICT
52457
+ - INTERVIEW_STATE_CONFLICT
52458
+ - INTERVIEW_TOO_THIN
52459
+ - TRANSFER_PENDING
48898
52460
  "503":
48899
52461
  content:
48900
52462
  application/problem+json:
48901
52463
  examples:
52464
+ BUDGET_EXHAUSTED:
52465
+ summary: BUDGET_EXHAUSTED
52466
+ value:
52467
+ code: BUDGET_EXHAUSTED
52468
+ correlationId: 018f0000-0000-7000-8000-000000000001
52469
+ detail: See the operation contract.
52470
+ errors: []
52471
+ retryable: false
52472
+ schemaId: urn:gala:schema:problem:2.0.0
52473
+ schemaVersion: 2.0.0
52474
+ status: 503
52475
+ title: BUDGET_EXHAUSTED
52476
+ type: urn:gala:problem:budget-exhausted
48902
52477
  CAPABILITY_UNAVAILABLE:
48903
52478
  summary: CAPABILITY_UNAVAILABLE
48904
52479
  value:
@@ -48912,10 +52487,10 @@ paths:
48912
52487
  status: 503
48913
52488
  title: CAPABILITY_UNAVAILABLE
48914
52489
  type: urn:gala:problem:capability-unavailable
48915
- DEPENDENCY_UNAVAILABLE:
48916
- summary: DEPENDENCY_UNAVAILABLE
52490
+ PROVIDER_UNAVAILABLE:
52491
+ summary: PROVIDER_UNAVAILABLE
48917
52492
  value:
48918
- code: DEPENDENCY_UNAVAILABLE
52493
+ code: PROVIDER_UNAVAILABLE
48919
52494
  correlationId: 018f0000-0000-7000-8000-000000000001
48920
52495
  detail: See the operation contract.
48921
52496
  errors: []
@@ -48923,51 +52498,56 @@ paths:
48923
52498
  schemaId: urn:gala:schema:problem:2.0.0
48924
52499
  schemaVersion: 2.0.0
48925
52500
  status: 503
48926
- title: DEPENDENCY_UNAVAILABLE
48927
- type: urn:gala:problem:dependency-unavailable
52501
+ title: PROVIDER_UNAVAILABLE
52502
+ type: urn:gala:problem:provider-unavailable
48928
52503
  schema:
48929
52504
  $ref: "#/components/schemas/Problem"
48930
- description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
52505
+ description: BUDGET_EXHAUSTED, CAPABILITY_UNAVAILABLE, PROVIDER_UNAVAILABLE
48931
52506
  headers:
48932
52507
  Cache-Control:
48933
52508
  $ref: "#/components/headers/CacheControlNoStore"
48934
52509
  X-Correlation-Id:
48935
52510
  $ref: "#/components/headers/XCorrelationId"
48936
52511
  x-gala-problem-codes:
52512
+ - BUDGET_EXHAUSTED
48937
52513
  - CAPABILITY_UNAVAILABLE
48938
- - DEPENDENCY_UNAVAILABLE
52514
+ - PROVIDER_UNAVAILABLE
48939
52515
  security:
48940
52516
  - browserSession: []
48941
- - adminApiKey: []
48942
- summary: read this publication's reader interaction settings at the main branch head
52517
+ summary: finish an Interview and write the draft
48943
52518
  tags:
48944
- - interaction-settings
52519
+ - interview
48945
52520
  x-gala-activation-gate: MVP
48946
52521
  x-gala-activation-guards:
48947
- - Active repository binding and configured GitHub App identity capability
48948
- x-gala-api-key-scope: read
48949
- x-gala-capability-key: publication.view
48950
- x-gala-concurrency: binding-epoch
52522
+ - Interview enabled for this deployment and publication
52523
+ x-gala-capability-key: publication.source.write
52524
+ x-gala-concurrency: interview-version
48951
52525
  x-gala-conditional-capabilities: []
48952
52526
  x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
48953
52527
  x-gala-nullability: required-and-nullable-are-explicit
48954
- x-gala-purpose: read this publication's reader interaction settings at the main branch head
52528
+ x-gala-purpose: finish an Interview and write the draft
48955
52529
  x-gala-reachable-problems:
48956
52530
  - AUTHENTICATION_REQUIRED
48957
52531
  - AUTHORIZATION_DENIED
52532
+ - BUDGET_EXHAUSTED
48958
52533
  - CAPABILITY_UNAVAILABLE
48959
- - DEPENDENCY_UNAVAILABLE
48960
- - RATE_LIMITED
52534
+ - COMMAND_REPLAY_CONFLICT
52535
+ - INTERVIEW_STATE_CONFLICT
52536
+ - INTERVIEW_TOO_THIN
52537
+ - PROVIDER_UNAVAILABLE
48961
52538
  - RESOURCE_NOT_FOUND
52539
+ - TRANSFER_PENDING
48962
52540
  - VALIDATION_FAILED
48963
- x-gala-replay-identity: safe-query
52541
+ x-gala-replay-identity: idempotency-key
48964
52542
  x-gala-state-guards:
48965
52543
  - NONE
48966
- x-gala-success-category: query
52544
+ x-gala-success-category: async
48967
52545
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
48968
- put:
48969
- description: The server writes `gala/modules/interactions.json` as a repository change, the way a theme selection writes `gala/appearance.json`. Publishing the change uses the normal publish flow. `change` has the shape the theme-selection write returns. `settings.follows.enabled` (SCHEMA-3.23.0) turns the Follow button on; absent means off.
48970
- operationId: putOrganizationsByOrganizationIdPublicationsByPublicationIdInteractionSettings
52546
+ /v2/organizations/{organizationId}/publications/{publicationId}/interviews/{interviewId}:start:
52547
+ post:
52548
+ description: |
52549
+ 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).
52550
+ operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdStart
48971
52551
  parameters:
48972
52552
  - $ref: "#/components/parameters/XCorrelationId"
48973
52553
  - example: 018f0000-0000-7000-8000-000000000001
@@ -48986,31 +52566,16 @@ paths:
48986
52566
  format: uuid
48987
52567
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
48988
52568
  type: string
52569
+ - example: 018f0000-0000-7000-8000-000000000001
52570
+ in: path
52571
+ name: interviewId
52572
+ required: true
52573
+ schema:
52574
+ format: uuid
52575
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
52576
+ type: string
48989
52577
  - $ref: "#/components/parameters/IdempotencyKey"
48990
52578
  - $ref: "#/components/parameters/XCsrfToken"
48991
- requestBody:
48992
- content:
48993
- application/json:
48994
- examples:
48995
- nominal:
48996
- summary: Nominal valid request
48997
- value:
48998
- settings:
48999
- comments:
49000
- allowReplies: true
49001
- enabled: true
49002
- maxDepth: 3
49003
- publicCounts:
49004
- comments: true
49005
- reactions: true
49006
- reactions:
49007
- definitions: []
49008
- enabled: true
49009
- schemaId: urn:gala:schema:interactions-config:2.0.0
49010
- schemaVersion: 2.0.0
49011
- schema:
49012
- $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdInteractionSettingsRequest"
49013
- required: true
49014
52579
  responses:
49015
52580
  "200":
49016
52581
  content:
@@ -49019,15 +52584,33 @@ paths:
49019
52584
  nominal:
49020
52585
  summary: Nominal successful response
49021
52586
  value:
49022
- change:
49023
- changeId: 018f0000-0000-7000-8000-000000000001
49024
- diffDigest: sha256:0000000000000000000000000000000000000000000000000000000000000000
49025
- expectedHead: sha1:0000000000000000000000000000000000000000
49026
- state: REQUESTED
49027
- version: 0
52587
+ capture:
52588
+ kind: NOTE
52589
+ text: We cut our onboarding from nine steps to four and signups doubled.
52590
+ createdAt: "2026-11-04T12:00:00.000Z"
52591
+ expiresAt: "2026-11-11T12:00:00.000Z"
52592
+ interviewId: 018f0000-0000-7000-8000-000000000001
52593
+ organizationId: 018f0000-0000-7000-8000-000000000003
52594
+ progress:
52595
+ beliefDone: false
52596
+ canFinish: false
52597
+ details: 1
52598
+ detailsTarget: 5
52599
+ phase: OWNED
52600
+ skepticRounds: 0
52601
+ publicationId: 018f0000-0000-7000-8000-000000000002
52602
+ startedAt: "2026-11-04T12:00:00.000Z"
52603
+ state: INTERVIEWING
52604
+ turns:
52605
+ - at: "2026-11-04T12:00:00.000Z"
52606
+ kind: QUESTION
52607
+ role: INTERVIEWER
52608
+ seq: 1
52609
+ text: What did you cut first, and what did you expect to happen?
52610
+ updatedAt: "2026-11-04T12:00:00.000Z"
49028
52611
  schema:
49029
- $ref: "#/components/schemas/PutOrganizationsByOrganizationIdPublicationsByPublicationIdInteractionSettingsResponse"
49030
- description: save this publication's reader interaction settings as a repository change succeeded
52612
+ $ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdInterviewsByInterviewIdStartResponse"
52613
+ description: start an Interview succeeded
49031
52614
  headers:
49032
52615
  Cache-Control:
49033
52616
  $ref: "#/components/headers/CacheControlNoStore"
@@ -49037,19 +52620,6 @@ paths:
49037
52620
  content:
49038
52621
  application/problem+json:
49039
52622
  examples:
49040
- REQUEST_FIELD_UNKNOWN:
49041
- summary: REQUEST_FIELD_UNKNOWN
49042
- value:
49043
- code: REQUEST_FIELD_UNKNOWN
49044
- correlationId: 018f0000-0000-7000-8000-000000000001
49045
- detail: See the operation contract.
49046
- errors: []
49047
- retryable: false
49048
- schemaId: urn:gala:schema:problem:2.0.0
49049
- schemaVersion: 2.0.0
49050
- status: 400
49051
- title: REQUEST_FIELD_UNKNOWN
49052
- type: urn:gala:problem:request-field-unknown
49053
52623
  VALIDATION_FAILED:
49054
52624
  summary: VALIDATION_FAILED
49055
52625
  value:
@@ -49065,14 +52635,13 @@ paths:
49065
52635
  type: urn:gala:problem:validation-failed
49066
52636
  schema:
49067
52637
  $ref: "#/components/schemas/Problem"
49068
- description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
52638
+ description: VALIDATION_FAILED
49069
52639
  headers:
49070
52640
  Cache-Control:
49071
52641
  $ref: "#/components/headers/CacheControlNoStore"
49072
52642
  X-Correlation-Id:
49073
52643
  $ref: "#/components/headers/XCorrelationId"
49074
52644
  x-gala-problem-codes:
49075
- - REQUEST_FIELD_UNKNOWN
49076
52645
  - VALIDATION_FAILED
49077
52646
  "401":
49078
52647
  content:
@@ -49172,10 +52741,10 @@ paths:
49172
52741
  status: 409
49173
52742
  title: COMMAND_REPLAY_CONFLICT
49174
52743
  type: urn:gala:problem:command-replay-conflict
49175
- INVALID_SOURCE_STATE:
49176
- summary: INVALID_SOURCE_STATE
52744
+ INTERVIEW_STATE_CONFLICT:
52745
+ summary: INTERVIEW_STATE_CONFLICT
49177
52746
  value:
49178
- code: INVALID_SOURCE_STATE
52747
+ code: INTERVIEW_STATE_CONFLICT
49179
52748
  correlationId: 018f0000-0000-7000-8000-000000000001
49180
52749
  detail: See the operation contract.
49181
52750
  errors: []
@@ -49183,8 +52752,21 @@ paths:
49183
52752
  schemaId: urn:gala:schema:problem:2.0.0
49184
52753
  schemaVersion: 2.0.0
49185
52754
  status: 409
49186
- title: INVALID_SOURCE_STATE
49187
- type: urn:gala:problem:invalid-source-state
52755
+ title: INTERVIEW_STATE_CONFLICT
52756
+ type: urn:gala:problem:interview-state-conflict
52757
+ PLAN_REQUIRED:
52758
+ summary: PLAN_REQUIRED
52759
+ value:
52760
+ code: PLAN_REQUIRED
52761
+ correlationId: 018f0000-0000-7000-8000-000000000001
52762
+ detail: See the operation contract.
52763
+ errors: []
52764
+ retryable: false
52765
+ schemaId: urn:gala:schema:problem:2.0.0
52766
+ schemaVersion: 2.0.0
52767
+ status: 409
52768
+ title: PLAN_REQUIRED
52769
+ type: urn:gala:problem:plan-required
49188
52770
  TRANSFER_PENDING:
49189
52771
  summary: TRANSFER_PENDING
49190
52772
  value:
@@ -49200,7 +52782,7 @@ paths:
49200
52782
  type: urn:gala:problem:transfer-pending
49201
52783
  schema:
49202
52784
  $ref: "#/components/schemas/Problem"
49203
- description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, TRANSFER_PENDING
52785
+ description: COMMAND_REPLAY_CONFLICT, INTERVIEW_STATE_CONFLICT, PLAN_REQUIRED, TRANSFER_PENDING
49204
52786
  headers:
49205
52787
  Cache-Control:
49206
52788
  $ref: "#/components/headers/CacheControlNoStore"
@@ -49208,39 +52790,69 @@ paths:
49208
52790
  $ref: "#/components/headers/XCorrelationId"
49209
52791
  x-gala-problem-codes:
49210
52792
  - COMMAND_REPLAY_CONFLICT
49211
- - INVALID_SOURCE_STATE
52793
+ - INTERVIEW_STATE_CONFLICT
52794
+ - PLAN_REQUIRED
49212
52795
  - TRANSFER_PENDING
49213
- "422":
52796
+ "429":
49214
52797
  content:
49215
52798
  application/problem+json:
49216
52799
  examples:
49217
- VALIDATION_FAILED:
49218
- summary: VALIDATION_FAILED
52800
+ QUOTA_EXHAUSTED:
52801
+ summary: QUOTA_EXHAUSTED
49219
52802
  value:
49220
- code: VALIDATION_FAILED
52803
+ code: QUOTA_EXHAUSTED
49221
52804
  correlationId: 018f0000-0000-7000-8000-000000000001
49222
52805
  detail: See the operation contract.
49223
52806
  errors: []
49224
52807
  retryable: false
49225
52808
  schemaId: urn:gala:schema:problem:2.0.0
49226
52809
  schemaVersion: 2.0.0
49227
- status: 422
49228
- title: VALIDATION_FAILED
49229
- type: urn:gala:problem:validation-failed
52810
+ status: 429
52811
+ title: QUOTA_EXHAUSTED
52812
+ type: urn:gala:problem:quota-exhausted
52813
+ RATE_LIMITED:
52814
+ summary: RATE_LIMITED
52815
+ value:
52816
+ code: RATE_LIMITED
52817
+ correlationId: 018f0000-0000-7000-8000-000000000001
52818
+ detail: See the operation contract.
52819
+ errors: []
52820
+ retryable: true
52821
+ schemaId: urn:gala:schema:problem:2.0.0
52822
+ schemaVersion: 2.0.0
52823
+ status: 429
52824
+ title: RATE_LIMITED
52825
+ type: urn:gala:problem:rate-limited
49230
52826
  schema:
49231
52827
  $ref: "#/components/schemas/Problem"
49232
- description: VALIDATION_FAILED
52828
+ description: QUOTA_EXHAUSTED, RATE_LIMITED
49233
52829
  headers:
49234
52830
  Cache-Control:
49235
52831
  $ref: "#/components/headers/CacheControlNoStore"
52832
+ Retry-After:
52833
+ $ref: "#/components/headers/RetryAfter"
49236
52834
  X-Correlation-Id:
49237
52835
  $ref: "#/components/headers/XCorrelationId"
49238
52836
  x-gala-problem-codes:
49239
- - VALIDATION_FAILED
52837
+ - QUOTA_EXHAUSTED
52838
+ - RATE_LIMITED
49240
52839
  "503":
49241
52840
  content:
49242
52841
  application/problem+json:
49243
52842
  examples:
52843
+ BUDGET_EXHAUSTED:
52844
+ summary: BUDGET_EXHAUSTED
52845
+ value:
52846
+ code: BUDGET_EXHAUSTED
52847
+ correlationId: 018f0000-0000-7000-8000-000000000001
52848
+ detail: See the operation contract.
52849
+ errors: []
52850
+ retryable: false
52851
+ schemaId: urn:gala:schema:problem:2.0.0
52852
+ schemaVersion: 2.0.0
52853
+ status: 503
52854
+ title: BUDGET_EXHAUSTED
52855
+ type: urn:gala:problem:budget-exhausted
49244
52856
  CAPABILITY_UNAVAILABLE:
49245
52857
  summary: CAPABILITY_UNAVAILABLE
49246
52858
  value:
@@ -49254,47 +52866,62 @@ paths:
49254
52866
  status: 503
49255
52867
  title: CAPABILITY_UNAVAILABLE
49256
52868
  type: urn:gala:problem:capability-unavailable
52869
+ PROVIDER_UNAVAILABLE:
52870
+ summary: PROVIDER_UNAVAILABLE
52871
+ value:
52872
+ code: PROVIDER_UNAVAILABLE
52873
+ correlationId: 018f0000-0000-7000-8000-000000000001
52874
+ detail: See the operation contract.
52875
+ errors: []
52876
+ retryable: true
52877
+ schemaId: urn:gala:schema:problem:2.0.0
52878
+ schemaVersion: 2.0.0
52879
+ status: 503
52880
+ title: PROVIDER_UNAVAILABLE
52881
+ type: urn:gala:problem:provider-unavailable
49257
52882
  schema:
49258
52883
  $ref: "#/components/schemas/Problem"
49259
- description: CAPABILITY_UNAVAILABLE
52884
+ description: BUDGET_EXHAUSTED, CAPABILITY_UNAVAILABLE, PROVIDER_UNAVAILABLE
49260
52885
  headers:
49261
52886
  Cache-Control:
49262
52887
  $ref: "#/components/headers/CacheControlNoStore"
49263
52888
  X-Correlation-Id:
49264
52889
  $ref: "#/components/headers/XCorrelationId"
49265
52890
  x-gala-problem-codes:
52891
+ - BUDGET_EXHAUSTED
49266
52892
  - CAPABILITY_UNAVAILABLE
52893
+ - PROVIDER_UNAVAILABLE
49267
52894
  security:
49268
52895
  - browserSession: []
49269
- - adminApiKey: []
49270
- summary: save this publication's reader interaction settings as a repository change
52896
+ summary: start an Interview
49271
52897
  tags:
49272
- - interaction-settings
52898
+ - interview
49273
52899
  x-gala-activation-gate: MVP
49274
52900
  x-gala-activation-guards:
49275
- - Active repository binding and configured GitHub App identity capability
49276
- x-gala-api-key-scope: content:write
52901
+ - Interview enabled for this deployment and publication
49277
52902
  x-gala-capability-key: publication.source.write
49278
- x-gala-concurrency: expected-git-head-and-binding-epoch
52903
+ x-gala-concurrency: interview-version
49279
52904
  x-gala-conditional-capabilities: []
49280
52905
  x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
49281
52906
  x-gala-nullability: required-and-nullable-are-explicit
49282
- x-gala-purpose: save this publication's reader interaction settings as a repository change
52907
+ x-gala-purpose: start an Interview
49283
52908
  x-gala-reachable-problems:
49284
52909
  - AUTHENTICATION_REQUIRED
49285
52910
  - AUTHORIZATION_DENIED
52911
+ - BUDGET_EXHAUSTED
49286
52912
  - CAPABILITY_UNAVAILABLE
49287
52913
  - COMMAND_REPLAY_CONFLICT
49288
- - INVALID_SOURCE_STATE
49289
- - REQUEST_FIELD_UNKNOWN
52914
+ - INTERVIEW_STATE_CONFLICT
52915
+ - PLAN_REQUIRED
52916
+ - PROVIDER_UNAVAILABLE
52917
+ - QUOTA_EXHAUSTED
52918
+ - RATE_LIMITED
49290
52919
  - RESOURCE_NOT_FOUND
49291
52920
  - TRANSFER_PENDING
49292
52921
  - VALIDATION_FAILED
49293
52922
  x-gala-replay-identity: idempotency-key
49294
52923
  x-gala-state-guards:
49295
- - Publication:ACTIVE
49296
- - RepositoryBinding:ACTIVE
49297
- - RepositoryChange:REQUESTED -> PLANNED
52924
+ - NONE
49298
52925
  x-gala-success-category: protocol
49299
52926
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
49300
52927
  /v2/organizations/{organizationId}/publications/{publicationId}/listen-settings:
@@ -65184,6 +68811,64 @@ paths:
65184
68811
  - NONE
65185
68812
  x-gala-success-category: query
65186
68813
  x-gala-tenant-scope: NONE
68814
+ /v2/platform/interview-usage:
68815
+ get:
68816
+ description: |
68817
+ 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.
68818
+ operationId: getPlatformInterviewUsage
68819
+ parameters:
68820
+ - $ref: "#/components/parameters/XCorrelationId"
68821
+ responses:
68822
+ "200":
68823
+ content:
68824
+ application/json:
68825
+ examples:
68826
+ nominal:
68827
+ summary: Nominal successful response
68828
+ value:
68829
+ cap:
68830
+ usdMicros: 50000000
68831
+ interviews: 42
68832
+ period: 2026-11
68833
+ usdMicros: 12500000
68834
+ schema:
68835
+ $ref: "#/components/schemas/GetPlatformInterviewUsageResponse"
68836
+ description: read platform Interview usage succeeded
68837
+ headers:
68838
+ Cache-Control:
68839
+ $ref: "#/components/headers/CacheControlNoStore"
68840
+ X-Correlation-Id:
68841
+ $ref: "#/components/headers/XCorrelationId"
68842
+ "400":
68843
+ $ref: "#/components/responses/ValidationFailed"
68844
+ "401":
68845
+ $ref: "#/components/responses/PlatformAuthenticationRequired"
68846
+ "403":
68847
+ $ref: "#/components/responses/AuthorizationDenied"
68848
+ security:
68849
+ - browserSession: []
68850
+ summary: read platform Interview usage
68851
+ tags:
68852
+ - platform
68853
+ x-gala-activation-gate: MVP
68854
+ x-gala-activation-guards:
68855
+ - NONE
68856
+ x-gala-capability-key: platform.interview.view
68857
+ x-gala-concurrency: none
68858
+ x-gala-conditional-capabilities: []
68859
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
68860
+ x-gala-nullability: required-and-nullable-are-explicit
68861
+ x-gala-purpose: read platform Interview usage
68862
+ x-gala-reachable-problems:
68863
+ - AUTHENTICATION_REQUIRED
68864
+ - AUTHORIZATION_DENIED
68865
+ - REAUTH_REQUIRED
68866
+ - VALIDATION_FAILED
68867
+ x-gala-replay-identity: safe-query
68868
+ x-gala-state-guards:
68869
+ - NONE
68870
+ x-gala-success-category: query
68871
+ x-gala-tenant-scope: NONE
65187
68872
  /v2/platform/oauth-clients:
65188
68873
  get:
65189
68874
  description: |
@@ -77211,6 +80896,7 @@ tags:
77211
80896
  - name: github
77212
80897
  - name: interaction-settings
77213
80898
  - name: internal
80899
+ - name: interview
77214
80900
  - name: membership-invitations
77215
80901
  - name: moderation
77216
80902
  - name: notifications