@itm-studio/partner-sdk 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itm-studio/partner-sdk",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "TypeScript SDK for the ITM Partner API — typed GraphQL client with zero introspection required",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -438,6 +438,21 @@ enum TagSource {
438
438
  AUTO
439
439
  }
440
440
 
441
+ enum ContributionStatus {
442
+ EXPIRED
443
+ FAILED
444
+ PENDING
445
+ PROCESSING
446
+ REVIEW_REQUIRED
447
+ SUCCEEDED
448
+ }
449
+
450
+ enum ContributionPageStatusFilter {
451
+ ACCEPTING
452
+ ARCHIVED
453
+ PAUSED
454
+ }
455
+
441
456
  # ─── Types ───────────────────────────────────────────────────────────────────
442
457
 
443
458
  type Currency {
@@ -451,6 +466,75 @@ type Currency {
451
466
  updatedAt: DateTime!
452
467
  }
453
468
 
469
+ """
470
+ A contribution (tip/donation) page owned by the partner's brand, with confirmed
471
+ money totals. Amount fields are ITM cents (major units × 100, including
472
+ zero-decimal currencies). Totals are strings because they can exceed Int.
473
+ """
474
+ type ContributionPageAdmin {
475
+ uid: ID!
476
+ slug: String!
477
+ title: String!
478
+ description: String
479
+ """Legal/terms copy rendered beneath the page."""
480
+ finePrint: String
481
+ brandUid: String!
482
+ brandName: String!
483
+ brandSlug: String!
484
+ currency: Currency!
485
+ suggestedAmountsCents: [Int!]!
486
+ """Highlighted quick-pick; always one of suggestedAmountsCents."""
487
+ recommendedAmountCents: Int
488
+ minimumAmountCents: Int
489
+ maximumAmountCents: Int
490
+ requireItmAccount: Boolean!
491
+ """Shows an optional note field at checkout."""
492
+ allowContributorNote: Boolean!
493
+ isAccepting: Boolean!
494
+ """True when the page is accepting, not archived, and its payout account is verified."""
495
+ canContribute: Boolean!
496
+ """Public checkout URL for this page on ITM."""
497
+ publicUrl: String!
498
+ """Data URL of a QR code that resolves to publicUrl."""
499
+ qrCodeImageUrl: String!
500
+ archivedAt: DateTime
501
+ successfulContributionCount: Int!
502
+ """Number of successful refunds."""
503
+ refundCount: Int!
504
+ grossAmountCents: String!
505
+ refundedAmountCents: String!
506
+ """Brand net after platform and processing fees, reduced pro rata by successful refunds."""
507
+ netAmountCents: String!
508
+ createdAt: DateTime!
509
+ updatedAt: DateTime!
510
+ }
511
+
512
+ """
513
+ A single contribution to one of the brand's contribution pages.
514
+ Only SUCCEEDED contributions represent confirmed money.
515
+ """
516
+ type ContributionAdmin {
517
+ uid: ID!
518
+ contributionPageUid: String!
519
+ """Page title snapshotted at checkout."""
520
+ pageTitle: String!
521
+ donorName: String!
522
+ donorEmail: String!
523
+ """Note left by the contributor at checkout; null when none was given."""
524
+ note: String
525
+ currencyCode: String!
526
+ amountCents: Int!
527
+ refundedAmountCents: Int!
528
+ status: ContributionStatus!
529
+ paidAt: DateTime
530
+ """Paid without an ITM account."""
531
+ isGuest: Boolean!
532
+ """When a guest contribution was linked to an ITM account."""
533
+ claimedAt: DateTime
534
+ createdAt: DateTime!
535
+ updatedAt: DateTime!
536
+ }
537
+
454
538
  """
455
539
  The authenticated partner's brand identity and public-facing details.
456
540
  The brand is derived from the partner token and cannot be selected by UID or slug.
@@ -883,6 +967,20 @@ type GetPartnerDropsResponse {
883
967
  nextCursor: String
884
968
  }
885
969
 
970
+ type ContributionPagesResponse {
971
+ items: [ContributionPageAdmin!]!
972
+ totalCount: Int!
973
+ hasNextPage: Boolean!
974
+ nextCursor: String
975
+ }
976
+
977
+ type ContributionsResponse {
978
+ items: [ContributionAdmin!]!
979
+ totalCount: Int!
980
+ hasNextPage: Boolean!
981
+ nextCursor: String
982
+ }
983
+
886
984
  type GetMomentLineupsResponse {
887
985
  lineups: [MomentLineup!]!
888
986
  totalCount: Int!
@@ -1382,6 +1480,36 @@ type Query {
1382
1480
  take: Int
1383
1481
  ): GetBrandEchoesForUserResponse!
1384
1482
 
1483
+ """
1484
+ Paginated contribution pages for the brand associated with the partner token,
1485
+ newest first. Each page carries its public checkout URL and confirmed totals.
1486
+ """
1487
+ getPartnerContributionPages(
1488
+ """ACCEPTING, PAUSED or ARCHIVED; omit for all pages."""
1489
+ status: ContributionPageStatusFilter
1490
+ """Case-insensitive search over title and slug."""
1491
+ search: String
1492
+ cursor: String
1493
+ """1–100, default 25."""
1494
+ take: Int
1495
+ ): ContributionPagesResponse!
1496
+
1497
+ """
1498
+ Paginated contributions for the brand associated with the partner token,
1499
+ newest first. Filter status: SUCCEEDED for confirmed contributors.
1500
+ """
1501
+ getPartnerContributions(
1502
+ """Restrict to one contribution page owned by the brand."""
1503
+ contributionPageUid: String
1504
+ """Omit for all statuses; SUCCEEDED lists paid contributions."""
1505
+ status: ContributionStatus
1506
+ """Case-insensitive search over donor name and email."""
1507
+ search: String
1508
+ cursor: String
1509
+ """1–100, default 25."""
1510
+ take: Int
1511
+ ): ContributionsResponse!
1512
+
1385
1513
  """
1386
1514
  Get paginated ticket tiers for a partner-owned moment.
1387
1515
  Provide either momentSlug or momentUid. Omitted isActive defaults to active tiers only.
@@ -1419,6 +1547,12 @@ type Query {
1419
1547
  Get public lineup invitation details by response token.
1420
1548
  """
1421
1549
  getMomentLineupByToken(token: String!): PublicMomentLineupInfo!
1550
+ getPartnerPlans(input: GetPlansInput!): GetPlansResponse!
1551
+ getPartnerPlan(planUid: String!): Plan!
1552
+ getPartnerPlanBudgets(planUid: String!): [PlanBudgetSummary!]!
1553
+ getPartnerPlanBudget(budgetUid: String!): PlanBudget!
1554
+ getPartnerPlanningSource(offset: Int! = 0, take: Int! = 50, uid: String!): PlanningSource!
1555
+ getPartnerPlanningProposal(uid: String!): PlanningProposal!
1422
1556
  }
1423
1557
 
1424
1558
  # ─── Input Types ──────────────────────────────────────────────────────────────
@@ -1825,4 +1959,458 @@ type Mutation {
1825
1959
  ): BrandSubscription!
1826
1960
 
1827
1961
  respondToMomentLineup(input: RespondToMomentLineupInput!): MomentLineupResponseResult!
1962
+ preparePartnerPlanningProposal(input: PreparePlanningProposalInput!, toolCallId: String!): PlanningProposal!
1963
+ decidePartnerPlanningProposal(approve: Boolean!, requestHash: String!, toolCallId: String!, uid: String!): PlanningProposal!
1964
+ }
1965
+
1966
+ # Planning and budget artifacts
1967
+ input GetPlansInput {
1968
+ cursor: String
1969
+ kind: PlanKind
1970
+ search: String
1971
+ status: PlanStatus
1972
+ tagNames: [String!]
1973
+ take: Int
1974
+ }
1975
+
1976
+ enum PlanKind {
1977
+ GENERAL
1978
+ LOCATION
1979
+ MOMENT
1980
+ }
1981
+
1982
+ enum PlanStatus {
1983
+ ACTIVE
1984
+ ARCHIVED
1985
+ }
1986
+
1987
+ type GetPlansResponse {
1988
+ hasNextPage: Boolean!
1989
+ nextCursor: String
1990
+ plans: [PlanSummary!]!
1991
+ totalCount: Int!
1992
+ }
1993
+
1994
+ type PlanSummary {
1995
+ createdAt: DateTime!
1996
+ description: String
1997
+ kind: PlanKind!
1998
+ moodboardItemCount: Int!
1999
+ moodboardRevision: Int!
2000
+ name: String!
2001
+ revision: Int!
2002
+ schedule: PlanSchedule
2003
+ scheduleRevision: Int!
2004
+ slug: String!
2005
+ status: PlanStatus!
2006
+ tags: [Tag!]!
2007
+ uid: ID!
2008
+ updatedAt: DateTime!
2009
+ }
2010
+
2011
+ type PlanSchedule {
2012
+ count: Int
2013
+ createdAt: DateTime!
2014
+ daysOfWeek: [Int!]!
2015
+ endsAt: DateTime
2016
+ endsOn: String
2017
+ excludeDates: [String!]!
2018
+ fingerprint: String!
2019
+ frequency: MomentOccurrenceScheduleFrequency
2020
+ includeDates: [String!]!
2021
+ interval: Int
2022
+ occurrenceCount: Int!
2023
+ startsAt: DateTime
2024
+ startsOn: String
2025
+ times: [PlanScheduleTime!]!
2026
+ timezone: String!
2027
+ type: PlanScheduleType!
2028
+ uid: ID!
2029
+ updatedAt: DateTime!
2030
+ }
2031
+
2032
+ enum MomentOccurrenceScheduleFrequency {
2033
+ DAILY
2034
+ MONTHLY
2035
+ WEEKLY
2036
+ }
2037
+
2038
+ type PlanScheduleTime {
2039
+ durationMinutes: Int!
2040
+ time: String!
2041
+ }
2042
+
2043
+ enum PlanScheduleType {
2044
+ ONE_TIME
2045
+ RECURRING
2046
+ }
2047
+
2048
+ type Plan {
2049
+ createdAt: DateTime!
2050
+ description: String
2051
+ kind: PlanKind!
2052
+ moodboard: PlanMoodboard
2053
+ name: String!
2054
+ revision: Int!
2055
+ schedule: PlanSchedule
2056
+ scheduleRevision: Int!
2057
+ slug: String!
2058
+ status: PlanStatus!
2059
+ tags: [Tag!]!
2060
+ uid: ID!
2061
+ updatedAt: DateTime!
2062
+ }
2063
+
2064
+ type PlanMoodboard {
2065
+ createdAt: DateTime!
2066
+ items: [PlanMoodboardItem!]!
2067
+ revision: Int!
2068
+ uid: ID!
2069
+ updatedAt: DateTime!
2070
+ }
2071
+
2072
+ type PlanMoodboardItem {
2073
+ createdAt: DateTime!
2074
+ linkMetadata: JSON
2075
+ linkMetadataStatus: PlanLinkMetadataStatus!
2076
+ linkUrl: String
2077
+ mediaAsset: MediaAsset
2078
+ note: String
2079
+ position: Int!
2080
+ title: String
2081
+ type: PlanMoodboardItemType!
2082
+ uid: ID!
2083
+ updatedAt: DateTime!
2084
+ }
2085
+
2086
+ enum PlanLinkMetadataStatus {
2087
+ FAILED
2088
+ NOT_APPLICABLE
2089
+ PENDING
2090
+ READY
2091
+ }
2092
+
2093
+ enum PlanMoodboardItemType {
2094
+ LINK
2095
+ MEDIA
2096
+ }
2097
+
2098
+ type PlanBudgetSummary {
2099
+ createdAt: DateTime!
2100
+ currencyCode: String!
2101
+ currencyExponent: Int!
2102
+ name: String!
2103
+ planUid: String!
2104
+ revision: Int!
2105
+ scheduleIsStale: Boolean!
2106
+ uid: ID!
2107
+ updatedAt: DateTime!
2108
+ }
2109
+
2110
+ type PlanBudget {
2111
+ calculation: JSON!
2112
+ createdAt: DateTime!
2113
+ currencyCode: String!
2114
+ currencyExponent: Int!
2115
+ document: JSON!
2116
+ name: String!
2117
+ planUid: String!
2118
+ revision: Int!
2119
+ scheduleIsStale: Boolean!
2120
+ uid: ID!
2121
+ updatedAt: DateTime!
2122
+ }
2123
+
2124
+ type PlanningSource {
2125
+ contentHash: String
2126
+ error: String
2127
+ filename: String!
2128
+ nextOffset: Int
2129
+ sections: [PlanningSourceSection!]
2130
+ status: String!
2131
+ uid: String!
2132
+ warnings: [String!]
2133
+ }
2134
+
2135
+ type PlanningSourceSection {
2136
+ reference: String!
2137
+ values: [String!]!
2138
+ }
2139
+
2140
+ type PlanningProposal {
2141
+ expiresAt: DateTime!
2142
+ preview: JSON!
2143
+ requestHash: String!
2144
+ result: JSON
2145
+ status: String!
2146
+ uid: String!
2147
+ }
2148
+
2149
+ input PreparePlanningProposalInput {
2150
+ budgetDraft: ReplacePlanBudgetDraftInput
2151
+ budgetUid: String
2152
+ createBudget: CreatePlanBudgetInput
2153
+ createPlan: CreatePlanInput
2154
+ expectedBudgetRevision: Int
2155
+ expectedPlanRevision: Int
2156
+ importUids: [String!]
2157
+ planUid: String
2158
+ reviewNotes: [String!]!
2159
+ schedule: PlanScheduleInput
2160
+ sourceDispositions: [PlanningSourceDispositionInput!]
2161
+ tagNames: [String!]
2162
+ updatePlan: UpdatePlanInput
2163
+ }
2164
+
2165
+ input ReplacePlanBudgetDraftInput {
2166
+ artistDeal: PlanBudgetArtistDealInput
2167
+ averageTicketsPerCheckout: String
2168
+ baselineSellThroughBps: Int
2169
+ capacityAllocations: [PlanBudgetCapacityAllocationInput!]!
2170
+ categories: [PlanBudgetCategoryInput!]!
2171
+ externalTicketingChannels: [PlanBudgetExternalTicketingChannelInput!]
2172
+ lines: [PlanBudgetLineInput!]!
2173
+ physicalCapacity: Int
2174
+ ticketTiers: [PlanBudgetTicketTierInput!]!
2175
+ walkoutSellThroughBps: [Int!]
2176
+ }
2177
+
2178
+ input PlanBudgetArtistDealInput {
2179
+ basis: PlanBudgetArtistDealBasis!
2180
+ guaranteeBasis: PlanBudgetGuaranteeBasis
2181
+ guaranteeMinor: String
2182
+ label: String
2183
+ percentageBps: Int
2184
+ type: PlanBudgetArtistDealType!
2185
+ uid: String
2186
+ }
2187
+
2188
+ enum PlanBudgetArtistDealBasis {
2189
+ ORGANIZER_TICKET_REVENUE
2190
+ ORGANIZER_TICKET_REVENUE_LESS_DEDUCTIBLE_EXPENSES
2191
+ }
2192
+
2193
+ enum PlanBudgetGuaranteeBasis {
2194
+ ONCE
2195
+ PER_OCCURRENCE
2196
+ }
2197
+
2198
+ enum PlanBudgetArtistDealType {
2199
+ FLAT_GUARANTEE
2200
+ GUARANTEE_VS_PERCENTAGE
2201
+ PERCENTAGE
2202
+ }
2203
+
2204
+ input PlanBudgetCapacityAllocationInput {
2205
+ countsAsAttendee: Boolean!
2206
+ label: String
2207
+ position: Int!
2208
+ quantity: Int!
2209
+ type: PlanBudgetAllocationType!
2210
+ uid: String
2211
+ }
2212
+
2213
+ enum PlanBudgetAllocationType {
2214
+ ARTIST_TEAM
2215
+ COMP
2216
+ GUEST_LIST
2217
+ HOLD
2218
+ OTHER
2219
+ STAFF
2220
+ SUPPORT
2221
+ }
2222
+
2223
+ input PlanBudgetCategoryInput {
2224
+ kind: PlanBudgetCategoryKind!
2225
+ name: String!
2226
+ parentUid: String
2227
+ position: Int!
2228
+ uid: String
2229
+ }
2230
+
2231
+ enum PlanBudgetCategoryKind {
2232
+ EXPENSE
2233
+ REVENUE
2234
+ }
2235
+
2236
+ input PlanBudgetExternalTicketingChannelInput {
2237
+ assumptionsCapturedAt: DateTime
2238
+ averageTicketsPerCheckout: String!
2239
+ feeComponents: [PlanBudgetTicketingFeeComponentInput!]
2240
+ name: String!
2241
+ position: Int!
2242
+ uid: String
2243
+ }
2244
+
2245
+ input PlanBudgetTicketingFeeComponentInput {
2246
+ assessment: PlanBudgetFeeAssessment!
2247
+ fixedAmountMinor: String
2248
+ kind: PlanBudgetFeeComponentKind!
2249
+ label: String!
2250
+ minimumAmountMinor: String
2251
+ percentageBasis: PlanBudgetFeePercentageBasis!
2252
+ position: Int!
2253
+ rateBps: Int
2254
+ treatment: PlanBudgetChargeTreatment!
2255
+ uid: String
2256
+ }
2257
+
2258
+ enum PlanBudgetFeeAssessment {
2259
+ PER_TICKET
2260
+ PER_TRANSACTION
2261
+ }
2262
+
2263
+ enum PlanBudgetFeeComponentKind {
2264
+ DELIVERY
2265
+ FACILITY
2266
+ OTHER
2267
+ PLATFORM
2268
+ PROCESSING
2269
+ }
2270
+
2271
+ enum PlanBudgetFeePercentageBasis {
2272
+ BUYER_SUBTOTAL
2273
+ FACE_VALUE
2274
+ }
2275
+
2276
+ enum PlanBudgetChargeTreatment {
2277
+ ADDED_TO_BUYER
2278
+ WITHHELD_FROM_ORGANIZER
2279
+ }
2280
+
2281
+ input PlanBudgetLineInput {
2282
+ actualTotalMinor: String
2283
+ categoryUid: String!
2284
+ committedTotalMinor: String
2285
+ dealDeductible: Boolean
2286
+ description: String
2287
+ durationHours: String
2288
+ formulaBasis: PlanBudgetLineBasis!
2289
+ gratuityBps: Int
2290
+ kind: PlanBudgetCategoryKind!
2291
+ name: String!
2292
+ paymentStatus: PlanBudgetPaymentStatus
2293
+ plannedUnitAmountMinor: String!
2294
+ position: Int!
2295
+ quantity: String
2296
+ quotedTotalMinor: String
2297
+ repeatPerOccurrence: Boolean
2298
+ taxBps: Int
2299
+ uid: String
2300
+ vendorLabel: String
2301
+ }
2302
+
2303
+ enum PlanBudgetLineBasis {
2304
+ FIXED
2305
+ PER_ATTENDEE
2306
+ PER_OCCURRENCE
2307
+ PER_PAID_TICKET
2308
+ PER_UNIT
2309
+ PER_UNIT_PER_OCCURRENCE
2310
+ RATE_X_TIME
2311
+ }
2312
+
2313
+ enum PlanBudgetPaymentStatus {
2314
+ NOT_APPLICABLE
2315
+ NOT_STARTED
2316
+ PAID
2317
+ PARTIAL
2318
+ }
2319
+
2320
+ input PlanBudgetTicketTierInput {
2321
+ allocation: Int!
2322
+ chargeRules: [PlanBudgetTicketChargeRuleInput!]
2323
+ externalTicketingChannelUid: String
2324
+ inputAmountMinor: String!
2325
+ name: String!
2326
+ position: Int!
2327
+ pricingMode: PlanBudgetPricingMode!
2328
+ roundingIncrementMinor: String
2329
+ saleEndsAt: DateTime
2330
+ saleStartsAt: DateTime
2331
+ ticketingChannelType: PlanBudgetTicketingChannelType
2332
+ uid: String
2333
+ }
2334
+
2335
+ input PlanBudgetTicketChargeRuleInput {
2336
+ amountMinor: String
2337
+ calculation: PlanBudgetChargeCalculation!
2338
+ kind: PlanBudgetChargeKind!
2339
+ position: Int!
2340
+ rateBps: Int
2341
+ treatment: PlanBudgetChargeTreatment!
2342
+ uid: String
2343
+ }
2344
+
2345
+ enum PlanBudgetChargeCalculation {
2346
+ FIXED_PER_TICKET
2347
+ PERCENT_OF_FACE_VALUE
2348
+ }
2349
+
2350
+ enum PlanBudgetChargeKind {
2351
+ FEE
2352
+ TAX
2353
+ }
2354
+
2355
+ enum PlanBudgetPricingMode {
2356
+ FACE_VALUE
2357
+ ORGANIZER_NET_TARGET
2358
+ }
2359
+
2360
+ enum PlanBudgetTicketingChannelType {
2361
+ EXTERNAL
2362
+ ITM
2363
+ NONE
2364
+ }
2365
+
2366
+ input CreatePlanBudgetInput {
2367
+ currencyCode: String!
2368
+ name: String!
2369
+ templateUid: String
2370
+ }
2371
+
2372
+ input CreatePlanInput {
2373
+ description: String
2374
+ kind: PlanKind!
2375
+ name: String!
2376
+ schedule: PlanScheduleInput
2377
+ slug: String
2378
+ tagNames: [String!]
2379
+ }
2380
+
2381
+ input PlanScheduleInput {
2382
+ count: Int
2383
+ daysOfWeek: [Int!]
2384
+ endsAt: DateTime
2385
+ endsOn: String
2386
+ excludeDates: [String!]
2387
+ frequency: MomentOccurrenceScheduleFrequency
2388
+ includeDates: [String!]
2389
+ interval: Int
2390
+ startsAt: DateTime
2391
+ startsOn: String
2392
+ times: [PlanScheduleTimeInput!]
2393
+ timezone: String!
2394
+ type: PlanScheduleType!
2395
+ }
2396
+
2397
+ input PlanScheduleTimeInput {
2398
+ durationMinutes: Int!
2399
+ time: String!
2400
+ }
2401
+
2402
+ input PlanningSourceDispositionInput {
2403
+ disposition: String!
2404
+ explanation: String!
2405
+ importUid: String!
2406
+ reference: String!
2407
+ targetUids: [String!]
2408
+ }
2409
+
2410
+ input UpdatePlanInput {
2411
+ description: String
2412
+ kind: PlanKind
2413
+ name: String
2414
+ slug: String
2415
+ status: PlanStatus
1828
2416
  }