@lessly/sdk-app 30.2.0 → 30.3.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.
Files changed (61) hide show
  1. package/dist/analytics/index.d.cts +1 -1
  2. package/dist/analytics/index.d.ts +1 -1
  3. package/dist/brain/index.cjs +0 -5
  4. package/dist/brain/index.cjs.map +1 -1
  5. package/dist/brain/index.d.cts +2 -6
  6. package/dist/brain/index.d.ts +2 -6
  7. package/dist/brain/index.js +1 -5
  8. package/dist/brain/index.js.map +1 -1
  9. package/dist/{client.gen-C6_mJktu.d.cts → client.gen-BsUBUFNz.d.cts} +1834 -231
  10. package/dist/{client.gen-C6_mJktu.d.ts → client.gen-BsUBUFNz.d.ts} +1834 -231
  11. package/dist/consent/index.d.cts +1 -1
  12. package/dist/consent/index.d.ts +1 -1
  13. package/dist/deployment/index.d.cts +1 -1
  14. package/dist/deployment/index.d.ts +1 -1
  15. package/dist/index.cjs +534 -36
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +534 -36
  20. package/dist/index.js.map +1 -1
  21. package/dist/mail/index.d.cts +2 -2
  22. package/dist/mail/index.d.ts +2 -2
  23. package/dist/organization/index.cjs +0 -5
  24. package/dist/organization/index.cjs.map +1 -1
  25. package/dist/organization/index.d.cts +2 -6
  26. package/dist/organization/index.d.ts +2 -6
  27. package/dist/organization/index.js +1 -5
  28. package/dist/organization/index.js.map +1 -1
  29. package/dist/playground/index.cjs +66 -0
  30. package/dist/playground/index.cjs.map +1 -0
  31. package/dist/playground/index.d.cts +52 -0
  32. package/dist/playground/index.d.ts +52 -0
  33. package/dist/playground/index.js +53 -0
  34. package/dist/playground/index.js.map +1 -0
  35. package/dist/realtime/index.d.cts +1 -1
  36. package/dist/realtime/index.d.ts +1 -1
  37. package/dist/support/index.cjs +106 -0
  38. package/dist/support/index.cjs.map +1 -0
  39. package/dist/support/index.d.cts +84 -0
  40. package/dist/support/index.d.ts +84 -0
  41. package/dist/support/index.js +85 -0
  42. package/dist/support/index.js.map +1 -0
  43. package/dist/tracking/index.d.cts +1 -1
  44. package/dist/tracking/index.d.ts +1 -1
  45. package/dist/users/index.d.cts +1 -1
  46. package/dist/users/index.d.ts +1 -1
  47. package/dist/waitlist/index.d.cts +1 -1
  48. package/dist/waitlist/index.d.ts +1 -1
  49. package/package.json +12 -2
  50. package/src/gen/bindings.gen.ts +534 -36
  51. package/src/gen/brain/index.ts +1 -1
  52. package/src/gen/brain/queryOptions.gen.ts +0 -7
  53. package/src/gen/client.gen.ts +128 -8
  54. package/src/gen/manifest.gen.ts +1 -1
  55. package/src/gen/organization/index.ts +1 -1
  56. package/src/gen/organization/queryOptions.gen.ts +0 -6
  57. package/src/gen/playground/index.ts +3 -0
  58. package/src/gen/playground/queryOptions.gen.ts +86 -0
  59. package/src/gen/support/index.ts +3 -0
  60. package/src/gen/support/queryOptions.gen.ts +131 -0
  61. package/src/gen/types.gen.ts +1730 -118
@@ -1028,98 +1028,6 @@ snapshotId: string
1028
1028
  preRestoreSnapshotId: (string | null)
1029
1029
  } | null)
1030
1030
 
1031
- export interface BrainUsageReportInput {
1032
- /**
1033
- * How many UTC days of this product's ledger to return, ending today (default 30, max 90)
1034
- */
1035
- days?: number
1036
- }
1037
-
1038
- export interface BrainUsageReportOutput {
1039
- note: string
1040
- /**
1041
- * Brain's own ledger, for THIS product only
1042
- */
1043
- product: {
1044
- /**
1045
- * Inclusive UTC end of the window (today), YYYY-MM-DD
1046
- */
1047
- to: string
1048
- /**
1049
- * The window actually used, after clamping
1050
- */
1051
- days: number
1052
- /**
1053
- * Inclusive UTC start of the window, YYYY-MM-DD
1054
- */
1055
- from: string
1056
- rows: {
1057
- /**
1058
- * 'sync' | 'batch'; '' when the push carried none
1059
- */
1060
- mode: string
1061
- /**
1062
- * Manifest meter slug, e.g. llm-tokens
1063
- */
1064
- meter: string
1065
- /**
1066
- * Model dimension; '' when the push carried none
1067
- */
1068
- model: string
1069
- /**
1070
- * How many record() calls landed in this slice
1071
- */
1072
- events: number
1073
- /**
1074
- * Tokens we metered for this slice, delivered or not
1075
- */
1076
- tokens: number
1077
- /**
1078
- * Purpose dimension; '' when the push carried none
1079
- */
1080
- purpose: string
1081
- /**
1082
- * UTC calendar day, YYYY-MM-DD
1083
- */
1084
- usage_date: string
1085
- /**
1086
- * Of those events, how many billing did not accept
1087
- */
1088
- delivery_failed: number
1089
- }[]
1090
- /**
1091
- * The rows rolled up per meter across the whole window
1092
- */
1093
- totals: {
1094
- meter: string
1095
- events: number
1096
- tokens: number
1097
- delivery_failed: number
1098
- }[]
1099
- product_id: string
1100
- }
1101
- /**
1102
- * The platform billing aggregate for the whole ORG; null if it could not be read
1103
- */
1104
- platform: ({
1105
- plan: string
1106
- scope: "org"
1107
- meters: {
1108
- unit?: string
1109
- used?: number
1110
- limit?: (number | null)
1111
- remaining?: (number | null)
1112
- unlimited?: boolean
1113
- meter_slug: string
1114
- }[]
1115
- org_id: string
1116
- } | null)
1117
- /**
1118
- * Why the platform aggregate is null; null when it was read successfully
1119
- */
1120
- platform_error: (string | null)
1121
- }
1122
-
1123
1031
  export interface ConsentConfigCookieDomainUpsertInput {
1124
1032
  cookieDomain: ("" | null | string)
1125
1033
  }
@@ -12793,7 +12701,6 @@ provider: string
12793
12701
  externalId: string
12794
12702
  displayName: string
12795
12703
  requestStatus: (("pending" | "denied") | null)
12796
- organizationId: string
12797
12704
  }[]
12798
12705
 
12799
12706
  export interface OrganizationConnectorsListOrgInput {
@@ -12889,12 +12796,6 @@ domain: string
12889
12796
  createdAt: string
12890
12797
  createdBy: string
12891
12798
  productId: string
12892
- managedDns: ({
12893
- tool: "organization_domains_set-mode"
12894
- provider: "cloudflare"
12895
- available: true
12896
- providerConnectorId: string
12897
- } | null)
12898
12799
  providerConnectorId: (string | null)
12899
12800
  }
12900
12801
 
@@ -12939,23 +12840,6 @@ export interface OrganizationDomainsRemoveOutput {
12939
12840
  [k: string]: unknown
12940
12841
  }
12941
12842
 
12942
- export interface OrganizationDomainsSetModeInput {
12943
- mode: ("managed" | "external")
12944
- domainId: string
12945
- productId: string
12946
- providerConnectorId?: string
12947
- }
12948
-
12949
- export interface OrganizationDomainsSetModeOutput {
12950
- id: string
12951
- mode: ("external" | "managed")
12952
- domain: string
12953
- createdAt: string
12954
- createdBy: string
12955
- productId: string
12956
- providerConnectorId: (string | null)
12957
- }
12958
-
12959
12843
  export interface OrganizationExtensionsListInstalledInput {
12960
12844
  productId: string
12961
12845
  }
@@ -13005,7 +12889,6 @@ connectors: {
13005
12889
  id: string
13006
12890
  externalId: string
13007
12891
  displayName: string
13008
- organizationId: string
13009
12892
  attachedToThisProduct: boolean
13010
12893
  }[]
13011
12894
  }
@@ -13040,7 +12923,6 @@ name: string
13040
12923
  role: ("owner" | "admin" | "member")
13041
12924
  active: boolean
13042
12925
  blockedAt: (string | null)
13043
- blockReason: (("no_subscription" | "under_review") | null)
13044
12926
  }[]
13045
12927
  }
13046
12928
 
@@ -13634,6 +13516,226 @@ name: string
13634
13516
  activeProductId: (string | null)
13635
13517
  }
13636
13518
 
13519
+ export interface PlaygroundAnalyticsOverviewInput {
13520
+ /**
13521
+ * Max records per entity in recent[]; omit for the endpoint default
13522
+ */
13523
+ limit?: number
13524
+ }
13525
+
13526
+ export interface PlaygroundAnalyticsOverviewOutput {
13527
+ ok: boolean
13528
+ minted: boolean
13529
+ overview?: unknown
13530
+ http_status: number
13531
+ }
13532
+
13533
+ export interface PlaygroundBillingEntitlementsInput {
13534
+
13535
+ }
13536
+
13537
+ export interface PlaygroundBillingEntitlementsOutput {
13538
+ ok: boolean
13539
+ minted: boolean
13540
+ http_status: number
13541
+ entitlements?: unknown
13542
+ }
13543
+
13544
+ export interface PlaygroundBillingRecordUsageInput {
13545
+ /**
13546
+ * Quantity of events to record against playground-events (SUM); defaults to 1
13547
+ */
13548
+ value?: number
13549
+ }
13550
+
13551
+ export interface PlaygroundBillingRecordUsageOutput {
13552
+ minted: boolean
13553
+ accepted: (number | null)
13554
+ recorded: boolean
13555
+ duplicates: (number | null)
13556
+ http_status: number
13557
+ }
13558
+
13559
+ export interface PlaygroundClickupCreateTaskInput {
13560
+ /**
13561
+ * Task title; defaults to a fixture label
13562
+ */
13563
+ name?: string
13564
+ /**
13565
+ * ClickUp list id; falls back to CLICKUP_TEST_LIST_ID
13566
+ */
13567
+ listId?: string
13568
+ }
13569
+
13570
+ export interface PlaygroundClickupCreateTaskOutput {
13571
+ minted: boolean
13572
+ task_id: (string | null)
13573
+ list_status: number
13574
+ vend_status: number
13575
+ clickup_status: number
13576
+ installation_count: number
13577
+ }
13578
+
13579
+ export interface PlaygroundClickupGetLastWebhookInput {
13580
+
13581
+ }
13582
+
13583
+ export type PlaygroundClickupGetLastWebhookOutput = ({
13584
+ payload: string
13585
+ event_id: string
13586
+ provider: string
13587
+ verified: boolean
13588
+ product_id: string
13589
+ occurred_at: string
13590
+ connector_id: string
13591
+ clickup_event: (string | null)
13592
+ receipt_count: number
13593
+ } | {
13594
+ found: false
13595
+ })
13596
+
13597
+ export interface PlaygroundClickupGetOverviewInput {
13598
+
13599
+ }
13600
+
13601
+ export interface PlaygroundClickupGetOverviewOutput {
13602
+ team: ({
13603
+ teamId: string
13604
+ teamName: string
13605
+ } | null)
13606
+ lists: PlaygroundClickupGetOverviewOutputItems[]
13607
+ tasks: {
13608
+ id: string
13609
+ name: string
13610
+ status: (string | null)
13611
+ }[]
13612
+ minted: boolean
13613
+ spaces: PlaygroundClickupGetOverviewOutputItems[]
13614
+ list_status: number
13615
+ vend_status: number
13616
+ lists_status: number
13617
+ tasks_status: number
13618
+ spaces_status: number
13619
+ folders_status: number
13620
+ installation_count: number
13621
+ }
13622
+ export interface PlaygroundClickupGetOverviewOutputItems {
13623
+ id: string
13624
+ name: string
13625
+ }
13626
+
13627
+ export interface PlaygroundGdriveGetLastChangeInput {
13628
+
13629
+ }
13630
+
13631
+ export type PlaygroundGdriveGetLastChangeOutput = ({
13632
+ file_id: string
13633
+ removed: boolean
13634
+ file_name: (string | null)
13635
+ mime_type: (string | null)
13636
+ product_id: string
13637
+ occurred_at: string
13638
+ connector_id: string
13639
+ resource_state: string
13640
+ } | {
13641
+ found: false
13642
+ })
13643
+
13644
+ export interface PlaygroundGdriveReadFileInput {
13645
+ /**
13646
+ * Drive file id; falls back to GDRIVE_TEST_FILE_ID, then the first picked file
13647
+ */
13648
+ fileId?: string
13649
+ }
13650
+
13651
+ export interface PlaygroundGdriveReadFileOutput {
13652
+ minted: boolean
13653
+ file_id: (string | null)
13654
+ file_name: (string | null)
13655
+ mime_type: (string | null)
13656
+ file_count: number
13657
+ get_status: number
13658
+ list_status: number
13659
+ vend_status: number
13660
+ content_bytes: (number | null)
13661
+ }
13662
+
13663
+ export interface PlaygroundGoogleadsReadCustomerInput {
13664
+
13665
+ }
13666
+
13667
+ export interface PlaygroundGoogleadsReadCustomerOutput {
13668
+ minted: boolean
13669
+ vended: boolean
13670
+ customer_id: (string | null)
13671
+ vend_status: number
13672
+ result_count: number
13673
+ search_status: number
13674
+ login_customer_id: (string | null)
13675
+ }
13676
+
13677
+ export interface PlaygroundLifecycleGetStateInput {
13678
+
13679
+ }
13680
+
13681
+ export interface PlaygroundLifecycleGetStateOutput {
13682
+ blocked: boolean
13683
+ archived: boolean
13684
+ productId: string
13685
+ lastBlockTransition: ({
13686
+ eventId: string
13687
+ eventName: string
13688
+ productId: string
13689
+ occurredAt: string
13690
+ recordedAt: string
13691
+ receiptCount: number
13692
+ organizationId: string
13693
+ cascadedFromOrg: boolean
13694
+ } | null)
13695
+ lastArchiveTransition: ({
13696
+ eventId: string
13697
+ eventName: string
13698
+ productId: string
13699
+ occurredAt: string
13700
+ recordedAt: string
13701
+ receiptCount: number
13702
+ organizationId: string
13703
+ cascadedFromOrg: boolean
13704
+ } | null)
13705
+ }
13706
+
13707
+ export interface PlaygroundLifecycleListEventsInput {
13708
+
13709
+ }
13710
+
13711
+ export type PlaygroundLifecycleListEventsOutput = {
13712
+ eventId: string
13713
+ eventName: string
13714
+ productId: string
13715
+ occurredAt: string
13716
+ recordedAt: string
13717
+ receiptCount: number
13718
+ organizationId: string
13719
+ cascadedFromOrg: boolean
13720
+ }[]
13721
+
13722
+ export interface PlaygroundWebhookGetLastInput {
13723
+
13724
+ }
13725
+
13726
+ export type PlaygroundWebhookGetLastOutput = ({
13727
+ payload?: unknown
13728
+ event_id: string
13729
+ provider: string
13730
+ verified: boolean
13731
+ product_id: string
13732
+ occurred_at: string
13733
+ connector_id: string
13734
+ delivery_count: number
13735
+ } | {
13736
+ found: false
13737
+ })
13738
+
13637
13739
  export interface RealtimeArchiveExportInput {
13638
13740
  /**
13639
13741
  * Only entries with ts <= to_ts (epoch ms)
@@ -14555,6 +14657,1516 @@ updatedAt: string
14555
14657
  description: (string | null)
14556
14658
  }
14557
14659
 
14660
+ export interface SupportAgentCreateInput {
14661
+ /**
14662
+ * Job title shown under the name, e.g. "Support engineer"
14663
+ */
14664
+ title?: string
14665
+ /**
14666
+ * Absolute URL of the agent avatar image
14667
+ */
14668
+ avatarUrl?: string
14669
+ /**
14670
+ * Name the end user sees next to this agent replies
14671
+ */
14672
+ displayName: string
14673
+ /**
14674
+ * Lessly identity to bind this profile to, stored verbatim as an opaque string. It is never resolved, validated against the platform or enriched. Omit it for a bot or a backend profile. At most one agent per product may claim a given Lessly user
14675
+ */
14676
+ lesslyUserId?: string
14677
+ }
14678
+
14679
+ export interface SupportAgentCreateOutput {
14680
+ /**
14681
+ * Agent id
14682
+ */
14683
+ id: string
14684
+ /**
14685
+ * Job title shown under the name, or null if unset
14686
+ */
14687
+ title: (string | null)
14688
+ /**
14689
+ * A deactivated agent keeps its history but can no longer be put on a thread
14690
+ */
14691
+ isActive: boolean
14692
+ /**
14693
+ * Avatar image URL, or null if unset
14694
+ */
14695
+ avatarUrl: (string | null)
14696
+ /**
14697
+ * ISO-8601 creation timestamp
14698
+ */
14699
+ createdAt: string
14700
+ /**
14701
+ * ISO-8601 last-modification timestamp
14702
+ */
14703
+ updatedAt: string
14704
+ /**
14705
+ * Name shown next to the agent replies
14706
+ */
14707
+ displayName: string
14708
+ /**
14709
+ * Bound Lessly identity, stored verbatim and resolved by nobody. Null for an unbound profile — a bot or the client's own backend, which replies just like anyone else
14710
+ */
14711
+ lesslyUserId: (string | null)
14712
+ }
14713
+
14714
+ export interface SupportAgentGetInput {
14715
+ /**
14716
+ * Agent id
14717
+ */
14718
+ id: string
14719
+ }
14720
+
14721
+ export interface SupportAgentGetOutput {
14722
+ /**
14723
+ * Agent id
14724
+ */
14725
+ id: string
14726
+ /**
14727
+ * Job title shown under the name, or null if unset
14728
+ */
14729
+ title: (string | null)
14730
+ /**
14731
+ * A deactivated agent keeps its history but can no longer be put on a thread
14732
+ */
14733
+ isActive: boolean
14734
+ /**
14735
+ * Avatar image URL, or null if unset
14736
+ */
14737
+ avatarUrl: (string | null)
14738
+ /**
14739
+ * ISO-8601 creation timestamp
14740
+ */
14741
+ createdAt: string
14742
+ /**
14743
+ * ISO-8601 last-modification timestamp
14744
+ */
14745
+ updatedAt: string
14746
+ /**
14747
+ * Name shown next to the agent replies
14748
+ */
14749
+ displayName: string
14750
+ /**
14751
+ * Bound Lessly identity, stored verbatim and resolved by nobody. Null for an unbound profile — a bot or the client's own backend, which replies just like anyone else
14752
+ */
14753
+ lesslyUserId: (string | null)
14754
+ }
14755
+
14756
+ export interface SupportAgentListInput {
14757
+ /**
14758
+ * Also return deactivated agents (default false)
14759
+ */
14760
+ includeInactive?: boolean
14761
+ }
14762
+
14763
+ export interface SupportAgentListOutput {
14764
+ /**
14765
+ * The product support agents, by display name
14766
+ */
14767
+ agents: {
14768
+ /**
14769
+ * Agent id
14770
+ */
14771
+ id: string
14772
+ /**
14773
+ * Job title shown under the name, or null if unset
14774
+ */
14775
+ title: (string | null)
14776
+ /**
14777
+ * A deactivated agent keeps its history but can no longer be put on a thread
14778
+ */
14779
+ isActive: boolean
14780
+ /**
14781
+ * Avatar image URL, or null if unset
14782
+ */
14783
+ avatarUrl: (string | null)
14784
+ /**
14785
+ * ISO-8601 creation timestamp
14786
+ */
14787
+ createdAt: string
14788
+ /**
14789
+ * ISO-8601 last-modification timestamp
14790
+ */
14791
+ updatedAt: string
14792
+ /**
14793
+ * Name shown next to the agent replies
14794
+ */
14795
+ displayName: string
14796
+ /**
14797
+ * Bound Lessly identity, stored verbatim and resolved by nobody. Null for an unbound profile — a bot or the client's own backend, which replies just like anyone else
14798
+ */
14799
+ lesslyUserId: (string | null)
14800
+ }[]
14801
+ }
14802
+
14803
+ export interface SupportAgentUpdateInput {
14804
+ /**
14805
+ * Agent id
14806
+ */
14807
+ id: string
14808
+ /**
14809
+ * New job title, or null to clear it
14810
+ */
14811
+ title?: (string | null)
14812
+ /**
14813
+ * Deactivate or reactivate. A deactivated agent keeps every message it wrote and every thread it already sits on, but cannot be assigned to another one
14814
+ */
14815
+ isActive?: boolean
14816
+ /**
14817
+ * New avatar URL, or null to clear it
14818
+ */
14819
+ avatarUrl?: (string | null)
14820
+ /**
14821
+ * Name the end user sees next to this agent replies
14822
+ */
14823
+ displayName?: string
14824
+ /**
14825
+ * Lessly identity to bind, or null to unbind. Stored verbatim, resolved by nobody
14826
+ */
14827
+ lesslyUserId?: (string | null)
14828
+ }
14829
+
14830
+ export interface SupportAgentUpdateOutput {
14831
+ /**
14832
+ * Agent id
14833
+ */
14834
+ id: string
14835
+ /**
14836
+ * Job title shown under the name, or null if unset
14837
+ */
14838
+ title: (string | null)
14839
+ /**
14840
+ * A deactivated agent keeps its history but can no longer be put on a thread
14841
+ */
14842
+ isActive: boolean
14843
+ /**
14844
+ * Avatar image URL, or null if unset
14845
+ */
14846
+ avatarUrl: (string | null)
14847
+ /**
14848
+ * ISO-8601 creation timestamp
14849
+ */
14850
+ createdAt: string
14851
+ /**
14852
+ * ISO-8601 last-modification timestamp
14853
+ */
14854
+ updatedAt: string
14855
+ /**
14856
+ * Name shown next to the agent replies
14857
+ */
14858
+ displayName: string
14859
+ /**
14860
+ * Bound Lessly identity, stored verbatim and resolved by nobody. Null for an unbound profile — a bot or the client's own backend, which replies just like anyone else
14861
+ */
14862
+ lesslyUserId: (string | null)
14863
+ }
14864
+
14865
+ export interface SupportAttachmentCreateInput {
14866
+ /**
14867
+ * Display name of the file, e.g. "invoice.pdf". Only the base name is used for the storage key; any directory part is discarded
14868
+ */
14869
+ fileName: string
14870
+ /**
14871
+ * Thread the file belongs to. An attachment is created against a thread first and claimed by one of its messages later, when that message is posted
14872
+ */
14873
+ threadId: string
14874
+ /**
14875
+ * Size of the file in bytes, at most 26214400. Declared up front so an oversized upload is refused before a URL is issued; finalize checks the real size again
14876
+ */
14877
+ sizeBytes: number
14878
+ /**
14879
+ * MIME type of the file. The upload URL is signed for exactly this type, so the PUT must send the same Content-Type header or storage rejects it
14880
+ */
14881
+ contentType: string
14882
+ }
14883
+
14884
+ export interface SupportAttachmentCreateOutput {
14885
+ /**
14886
+ * Attachment id
14887
+ */
14888
+ id: string
14889
+ /**
14890
+ * pending: the row exists and an upload URL was issued, but no bytes have been confirmed. uploaded: finalize saw the object in storage. Only uploaded attachments can be attached to a message or downloaded
14891
+ */
14892
+ status: ("pending" | "uploaded")
14893
+ /**
14894
+ * Display name of the file
14895
+ */
14896
+ fileName: string
14897
+ /**
14898
+ * Thread this attachment belongs to
14899
+ */
14900
+ threadId: string
14901
+ /**
14902
+ * ISO-8601 creation timestamp
14903
+ */
14904
+ createdAt: string
14905
+ /**
14906
+ * The message that carries this attachment, or null while nothing claims it yet
14907
+ */
14908
+ messageId: (string | null)
14909
+ /**
14910
+ * Size in bytes: what the caller declared while the attachment is pending, what storage reported once it is uploaded
14911
+ */
14912
+ sizeBytes: number
14913
+ /**
14914
+ * Short-lived signed URL. PUT the file bytes here with the same Content-Type, then call support_attachment_finalize. The URL is a bearer credential for this one object
14915
+ */
14916
+ uploadUrl: string
14917
+ /**
14918
+ * ISO-8601 timestamp of the confirmed upload, or null while pending
14919
+ */
14920
+ uploadedAt: (string | null)
14921
+ /**
14922
+ * MIME type declared when the attachment was created
14923
+ */
14924
+ contentType: string
14925
+ /**
14926
+ * ISO-8601 moment the upload URL stops working
14927
+ */
14928
+ uploadExpiresAt: string
14929
+ }
14930
+
14931
+ export interface SupportAttachmentFinalizeInput {
14932
+ /**
14933
+ * The attachment whose upload should be confirmed, as returned by the create call
14934
+ */
14935
+ attachmentId: string
14936
+ }
14937
+
14938
+ export interface SupportAttachmentFinalizeOutput {
14939
+ /**
14940
+ * Attachment id
14941
+ */
14942
+ id: string
14943
+ /**
14944
+ * pending: the row exists and an upload URL was issued, but no bytes have been confirmed. uploaded: finalize saw the object in storage. Only uploaded attachments can be attached to a message or downloaded
14945
+ */
14946
+ status: ("pending" | "uploaded")
14947
+ /**
14948
+ * Display name of the file
14949
+ */
14950
+ fileName: string
14951
+ /**
14952
+ * Thread this attachment belongs to
14953
+ */
14954
+ threadId: string
14955
+ /**
14956
+ * ISO-8601 creation timestamp
14957
+ */
14958
+ createdAt: string
14959
+ /**
14960
+ * The message that carries this attachment, or null while nothing claims it yet
14961
+ */
14962
+ messageId: (string | null)
14963
+ /**
14964
+ * Size in bytes: what the caller declared while the attachment is pending, what storage reported once it is uploaded
14965
+ */
14966
+ sizeBytes: number
14967
+ /**
14968
+ * ISO-8601 timestamp of the confirmed upload, or null while pending
14969
+ */
14970
+ uploadedAt: (string | null)
14971
+ /**
14972
+ * MIME type declared when the attachment was created
14973
+ */
14974
+ contentType: string
14975
+ /**
14976
+ * Short-lived signed URL to read the uploaded file
14977
+ */
14978
+ downloadUrl: string
14979
+ }
14980
+
14981
+ export interface SupportLabelCreateInput {
14982
+ /**
14983
+ * Label name as the customer wants to see it. Unique within the product
14984
+ */
14985
+ name: string
14986
+ /**
14987
+ * Optional display colour as a six-digit hex string, e.g. #2563eb
14988
+ */
14989
+ color?: string
14990
+ }
14991
+
14992
+ export interface SupportLabelCreateOutput {
14993
+ /**
14994
+ * Label id
14995
+ */
14996
+ id: string
14997
+ /**
14998
+ * Label name, unique within the product
14999
+ */
15000
+ name: string
15001
+ /**
15002
+ * Display colour as a hex string, or null if uncoloured
15003
+ */
15004
+ color: (string | null)
15005
+ /**
15006
+ * ISO-8601 creation timestamp
15007
+ */
15008
+ createdAt: string
15009
+ }
15010
+
15011
+ export interface SupportLabelListInput {
15012
+
15013
+ }
15014
+
15015
+ export interface SupportLabelListOutput {
15016
+ /**
15017
+ * The product label dictionary, by name
15018
+ */
15019
+ labels: {
15020
+ /**
15021
+ * Label id
15022
+ */
15023
+ id: string
15024
+ /**
15025
+ * Label name, unique within the product
15026
+ */
15027
+ name: string
15028
+ /**
15029
+ * Display colour as a hex string, or null if uncoloured
15030
+ */
15031
+ color: (string | null)
15032
+ /**
15033
+ * ISO-8601 creation timestamp
15034
+ */
15035
+ createdAt: string
15036
+ }[]
15037
+ }
15038
+
15039
+ export interface SupportMessageCreateInput {
15040
+ /**
15041
+ * The message text, stored verbatim
15042
+ */
15043
+ body: string
15044
+ /**
15045
+ * Id of the thread this message belongs to
15046
+ */
15047
+ threadId: string
15048
+ /**
15049
+ * inbound: written by the external end user. outbound: written by support, going out to them
15050
+ */
15051
+ direction: ("inbound" | "outbound")
15052
+ /**
15053
+ * Defaults to public when omitted. Internal notes are never shown to the end user
15054
+ */
15055
+ visibility?: ("public" | "internal")
15056
+ /**
15057
+ * Files this message carries, created with support_attachment_create and confirmed with support_attachment_finalize beforehand. Each must be an uploaded attachment of the same thread that no other message already carries; otherwise the whole message is refused. At most 10 per message
15058
+ *
15059
+ * @maxItems 10
15060
+ */
15061
+ attachmentIds?: []|[string]|[string, string]|[string, string, string]|[string, string, string, string]|[string, string, string, string, string]|[string, string, string, string, string, string]|[string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string]|[string, string, string, string, string, string, string, string, string, string]
15062
+ /**
15063
+ * The support agent of this product who wrote the message. Set this exactly when the message comes from inside the support contour; leave authorExternalId empty. An agent of another product is reported as not found
15064
+ */
15065
+ authorAgentId?: string
15066
+ /**
15067
+ * Opaque identifier of the external end user in the client's own user base, stored verbatim. Set this exactly when the message comes from outside; leave authorAgentId empty
15068
+ */
15069
+ authorExternalId?: string
15070
+ }
15071
+
15072
+ export interface SupportMessageCreateOutput {
15073
+ /**
15074
+ * Message id
15075
+ */
15076
+ id: string
15077
+ /**
15078
+ * The message text, byte-identical to what was stored
15079
+ */
15080
+ body: string
15081
+ /**
15082
+ * Thread this message belongs to
15083
+ */
15084
+ threadId: string
15085
+ /**
15086
+ * ISO-8601 creation timestamp
15087
+ */
15088
+ createdAt: string
15089
+ /**
15090
+ * inbound: written by the external end user. outbound: written by support, going out to them
15091
+ */
15092
+ direction: ("inbound" | "outbound")
15093
+ /**
15094
+ * public: part of the conversation the external end user sees. internal: a note between agents that never leaves the support contour
15095
+ */
15096
+ visibility: ("public" | "internal")
15097
+ /**
15098
+ * Files this message carries, each with a freshly signed download URL. Empty when there are none. Attachments whose upload was never confirmed are never listed here
15099
+ */
15100
+ attachments: {
15101
+ /**
15102
+ * Attachment id
15103
+ */
15104
+ id: string
15105
+ /**
15106
+ * Display name of the file
15107
+ */
15108
+ fileName: string
15109
+ /**
15110
+ * ISO-8601 timestamp of when the attachment was created
15111
+ */
15112
+ createdAt: string
15113
+ /**
15114
+ * Size in bytes as reported by storage
15115
+ */
15116
+ sizeBytes: number
15117
+ /**
15118
+ * MIME type of the file
15119
+ */
15120
+ contentType: string
15121
+ /**
15122
+ * Short-lived signed URL to read the file. Re-read the message to get a fresh one
15123
+ */
15124
+ downloadUrl: string
15125
+ }[]
15126
+ /**
15127
+ * The agent author, or null when the external end user wrote the message
15128
+ */
15129
+ authorAgentId: (string | null)
15130
+ /**
15131
+ * The external author, or null when an agent wrote the message
15132
+ */
15133
+ authorExternalId: (string | null)
15134
+ }
15135
+
15136
+ export interface SupportMessageListInput {
15137
+ /**
15138
+ * Page size, 1..100 (default 50)
15139
+ */
15140
+ limit?: number
15141
+ /**
15142
+ * Number of messages to skip
15143
+ */
15144
+ offset?: number
15145
+ /**
15146
+ * Thread whose messages to list. Messages exist only inside a thread
15147
+ */
15148
+ threadId: string
15149
+ /**
15150
+ * Only messages in this direction
15151
+ */
15152
+ direction?: ("inbound" | "outbound")
15153
+ /**
15154
+ * Only messages with this visibility. Omit to get both public and internal
15155
+ */
15156
+ visibility?: ("public" | "internal")
15157
+ }
15158
+
15159
+ export interface SupportMessageListOutput {
15160
+ /**
15161
+ * Page size that was applied
15162
+ */
15163
+ limit: number
15164
+ /**
15165
+ * Offset that was applied
15166
+ */
15167
+ offset: number
15168
+ /**
15169
+ * The requested page of messages, oldest first — the conversation reads forward
15170
+ */
15171
+ messages: {
15172
+ /**
15173
+ * Message id
15174
+ */
15175
+ id: string
15176
+ /**
15177
+ * The message text, byte-identical to what was stored
15178
+ */
15179
+ body: string
15180
+ /**
15181
+ * Thread this message belongs to
15182
+ */
15183
+ threadId: string
15184
+ /**
15185
+ * ISO-8601 creation timestamp
15186
+ */
15187
+ createdAt: string
15188
+ /**
15189
+ * inbound: written by the external end user. outbound: written by support, going out to them
15190
+ */
15191
+ direction: ("inbound" | "outbound")
15192
+ /**
15193
+ * public: part of the conversation the external end user sees. internal: a note between agents that never leaves the support contour
15194
+ */
15195
+ visibility: ("public" | "internal")
15196
+ /**
15197
+ * Files this message carries, each with a freshly signed download URL. Empty when there are none. Attachments whose upload was never confirmed are never listed here
15198
+ */
15199
+ attachments: {
15200
+ /**
15201
+ * Attachment id
15202
+ */
15203
+ id: string
15204
+ /**
15205
+ * Display name of the file
15206
+ */
15207
+ fileName: string
15208
+ /**
15209
+ * ISO-8601 timestamp of when the attachment was created
15210
+ */
15211
+ createdAt: string
15212
+ /**
15213
+ * Size in bytes as reported by storage
15214
+ */
15215
+ sizeBytes: number
15216
+ /**
15217
+ * MIME type of the file
15218
+ */
15219
+ contentType: string
15220
+ /**
15221
+ * Short-lived signed URL to read the file. Re-read the message to get a fresh one
15222
+ */
15223
+ downloadUrl: string
15224
+ }[]
15225
+ /**
15226
+ * The agent author, or null when the external end user wrote the message
15227
+ */
15228
+ authorAgentId: (string | null)
15229
+ /**
15230
+ * The external author, or null when an agent wrote the message
15231
+ */
15232
+ authorExternalId: (string | null)
15233
+ }[]
15234
+ }
15235
+
15236
+ export interface SupportStatusArchiveInput {
15237
+ /**
15238
+ * Status id
15239
+ */
15240
+ id: string
15241
+ /**
15242
+ * Live status every thread on the archived status moves to, in the same transaction
15243
+ */
15244
+ targetStatusId: string
15245
+ }
15246
+
15247
+ export interface SupportStatusArchiveOutput {
15248
+ /**
15249
+ * Status id
15250
+ */
15251
+ id: string
15252
+ /**
15253
+ * Status name, unique within the product
15254
+ */
15255
+ name: string
15256
+ /**
15257
+ * Display colour as a hex string
15258
+ */
15259
+ color: string
15260
+ /**
15261
+ * Sort order within the status dictionary
15262
+ */
15263
+ order: number
15264
+ /**
15265
+ * Archived statuses stay readable but are not offered as targets
15266
+ */
15267
+ archived: boolean
15268
+ /**
15269
+ * Lifecycle bucket the status belongs to
15270
+ */
15271
+ category: ("open" | "pending" | "resolved" | "closed")
15272
+ }
15273
+
15274
+ export interface SupportStatusCreateInput {
15275
+ /**
15276
+ * Status name as the customer wants to see it. Unique within the product
15277
+ */
15278
+ name: string
15279
+ /**
15280
+ * Display colour as a six-digit hex string, e.g. #2563eb
15281
+ */
15282
+ color: string
15283
+ /**
15284
+ * Sort order within the status dictionary, lowest first
15285
+ */
15286
+ order: number
15287
+ /**
15288
+ * Lifecycle bucket the status belongs to. Automation and reporting read the category, never the name — so it cannot be changed once threads sit on the status
15289
+ */
15290
+ category: ("open" | "pending" | "resolved" | "closed")
15291
+ }
15292
+
15293
+ export interface SupportStatusCreateOutput {
15294
+ /**
15295
+ * Status id
15296
+ */
15297
+ id: string
15298
+ /**
15299
+ * Status name, unique within the product
15300
+ */
15301
+ name: string
15302
+ /**
15303
+ * Display colour as a hex string
15304
+ */
15305
+ color: string
15306
+ /**
15307
+ * Sort order within the status dictionary
15308
+ */
15309
+ order: number
15310
+ /**
15311
+ * Archived statuses stay readable but are not offered as targets
15312
+ */
15313
+ archived: boolean
15314
+ /**
15315
+ * Lifecycle bucket the status belongs to
15316
+ */
15317
+ category: ("open" | "pending" | "resolved" | "closed")
15318
+ }
15319
+
15320
+ export interface SupportStatusListInput {
15321
+ /**
15322
+ * Also return archived statuses (default false)
15323
+ */
15324
+ includeArchived?: boolean
15325
+ }
15326
+
15327
+ export interface SupportStatusListOutput {
15328
+ /**
15329
+ * The product status dictionary, in display order
15330
+ */
15331
+ statuses: {
15332
+ /**
15333
+ * Status id
15334
+ */
15335
+ id: string
15336
+ /**
15337
+ * Status name, unique within the product
15338
+ */
15339
+ name: string
15340
+ /**
15341
+ * Display colour as a hex string
15342
+ */
15343
+ color: string
15344
+ /**
15345
+ * Sort order within the status dictionary
15346
+ */
15347
+ order: number
15348
+ /**
15349
+ * Archived statuses stay readable but are not offered as targets
15350
+ */
15351
+ archived: boolean
15352
+ /**
15353
+ * Lifecycle bucket the status belongs to
15354
+ */
15355
+ category: ("open" | "pending" | "resolved" | "closed")
15356
+ }[]
15357
+ }
15358
+
15359
+ export interface SupportStatusUpdateInput {
15360
+ /**
15361
+ * Status id
15362
+ */
15363
+ id: string
15364
+ /**
15365
+ * Status name as the customer wants to see it. Unique within the product
15366
+ */
15367
+ name?: string
15368
+ /**
15369
+ * Display colour as a six-digit hex string, e.g. #2563eb
15370
+ */
15371
+ color?: string
15372
+ /**
15373
+ * Sort order within the status dictionary, lowest first
15374
+ */
15375
+ order?: number
15376
+ /**
15377
+ * New lifecycle bucket. Refused while any thread references the status
15378
+ */
15379
+ category?: ("open" | "pending" | "resolved" | "closed")
15380
+ }
15381
+
15382
+ export interface SupportStatusUpdateOutput {
15383
+ /**
15384
+ * Status id
15385
+ */
15386
+ id: string
15387
+ /**
15388
+ * Status name, unique within the product
15389
+ */
15390
+ name: string
15391
+ /**
15392
+ * Display colour as a hex string
15393
+ */
15394
+ color: string
15395
+ /**
15396
+ * Sort order within the status dictionary
15397
+ */
15398
+ order: number
15399
+ /**
15400
+ * Archived statuses stay readable but are not offered as targets
15401
+ */
15402
+ archived: boolean
15403
+ /**
15404
+ * Lifecycle bucket the status belongs to
15405
+ */
15406
+ category: ("open" | "pending" | "resolved" | "closed")
15407
+ }
15408
+
15409
+ export interface SupportThreadAssignInput {
15410
+ /**
15411
+ * Thread id
15412
+ */
15413
+ id: string
15414
+ /**
15415
+ * Support agent of this product to put on the thread, or null to return it to the unassigned queue. An agent of another product is reported as not found
15416
+ */
15417
+ agentId: (string | null)
15418
+ }
15419
+
15420
+ export interface SupportThreadAssignOutput {
15421
+ /**
15422
+ * Thread id
15423
+ */
15424
+ id: string
15425
+ /**
15426
+ * ticket: the end user wants something fixed. feedback: unsolicited input
15427
+ */
15428
+ type: ("ticket" | "feedback")
15429
+ /**
15430
+ * Thread subject
15431
+ */
15432
+ title: string
15433
+ /**
15434
+ * Every label on the thread, by name
15435
+ */
15436
+ labels: {
15437
+ /**
15438
+ * Label id
15439
+ */
15440
+ id: string
15441
+ /**
15442
+ * Label name, unique within the product
15443
+ */
15444
+ name: string
15445
+ /**
15446
+ * Display colour as a hex string, or null if uncoloured
15447
+ */
15448
+ color: (string | null)
15449
+ /**
15450
+ * ISO-8601 creation timestamp
15451
+ */
15452
+ createdAt: string
15453
+ }[]
15454
+ /**
15455
+ * The status itself, joined in at read time
15456
+ */
15457
+ status: {
15458
+ /**
15459
+ * Status id
15460
+ */
15461
+ id: string
15462
+ /**
15463
+ * Status name, unique within the product
15464
+ */
15465
+ name: string
15466
+ /**
15467
+ * Display colour as a hex string
15468
+ */
15469
+ color: string
15470
+ /**
15471
+ * Sort order within the status dictionary
15472
+ */
15473
+ order: number
15474
+ /**
15475
+ * Archived statuses stay readable but are not offered as targets
15476
+ */
15477
+ archived: boolean
15478
+ /**
15479
+ * Lifecycle bucket the status belongs to
15480
+ */
15481
+ category: ("open" | "pending" | "resolved" | "closed")
15482
+ }
15483
+ /**
15484
+ * Free-form client-owned JSON
15485
+ */
15486
+ metadata: {
15487
+ [k: string]: unknown
15488
+ }
15489
+ /**
15490
+ * Thread priority
15491
+ */
15492
+ priority: ("low" | "normal" | "high" | "urgent")
15493
+ /**
15494
+ * Id of the status the thread sits on
15495
+ */
15496
+ statusId: string
15497
+ /**
15498
+ * ISO-8601 creation timestamp
15499
+ */
15500
+ createdAt: string
15501
+ /**
15502
+ * ISO-8601 last-modification timestamp
15503
+ */
15504
+ updatedAt: string
15505
+ /**
15506
+ * ISO-8601 timestamp of the last reply, or null while there are none
15507
+ */
15508
+ lastReplyAt: (string | null)
15509
+ /**
15510
+ * Display name for the external author, if given
15511
+ */
15512
+ authorDisplay: (string | null)
15513
+ /**
15514
+ * Assigned agent, or null while unassigned
15515
+ */
15516
+ assignedAgentId: (string | null)
15517
+ /**
15518
+ * The external author, byte-identical to what was stored
15519
+ */
15520
+ authorExternalId: string
15521
+ }
15522
+
15523
+ export interface SupportThreadCreateInput {
15524
+ /**
15525
+ * ticket: the end user wants something fixed. feedback: unsolicited input
15526
+ */
15527
+ type: ("ticket" | "feedback")
15528
+ /**
15529
+ * Short human-readable subject of the thread
15530
+ */
15531
+ title: string
15532
+ /**
15533
+ * Labels to put on the new thread
15534
+ *
15535
+ * @maxItems 50
15536
+ */
15537
+ labelIds?: string[]
15538
+ /**
15539
+ * Free-form client-owned JSON attached to the thread
15540
+ */
15541
+ metadata?: {
15542
+ [k: string]: unknown
15543
+ }
15544
+ /**
15545
+ * Optional display name for the external author, as the client already knows it
15546
+ */
15547
+ authorDisplay?: string
15548
+ /**
15549
+ * Opaque identifier of the external end user in the client's own user base. Stored verbatim: never resolved, normalised or enriched, and it is not a Lessly identity
15550
+ */
15551
+ authorExternalId: string
15552
+ }
15553
+
15554
+ export interface SupportThreadCreateOutput {
15555
+ /**
15556
+ * Thread id
15557
+ */
15558
+ id: string
15559
+ /**
15560
+ * ticket: the end user wants something fixed. feedback: unsolicited input
15561
+ */
15562
+ type: ("ticket" | "feedback")
15563
+ /**
15564
+ * Thread subject
15565
+ */
15566
+ title: string
15567
+ /**
15568
+ * Every label on the thread, by name
15569
+ */
15570
+ labels: {
15571
+ /**
15572
+ * Label id
15573
+ */
15574
+ id: string
15575
+ /**
15576
+ * Label name, unique within the product
15577
+ */
15578
+ name: string
15579
+ /**
15580
+ * Display colour as a hex string, or null if uncoloured
15581
+ */
15582
+ color: (string | null)
15583
+ /**
15584
+ * ISO-8601 creation timestamp
15585
+ */
15586
+ createdAt: string
15587
+ }[]
15588
+ /**
15589
+ * The status itself, joined in at read time
15590
+ */
15591
+ status: {
15592
+ /**
15593
+ * Status id
15594
+ */
15595
+ id: string
15596
+ /**
15597
+ * Status name, unique within the product
15598
+ */
15599
+ name: string
15600
+ /**
15601
+ * Display colour as a hex string
15602
+ */
15603
+ color: string
15604
+ /**
15605
+ * Sort order within the status dictionary
15606
+ */
15607
+ order: number
15608
+ /**
15609
+ * Archived statuses stay readable but are not offered as targets
15610
+ */
15611
+ archived: boolean
15612
+ /**
15613
+ * Lifecycle bucket the status belongs to
15614
+ */
15615
+ category: ("open" | "pending" | "resolved" | "closed")
15616
+ }
15617
+ /**
15618
+ * Free-form client-owned JSON
15619
+ */
15620
+ metadata: {
15621
+ [k: string]: unknown
15622
+ }
15623
+ /**
15624
+ * Thread priority
15625
+ */
15626
+ priority: ("low" | "normal" | "high" | "urgent")
15627
+ /**
15628
+ * Id of the status the thread sits on
15629
+ */
15630
+ statusId: string
15631
+ /**
15632
+ * ISO-8601 creation timestamp
15633
+ */
15634
+ createdAt: string
15635
+ /**
15636
+ * ISO-8601 last-modification timestamp
15637
+ */
15638
+ updatedAt: string
15639
+ /**
15640
+ * ISO-8601 timestamp of the last reply, or null while there are none
15641
+ */
15642
+ lastReplyAt: (string | null)
15643
+ /**
15644
+ * Display name for the external author, if given
15645
+ */
15646
+ authorDisplay: (string | null)
15647
+ /**
15648
+ * Assigned agent, or null while unassigned
15649
+ */
15650
+ assignedAgentId: (string | null)
15651
+ /**
15652
+ * The external author, byte-identical to what was stored
15653
+ */
15654
+ authorExternalId: string
15655
+ }
15656
+
15657
+ export interface SupportThreadGetInput {
15658
+ /**
15659
+ * Thread id
15660
+ */
15661
+ id: string
15662
+ }
15663
+
15664
+ export interface SupportThreadGetOutput {
15665
+ /**
15666
+ * Thread id
15667
+ */
15668
+ id: string
15669
+ /**
15670
+ * ticket: the end user wants something fixed. feedback: unsolicited input
15671
+ */
15672
+ type: ("ticket" | "feedback")
15673
+ /**
15674
+ * Thread subject
15675
+ */
15676
+ title: string
15677
+ /**
15678
+ * Every label on the thread, by name
15679
+ */
15680
+ labels: {
15681
+ /**
15682
+ * Label id
15683
+ */
15684
+ id: string
15685
+ /**
15686
+ * Label name, unique within the product
15687
+ */
15688
+ name: string
15689
+ /**
15690
+ * Display colour as a hex string, or null if uncoloured
15691
+ */
15692
+ color: (string | null)
15693
+ /**
15694
+ * ISO-8601 creation timestamp
15695
+ */
15696
+ createdAt: string
15697
+ }[]
15698
+ /**
15699
+ * The status itself, joined in at read time
15700
+ */
15701
+ status: {
15702
+ /**
15703
+ * Status id
15704
+ */
15705
+ id: string
15706
+ /**
15707
+ * Status name, unique within the product
15708
+ */
15709
+ name: string
15710
+ /**
15711
+ * Display colour as a hex string
15712
+ */
15713
+ color: string
15714
+ /**
15715
+ * Sort order within the status dictionary
15716
+ */
15717
+ order: number
15718
+ /**
15719
+ * Archived statuses stay readable but are not offered as targets
15720
+ */
15721
+ archived: boolean
15722
+ /**
15723
+ * Lifecycle bucket the status belongs to
15724
+ */
15725
+ category: ("open" | "pending" | "resolved" | "closed")
15726
+ }
15727
+ /**
15728
+ * Free-form client-owned JSON
15729
+ */
15730
+ metadata: {
15731
+ [k: string]: unknown
15732
+ }
15733
+ /**
15734
+ * Thread priority
15735
+ */
15736
+ priority: ("low" | "normal" | "high" | "urgent")
15737
+ /**
15738
+ * Id of the status the thread sits on
15739
+ */
15740
+ statusId: string
15741
+ /**
15742
+ * ISO-8601 creation timestamp
15743
+ */
15744
+ createdAt: string
15745
+ /**
15746
+ * ISO-8601 last-modification timestamp
15747
+ */
15748
+ updatedAt: string
15749
+ /**
15750
+ * ISO-8601 timestamp of the last reply, or null while there are none
15751
+ */
15752
+ lastReplyAt: (string | null)
15753
+ /**
15754
+ * Display name for the external author, if given
15755
+ */
15756
+ authorDisplay: (string | null)
15757
+ /**
15758
+ * Assigned agent, or null while unassigned
15759
+ */
15760
+ assignedAgentId: (string | null)
15761
+ /**
15762
+ * The external author, byte-identical to what was stored
15763
+ */
15764
+ authorExternalId: string
15765
+ }
15766
+
15767
+ export interface SupportThreadListInput {
15768
+ /**
15769
+ * Only threads of this type
15770
+ */
15771
+ type?: ("ticket" | "feedback")
15772
+ /**
15773
+ * Page size, 1..100 (default 25)
15774
+ */
15775
+ limit?: number
15776
+ /**
15777
+ * Number of threads to skip
15778
+ */
15779
+ offset?: number
15780
+ /**
15781
+ * Only threads whose status belongs to this category. Resolved through a join on the status dictionary — the category is never stored on the thread
15782
+ */
15783
+ category?: ("open" | "pending" | "resolved" | "closed")
15784
+ /**
15785
+ * Only threads carrying ALL of these labels. Every other filter here narrows the result and so does this one: each additional label id makes the answer smaller, never bigger
15786
+ */
15787
+ labelIds?: (string | string[])
15788
+ /**
15789
+ * Only threads sitting on this exact status
15790
+ */
15791
+ statusId?: string
15792
+ /**
15793
+ * Only threads created at or before this ISO-8601 timestamp
15794
+ */
15795
+ createdTo?: string
15796
+ /**
15797
+ * Only threads created at or after this ISO-8601 timestamp
15798
+ */
15799
+ createdFrom?: string
15800
+ /**
15801
+ * Only threads assigned to this agent
15802
+ */
15803
+ assignedAgentId?: string
15804
+ /**
15805
+ * Only threads opened by this external author, matched verbatim
15806
+ */
15807
+ authorExternalId?: string
15808
+ }
15809
+
15810
+ export interface SupportThreadListOutput {
15811
+ /**
15812
+ * Page size that was applied
15813
+ */
15814
+ limit: number
15815
+ /**
15816
+ * Offset that was applied
15817
+ */
15818
+ offset: number
15819
+ /**
15820
+ * The requested page of threads, newest first
15821
+ */
15822
+ threads: {
15823
+ /**
15824
+ * Thread id
15825
+ */
15826
+ id: string
15827
+ /**
15828
+ * ticket: the end user wants something fixed. feedback: unsolicited input
15829
+ */
15830
+ type: ("ticket" | "feedback")
15831
+ /**
15832
+ * Thread subject
15833
+ */
15834
+ title: string
15835
+ /**
15836
+ * Every label on the thread, by name
15837
+ */
15838
+ labels: {
15839
+ /**
15840
+ * Label id
15841
+ */
15842
+ id: string
15843
+ /**
15844
+ * Label name, unique within the product
15845
+ */
15846
+ name: string
15847
+ /**
15848
+ * Display colour as a hex string, or null if uncoloured
15849
+ */
15850
+ color: (string | null)
15851
+ /**
15852
+ * ISO-8601 creation timestamp
15853
+ */
15854
+ createdAt: string
15855
+ }[]
15856
+ /**
15857
+ * The status itself, joined in at read time
15858
+ */
15859
+ status: {
15860
+ /**
15861
+ * Status id
15862
+ */
15863
+ id: string
15864
+ /**
15865
+ * Status name, unique within the product
15866
+ */
15867
+ name: string
15868
+ /**
15869
+ * Display colour as a hex string
15870
+ */
15871
+ color: string
15872
+ /**
15873
+ * Sort order within the status dictionary
15874
+ */
15875
+ order: number
15876
+ /**
15877
+ * Archived statuses stay readable but are not offered as targets
15878
+ */
15879
+ archived: boolean
15880
+ /**
15881
+ * Lifecycle bucket the status belongs to
15882
+ */
15883
+ category: ("open" | "pending" | "resolved" | "closed")
15884
+ }
15885
+ /**
15886
+ * Free-form client-owned JSON
15887
+ */
15888
+ metadata: {
15889
+ [k: string]: unknown
15890
+ }
15891
+ /**
15892
+ * Thread priority
15893
+ */
15894
+ priority: ("low" | "normal" | "high" | "urgent")
15895
+ /**
15896
+ * Id of the status the thread sits on
15897
+ */
15898
+ statusId: string
15899
+ /**
15900
+ * ISO-8601 creation timestamp
15901
+ */
15902
+ createdAt: string
15903
+ /**
15904
+ * ISO-8601 last-modification timestamp
15905
+ */
15906
+ updatedAt: string
15907
+ /**
15908
+ * ISO-8601 timestamp of the last reply, or null while there are none
15909
+ */
15910
+ lastReplyAt: (string | null)
15911
+ /**
15912
+ * Display name for the external author, if given
15913
+ */
15914
+ authorDisplay: (string | null)
15915
+ /**
15916
+ * Assigned agent, or null while unassigned
15917
+ */
15918
+ assignedAgentId: (string | null)
15919
+ /**
15920
+ * The external author, byte-identical to what was stored
15921
+ */
15922
+ authorExternalId: string
15923
+ }[]
15924
+ }
15925
+
15926
+ export interface SupportThreadStatusSetInput {
15927
+ /**
15928
+ * Thread id
15929
+ */
15930
+ id: string
15931
+ /**
15932
+ * Destination status of this product. Any status may follow any other — v1 has no transition rules. An archived status is refused
15933
+ */
15934
+ statusId: string
15935
+ }
15936
+
15937
+ export interface SupportThreadStatusSetOutput {
15938
+ /**
15939
+ * Thread id
15940
+ */
15941
+ id: string
15942
+ /**
15943
+ * ticket: the end user wants something fixed. feedback: unsolicited input
15944
+ */
15945
+ type: ("ticket" | "feedback")
15946
+ /**
15947
+ * Thread subject
15948
+ */
15949
+ title: string
15950
+ /**
15951
+ * Every label on the thread, by name
15952
+ */
15953
+ labels: {
15954
+ /**
15955
+ * Label id
15956
+ */
15957
+ id: string
15958
+ /**
15959
+ * Label name, unique within the product
15960
+ */
15961
+ name: string
15962
+ /**
15963
+ * Display colour as a hex string, or null if uncoloured
15964
+ */
15965
+ color: (string | null)
15966
+ /**
15967
+ * ISO-8601 creation timestamp
15968
+ */
15969
+ createdAt: string
15970
+ }[]
15971
+ /**
15972
+ * The status itself, joined in at read time
15973
+ */
15974
+ status: {
15975
+ /**
15976
+ * Status id
15977
+ */
15978
+ id: string
15979
+ /**
15980
+ * Status name, unique within the product
15981
+ */
15982
+ name: string
15983
+ /**
15984
+ * Display colour as a hex string
15985
+ */
15986
+ color: string
15987
+ /**
15988
+ * Sort order within the status dictionary
15989
+ */
15990
+ order: number
15991
+ /**
15992
+ * Archived statuses stay readable but are not offered as targets
15993
+ */
15994
+ archived: boolean
15995
+ /**
15996
+ * Lifecycle bucket the status belongs to
15997
+ */
15998
+ category: ("open" | "pending" | "resolved" | "closed")
15999
+ }
16000
+ /**
16001
+ * Free-form client-owned JSON
16002
+ */
16003
+ metadata: {
16004
+ [k: string]: unknown
16005
+ }
16006
+ /**
16007
+ * Thread priority
16008
+ */
16009
+ priority: ("low" | "normal" | "high" | "urgent")
16010
+ /**
16011
+ * Id of the status the thread sits on
16012
+ */
16013
+ statusId: string
16014
+ /**
16015
+ * ISO-8601 creation timestamp
16016
+ */
16017
+ createdAt: string
16018
+ /**
16019
+ * ISO-8601 last-modification timestamp
16020
+ */
16021
+ updatedAt: string
16022
+ /**
16023
+ * ISO-8601 timestamp of the last reply, or null while there are none
16024
+ */
16025
+ lastReplyAt: (string | null)
16026
+ /**
16027
+ * Display name for the external author, if given
16028
+ */
16029
+ authorDisplay: (string | null)
16030
+ /**
16031
+ * Assigned agent, or null while unassigned
16032
+ */
16033
+ assignedAgentId: (string | null)
16034
+ /**
16035
+ * The external author, byte-identical to what was stored
16036
+ */
16037
+ authorExternalId: string
16038
+ }
16039
+
16040
+ export interface SupportThreadUpdateInput {
16041
+ /**
16042
+ * Thread id
16043
+ */
16044
+ id: string
16045
+ /**
16046
+ * New subject of the thread
16047
+ */
16048
+ title?: string
16049
+ /**
16050
+ * The complete new label set. Pass an empty array to remove every label
16051
+ *
16052
+ * @maxItems 50
16053
+ */
16054
+ labelIds?: string[]
16055
+ /**
16056
+ * Replaces the whole client-owned metadata object
16057
+ */
16058
+ metadata?: {
16059
+ [k: string]: unknown
16060
+ }
16061
+ /**
16062
+ * New priority
16063
+ */
16064
+ priority?: ("low" | "normal" | "high" | "urgent")
16065
+ }
16066
+
16067
+ export interface SupportThreadUpdateOutput {
16068
+ /**
16069
+ * Thread id
16070
+ */
16071
+ id: string
16072
+ /**
16073
+ * ticket: the end user wants something fixed. feedback: unsolicited input
16074
+ */
16075
+ type: ("ticket" | "feedback")
16076
+ /**
16077
+ * Thread subject
16078
+ */
16079
+ title: string
16080
+ /**
16081
+ * Every label on the thread, by name
16082
+ */
16083
+ labels: {
16084
+ /**
16085
+ * Label id
16086
+ */
16087
+ id: string
16088
+ /**
16089
+ * Label name, unique within the product
16090
+ */
16091
+ name: string
16092
+ /**
16093
+ * Display colour as a hex string, or null if uncoloured
16094
+ */
16095
+ color: (string | null)
16096
+ /**
16097
+ * ISO-8601 creation timestamp
16098
+ */
16099
+ createdAt: string
16100
+ }[]
16101
+ /**
16102
+ * The status itself, joined in at read time
16103
+ */
16104
+ status: {
16105
+ /**
16106
+ * Status id
16107
+ */
16108
+ id: string
16109
+ /**
16110
+ * Status name, unique within the product
16111
+ */
16112
+ name: string
16113
+ /**
16114
+ * Display colour as a hex string
16115
+ */
16116
+ color: string
16117
+ /**
16118
+ * Sort order within the status dictionary
16119
+ */
16120
+ order: number
16121
+ /**
16122
+ * Archived statuses stay readable but are not offered as targets
16123
+ */
16124
+ archived: boolean
16125
+ /**
16126
+ * Lifecycle bucket the status belongs to
16127
+ */
16128
+ category: ("open" | "pending" | "resolved" | "closed")
16129
+ }
16130
+ /**
16131
+ * Free-form client-owned JSON
16132
+ */
16133
+ metadata: {
16134
+ [k: string]: unknown
16135
+ }
16136
+ /**
16137
+ * Thread priority
16138
+ */
16139
+ priority: ("low" | "normal" | "high" | "urgent")
16140
+ /**
16141
+ * Id of the status the thread sits on
16142
+ */
16143
+ statusId: string
16144
+ /**
16145
+ * ISO-8601 creation timestamp
16146
+ */
16147
+ createdAt: string
16148
+ /**
16149
+ * ISO-8601 last-modification timestamp
16150
+ */
16151
+ updatedAt: string
16152
+ /**
16153
+ * ISO-8601 timestamp of the last reply, or null while there are none
16154
+ */
16155
+ lastReplyAt: (string | null)
16156
+ /**
16157
+ * Display name for the external author, if given
16158
+ */
16159
+ authorDisplay: (string | null)
16160
+ /**
16161
+ * Assigned agent, or null while unassigned
16162
+ */
16163
+ assignedAgentId: (string | null)
16164
+ /**
16165
+ * The external author, byte-identical to what was stored
16166
+ */
16167
+ authorExternalId: string
16168
+ }
16169
+
14558
16170
  export interface TrackingDomainsCreateInput {
14559
16171
  host?: string
14560
16172
  records?: {