@proveanything/smartlinks 1.9.22 → 1.10.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.
package/dist/openapi.yaml CHANGED
@@ -17,7 +17,6 @@ tags:
17
17
  - name: publicClient
18
18
  - name: voice
19
19
  - name: userAppData
20
- - name: appConfiguration
21
20
  - name: cases
22
21
  - name: threads
23
22
  - name: records
@@ -29,7 +28,6 @@ tags:
29
28
  - name: authKit
30
29
  - name: batch
31
30
  - name: broadcasts
32
- - name: claimSet
33
31
  - name: collection
34
32
  - name: comms
35
33
  - name: config
@@ -63,7 +61,7 @@ paths:
63
61
  post:
64
62
  tags:
65
63
  - auth
66
- summary: Logout (clears bearerToken for future API calls).
64
+ summary: Requests an admin JWT for the current user and a specific collection Returns JWT if valid.
67
65
  operationId: auth_requestAdminJWT
68
66
  security:
69
67
  - bearerAuth: []
@@ -311,7 +309,7 @@ paths:
311
309
  post:
312
310
  tags:
313
311
  - batch
314
- summary: List all batches for a collection and product (admin only).
312
+ summary: Create a new batch for a collection and product (admin only).
315
313
  operationId: batch_create
316
314
  security:
317
315
  - bearerAuth: []
@@ -372,7 +370,7 @@ paths:
372
370
  post:
373
371
  tags:
374
372
  - variant
375
- summary: List all variants for a collection and product (admin only).
373
+ summary: Create a new variant for a collection and product (admin only).
376
374
  operationId: variant_create
377
375
  security:
378
376
  - bearerAuth: []
@@ -405,7 +403,7 @@ paths:
405
403
  put:
406
404
  tags:
407
405
  - collection
408
- summary: Create a new collection (admin only).
406
+ summary: Update a collection (admin only).
409
407
  operationId: collection_update
410
408
  security:
411
409
  - bearerAuth: []
@@ -437,7 +435,7 @@ paths:
437
435
  delete:
438
436
  tags:
439
437
  - collection
440
- summary: Update a collection (admin only).
438
+ summary: Delete a collection (admin only).
441
439
  operationId: collection_remove
442
440
  security:
443
441
  - bearerAuth: []
@@ -465,7 +463,7 @@ paths:
465
463
  post:
466
464
  tags:
467
465
  - rag
468
- summary: "Get specific model information / export async function get(collectionId: string, modelId: string): Promise<AIModel> { co"
466
+ summary: Configure AI assistant behavior
469
467
  operationId: rag_configureAssistant
470
468
  security:
471
469
  - bearerAuth: []
@@ -498,7 +496,7 @@ paths:
498
496
  post:
499
497
  tags:
500
498
  - voice
501
- summary: "Search stock photos or similar via AI (admin) / export async function searchPhotos( collectionId: string, params: AISearchPhotosRequest ): Promise<AISearchPhotosPhoto[]> { const path = `/admin/collection/${encodeURIComponent(collectionId)}/ai/searchPhotos` return post<AISearchPhotosPhoto[]>(path, params) } /** Upload a file for AI usage (admin)."
499
+ summary: Create or warm a cache for AI (admin)
502
500
  operationId: voice_createCache
503
501
  security:
504
502
  - bearerAuth: []
@@ -524,7 +522,7 @@ paths:
524
522
  post:
525
523
  tags:
526
524
  - voice
527
- summary: "Generate text/content via AI (admin) / export async function generateContent( collectionId: string, params: AIGenerateCo"
525
+ summary: Generate an image via AI (admin)
528
526
  operationId: voice_generateImage
529
527
  security:
530
528
  - bearerAuth: []
@@ -556,7 +554,7 @@ paths:
556
554
  post:
557
555
  tags:
558
556
  - podcast
559
- summary: "Reset rate limit for a user / export async function reset(collectionId: string, userId: string): Promise<{ success: bool"
557
+ summary: Generate a NotebookLM-style conversational podcast from product documents
560
558
  operationId: podcast_generate
561
559
  security:
562
560
  - bearerAuth: []
@@ -589,7 +587,7 @@ paths:
589
587
  post:
590
588
  tags:
591
589
  - rag
592
- summary: "List available AI models / export async function list(collectionId: string, params?: AIModelListParams): Promise<AIModel"
590
+ summary: Index a document for RAG
593
591
  operationId: rag_indexDocument
594
592
  security:
595
593
  - bearerAuth: []
@@ -618,7 +616,7 @@ paths:
618
616
  application/json:
619
617
  schema:
620
618
  $ref: "#/components/schemas/IndexDocumentRequest"
621
- /admin/collection/{collectionId}/ai/models)}:
619
+ /admin/collection/{collectionId}/ai/models:
622
620
  get:
623
621
  tags:
624
622
  - models
@@ -667,7 +665,7 @@ paths:
667
665
  get:
668
666
  tags:
669
667
  - models
670
- summary: "List available AI models / export async function list(collectionId: string, params?: AIModelListParams): Promise<AIModel"
668
+ summary: Get specific model information
671
669
  operationId: models_get
672
670
  security:
673
671
  - bearerAuth: []
@@ -699,7 +697,7 @@ paths:
699
697
  get:
700
698
  tags:
701
699
  - podcast
702
- summary: Generate a NotebookLM-style conversational podcast from product documents / export async function generate( collectionId
700
+ summary: Get podcast generation status
703
701
  operationId: podcast_getStatus
704
702
  security:
705
703
  - bearerAuth: []
@@ -731,7 +729,7 @@ paths:
731
729
  post:
732
730
  tags:
733
731
  - voice
734
- summary: "Generate text/content via AI (admin) / export async function generateContent( collectionId: string, params: AIGenerateCo"
732
+ summary: Search stock photos or similar via AI (admin)
735
733
  operationId: voice_searchPhotos
736
734
  security:
737
735
  - bearerAuth: []
@@ -766,7 +764,7 @@ paths:
766
764
  get:
767
765
  tags:
768
766
  - sessions
769
- summary: "Configure AI assistant behavior / export async function configureAssistant( collectionId: string, request: ConfigureAssi"
767
+ summary: Get session statistics
770
768
  operationId: sessions_stats
771
769
  security:
772
770
  - bearerAuth: []
@@ -793,7 +791,7 @@ paths:
793
791
  post:
794
792
  tags:
795
793
  - tts
796
- summary: "Get podcast generation status / export async function getStatus(collectionId: string, podcastId: string): Promise<Podcas"
794
+ summary: Generate text-to-speech audio
797
795
  operationId: tts_generate
798
796
  security:
799
797
  - bearerAuth: []
@@ -826,7 +824,7 @@ paths:
826
824
  post:
827
825
  tags:
828
826
  - voice
829
- summary: "Generate an image via AI (admin) / export async function generateImage(collectionId: string, params: AIGenerateImageRequest): Promise<any> { const path = `/admin/collection/${encodeURIComponent(collectionId)}/ai/generateImage` return post<any>(path, params) } /** Search stock photos or similar via AI (admin) / export async function searchPhotos( collectionId: string, params: AISearchPhotosRequest ): Promise<AISearchPhotosPhoto[]> { const path = `/admin/collection/${encodeURIComponent(collectionId)}/ai/searchPhotos` return post<AISearchPhotosPhoto[]>(path, params) } /** Upload a file for AI usage (admin)."
827
+ summary: Upload a file for AI usage (admin).
830
828
  operationId: voice_uploadFile
831
829
  security:
832
830
  - bearerAuth: []
@@ -918,7 +916,7 @@ paths:
918
916
  post:
919
917
  tags:
920
918
  - collection
921
- summary: Look up a serial number by code for a collection (admin only).
919
+ summary: Assign a value to a serial number for a collection (admin only).
922
920
  operationId: collection_assignSN
923
921
  security:
924
922
  - bearerAuth: []
@@ -982,7 +980,7 @@ paths:
982
980
  get:
983
981
  tags:
984
982
  - async
985
- summary: "Enqueue a background job for a collection POST /admin/collection/:collectionId/async/jobs (202) / export async function"
983
+ summary: "Get job status by ID (may return 404 if completed/removed) GET /admin/collection/:collectionId/async/jobs/:jobId"
986
984
  operationId: async_getAsyncJobStatus
987
985
  security:
988
986
  - bearerAuth: []
@@ -1977,12 +1975,12 @@ paths:
1977
1975
  application/json:
1978
1976
  schema:
1979
1977
  $ref: "#/components/schemas/BroadcastSendTestRequest"
1980
- /admin/collection/{collectionId}/claimSetd)}/assignClaims:
1978
+ /admin/collection/{collectionId}/comm.send:
1981
1979
  post:
1982
1980
  tags:
1983
- - claimSet
1984
- summary: Perform a tag query for a collection.
1985
- operationId: claimSet_assignClaims
1981
+ - comms
1982
+ summary: Send a single transactional message to one contact using a template.
1983
+ operationId: comms_sendTransactional
1986
1984
  security:
1987
1985
  - bearerAuth: []
1988
1986
  parameters:
@@ -1996,7 +1994,8 @@ paths:
1996
1994
  description: Success
1997
1995
  content:
1998
1996
  application/json:
1999
- schema: {}
1997
+ schema:
1998
+ $ref: "#/components/schemas/TransactionalSendResult"
2000
1999
  400:
2001
2000
  description: Bad request
2002
2001
  401:
@@ -2008,13 +2007,13 @@ paths:
2008
2007
  content:
2009
2008
  application/json:
2010
2009
  schema:
2011
- $ref: "#/components/schemas/AssignClaimsRequest"
2012
- /admin/collection/{collectionId}/claimSetd)}/makeClaim:
2013
- post:
2010
+ $ref: "#/components/schemas/TransactionalSendRequest"
2011
+ /admin/collection/{collectionId}/comm.settings:
2012
+ get:
2014
2013
  tags:
2015
- - claimSet
2016
- summary: Get tag summary for a collection.
2017
- operationId: claimSet_makeClaim
2014
+ - comms
2015
+ summary: "Admin: Get current comms settings for a collection."
2016
+ operationId: comms_getSettings
2018
2017
  security:
2019
2018
  - bearerAuth: []
2020
2019
  parameters:
@@ -2023,24 +2022,30 @@ paths:
2023
2022
  required: true
2024
2023
  schema:
2025
2024
  type: string
2025
+ - name: includeSecret
2026
+ in: query
2027
+ required: false
2028
+ schema:
2029
+ type: string
2026
2030
  responses:
2027
2031
  200:
2028
2032
  description: Success
2029
2033
  content:
2030
2034
  application/json:
2031
- schema: {}
2035
+ schema:
2036
+ type: object
2037
+ additionalProperties: true
2032
2038
  400:
2033
2039
  description: Bad request
2034
2040
  401:
2035
2041
  description: Unauthorized
2036
2042
  404:
2037
2043
  description: Not found
2038
- /admin/collection/{collectionId}/claimSetd)}/tagQuery:
2039
- post:
2044
+ patch:
2040
2045
  tags:
2041
- - claimSet
2042
- summary: Get a report for a claim set (collection-scoped).
2043
- operationId: claimSet_tagQuery
2046
+ - comms
2047
+ summary: "Admin: Patch comms settings for a collection."
2048
+ operationId: comms_patchSettings
2044
2049
  security:
2045
2050
  - bearerAuth: []
2046
2051
  parameters:
@@ -2054,19 +2059,28 @@ paths:
2054
2059
  description: Success
2055
2060
  content:
2056
2061
  application/json:
2057
- schema: {}
2062
+ schema:
2063
+ type: object
2064
+ additionalProperties: true
2058
2065
  400:
2059
2066
  description: Bad request
2060
2067
  401:
2061
2068
  description: Unauthorized
2062
2069
  404:
2063
2070
  description: Not found
2064
- /admin/collection/{collectionId}/claimSetd)}/tagSummary:
2065
- get:
2071
+ requestBody:
2072
+ required: true
2073
+ content:
2074
+ application/json:
2075
+ schema:
2076
+ type: object
2077
+ additionalProperties: true
2078
+ /admin/collection/{collectionId}/comm/log:
2079
+ post:
2066
2080
  tags:
2067
- - claimSet
2068
- summary: Get a report for a claim set (collection-scoped).
2069
- operationId: claimSet_getTagSummary
2081
+ - comms
2082
+ summary: "Logging: Append a single communication event."
2083
+ operationId: comms_logCommunicationEvent
2070
2084
  security:
2071
2085
  - bearerAuth: []
2072
2086
  parameters:
@@ -2080,19 +2094,26 @@ paths:
2080
2094
  description: Success
2081
2095
  content:
2082
2096
  application/json:
2083
- schema: {}
2097
+ schema:
2098
+ $ref: "#/components/schemas/AppendResult"
2084
2099
  400:
2085
2100
  description: Bad request
2086
2101
  401:
2087
2102
  description: Unauthorized
2088
2103
  404:
2089
2104
  description: Not found
2090
- /admin/collection/{collectionId}/claimSetd)}/updateClaimData:
2105
+ requestBody:
2106
+ required: true
2107
+ content:
2108
+ application/json:
2109
+ schema:
2110
+ $ref: "#/components/schemas/LogCommunicationEventBody"
2111
+ /admin/collection/{collectionId}/comm/log/bulk:
2091
2112
  post:
2092
2113
  tags:
2093
- - claimSet
2094
- summary: Make a claim against a claim set (collection-scoped).
2095
- operationId: claimSet_updateClaimData
2114
+ - comms
2115
+ summary: "Logging: Append many communication events for a list of IDs."
2116
+ operationId: comms_logBulkCommunicationEvents
2096
2117
  security:
2097
2118
  - bearerAuth: []
2098
2119
  parameters:
@@ -2106,7 +2127,8 @@ paths:
2106
2127
  description: Success
2107
2128
  content:
2108
2129
  application/json:
2109
- schema: {}
2130
+ schema:
2131
+ $ref: "#/components/schemas/AppendBulkResult"
2110
2132
  400:
2111
2133
  description: Bad request
2112
2134
  401:
@@ -2118,13 +2140,16 @@ paths:
2118
2140
  content:
2119
2141
  application/json:
2120
2142
  schema:
2121
- $ref: "#/components/schemas/UpdateClaimDataRequest"
2122
- /admin/collection/{collectionId}/claimSetd)}/{claimSetId}:
2123
- get:
2143
+ type: string
2144
+ enum:
2145
+ - userId
2146
+ - contactId
2147
+ /admin/collection/{collectionId}/comm/query/by-user:
2148
+ post:
2124
2149
  tags:
2125
- - claimSet
2126
- summary: Returns the base path for claim set endpoints.
2127
- operationId: claimSet_get
2150
+ - comms
2151
+ summary: "Analytics: Query communication events by user or contact."
2152
+ operationId: comms_queryByUser
2128
2153
  security:
2129
2154
  - bearerAuth: []
2130
2155
  parameters:
@@ -2133,28 +2158,33 @@ paths:
2133
2158
  required: true
2134
2159
  schema:
2135
2160
  type: string
2136
- - name: claimSetId
2137
- in: path
2138
- required: true
2139
- schema:
2140
- type: string
2141
2161
  responses:
2142
2162
  200:
2143
2163
  description: Success
2144
2164
  content:
2145
2165
  application/json:
2146
- schema: {}
2166
+ schema:
2167
+ type: array
2168
+ items:
2169
+ $ref: "#/components/schemas/CommunicationEvent"
2147
2170
  400:
2148
2171
  description: Bad request
2149
2172
  401:
2150
2173
  description: Unauthorized
2151
2174
  404:
2152
2175
  description: Not found
2153
- put:
2176
+ requestBody:
2177
+ required: true
2178
+ content:
2179
+ application/json:
2180
+ schema:
2181
+ $ref: "#/components/schemas/CommsQueryByUser"
2182
+ /admin/collection/{collectionId}/comm/query/recipient-ids:
2183
+ post:
2154
2184
  tags:
2155
- - claimSet
2156
- summary: Create a new claim set.
2157
- operationId: claimSet_update
2185
+ - comms
2186
+ summary: "Analytics: Recipient IDs for a communication source."
2187
+ operationId: comms_queryRecipientIds
2158
2188
  security:
2159
2189
  - bearerAuth: []
2160
2190
  parameters:
@@ -2163,28 +2193,33 @@ paths:
2163
2193
  required: true
2164
2194
  schema:
2165
2195
  type: string
2166
- - name: claimSetId
2167
- in: path
2168
- required: true
2169
- schema:
2170
- type: string
2171
2196
  responses:
2172
2197
  200:
2173
2198
  description: Success
2174
2199
  content:
2175
2200
  application/json:
2176
- schema: {}
2201
+ schema:
2202
+ type: array
2203
+ items:
2204
+ $ref: "#/components/schemas/RecipientId"
2177
2205
  400:
2178
2206
  description: Bad request
2179
2207
  401:
2180
2208
  description: Unauthorized
2181
2209
  404:
2182
2210
  description: Not found
2183
- delete:
2211
+ requestBody:
2212
+ required: true
2213
+ content:
2214
+ application/json:
2215
+ schema:
2216
+ $ref: "#/components/schemas/CommsRecipientIdsQuery"
2217
+ /admin/collection/{collectionId}/comm/query/recipients/with-action:
2218
+ post:
2184
2219
  tags:
2185
- - claimSet
2186
- summary: Update a claim set.
2187
- operationId: claimSet_remove
2220
+ - comms
2221
+ summary: "Analytics: Recipients who performed an action, optionally with outcome."
2222
+ operationId: comms_queryRecipientsWithAction
2188
2223
  security:
2189
2224
  - bearerAuth: []
2190
2225
  parameters:
@@ -2193,29 +2228,34 @@ paths:
2193
2228
  required: true
2194
2229
  schema:
2195
2230
  type: string
2196
- - name: claimSetId
2197
- in: path
2198
- required: true
2199
- schema:
2200
- type: string
2201
2231
  responses:
2202
2232
  200:
2203
2233
  description: Success
2204
2234
  content:
2205
2235
  application/json:
2206
- schema: {}
2236
+ schema:
2237
+ type: array
2238
+ items:
2239
+ type: object
2240
+ additionalProperties: true
2207
2241
  400:
2208
2242
  description: Bad request
2209
2243
  401:
2210
2244
  description: Unauthorized
2211
2245
  404:
2212
2246
  description: Not found
2213
- /admin/collection/{collectionId}/claimSetd)}/{claimSetId}/assignedTags:
2214
- get:
2247
+ requestBody:
2248
+ required: true
2249
+ content:
2250
+ application/json:
2251
+ schema:
2252
+ $ref: "#/components/schemas/CommsRecipientsWithActionQuery"
2253
+ /admin/collection/{collectionId}/comm/query/recipients/without-action:
2254
+ post:
2215
2255
  tags:
2216
- - claimSet
2217
- summary: Get all tags for a claim set (including data).
2218
- operationId: claimSet_getAssignedTags
2256
+ - comms
2257
+ summary: "Analytics: Recipients who did not perform an action."
2258
+ operationId: comms_queryRecipientsWithoutAction
2219
2259
  security:
2220
2260
  - bearerAuth: []
2221
2261
  parameters:
@@ -2224,29 +2264,33 @@ paths:
2224
2264
  required: true
2225
2265
  schema:
2226
2266
  type: string
2227
- - name: claimSetId
2228
- in: path
2229
- required: true
2230
- schema:
2231
- type: string
2232
2267
  responses:
2233
2268
  200:
2234
2269
  description: Success
2235
2270
  content:
2236
2271
  application/json:
2237
- schema: {}
2272
+ schema:
2273
+ type: array
2274
+ items:
2275
+ $ref: "#/components/schemas/RecipientId"
2238
2276
  400:
2239
2277
  description: Bad request
2240
2278
  401:
2241
2279
  description: Unauthorized
2242
2280
  404:
2243
2281
  description: Not found
2244
- /admin/collection/{collectionId}/claimSetd)}/{claimSetId}/createTag:
2245
- post:
2282
+ requestBody:
2283
+ required: true
2284
+ content:
2285
+ application/json:
2286
+ schema:
2287
+ $ref: "#/components/schemas/CommsRecipientsWithoutActionQuery"
2288
+ /admin/collection/{collectionId}/contacts:
2289
+ get:
2246
2290
  tags:
2247
- - claimSet
2248
- summary: Get assigned tags for a claim set — tags soft-assigned to a collection or product.
2249
- operationId: claimSet_createTag
2291
+ - contact
2292
+ summary: contact.list
2293
+ operationId: contact_list
2250
2294
  security:
2251
2295
  - bearerAuth: []
2252
2296
  parameters:
@@ -2255,9 +2299,19 @@ paths:
2255
2299
  required: true
2256
2300
  schema:
2257
2301
  type: string
2258
- - name: claimSetId
2259
- in: path
2260
- required: true
2302
+ - name: limit
2303
+ in: query
2304
+ required: false
2305
+ schema:
2306
+ type: string
2307
+ - name: offset
2308
+ in: query
2309
+ required: false
2310
+ schema:
2311
+ type: string
2312
+ - name: includeDeleted
2313
+ in: query
2314
+ required: false
2261
2315
  schema:
2262
2316
  type: string
2263
2317
  responses:
@@ -2266,25 +2320,18 @@ paths:
2266
2320
  content:
2267
2321
  application/json:
2268
2322
  schema:
2269
- $ref: "#/components/schemas/CreateClaimSetTagResponse"
2323
+ $ref: "#/components/schemas/ContactListResponse"
2270
2324
  400:
2271
2325
  description: Bad request
2272
2326
  401:
2273
2327
  description: Unauthorized
2274
2328
  404:
2275
2329
  description: Not found
2276
- requestBody:
2277
- required: true
2278
- content:
2279
- application/json:
2280
- schema:
2281
- $ref: "#/components/schemas/CreateClaimSetTagRequest"
2282
- /admin/collection/{collectionId}/claimSetd)}/{claimSetId}/importTags:
2283
2330
  post:
2284
2331
  tags:
2285
- - claimSet
2286
- summary: Create a single tag inside a claim set.
2287
- operationId: claimSet_importTags
2332
+ - contact
2333
+ summary: contact.create
2334
+ operationId: contact_create
2288
2335
  security:
2289
2336
  - bearerAuth: []
2290
2337
  parameters:
@@ -2293,18 +2340,13 @@ paths:
2293
2340
  required: true
2294
2341
  schema:
2295
2342
  type: string
2296
- - name: claimSetId
2297
- in: path
2298
- required: true
2299
- schema:
2300
- type: string
2301
2343
  responses:
2302
2344
  200:
2303
2345
  description: Success
2304
2346
  content:
2305
2347
  application/json:
2306
2348
  schema:
2307
- $ref: "#/components/schemas/ImportClaimSetTagsResponse"
2349
+ $ref: "#/components/schemas/ContactResponse"
2308
2350
  400:
2309
2351
  description: Bad request
2310
2352
  401:
@@ -2316,13 +2358,13 @@ paths:
2316
2358
  content:
2317
2359
  application/json:
2318
2360
  schema:
2319
- $ref: "#/components/schemas/ImportClaimSetTagsRequest"
2320
- /admin/collection/{collectionId}/claimSetd)}/{claimSetId}/report:
2361
+ $ref: "#/components/schemas/ContactCreateRequest"
2362
+ /admin/collection/{collectionId}/contacts/lookup:
2321
2363
  get:
2322
2364
  tags:
2323
- - claimSet
2324
- summary: Bulk import tags into a claim set.
2325
- operationId: claimSet_getReport
2365
+ - contact
2366
+ summary: contact.lookup
2367
+ operationId: contact_lookup
2326
2368
  security:
2327
2369
  - bearerAuth: []
2328
2370
  parameters:
@@ -2331,9 +2373,14 @@ paths:
2331
2373
  required: true
2332
2374
  schema:
2333
2375
  type: string
2334
- - name: claimSetId
2335
- in: path
2336
- required: true
2376
+ - name: email
2377
+ in: query
2378
+ required: false
2379
+ schema:
2380
+ type: string
2381
+ - name: phone
2382
+ in: query
2383
+ required: false
2337
2384
  schema:
2338
2385
  type: string
2339
2386
  responses:
@@ -2341,19 +2388,20 @@ paths:
2341
2388
  description: Success
2342
2389
  content:
2343
2390
  application/json:
2344
- schema: {}
2391
+ schema:
2392
+ $ref: "#/components/schemas/ContactResponse"
2345
2393
  400:
2346
2394
  description: Bad request
2347
2395
  401:
2348
2396
  description: Unauthorized
2349
2397
  404:
2350
2398
  description: Not found
2351
- /admin/collection/{collectionId}/claimSetd)}/{claimSetId}/tags:
2352
- get:
2399
+ /admin/collection/{collectionId}/contacts/upsert:
2400
+ post:
2353
2401
  tags:
2354
- - claimSet
2355
- summary: Update a claim set.
2356
- operationId: claimSet_getAllTags
2402
+ - contact
2403
+ summary: contact.upsert
2404
+ operationId: contact_upsert
2357
2405
  security:
2358
2406
  - bearerAuth: []
2359
2407
  parameters:
@@ -2362,29 +2410,31 @@ paths:
2362
2410
  required: true
2363
2411
  schema:
2364
2412
  type: string
2365
- - name: claimSetId
2366
- in: path
2367
- required: true
2368
- schema:
2369
- type: string
2370
2413
  responses:
2371
2414
  200:
2372
2415
  description: Success
2373
2416
  content:
2374
2417
  application/json:
2375
- schema: {}
2418
+ schema:
2419
+ $ref: "#/components/schemas/ContactResponse"
2376
2420
  400:
2377
2421
  description: Bad request
2378
2422
  401:
2379
2423
  description: Unauthorized
2380
2424
  404:
2381
2425
  description: Not found
2382
- /admin/collection/{collectionId}/comm.send:
2383
- post:
2426
+ requestBody:
2427
+ required: true
2428
+ content:
2429
+ application/json:
2430
+ schema:
2431
+ $ref: "#/components/schemas/ContactCreateRequest"
2432
+ /admin/collection/{collectionId}/contacts/{contactId}:
2433
+ get:
2384
2434
  tags:
2385
- - comms
2386
- summary: Send a single transactional message to one contact using a template.
2387
- operationId: comms_sendTransactional
2435
+ - contact
2436
+ summary: contact.get
2437
+ operationId: contact_get
2388
2438
  security:
2389
2439
  - bearerAuth: []
2390
2440
  parameters:
@@ -2393,477 +2443,23 @@ paths:
2393
2443
  required: true
2394
2444
  schema:
2395
2445
  type: string
2446
+ - name: contactId
2447
+ in: path
2448
+ required: true
2449
+ schema:
2450
+ type: string
2451
+ - name: includeDeleted
2452
+ in: query
2453
+ required: false
2454
+ schema:
2455
+ type: string
2396
2456
  responses:
2397
2457
  200:
2398
2458
  description: Success
2399
2459
  content:
2400
2460
  application/json:
2401
2461
  schema:
2402
- $ref: "#/components/schemas/TransactionalSendResult"
2403
- 400:
2404
- description: Bad request
2405
- 401:
2406
- description: Unauthorized
2407
- 404:
2408
- description: Not found
2409
- requestBody:
2410
- required: true
2411
- content:
2412
- application/json:
2413
- schema:
2414
- $ref: "#/components/schemas/TransactionalSendRequest"
2415
- /admin/collection/{collectionId}/comm.settings:
2416
- get:
2417
- tags:
2418
- - comms
2419
- summary: "Public: Register a Web Push subscription under unified comms."
2420
- operationId: comms_getSettings
2421
- security:
2422
- - bearerAuth: []
2423
- parameters:
2424
- - name: collectionId
2425
- in: path
2426
- required: true
2427
- schema:
2428
- type: string
2429
- - name: includeSecret
2430
- in: query
2431
- required: false
2432
- schema:
2433
- type: string
2434
- responses:
2435
- 200:
2436
- description: Success
2437
- content:
2438
- application/json:
2439
- schema:
2440
- type: object
2441
- additionalProperties: true
2442
- 400:
2443
- description: Bad request
2444
- 401:
2445
- description: Unauthorized
2446
- 404:
2447
- description: Not found
2448
- patch:
2449
- tags:
2450
- - comms
2451
- summary: "Admin: Get current comms settings for a collection."
2452
- operationId: comms_patchSettings
2453
- security:
2454
- - bearerAuth: []
2455
- parameters:
2456
- - name: collectionId
2457
- in: path
2458
- required: true
2459
- schema:
2460
- type: string
2461
- responses:
2462
- 200:
2463
- description: Success
2464
- content:
2465
- application/json:
2466
- schema:
2467
- type: object
2468
- additionalProperties: true
2469
- 400:
2470
- description: Bad request
2471
- 401:
2472
- description: Unauthorized
2473
- 404:
2474
- description: Not found
2475
- requestBody:
2476
- required: true
2477
- content:
2478
- application/json:
2479
- schema:
2480
- type: object
2481
- additionalProperties: true
2482
- /admin/collection/{collectionId}/comm/log:
2483
- post:
2484
- tags:
2485
- - comms
2486
- summary: "Logging: Append a single communication event."
2487
- operationId: comms_logCommunicationEvent
2488
- security:
2489
- - bearerAuth: []
2490
- parameters:
2491
- - name: collectionId
2492
- in: path
2493
- required: true
2494
- schema:
2495
- type: string
2496
- responses:
2497
- 200:
2498
- description: Success
2499
- content:
2500
- application/json:
2501
- schema:
2502
- $ref: "#/components/schemas/AppendResult"
2503
- 400:
2504
- description: Bad request
2505
- 401:
2506
- description: Unauthorized
2507
- 404:
2508
- description: Not found
2509
- requestBody:
2510
- required: true
2511
- content:
2512
- application/json:
2513
- schema:
2514
- $ref: "#/components/schemas/LogCommunicationEventBody"
2515
- /admin/collection/{collectionId}/comm/log/bulk:
2516
- post:
2517
- tags:
2518
- - comms
2519
- summary: "Logging: Append a single communication event."
2520
- operationId: comms_logBulkCommunicationEvents
2521
- security:
2522
- - bearerAuth: []
2523
- parameters:
2524
- - name: collectionId
2525
- in: path
2526
- required: true
2527
- schema:
2528
- type: string
2529
- responses:
2530
- 200:
2531
- description: Success
2532
- content:
2533
- application/json:
2534
- schema:
2535
- $ref: "#/components/schemas/AppendBulkResult"
2536
- 400:
2537
- description: Bad request
2538
- 401:
2539
- description: Unauthorized
2540
- 404:
2541
- description: Not found
2542
- requestBody:
2543
- required: true
2544
- content:
2545
- application/json:
2546
- schema:
2547
- type: string
2548
- enum:
2549
- - userId
2550
- - contactId
2551
- /admin/collection/{collectionId}/comm/query/by-user:
2552
- post:
2553
- tags:
2554
- - comms
2555
- summary: "Public: Resolve contacts for a subject with identity hints."
2556
- operationId: comms_queryByUser
2557
- security:
2558
- - bearerAuth: []
2559
- parameters:
2560
- - name: collectionId
2561
- in: path
2562
- required: true
2563
- schema:
2564
- type: string
2565
- responses:
2566
- 200:
2567
- description: Success
2568
- content:
2569
- application/json:
2570
- schema:
2571
- type: array
2572
- items:
2573
- $ref: "#/components/schemas/CommunicationEvent"
2574
- 400:
2575
- description: Bad request
2576
- 401:
2577
- description: Unauthorized
2578
- 404:
2579
- description: Not found
2580
- requestBody:
2581
- required: true
2582
- content:
2583
- application/json:
2584
- schema:
2585
- $ref: "#/components/schemas/CommsQueryByUser"
2586
- /admin/collection/{collectionId}/comm/query/recipient-ids:
2587
- post:
2588
- tags:
2589
- - comms
2590
- summary: "Analytics: Query communication events by user or contact."
2591
- operationId: comms_queryRecipientIds
2592
- security:
2593
- - bearerAuth: []
2594
- parameters:
2595
- - name: collectionId
2596
- in: path
2597
- required: true
2598
- schema:
2599
- type: string
2600
- responses:
2601
- 200:
2602
- description: Success
2603
- content:
2604
- application/json:
2605
- schema:
2606
- type: array
2607
- items:
2608
- $ref: "#/components/schemas/RecipientId"
2609
- 400:
2610
- description: Bad request
2611
- 401:
2612
- description: Unauthorized
2613
- 404:
2614
- description: Not found
2615
- requestBody:
2616
- required: true
2617
- content:
2618
- application/json:
2619
- schema:
2620
- $ref: "#/components/schemas/CommsRecipientIdsQuery"
2621
- /admin/collection/{collectionId}/comm/query/recipients/with-action:
2622
- post:
2623
- tags:
2624
- - comms
2625
- summary: "Analytics: Recipients who did not perform an action."
2626
- operationId: comms_queryRecipientsWithAction
2627
- security:
2628
- - bearerAuth: []
2629
- parameters:
2630
- - name: collectionId
2631
- in: path
2632
- required: true
2633
- schema:
2634
- type: string
2635
- responses:
2636
- 200:
2637
- description: Success
2638
- content:
2639
- application/json:
2640
- schema:
2641
- type: array
2642
- items:
2643
- type: object
2644
- additionalProperties: true
2645
- 400:
2646
- description: Bad request
2647
- 401:
2648
- description: Unauthorized
2649
- 404:
2650
- description: Not found
2651
- requestBody:
2652
- required: true
2653
- content:
2654
- application/json:
2655
- schema:
2656
- $ref: "#/components/schemas/CommsRecipientsWithActionQuery"
2657
- /admin/collection/{collectionId}/comm/query/recipients/without-action:
2658
- post:
2659
- tags:
2660
- - comms
2661
- summary: "Analytics: Recipient IDs for a communication source."
2662
- operationId: comms_queryRecipientsWithoutAction
2663
- security:
2664
- - bearerAuth: []
2665
- parameters:
2666
- - name: collectionId
2667
- in: path
2668
- required: true
2669
- schema:
2670
- type: string
2671
- responses:
2672
- 200:
2673
- description: Success
2674
- content:
2675
- application/json:
2676
- schema:
2677
- type: array
2678
- items:
2679
- $ref: "#/components/schemas/RecipientId"
2680
- 400:
2681
- description: Bad request
2682
- 401:
2683
- description: Unauthorized
2684
- 404:
2685
- description: Not found
2686
- requestBody:
2687
- required: true
2688
- content:
2689
- application/json:
2690
- schema:
2691
- $ref: "#/components/schemas/CommsRecipientsWithoutActionQuery"
2692
- /admin/collection/{collectionId}/contacts:
2693
- get:
2694
- tags:
2695
- - contact
2696
- summary: contact.list
2697
- operationId: contact_list
2698
- security:
2699
- - bearerAuth: []
2700
- parameters:
2701
- - name: collectionId
2702
- in: path
2703
- required: true
2704
- schema:
2705
- type: string
2706
- - name: limit
2707
- in: query
2708
- required: false
2709
- schema:
2710
- type: string
2711
- - name: offset
2712
- in: query
2713
- required: false
2714
- schema:
2715
- type: string
2716
- - name: includeDeleted
2717
- in: query
2718
- required: false
2719
- schema:
2720
- type: string
2721
- responses:
2722
- 200:
2723
- description: Success
2724
- content:
2725
- application/json:
2726
- schema:
2727
- $ref: "#/components/schemas/ContactListResponse"
2728
- 400:
2729
- description: Bad request
2730
- 401:
2731
- description: Unauthorized
2732
- 404:
2733
- description: Not found
2734
- post:
2735
- tags:
2736
- - contact
2737
- summary: contact.create
2738
- operationId: contact_create
2739
- security:
2740
- - bearerAuth: []
2741
- parameters:
2742
- - name: collectionId
2743
- in: path
2744
- required: true
2745
- schema:
2746
- type: string
2747
- responses:
2748
- 200:
2749
- description: Success
2750
- content:
2751
- application/json:
2752
- schema:
2753
- $ref: "#/components/schemas/ContactResponse"
2754
- 400:
2755
- description: Bad request
2756
- 401:
2757
- description: Unauthorized
2758
- 404:
2759
- description: Not found
2760
- requestBody:
2761
- required: true
2762
- content:
2763
- application/json:
2764
- schema:
2765
- $ref: "#/components/schemas/ContactCreateRequest"
2766
- /admin/collection/{collectionId}/contacts/lookup:
2767
- get:
2768
- tags:
2769
- - contact
2770
- summary: contact.lookup
2771
- operationId: contact_lookup
2772
- security:
2773
- - bearerAuth: []
2774
- parameters:
2775
- - name: collectionId
2776
- in: path
2777
- required: true
2778
- schema:
2779
- type: string
2780
- - name: email
2781
- in: query
2782
- required: false
2783
- schema:
2784
- type: string
2785
- - name: phone
2786
- in: query
2787
- required: false
2788
- schema:
2789
- type: string
2790
- responses:
2791
- 200:
2792
- description: Success
2793
- content:
2794
- application/json:
2795
- schema:
2796
- $ref: "#/components/schemas/ContactResponse"
2797
- 400:
2798
- description: Bad request
2799
- 401:
2800
- description: Unauthorized
2801
- 404:
2802
- description: Not found
2803
- /admin/collection/{collectionId}/contacts/upsert:
2804
- post:
2805
- tags:
2806
- - contact
2807
- summary: contact.upsert
2808
- operationId: contact_upsert
2809
- security:
2810
- - bearerAuth: []
2811
- parameters:
2812
- - name: collectionId
2813
- in: path
2814
- required: true
2815
- schema:
2816
- type: string
2817
- responses:
2818
- 200:
2819
- description: Success
2820
- content:
2821
- application/json:
2822
- schema:
2823
- $ref: "#/components/schemas/ContactResponse"
2824
- 400:
2825
- description: Bad request
2826
- 401:
2827
- description: Unauthorized
2828
- 404:
2829
- description: Not found
2830
- requestBody:
2831
- required: true
2832
- content:
2833
- application/json:
2834
- schema:
2835
- $ref: "#/components/schemas/ContactCreateRequest"
2836
- /admin/collection/{collectionId}/contacts/{contactId}:
2837
- get:
2838
- tags:
2839
- - contact
2840
- summary: contact.get
2841
- operationId: contact_get
2842
- security:
2843
- - bearerAuth: []
2844
- parameters:
2845
- - name: collectionId
2846
- in: path
2847
- required: true
2848
- schema:
2849
- type: string
2850
- - name: contactId
2851
- in: path
2852
- required: true
2853
- schema:
2854
- type: string
2855
- - name: includeDeleted
2856
- in: query
2857
- required: false
2858
- schema:
2859
- type: string
2860
- responses:
2861
- 200:
2862
- description: Success
2863
- content:
2864
- application/json:
2865
- schema:
2866
- $ref: "#/components/schemas/ContactResponse"
2462
+ $ref: "#/components/schemas/ContactResponse"
2867
2463
  400:
2868
2464
  description: Bad request
2869
2465
  401:
@@ -3867,7 +3463,7 @@ paths:
3867
3463
  post:
3868
3464
  tags:
3869
3465
  - form
3870
- summary: List all forms for a collection.
3466
+ summary: Create a new form for a collection (admin only).
3871
3467
  operationId: form_create
3872
3468
  security:
3873
3469
  - bearerAuth: []
@@ -3893,7 +3489,7 @@ paths:
3893
3489
  put:
3894
3490
  tags:
3895
3491
  - form
3896
- summary: List all forms for a collection.
3492
+ summary: Update a form for a collection (admin only).
3897
3493
  operationId: form_update
3898
3494
  security:
3899
3495
  - bearerAuth: []
@@ -3923,7 +3519,7 @@ paths:
3923
3519
  delete:
3924
3520
  tags:
3925
3521
  - form
3926
- summary: Create a new form for a collection (admin only).
3522
+ summary: Delete a form for a collection (admin only).
3927
3523
  operationId: form_remove
3928
3524
  security:
3929
3525
  - bearerAuth: []
@@ -3956,7 +3552,7 @@ paths:
3956
3552
  get:
3957
3553
  tags:
3958
3554
  - collection
3959
- summary: Delete a collection (admin only).
3555
+ summary: Get serial numbers for a collection (admin only).
3960
3556
  operationId: collection_getSN
3961
3557
  security:
3962
3558
  - bearerAuth: []
@@ -4056,7 +3652,7 @@ paths:
4056
3652
  post:
4057
3653
  tags:
4058
3654
  - interactions
4059
- summary: "POST /admin/collection/:collectionId/interactions/counts-by-outcome Returns array of { outcome, count }."
3655
+ summary: "POST /admin/collection/:collectionId/interactions/aggregate Returns grouped numeric aggregates (sum, avg, min, max, count)."
4060
3656
  operationId: interactions_aggregate
4061
3657
  security:
4062
3658
  - bearerAuth: []
@@ -4089,7 +3685,7 @@ paths:
4089
3685
  post:
4090
3686
  tags:
4091
3687
  - interactions
4092
- summary: "POST /admin/collection/:collectionId/interactions/query Flexible query for interaction events with optional includes."
3688
+ summary: "POST /admin/collection/:collectionId/interactions/counts-by-outcome Returns array of { outcome, count }."
4093
3689
  operationId: interactions_countsByOutcome
4094
3690
  security:
4095
3691
  - bearerAuth: []
@@ -4317,7 +3913,7 @@ paths:
4317
3913
  get:
4318
3914
  tags:
4319
3915
  - jobs
4320
- summary: "List visible jobs for a collection GET /admin/collection/:collectionId/jobs / export async function listJobs( collection"
3916
+ summary: "Get a single job GET /admin/collection/:collectionId/jobs/:jobId"
4321
3917
  operationId: jobs_getJob
4322
3918
  security:
4323
3919
  - bearerAuth: []
@@ -4436,7 +4032,7 @@ paths:
4436
4032
  post:
4437
4033
  tags:
4438
4034
  - journeysAnalytics
4439
- summary: "POST /admin/collection/:collectionId/journeys.analytics/:journeyId/steps/:stepId/recipients Returns recipient IDs for a given journey step."
4035
+ summary: "POST /admin/collection/:collectionId/journeys.analytics/:journeyId/funnel-report Computes conversion, counts, and avg time across mapped steps in a period."
4440
4036
  operationId: journeysAnalytics_funnelReport
4441
4037
  security:
4442
4038
  - bearerAuth: []
@@ -4512,7 +4108,7 @@ paths:
4512
4108
  post:
4513
4109
  tags:
4514
4110
  - journeysAnalytics
4515
- summary: "POST /admin/collection/:collectionId/journeys.analytics/:journeyId/stats Computes journey stats over a time window; outcome defaults to 'success'."
4111
+ summary: "POST /admin/collection/:collectionId/journeys.analytics/:journeyId/steps/:stepId/recipients Returns recipient IDs for a given journey step."
4516
4112
  operationId: journeysAnalytics_recipients
4517
4113
  security:
4518
4114
  - bearerAuth: []
@@ -4656,7 +4252,7 @@ paths:
4656
4252
  post:
4657
4253
  tags:
4658
4254
  - location
4659
- summary: "Platform: Create a global location (super admin; requires features.adminApps) POST /platform/location / export async fun"
4255
+ summary: "Admin: Create a collection-scoped location POST /admin/collection/:collectionId/location"
4660
4256
  operationId: location_create
4661
4257
  security:
4662
4258
  - bearerAuth: []
@@ -4689,7 +4285,7 @@ paths:
4689
4285
  get:
4690
4286
  tags:
4691
4287
  - location
4692
- summary: "Platform: Create a global location (super admin; requires features.adminApps) POST /platform/location / export async fun"
4288
+ summary: "Admin: Search locations to pick during setup (combines collection + global) GET /admin/collection/:collectionId/location"
4693
4289
  operationId: location_search
4694
4290
  security:
4695
4291
  - bearerAuth: []
@@ -6014,7 +5610,7 @@ paths:
6014
5610
  post:
6015
5611
  tags:
6016
5612
  - product
6017
- summary: Delete a product for a collection (admin only).
5613
+ summary: product.find
6018
5614
  operationId: product_find
6019
5615
  security:
6020
5616
  - bearerAuth: []
@@ -6194,7 +5790,7 @@ paths:
6194
5790
  get:
6195
5791
  tags:
6196
5792
  - proof
6197
- summary: Get proofs for a product (admin only).
5793
+ summary: Get proofs for a batch (admin only).
6198
5794
  operationId: proof_getByBatch
6199
5795
  security:
6200
5796
  - bearerAuth: []
@@ -6233,7 +5829,7 @@ paths:
6233
5829
  post:
6234
5830
  tags:
6235
5831
  - product
6236
- summary: "/ export async function clone( collectionId: string, productId: string, body: Record<string, JsonValue> = {} ): Promise<"
5832
+ summary: product.createClaimWindow
6237
5833
  operationId: product_createClaimWindow
6238
5834
  security:
6239
5835
  - bearerAuth: []
@@ -6272,7 +5868,7 @@ paths:
6272
5868
  put:
6273
5869
  tags:
6274
5870
  - product
6275
- summary: "/ export async function listAssets( collectionId: string, productId: string, admin?: boolean ): Promise<unknown> { const"
5871
+ summary: product.updateClaimWindow
6276
5872
  operationId: product_updateClaimWindow
6277
5873
  security:
6278
5874
  - bearerAuth: []
@@ -6316,7 +5912,7 @@ paths:
6316
5912
  post:
6317
5913
  tags:
6318
5914
  - product
6319
- summary: "/ export async function publicFind( collectionId: string, params?: ProductPublicFindParams ): Promise<ProductResponse[]>"
5915
+ summary: product.clone
6320
5916
  operationId: product_clone
6321
5917
  security:
6322
5918
  - bearerAuth: []
@@ -6356,7 +5952,7 @@ paths:
6356
5952
  get:
6357
5953
  tags:
6358
5954
  - product
6359
- summary: "/ export async function refresh( collectionId: string, productId: string ): Promise<ProductResponse> { const path = `/admin/collection/${encodeURIComponent(collectionId)}/product/${encodeURIComponent(productId)}/refresh` return request<ProductResponse>(path) } /** Get serial numbers for a product (admin only)."
5955
+ summary: Get serial numbers for a product (admin only).
6360
5956
  operationId: product_getSN
6361
5957
  security:
6362
5958
  - bearerAuth: []
@@ -6423,7 +6019,7 @@ paths:
6423
6019
  get:
6424
6020
  tags:
6425
6021
  - proof
6426
- summary: Delete a proof for a product (admin only).
6022
+ summary: Get proofs for a product (admin only).
6427
6023
  operationId: proof_getByProduct
6428
6024
  security:
6429
6025
  - bearerAuth: []
@@ -6456,7 +6052,7 @@ paths:
6456
6052
  post:
6457
6053
  tags:
6458
6054
  - proof
6459
- summary: List all Proofs for a Collection.
6055
+ summary: Create a proof for a product (admin only).
6460
6056
  operationId: proof_create
6461
6057
  security:
6462
6058
  - bearerAuth: []
@@ -6494,7 +6090,7 @@ paths:
6494
6090
  post:
6495
6091
  tags:
6496
6092
  - proof
6497
- summary: Get proofs for a user in a collection (admin only).
6093
+ summary: Find proofs for a product (admin only).
6498
6094
  operationId: proof_findByProduct
6499
6095
  security:
6500
6096
  - bearerAuth: []
@@ -6528,7 +6124,7 @@ paths:
6528
6124
  put:
6529
6125
  tags:
6530
6126
  - proof
6531
- summary: Create a proof for a product (admin only).
6127
+ summary: Update a proof for a product (admin only).
6532
6128
  operationId: proof_update
6533
6129
  security:
6534
6130
  - bearerAuth: []
@@ -6608,7 +6204,7 @@ paths:
6608
6204
  get:
6609
6205
  tags:
6610
6206
  - product
6611
- summary: "/ export async function createClaimWindow( collectionId: string, productId: string, body: Record<string, JsonValue> ): P"
6207
+ summary: product.refresh
6612
6208
  operationId: product_refresh
6613
6209
  security:
6614
6210
  - bearerAuth: []
@@ -7119,7 +6715,7 @@ paths:
7119
6715
  get:
7120
6716
  tags:
7121
6717
  - proof
7122
- summary: Delete a proof for a product (admin only).
6718
+ summary: Get proofs for a user in a collection (admin only).
7123
6719
  operationId: proof_getByUser
7124
6720
  security:
7125
6721
  - bearerAuth: []
@@ -8332,7 +7928,7 @@ paths:
8332
7928
  post:
8333
7929
  tags:
8334
7930
  - authKit
8335
- summary: Namespace containing helper functions for the new AuthKit API.
7931
+ summary: Google OAuth login (public).
8336
7932
  operationId: authKit_googleLogin
8337
7933
  security: []
8338
7934
  parameters:
@@ -8358,7 +7954,7 @@ paths:
8358
7954
  post:
8359
7955
  tags:
8360
7956
  - authKit
8361
- summary: Namespace containing helper functions for the new AuthKit API.
7957
+ summary: Login with email + password (public).
8362
7958
  operationId: authKit_login
8363
7959
  security: []
8364
7960
  parameters:
@@ -8384,7 +7980,7 @@ paths:
8384
7980
  post:
8385
7981
  tags:
8386
7982
  - authKit
8387
- summary: Login with email + password (public).
7983
+ summary: Send a magic link email to the user (public).
8388
7984
  operationId: authKit_sendMagicLink
8389
7985
  security: []
8390
7986
  parameters:
@@ -8417,7 +8013,7 @@ paths:
8417
8013
  post:
8418
8014
  tags:
8419
8015
  - authKit
8420
- summary: Google OAuth login (public).
8016
+ summary: Verify a magic link token and authenticate/create the user (public).
8421
8017
  operationId: authKit_verifyMagicLink
8422
8018
  security: []
8423
8019
  parameters:
@@ -8443,7 +8039,7 @@ paths:
8443
8039
  post:
8444
8040
  tags:
8445
8041
  - authKit
8446
- summary: Send a magic link email to the user (public).
8042
+ summary: Send phone verification code (public).
8447
8043
  operationId: authKit_sendPhoneCode
8448
8044
  security: []
8449
8045
  parameters:
@@ -8469,7 +8065,7 @@ paths:
8469
8065
  post:
8470
8066
  tags:
8471
8067
  - authKit
8472
- summary: Verify a magic link token and authenticate/create the user (public).
8068
+ summary: Verify phone verification code (public).
8473
8069
  operationId: authKit_verifyPhoneCode
8474
8070
  security: []
8475
8071
  parameters:
@@ -8495,7 +8091,7 @@ paths:
8495
8091
  post:
8496
8092
  tags:
8497
8093
  - authKit
8498
- summary: Namespace containing helper functions for the new AuthKit API.
8094
+ summary: Register a new user (public).
8499
8095
  operationId: authKit_register
8500
8096
  security: []
8501
8097
  parameters:
@@ -8561,7 +8157,7 @@ paths:
8561
8157
  post:
8562
8158
  tags:
8563
8159
  - authKit
8564
- summary: Send phone verification code (public).
8160
+ summary: Verify phone verification code (public).
8565
8161
  operationId: authKit_requestPasswordReset
8566
8162
  security: []
8567
8163
  parameters:
@@ -8751,7 +8347,7 @@ paths:
8751
8347
  post:
8752
8348
  tags:
8753
8349
  - userAppData
8754
- summary: "Get user's config blob for an app."
8350
+ summary: "Set user's config blob for an app."
8755
8351
  operationId: userAppData_setConfig
8756
8352
  security:
8757
8353
  - bearerAuth: []
@@ -8776,7 +8372,7 @@ paths:
8776
8372
  delete:
8777
8373
  tags:
8778
8374
  - userAppData
8779
- summary: "Set user's config blob for an app."
8375
+ summary: "Delete user's config blob for an app."
8780
8376
  operationId: userAppData_deleteConfig
8781
8377
  security:
8782
8378
  - bearerAuth: []
@@ -8804,7 +8400,7 @@ paths:
8804
8400
  get:
8805
8401
  tags:
8806
8402
  - userAppData
8807
- summary: "Delete user's config blob for an app."
8403
+ summary: "List all user's data items for an app."
8808
8404
  operationId: userAppData_list
8809
8405
  security:
8810
8406
  - bearerAuth: []
@@ -8831,7 +8427,7 @@ paths:
8831
8427
  post:
8832
8428
  tags:
8833
8429
  - userAppData
8834
- summary: Get a specific user data item by ID.
8430
+ summary: Create or update a user data item.
8835
8431
  operationId: userAppData_set
8836
8432
  security:
8837
8433
  - bearerAuth: []
@@ -8857,7 +8453,7 @@ paths:
8857
8453
  get:
8858
8454
  tags:
8859
8455
  - userAppData
8860
- summary: "List all user's data items for an app."
8456
+ summary: Get a specific user data item by ID.
8861
8457
  operationId: userAppData_get
8862
8458
  security:
8863
8459
  - bearerAuth: []
@@ -8887,7 +8483,7 @@ paths:
8887
8483
  delete:
8888
8484
  tags:
8889
8485
  - userAppData
8890
- summary: Create or update a user data item.
8486
+ summary: Delete a user data item by ID.
8891
8487
  operationId: userAppData_remove
8892
8488
  security:
8893
8489
  - bearerAuth: []
@@ -8962,7 +8558,7 @@ paths:
8962
8558
  post:
8963
8559
  tags:
8964
8560
  - auth
8965
- summary: Requests an admin JWT for the current user and a specific collection Returns JWT if valid.
8561
+ summary: Tries to register a new user account.
8966
8562
  operationId: auth_registerUser
8967
8563
  security:
8968
8564
  - bearerAuth: []
@@ -8989,7 +8585,7 @@ paths:
8989
8585
  post:
8990
8586
  tags:
8991
8587
  - auth
8992
- summary: Requests an admin JWT for the current user and a specific collection Returns JWT if valid.
8588
+ summary: Requests a JWT for the current user and a specific collection/product/proof Validates if the user has access to the reso
8993
8589
  operationId: auth_requestPublicJWT
8994
8590
  security:
8995
8591
  - bearerAuth: []
@@ -9010,7 +8606,7 @@ paths:
9010
8606
  post:
9011
8607
  tags:
9012
8608
  - auth
9013
- summary: Login with email and password.
8609
+ summary: Verifies the current bearerToken (or a provided token).
9014
8610
  operationId: auth_verifyToken
9015
8611
  security:
9016
8612
  - bearerAuth: []
@@ -9031,7 +8627,7 @@ paths:
9031
8627
  get:
9032
8628
  tags:
9033
8629
  - collection
9034
- summary: Retrieves all Collections.
8630
+ summary: Retrieve a collection by its shortId (public endpoint).
9035
8631
  operationId: collection_getShortId
9036
8632
  security: []
9037
8633
  parameters:
@@ -9109,7 +8705,7 @@ paths:
9109
8705
  post:
9110
8706
  tags:
9111
8707
  - publicClient
9112
- summary: "Generate text-to-speech audio / export async function generate( collectionId: string, request: TTSRequest ): Promise<Blo"
8708
+ summary: Chat with product assistant (RAG)
9113
8709
  operationId: publicClient_chat
9114
8710
  security: []
9115
8711
  parameters:
@@ -9141,7 +8737,7 @@ paths:
9141
8737
  get:
9142
8738
  tags:
9143
8739
  - publicClient
9144
- summary: "Get session history / export async function getSession(collectionId: string, sessionId: string): Promise<Session> { cons"
8740
+ summary: Check rate limit status
9145
8741
  operationId: publicClient_getRateLimit
9146
8742
  security: []
9147
8743
  parameters:
@@ -9172,7 +8768,7 @@ paths:
9172
8768
  get:
9173
8769
  tags:
9174
8770
  - publicClient
9175
- summary: "Chat with product assistant (RAG) / export async function chat( collectionId: string, request: PublicChatRequest ): Prom"
8771
+ summary: Get session history
9176
8772
  operationId: publicClient_getSession
9177
8773
  security: []
9178
8774
  parameters:
@@ -9203,7 +8799,7 @@ paths:
9203
8799
  post:
9204
8800
  tags:
9205
8801
  - publicClient
9206
- summary: "Clear session history / export async function clearSession(collectionId: string, sessionId: string): Promise<{ success:"
8802
+ summary: Generate ephemeral token for Gemini Live
9207
8803
  operationId: publicClient_getToken
9208
8804
  security: []
9209
8805
  parameters:
@@ -9585,7 +9181,7 @@ paths:
9585
9181
  post:
9586
9182
  tags:
9587
9183
  - comms
9588
- summary: "Public: List registered contact methods."
9184
+ summary: "Public: Register email method for a contact."
9589
9185
  operationId: comms_registerEmail
9590
9186
  security: []
9591
9187
  parameters:
@@ -9619,7 +9215,7 @@ paths:
9619
9215
  get:
9620
9216
  tags:
9621
9217
  - comms
9622
- summary: "Public: Check subscription status for a subject."
9218
+ summary: "Public: List registered contact methods."
9623
9219
  operationId: comms_listMethods
9624
9220
  security: []
9625
9221
  parameters:
@@ -9656,7 +9252,7 @@ paths:
9656
9252
  post:
9657
9253
  tags:
9658
9254
  - comms
9659
- summary: "Communications namespace for sending notifications and managing user communications / export namespace comms { /** Public: Get VAPID public key used for Web Push subscriptions."
9255
+ summary: "Public: Register a Web Push subscription under unified comms."
9660
9256
  operationId: comms_registerPush
9661
9257
  security: []
9662
9258
  parameters:
@@ -9690,7 +9286,7 @@ paths:
9690
9286
  get:
9691
9287
  tags:
9692
9288
  - comms
9693
- summary: "Communications namespace for sending notifications and managing user communications / export namespace comms { /** Public: Get VAPID public key used for Web Push subscriptions."
9289
+ summary: "Public: Get VAPID public key used for Web Push subscriptions."
9694
9290
  operationId: comms_getPushVapidPublicKey
9695
9291
  security: []
9696
9292
  parameters:
@@ -9717,7 +9313,7 @@ paths:
9717
9313
  post:
9718
9314
  tags:
9719
9315
  - comms
9720
- summary: "Public: Register email method for a contact."
9316
+ summary: "Public: Register SMS method for a contact."
9721
9317
  operationId: comms_registerSms
9722
9318
  security: []
9723
9319
  parameters:
@@ -9751,7 +9347,7 @@ paths:
9751
9347
  post:
9752
9348
  tags:
9753
9349
  - comms
9754
- summary: "Public: Upsert preferences for a specific subject (or default if subject omitted)."
9350
+ summary: "Public: Subscribe/unsubscribe contact to a subject."
9755
9351
  operationId: comms_subscribe
9756
9352
  security: []
9757
9353
  parameters:
@@ -9785,7 +9381,7 @@ paths:
9785
9381
  get:
9786
9382
  tags:
9787
9383
  - comms
9788
- summary: "Public: Subscribe/unsubscribe contact to a subject."
9384
+ summary: "Public: Check subscription status for a subject."
9789
9385
  operationId: comms_checkSubscription
9790
9386
  security: []
9791
9387
  parameters:
@@ -9832,7 +9428,7 @@ paths:
9832
9428
  post:
9833
9429
  tags:
9834
9430
  - comms
9835
- summary: "Public: Register SMS method for a contact."
9431
+ summary: "Public: Resolve contacts for a subject with identity hints."
9836
9432
  operationId: comms_resolveSubscriptions
9837
9433
  security: []
9838
9434
  parameters:
@@ -9866,7 +9462,7 @@ paths:
9866
9462
  get:
9867
9463
  tags:
9868
9464
  - comms
9869
- summary: "Admin: Patch comms settings for a collection."
9465
+ summary: "Public: Fetch configured topics for a collection."
9870
9466
  operationId: comms_getPublicTopics
9871
9467
  security: []
9872
9468
  parameters:
@@ -9893,7 +9489,7 @@ paths:
9893
9489
  get:
9894
9490
  tags:
9895
9491
  - comms
9896
- summary: "Public: Fetch configured topics for a collection."
9492
+ summary: "Public: Unsubscribe a contact from a category or channel."
9897
9493
  operationId: comms_unsubscribe
9898
9494
  security: []
9899
9495
  parameters:
@@ -10228,7 +9824,7 @@ paths:
10228
9824
  get:
10229
9825
  tags:
10230
9826
  - attestations
10231
- summary: Time-series summary for a specific container (public shortcut).
9827
+ summary: Latest snapshot for a specific container (public shortcut).
10232
9828
  operationId: attestations_publicContainerLatest
10233
9829
  security: []
10234
9830
  parameters:
@@ -10330,7 +9926,7 @@ paths:
10330
9926
  get:
10331
9927
  tags:
10332
9928
  - attestations
10333
- summary: Tree time-series summary rooted at a specific container (public shortcut).
9929
+ summary: Tree latest snapshot rooted at a specific container (public shortcut).
10334
9930
  operationId: attestations_publicContainerTreeLatest
10335
9931
  security: []
10336
9932
  parameters:
@@ -10371,7 +9967,7 @@ paths:
10371
9967
  get:
10372
9968
  tags:
10373
9969
  - attestations
10374
- summary: Latest snapshot for a specific container (public shortcut).
9970
+ summary: Tree time-series summary rooted at a specific container (public shortcut).
10375
9971
  operationId: attestations_publicContainerTreeSummary
10376
9972
  security: []
10377
9973
  parameters:
@@ -10794,7 +10390,7 @@ paths:
10794
10390
  get:
10795
10391
  tags:
10796
10392
  - location
10797
- summary: "Admin: Search locations to pick during setup (combines collection + global) GET /admin/collection/:collectionId/location"
10393
+ summary: "Public: Fetch a location for a collection; returns either a collection-owned or global fallback GET /public/collection/:"
10798
10394
  operationId: location_getPublicForCollection
10799
10395
  security: []
10800
10396
  parameters:
@@ -10853,7 +10449,7 @@ paths:
10853
10449
  get:
10854
10450
  tags:
10855
10451
  - loyalty
10856
- summary: "List active earning rules for a scheme useful for showing \"how to earn\" in a loyalty UI."
10452
+ summary: "Get all active schemes with the caller's membership embedded in each."
10857
10453
  operationId: loyalty_publicGetMe
10858
10454
  security: []
10859
10455
  parameters:
@@ -10881,7 +10477,7 @@ paths:
10881
10477
  get:
10882
10478
  tags:
10883
10479
  - loyalty
10884
- summary: List active schemes for a collection.
10480
+ summary: Get a single active scheme.
10885
10481
  operationId: loyalty_publicGet
10886
10482
  security: []
10887
10483
  parameters:
@@ -10912,7 +10508,7 @@ paths:
10912
10508
  get:
10913
10509
  tags:
10914
10510
  - loyalty
10915
- summary: List active schemes for a collection.
10511
+ summary: "List active earning rules for a scheme — useful for showing \"how to earn\" in a loyalty UI."
10916
10512
  operationId: loyalty_publicListEarningRules
10917
10513
  security: []
10918
10514
  parameters:
@@ -10945,7 +10541,7 @@ paths:
10945
10541
  get:
10946
10542
  tags:
10947
10543
  - loyalty
10948
- summary: "Get all active schemes with the caller's membership embedded in each."
10544
+ summary: "Get the authenticated caller's membership (balance + lifetimePoints) on a specific scheme."
10949
10545
  operationId: loyalty_publicGetMine
10950
10546
  security: []
10951
10547
  parameters:
@@ -10976,7 +10572,7 @@ paths:
10976
10572
  get:
10977
10573
  tags:
10978
10574
  - product
10979
- summary: "/ export async function find( collectionId: string, body: ProductQueryRequest ): Promise<ProductQueryResponse> { const p"
10575
+ summary: product.publicFind
10980
10576
  operationId: product_publicFind
10981
10577
  security: []
10982
10578
  parameters:
@@ -11073,7 +10669,7 @@ paths:
11073
10669
  post:
11074
10670
  tags:
11075
10671
  - product
11076
- summary: "/ export async function publicLookupClaim( collectionId: string, productId: string, claimId: string ): Promise<unknown>"
10672
+ summary: product.publicCreateClaim
11077
10673
  operationId: product_publicCreateClaim
11078
10674
  security: []
11079
10675
  parameters:
@@ -11109,7 +10705,7 @@ paths:
11109
10705
  get:
11110
10706
  tags:
11111
10707
  - product
11112
- summary: Look up a serial number by code for a product (admin only).
10708
+ summary: product.publicLookupClaim
11113
10709
  operationId: product_publicLookupClaim
11114
10710
  security: []
11115
10711
  parameters:
@@ -11222,7 +10818,7 @@ paths:
11222
10818
  get:
11223
10819
  tags:
11224
10820
  - attestation
11225
- summary: "These endpoints store attestation data against a specific proof in Firestore (`/product/:productId/proof/:proofId/attestations`)."
10821
+ summary: List all attestations for a proof.
11226
10822
  operationId: attestation_list
11227
10823
  security: []
11228
10824
  parameters:
@@ -11259,7 +10855,7 @@ paths:
11259
10855
  post:
11260
10856
  tags:
11261
10857
  - attestation
11262
- summary: Get a single attestation by ID.
10858
+ summary: Create a new attestation for a proof.
11263
10859
  operationId: attestation_create
11264
10860
  security: []
11265
10861
  parameters:
@@ -11301,7 +10897,7 @@ paths:
11301
10897
  get:
11302
10898
  tags:
11303
10899
  - attestation
11304
- summary: List all attestations for a proof.
10900
+ summary: Get a single attestation by ID.
11305
10901
  operationId: attestation_get
11306
10902
  security: []
11307
10903
  parameters:
@@ -11341,7 +10937,7 @@ paths:
11341
10937
  put:
11342
10938
  tags:
11343
10939
  - attestation
11344
- summary: Create a new attestation for a proof.
10940
+ summary: Update an attestation.
11345
10941
  operationId: attestation_update
11346
10942
  security: []
11347
10943
  parameters:
@@ -11387,7 +10983,7 @@ paths:
11387
10983
  delete:
11388
10984
  tags:
11389
10985
  - attestation
11390
- summary: Update an attestation.
10986
+ summary: Delete an attestation.
11391
10987
  operationId: attestation_remove
11392
10988
  security: []
11393
10989
  parameters:
@@ -11429,7 +11025,7 @@ paths:
11429
11025
  put:
11430
11026
  tags:
11431
11027
  - proof
11432
- summary: Update a proof for a product (admin only).
11028
+ summary: Claim a proof for a product using a proof ID (serial number, NFC tag, etc.).
11433
11029
  operationId: proof_claim
11434
11030
  security: []
11435
11031
  parameters:
@@ -11542,7 +11138,7 @@ paths:
11542
11138
  get:
11543
11139
  tags:
11544
11140
  - proof
11545
- summary: Retrieves a single Proof by Collection ID, Product ID, and Proof ID.
11141
+ summary: List all Proofs for a Collection.
11546
11142
  operationId: proof_list
11547
11143
  security: []
11548
11144
  parameters:
@@ -11858,7 +11454,7 @@ paths:
11858
11454
  get:
11859
11455
  tags:
11860
11456
  - config
11861
- summary: Returns the full platform field catalog.
11457
+ summary: Returns all proof type definitions.
11862
11458
  operationId: config_getProofTypes
11863
11459
  security: []
11864
11460
  responses:
@@ -11880,7 +11476,7 @@ paths:
11880
11476
  get:
11881
11477
  tags:
11882
11478
  - location
11883
- summary: "Admin: Create a collection-scoped location POST /admin/collection/:collectionId/location / export async function create("
11479
+ summary: "Public: Fetch a global location by ID GET /public/location/:locationId"
11884
11480
  operationId: location_getPublic
11885
11481
  security: []
11886
11482
  parameters:
@@ -11932,7 +11528,7 @@ paths:
11932
11528
  get:
11933
11529
  tags:
11934
11530
  - nfc
11935
- summary: Claim an NFC tag (public).
11531
+ summary: Lookup a tag by its ID (public).
11936
11532
  operationId: nfc_lookupTag
11937
11533
  security: []
11938
11534
  parameters:
@@ -11960,7 +11556,7 @@ paths:
11960
11556
  post:
11961
11557
  tags:
11962
11558
  - nfc
11963
- summary: Claim an NFC tag (public).
11559
+ summary: Validate an NFC tag payload (public).
11964
11560
  operationId: nfc_validate
11965
11561
  security: []
11966
11562
  responses:
@@ -11986,7 +11582,7 @@ paths:
11986
11582
  get:
11987
11583
  tags:
11988
11584
  - qr
11989
- summary: QR namespace for public short code lookups.
11585
+ summary: Resolve a short code to related resource identifiers.
11990
11586
  operationId: qr_lookupShortCode
11991
11587
  security: []
11992
11588
  parameters:
@@ -12086,22 +11682,274 @@ paths:
12086
11682
  content:
12087
11683
  application/json:
12088
11684
  schema:
12089
- $ref: "#/components/schemas/TemplatePublic"
11685
+ $ref: "#/components/schemas/TemplatePublic"
11686
+ 400:
11687
+ description: Bad request
11688
+ 401:
11689
+ description: Unauthorized
11690
+ 404:
11691
+ description: Not found
11692
+ /{zone}/collection/{collectionId}/app/{appId}/cases:
11693
+ get:
11694
+ tags:
11695
+ - cases
11696
+ summary: List cases with optional query parameters GET /cases
11697
+ operationId: cases_list
11698
+ security: []
11699
+ parameters:
11700
+ - name: zone
11701
+ in: path
11702
+ required: true
11703
+ schema:
11704
+ type: string
11705
+ - name: collectionId
11706
+ in: path
11707
+ required: true
11708
+ schema:
11709
+ type: string
11710
+ - name: appId
11711
+ in: path
11712
+ required: true
11713
+ schema:
11714
+ type: string
11715
+ - name: category
11716
+ in: query
11717
+ required: false
11718
+ schema:
11719
+ type: string
11720
+ - name: priority
11721
+ in: query
11722
+ required: false
11723
+ schema:
11724
+ type: string
11725
+ - name: ref
11726
+ in: query
11727
+ required: false
11728
+ schema:
11729
+ type: string
11730
+ - name: proofId
11731
+ in: query
11732
+ required: false
11733
+ schema:
11734
+ type: string
11735
+ - name: contactId
11736
+ in: query
11737
+ required: false
11738
+ schema:
11739
+ type: string
11740
+ - name: assignedTo
11741
+ in: query
11742
+ required: false
11743
+ schema:
11744
+ type: string
11745
+ - name: closedAt
11746
+ in: query
11747
+ required: false
11748
+ schema:
11749
+ type: string
11750
+ responses:
11751
+ 200:
11752
+ description: Success
11753
+ content:
11754
+ application/json:
11755
+ schema:
11756
+ type: object
11757
+ additionalProperties: true
11758
+ 400:
11759
+ description: Bad request
11760
+ 401:
11761
+ description: Unauthorized
11762
+ 404:
11763
+ description: Not found
11764
+ post:
11765
+ tags:
11766
+ - cases
11767
+ summary: Create a new case POST /cases
11768
+ operationId: cases_create
11769
+ security: []
11770
+ parameters:
11771
+ - name: zone
11772
+ in: path
11773
+ required: true
11774
+ schema:
11775
+ type: string
11776
+ - name: collectionId
11777
+ in: path
11778
+ required: true
11779
+ schema:
11780
+ type: string
11781
+ - name: appId
11782
+ in: path
11783
+ required: true
11784
+ schema:
11785
+ type: string
11786
+ responses:
11787
+ 200:
11788
+ description: Success
11789
+ content:
11790
+ application/json:
11791
+ schema:
11792
+ $ref: "#/components/schemas/AppCase"
11793
+ 400:
11794
+ description: Bad request
11795
+ 401:
11796
+ description: Unauthorized
11797
+ 404:
11798
+ description: Not found
11799
+ requestBody:
11800
+ required: true
11801
+ content:
11802
+ application/json:
11803
+ schema:
11804
+ $ref: "#/components/schemas/CreateCaseInput"
11805
+ /{zone}/collection/{collectionId}/app/{appId}/cases/aggregate:
11806
+ post:
11807
+ tags:
11808
+ - cases
11809
+ summary: Get aggregate statistics for cases POST /cases/aggregate
11810
+ operationId: cases_aggregate
11811
+ security: []
11812
+ parameters:
11813
+ - name: zone
11814
+ in: path
11815
+ required: true
11816
+ schema:
11817
+ type: string
11818
+ - name: collectionId
11819
+ in: path
11820
+ required: true
11821
+ schema:
11822
+ type: string
11823
+ - name: appId
11824
+ in: path
11825
+ required: true
11826
+ schema:
11827
+ type: string
11828
+ responses:
11829
+ 200:
11830
+ description: Success
11831
+ content:
11832
+ application/json:
11833
+ schema:
11834
+ $ref: "#/components/schemas/AggregateResponse"
11835
+ 400:
11836
+ description: Bad request
11837
+ 401:
11838
+ description: Unauthorized
11839
+ 404:
11840
+ description: Not found
11841
+ requestBody:
11842
+ required: true
11843
+ content:
11844
+ application/json:
11845
+ schema:
11846
+ $ref: "#/components/schemas/AggregateRequest"
11847
+ /{zone}/collection/{collectionId}/app/{appId}/cases/summary:
11848
+ post:
11849
+ tags:
11850
+ - cases
11851
+ summary: Get case summary (admin only) POST /cases/summary
11852
+ operationId: cases_summary
11853
+ security: []
11854
+ parameters:
11855
+ - name: zone
11856
+ in: path
11857
+ required: true
11858
+ schema:
11859
+ type: string
11860
+ - name: collectionId
11861
+ in: path
11862
+ required: true
11863
+ schema:
11864
+ type: string
11865
+ - name: appId
11866
+ in: path
11867
+ required: true
11868
+ schema:
11869
+ type: string
11870
+ responses:
11871
+ 200:
11872
+ description: Success
11873
+ content:
11874
+ application/json:
11875
+ schema:
11876
+ $ref: "#/components/schemas/CaseSummaryResponse"
11877
+ 400:
11878
+ description: Bad request
11879
+ 401:
11880
+ description: Unauthorized
11881
+ 404:
11882
+ description: Not found
11883
+ requestBody:
11884
+ required: true
11885
+ content:
11886
+ application/json:
11887
+ schema:
11888
+ $ref: "#/components/schemas/CaseSummaryRequest"
11889
+ /{zone}/collection/{collectionId}/app/{appId}/cases/{caseId}:
11890
+ get:
11891
+ tags:
11892
+ - cases
11893
+ summary: "Get a single case by ID GET /cases/:caseId"
11894
+ operationId: cases_get
11895
+ security: []
11896
+ parameters:
11897
+ - name: zone
11898
+ in: path
11899
+ required: true
11900
+ schema:
11901
+ type: string
11902
+ - name: collectionId
11903
+ in: path
11904
+ required: true
11905
+ schema:
11906
+ type: string
11907
+ - name: appId
11908
+ in: path
11909
+ required: true
11910
+ schema:
11911
+ type: string
11912
+ - name: caseId
11913
+ in: path
11914
+ required: true
11915
+ schema:
11916
+ type: string
11917
+ responses:
11918
+ 200:
11919
+ description: Success
11920
+ content:
11921
+ application/json:
11922
+ schema:
11923
+ $ref: "#/components/schemas/AppCase"
12090
11924
  400:
12091
11925
  description: Bad request
12092
11926
  401:
12093
11927
  description: Unauthorized
12094
11928
  404:
12095
11929
  description: Not found
12096
- /{base}:
12097
- get:
11930
+ patch:
12098
11931
  tags:
12099
- - appConfiguration
12100
- summary: Get app configuration for a collection/product scope.
12101
- operationId: appConfiguration_getConfig
11932
+ - cases
11933
+ summary: "Update a case PATCH /cases/:caseId Admin can update any field, public (owner) can only update data and owner zones"
11934
+ operationId: cases_update
12102
11935
  security: []
12103
11936
  parameters:
12104
- - name: base
11937
+ - name: zone
11938
+ in: path
11939
+ required: true
11940
+ schema:
11941
+ type: string
11942
+ - name: collectionId
11943
+ in: path
11944
+ required: true
11945
+ schema:
11946
+ type: string
11947
+ - name: appId
11948
+ in: path
11949
+ required: true
11950
+ schema:
11951
+ type: string
11952
+ - name: caseId
12105
11953
  in: path
12106
11954
  required: true
12107
11955
  schema:
@@ -12111,21 +11959,44 @@ paths:
12111
11959
  description: Success
12112
11960
  content:
12113
11961
  application/json:
12114
- schema: {}
11962
+ schema:
11963
+ $ref: "#/components/schemas/AppCase"
12115
11964
  400:
12116
11965
  description: Bad request
12117
11966
  401:
12118
11967
  description: Unauthorized
12119
11968
  404:
12120
11969
  description: Not found
11970
+ requestBody:
11971
+ required: true
11972
+ content:
11973
+ application/json:
11974
+ schema:
11975
+ $ref: "#/components/schemas/UpdateCaseInput"
11976
+ /{zone}/collection/{collectionId}/app/{appId}/cases/{caseId}/history:
12121
11977
  post:
12122
11978
  tags:
12123
- - appConfiguration
12124
- summary: Set app configuration for a collection/product scope.
12125
- operationId: appConfiguration_setConfig
11979
+ - cases
11980
+ summary: "Append an entry to case history (admin only) POST /cases/:caseId/history"
11981
+ operationId: cases_appendHistory
12126
11982
  security: []
12127
11983
  parameters:
12128
- - name: base
11984
+ - name: zone
11985
+ in: path
11986
+ required: true
11987
+ schema:
11988
+ type: string
11989
+ - name: collectionId
11990
+ in: path
11991
+ required: true
11992
+ schema:
11993
+ type: string
11994
+ - name: appId
11995
+ in: path
11996
+ required: true
11997
+ schema:
11998
+ type: string
11999
+ - name: caseId
12129
12000
  in: path
12130
12001
  required: true
12131
12002
  schema:
@@ -12135,7 +12006,8 @@ paths:
12135
12006
  description: Success
12136
12007
  content:
12137
12008
  application/json:
12138
- schema: {}
12009
+ schema:
12010
+ $ref: "#/components/schemas/AppCase"
12139
12011
  400:
12140
12012
  description: Bad request
12141
12013
  401:
@@ -12147,15 +12019,31 @@ paths:
12147
12019
  content:
12148
12020
  application/json:
12149
12021
  schema:
12150
- $ref: "#/components/schemas/AppConfigOptions"
12151
- delete:
12022
+ $ref: "#/components/schemas/AppendHistoryInput"
12023
+ /{zone}/collection/{collectionId}/app/{appId}/cases/{caseId}/related:
12024
+ get:
12152
12025
  tags:
12153
- - appConfiguration
12154
- summary: Delete app configuration for a collection/product scope.
12155
- operationId: appConfiguration_deleteConfig
12026
+ - cases
12027
+ summary: "Get related threads and records for a case (admin only) GET /cases/:caseId/related"
12028
+ operationId: cases_related
12156
12029
  security: []
12157
12030
  parameters:
12158
- - name: base
12031
+ - name: zone
12032
+ in: path
12033
+ required: true
12034
+ schema:
12035
+ type: string
12036
+ - name: collectionId
12037
+ in: path
12038
+ required: true
12039
+ schema:
12040
+ type: string
12041
+ - name: appId
12042
+ in: path
12043
+ required: true
12044
+ schema:
12045
+ type: string
12046
+ - name: caseId
12159
12047
  in: path
12160
12048
  required: true
12161
12049
  schema:
@@ -12166,8 +12054,7 @@ paths:
12166
12054
  content:
12167
12055
  application/json:
12168
12056
  schema:
12169
- type: object
12170
- additionalProperties: true
12057
+ $ref: "#/components/schemas/RelatedResponse"
12171
12058
  400:
12172
12059
  description: Bad request
12173
12060
  401:
@@ -12177,9 +12064,9 @@ paths:
12177
12064
  /{zone}/collection/{collectionId}/app/{appId}/records:
12178
12065
  get:
12179
12066
  tags:
12180
- - cases
12181
- summary: "Build the base path for cases endpoints / function basePath(collectionId: string, appId: string, admin: boolean = false)"
12182
- operationId: cases_list
12067
+ - records
12068
+ summary: List records with optional query parameters GET /records
12069
+ operationId: records_list
12183
12070
  security: []
12184
12071
  parameters:
12185
12072
  - name: zone
@@ -12197,17 +12084,27 @@ paths:
12197
12084
  required: true
12198
12085
  schema:
12199
12086
  type: string
12200
- - name: category
12087
+ - name: recordType
12201
12088
  in: query
12202
12089
  required: false
12203
12090
  schema:
12204
12091
  type: string
12205
- - name: priority
12092
+ - name: ref
12206
12093
  in: query
12207
12094
  required: false
12208
12095
  schema:
12209
12096
  type: string
12210
- - name: ref
12097
+ - name: refPrefix
12098
+ in: query
12099
+ required: false
12100
+ schema:
12101
+ type: string
12102
+ - name: customId
12103
+ in: query
12104
+ required: false
12105
+ schema:
12106
+ type: string
12107
+ - name: sourceSystem
12211
12108
  in: query
12212
12109
  required: false
12213
12110
  schema:
@@ -12217,21 +12114,71 @@ paths:
12217
12114
  required: false
12218
12115
  schema:
12219
12116
  type: string
12220
- - name: contactId
12117
+ - name: variantId
12221
12118
  in: query
12222
12119
  required: false
12223
12120
  schema:
12224
12121
  type: string
12225
- - name: assignedTo
12122
+ - name: batchId
12226
12123
  in: query
12227
12124
  required: false
12228
12125
  schema:
12229
12126
  type: string
12230
- - name: closedAt
12127
+ - name: q
12128
+ in: query
12129
+ required: false
12130
+ schema:
12131
+ type: string
12132
+ - name: authorId
12133
+ in: query
12134
+ required: false
12135
+ schema:
12136
+ type: string
12137
+ - name: parentType
12138
+ in: query
12139
+ required: false
12140
+ schema:
12141
+ type: string
12142
+ - name: parentId
12143
+ in: query
12144
+ required: false
12145
+ schema:
12146
+ type: string
12147
+ - name: startsAt
12148
+ in: query
12149
+ required: false
12150
+ schema:
12151
+ type: string
12152
+ - name: expiresAt
12153
+ in: query
12154
+ required: false
12155
+ schema:
12156
+ type: string
12157
+ - name: includeScheduled
12158
+ in: query
12159
+ required: false
12160
+ schema:
12161
+ type: boolean
12162
+ - name: includeExpired
12163
+ in: query
12164
+ required: false
12165
+ schema:
12166
+ type: boolean
12167
+ - name: at
12168
+ in: query
12169
+ required: false
12170
+ schema:
12171
+ type: string
12172
+ - name: contactId
12231
12173
  in: query
12232
12174
  required: false
12233
12175
  schema:
12234
12176
  type: string
12177
+ - name: includeDeleted
12178
+ in: query
12179
+ required: false
12180
+ schema:
12181
+ type: boolean
12235
12182
  responses:
12236
12183
  200:
12237
12184
  description: Success
@@ -12248,9 +12195,9 @@ paths:
12248
12195
  description: Not found
12249
12196
  post:
12250
12197
  tags:
12251
- - cases
12252
- summary: "Build the base path for cases endpoints / function basePath(collectionId: string, appId: string, admin: boolean = false)"
12253
- operationId: cases_create
12198
+ - records
12199
+ summary: "Create a new record POST /records When called on the public endpoint (admin = false) with an anonymous caller, and the app's `publicCreate.records.anonymous.edit.editToken` policy is enabled, the response includes a one-time `editToken` string."
12200
+ operationId: records_create
12254
12201
  security: []
12255
12202
  parameters:
12256
12203
  - name: zone
@@ -12274,7 +12221,7 @@ paths:
12274
12221
  content:
12275
12222
  application/json:
12276
12223
  schema:
12277
- $ref: "#/components/schemas/AppCase"
12224
+ $ref: "#/components/schemas/CreateRecordResponse"
12278
12225
  400:
12279
12226
  description: Bad request
12280
12227
  401:
@@ -12286,13 +12233,13 @@ paths:
12286
12233
  content:
12287
12234
  application/json:
12288
12235
  schema:
12289
- $ref: "#/components/schemas/CreateCaseInput"
12290
- /{zone}/collection/{collectionId}/app/{appId}/recordse)}/summary:
12236
+ $ref: "#/components/schemas/CreateRecordInput"
12237
+ /{zone}/collection/{collectionId}/app/{appId}/records/aggregate:
12291
12238
  post:
12292
12239
  tags:
12293
- - cases
12294
- summary: "Soft delete a case DELETE /cases/:caseId / export async function remove( collectionId: string, appId: string, caseId: st"
12295
- operationId: cases_summary
12240
+ - records
12241
+ summary: Get aggregate statistics for records POST /records/aggregate
12242
+ operationId: records_aggregate
12296
12243
  security: []
12297
12244
  parameters:
12298
12245
  - name: zone
@@ -12316,7 +12263,7 @@ paths:
12316
12263
  content:
12317
12264
  application/json:
12318
12265
  schema:
12319
- $ref: "#/components/schemas/CaseSummaryResponse"
12266
+ $ref: "#/components/schemas/AggregateResponse"
12320
12267
  400:
12321
12268
  description: Bad request
12322
12269
  401:
@@ -12328,13 +12275,13 @@ paths:
12328
12275
  content:
12329
12276
  application/json:
12330
12277
  schema:
12331
- $ref: "#/components/schemas/CaseSummaryRequest"
12332
- /{zone}/collection/{collectionId}/app/{appId}/recordse)}/{caseId}/history:
12278
+ $ref: "#/components/schemas/AggregateRequest"
12279
+ /{zone}/collection/{collectionId}/app/{appId}/records/bulk-delete:
12333
12280
  post:
12334
12281
  tags:
12335
- - cases
12336
- summary: "Get aggregate statistics for cases POST /cases/aggregate / export async function aggregate( collectionId: string, appId:"
12337
- operationId: cases_appendHistory
12282
+ - records
12283
+ summary: Soft-delete records in bulk.
12284
+ operationId: records_bulkDelete
12338
12285
  security: []
12339
12286
  parameters:
12340
12287
  - name: zone
@@ -12352,7 +12299,44 @@ paths:
12352
12299
  required: true
12353
12300
  schema:
12354
12301
  type: string
12355
- - name: caseId
12302
+ responses:
12303
+ 200:
12304
+ description: Success
12305
+ content:
12306
+ application/json:
12307
+ schema:
12308
+ $ref: "#/components/schemas/BulkDeleteResult"
12309
+ 400:
12310
+ description: Bad request
12311
+ 401:
12312
+ description: Unauthorized
12313
+ 404:
12314
+ description: Not found
12315
+ requestBody:
12316
+ required: true
12317
+ content:
12318
+ application/json:
12319
+ schema:
12320
+ $ref: "#/components/schemas/BulkDeleteInput"
12321
+ /{zone}/collection/{collectionId}/app/{appId}/records/bulk-upsert:
12322
+ post:
12323
+ tags:
12324
+ - records
12325
+ summary: Upsert up to 500 records in a single transaction.
12326
+ operationId: records_bulkUpsert
12327
+ security: []
12328
+ parameters:
12329
+ - name: zone
12330
+ in: path
12331
+ required: true
12332
+ schema:
12333
+ type: string
12334
+ - name: collectionId
12335
+ in: path
12336
+ required: true
12337
+ schema:
12338
+ type: string
12339
+ - name: appId
12356
12340
  in: path
12357
12341
  required: true
12358
12342
  schema:
@@ -12363,7 +12347,7 @@ paths:
12363
12347
  content:
12364
12348
  application/json:
12365
12349
  schema:
12366
- $ref: "#/components/schemas/AppCase"
12350
+ $ref: "#/components/schemas/BulkUpsertResult"
12367
12351
  400:
12368
12352
  description: Bad request
12369
12353
  401:
@@ -12375,13 +12359,15 @@ paths:
12375
12359
  content:
12376
12360
  application/json:
12377
12361
  schema:
12378
- $ref: "#/components/schemas/AppendHistoryInput"
12379
- /{zone}/collection/{collectionId}/app/{appId}/recordse)}/{caseId}/related:
12380
- get:
12362
+ type: array
12363
+ items:
12364
+ $ref: "#/components/schemas/BulkUpsertItem"
12365
+ /{zone}/collection/{collectionId}/app/{appId}/records/match:
12366
+ post:
12381
12367
  tags:
12382
- - cases
12383
- summary: "Get case summary (admin only) POST /cases/summary / export async function summary( collectionId: string, appId: string,"
12384
- operationId: cases_related
12368
+ - records
12369
+ summary: Match records against a runtime target scope.
12370
+ operationId: records_match
12385
12371
  security: []
12386
12372
  parameters:
12387
12373
  - name: zone
@@ -12399,7 +12385,44 @@ paths:
12399
12385
  required: true
12400
12386
  schema:
12401
12387
  type: string
12402
- - name: caseId
12388
+ responses:
12389
+ 200:
12390
+ description: Success
12391
+ content:
12392
+ application/json:
12393
+ schema:
12394
+ $ref: "#/components/schemas/MatchResult"
12395
+ 400:
12396
+ description: Bad request
12397
+ 401:
12398
+ description: Unauthorized
12399
+ 404:
12400
+ description: Not found
12401
+ requestBody:
12402
+ required: true
12403
+ content:
12404
+ application/json:
12405
+ schema:
12406
+ $ref: "#/components/schemas/MatchRecordsInput"
12407
+ /{zone}/collection/{collectionId}/app/{appId}/records/upsert:
12408
+ post:
12409
+ tags:
12410
+ - records
12411
+ summary: Upsert a record by ref — creates if no record with that ref exists, otherwise updates.
12412
+ operationId: records_upsert
12413
+ security: []
12414
+ parameters:
12415
+ - name: zone
12416
+ in: path
12417
+ required: true
12418
+ schema:
12419
+ type: string
12420
+ - name: collectionId
12421
+ in: path
12422
+ required: true
12423
+ schema:
12424
+ type: string
12425
+ - name: appId
12403
12426
  in: path
12404
12427
  required: true
12405
12428
  schema:
@@ -12410,19 +12433,25 @@ paths:
12410
12433
  content:
12411
12434
  application/json:
12412
12435
  schema:
12413
- $ref: "#/components/schemas/RelatedResponse"
12436
+ $ref: "#/components/schemas/UpsertRecordResponse"
12414
12437
  400:
12415
12438
  description: Bad request
12416
12439
  401:
12417
12440
  description: Unauthorized
12418
12441
  404:
12419
12442
  description: Not found
12420
- /{zone}/collection/{collectionId}/app/{appId}/recordse)}/{recordId}:
12421
- patch:
12443
+ requestBody:
12444
+ required: true
12445
+ content:
12446
+ application/json:
12447
+ schema:
12448
+ $ref: "#/components/schemas/UpsertRecordInput"
12449
+ /{zone}/collection/{collectionId}/app/{appId}/records/{recordId}:
12450
+ get:
12422
12451
  tags:
12423
12452
  - records
12424
- summary: records.updateWithToken
12425
- operationId: records_updateWithToken
12453
+ summary: "Get a single record by ID GET /records/:recordId"
12454
+ operationId: records_get
12426
12455
  security: []
12427
12456
  parameters:
12428
12457
  - name: zone
@@ -12458,19 +12487,11 @@ paths:
12458
12487
  description: Unauthorized
12459
12488
  404:
12460
12489
  description: Not found
12461
- requestBody:
12462
- required: true
12463
- content:
12464
- application/json:
12465
- schema:
12466
- type: object
12467
- additionalProperties: true
12468
- /{zone}/collection/{collectionId}/app/{appId}/recordsn)}/aggregate:
12469
- post:
12490
+ patch:
12470
12491
  tags:
12471
- - cases
12472
- summary: "Update a case PATCH /cases/:caseId Admin can update any field, public (owner) can only update data and owner zones / exp"
12473
- operationId: cases_aggregate
12492
+ - records
12493
+ summary: "Update a record PATCH /records/:recordId Admin can update any field, public (owner) can only update data and owner"
12494
+ operationId: records_update
12474
12495
  security: []
12475
12496
  parameters:
12476
12497
  - name: zone
@@ -12483,7 +12504,12 @@ paths:
12483
12504
  required: true
12484
12505
  schema:
12485
12506
  type: string
12486
- - name: appId
12507
+ - name: appId
12508
+ in: path
12509
+ required: true
12510
+ schema:
12511
+ type: string
12512
+ - name: recordId
12487
12513
  in: path
12488
12514
  required: true
12489
12515
  schema:
@@ -12494,7 +12520,7 @@ paths:
12494
12520
  content:
12495
12521
  application/json:
12496
12522
  schema:
12497
- $ref: "#/components/schemas/AggregateResponse"
12523
+ $ref: "#/components/schemas/AppRecord"
12498
12524
  400:
12499
12525
  description: Bad request
12500
12526
  401:
@@ -12506,13 +12532,13 @@ paths:
12506
12532
  content:
12507
12533
  application/json:
12508
12534
  schema:
12509
- $ref: "#/components/schemas/AggregateRequest"
12510
- /{zone}/collection/{collectionId}/app/{appId}/recordsn)}/{caseId}:
12511
- get:
12535
+ $ref: "#/components/schemas/UpdateRecordInput"
12536
+ /{zone}/collection/{collectionId}/app/{appId}/records/{recordId}/restore:
12537
+ post:
12512
12538
  tags:
12513
- - cases
12514
- summary: "Create a new case POST /cases / export async function create( collectionId: string, appId: string, input: CreateCaseInpu"
12515
- operationId: cases_get
12539
+ - records
12540
+ summary: Restore a soft-deleted record.
12541
+ operationId: records_restore
12516
12542
  security: []
12517
12543
  parameters:
12518
12544
  - name: zone
@@ -12530,7 +12556,7 @@ paths:
12530
12556
  required: true
12531
12557
  schema:
12532
12558
  type: string
12533
- - name: caseId
12559
+ - name: recordId
12534
12560
  in: path
12535
12561
  required: true
12536
12562
  schema:
@@ -12541,18 +12567,19 @@ paths:
12541
12567
  content:
12542
12568
  application/json:
12543
12569
  schema:
12544
- $ref: "#/components/schemas/AppCase"
12570
+ $ref: "#/components/schemas/AppRecord"
12545
12571
  400:
12546
12572
  description: Bad request
12547
12573
  401:
12548
12574
  description: Unauthorized
12549
12575
  404:
12550
12576
  description: Not found
12551
- patch:
12577
+ /{zone}/collection/{collectionId}/app/{appId}/threads:
12578
+ get:
12552
12579
  tags:
12553
- - cases
12554
- summary: "List cases with optional query parameters GET /cases / export async function list( collectionId: string, appId: string,"
12555
- operationId: cases_update
12580
+ - threads
12581
+ summary: List threads with optional query parameters GET /threads
12582
+ operationId: threads_list
12556
12583
  security: []
12557
12584
  parameters:
12558
12585
  - name: zone
@@ -12570,9 +12597,34 @@ paths:
12570
12597
  required: true
12571
12598
  schema:
12572
12599
  type: string
12573
- - name: caseId
12574
- in: path
12575
- required: true
12600
+ - name: slug
12601
+ in: query
12602
+ required: false
12603
+ schema:
12604
+ type: string
12605
+ - name: authorId
12606
+ in: query
12607
+ required: false
12608
+ schema:
12609
+ type: string
12610
+ - name: parentType
12611
+ in: query
12612
+ required: false
12613
+ schema:
12614
+ type: string
12615
+ - name: parentId
12616
+ in: query
12617
+ required: false
12618
+ schema:
12619
+ type: string
12620
+ - name: tag
12621
+ in: query
12622
+ required: false
12623
+ schema:
12624
+ type: string
12625
+ - name: contactId
12626
+ in: query
12627
+ required: false
12576
12628
  schema:
12577
12629
  type: string
12578
12630
  responses:
@@ -12581,25 +12633,19 @@ paths:
12581
12633
  content:
12582
12634
  application/json:
12583
12635
  schema:
12584
- $ref: "#/components/schemas/AppCase"
12636
+ type: object
12637
+ additionalProperties: true
12585
12638
  400:
12586
12639
  description: Bad request
12587
12640
  401:
12588
12641
  description: Unauthorized
12589
12642
  404:
12590
12643
  description: Not found
12591
- requestBody:
12592
- required: true
12593
- content:
12594
- application/json:
12595
- schema:
12596
- $ref: "#/components/schemas/UpdateCaseInput"
12597
- /{zone}/collection/{collectionId}/app/{appId}/recordsn)}/{recordId}:
12598
- get:
12644
+ post:
12599
12645
  tags:
12600
- - records
12601
- summary: "List records with optional query parameters GET /records / export async function list( collectionId: string, appId: stri"
12602
- operationId: records_get
12646
+ - threads
12647
+ summary: Create a new thread POST /threads
12648
+ operationId: threads_create
12603
12649
  security: []
12604
12650
  parameters:
12605
12651
  - name: zone
@@ -12617,29 +12663,31 @@ paths:
12617
12663
  required: true
12618
12664
  schema:
12619
12665
  type: string
12620
- - name: recordId
12621
- in: path
12622
- required: true
12623
- schema:
12624
- type: string
12625
12666
  responses:
12626
12667
  200:
12627
12668
  description: Success
12628
12669
  content:
12629
12670
  application/json:
12630
12671
  schema:
12631
- $ref: "#/components/schemas/AppRecord"
12672
+ $ref: "#/components/schemas/AppThread"
12632
12673
  400:
12633
12674
  description: Bad request
12634
12675
  401:
12635
12676
  description: Unauthorized
12636
12677
  404:
12637
12678
  description: Not found
12638
- patch:
12679
+ requestBody:
12680
+ required: true
12681
+ content:
12682
+ application/json:
12683
+ schema:
12684
+ $ref: "#/components/schemas/CreateThreadInput"
12685
+ /{zone}/collection/{collectionId}/app/{appId}/threads/aggregate:
12686
+ post:
12639
12687
  tags:
12640
- - records
12641
- summary: "List records with optional query parameters GET /records / export async function list( collectionId: string, appId: stri"
12642
- operationId: records_update
12688
+ - threads
12689
+ summary: Get aggregate statistics for threads POST /threads/aggregate
12690
+ operationId: threads_aggregate
12643
12691
  security: []
12644
12692
  parameters:
12645
12693
  - name: zone
@@ -12657,18 +12705,13 @@ paths:
12657
12705
  required: true
12658
12706
  schema:
12659
12707
  type: string
12660
- - name: recordId
12661
- in: path
12662
- required: true
12663
- schema:
12664
- type: string
12665
12708
  responses:
12666
12709
  200:
12667
12710
  description: Success
12668
12711
  content:
12669
12712
  application/json:
12670
12713
  schema:
12671
- $ref: "#/components/schemas/AppRecord"
12714
+ $ref: "#/components/schemas/AggregateResponse"
12672
12715
  400:
12673
12716
  description: Bad request
12674
12717
  401:
@@ -12680,12 +12723,12 @@ paths:
12680
12723
  content:
12681
12724
  application/json:
12682
12725
  schema:
12683
- $ref: "#/components/schemas/UpdateRecordInput"
12684
- /{zone}/collection/{collectionId}/app/{appId}/recordsn)}/{threadId}:
12726
+ $ref: "#/components/schemas/AggregateRequest"
12727
+ /{zone}/collection/{collectionId}/app/{appId}/threads/{threadId}:
12685
12728
  get:
12686
12729
  tags:
12687
12730
  - threads
12688
- summary: "Create a new thread POST /threads / export async function create( collectionId: string, appId: string, input: CreateThre"
12731
+ summary: "Get a single thread by ID GET /threads/:threadId"
12689
12732
  operationId: threads_get
12690
12733
  security: []
12691
12734
  parameters:
@@ -12725,7 +12768,7 @@ paths:
12725
12768
  patch:
12726
12769
  tags:
12727
12770
  - threads
12728
- summary: "List threads with optional query parameters GET /threads / export async function list( collectionId: string, appId: stri"
12771
+ summary: "Update a thread PATCH /threads/:threadId Admin can update any field, public (owner) can only update body, tags, data, ow"
12729
12772
  operationId: threads_update
12730
12773
  security: []
12731
12774
  parameters:
@@ -12768,11 +12811,11 @@ paths:
12768
12811
  application/json:
12769
12812
  schema:
12770
12813
  $ref: "#/components/schemas/UpdateThreadInput"
12771
- /{zone}/collection/{collectionId}/app/{appId}/recordsn)}/{threadId}/reply:
12814
+ /{zone}/collection/{collectionId}/app/{appId}/threads/{threadId}/reply:
12772
12815
  post:
12773
12816
  tags:
12774
12817
  - threads
12775
- summary: "Soft delete a thread DELETE /threads/:threadId / export async function remove( collectionId: string, appId: string, thre"
12818
+ summary: "Add a reply to a thread POST /threads/:threadId/reply Atomically appends to replies array, increments replyCount, update"
12776
12819
  operationId: threads_reply
12777
12820
  security: []
12778
12821
  parameters:
@@ -15471,6 +15514,174 @@ components:
15471
15514
  type: string
15472
15515
  contactId:
15473
15516
  type: string
15517
+ ScopeFacetClause:
15518
+ type: object
15519
+ properties:
15520
+ key:
15521
+ type: string
15522
+ valueKeys:
15523
+ type: array
15524
+ items:
15525
+ type: string
15526
+ required:
15527
+ - key
15528
+ - valueKeys
15529
+ RecordScope:
15530
+ type: object
15531
+ properties:
15532
+ productId:
15533
+ type: string
15534
+ variantId:
15535
+ type: string
15536
+ proofId:
15537
+ type: string
15538
+ batchId:
15539
+ type: string
15540
+ facets:
15541
+ type: array
15542
+ items:
15543
+ $ref: "#/components/schemas/ScopeFacetClause"
15544
+ RecordTarget:
15545
+ type: object
15546
+ properties:
15547
+ productId:
15548
+ type: string
15549
+ variantId:
15550
+ type: string
15551
+ proofId:
15552
+ type: string
15553
+ batchId:
15554
+ type: string
15555
+ facets:
15556
+ type: object
15557
+ additionalProperties:
15558
+ type: array
15559
+ items:
15560
+ type: string
15561
+ BulkUpsertItem:
15562
+ type: object
15563
+ properties:
15564
+ ref:
15565
+ type: string
15566
+ recordType:
15567
+ type: string
15568
+ customId:
15569
+ type: string
15570
+ sourceSystem:
15571
+ type: string
15572
+ startsAt:
15573
+ type: string
15574
+ expiresAt:
15575
+ type: string
15576
+ status:
15577
+ type: string
15578
+ scope:
15579
+ $ref: "#/components/schemas/RecordScope"
15580
+ data:
15581
+ type: object
15582
+ additionalProperties: true
15583
+ metadata:
15584
+ type: object
15585
+ additionalProperties: true
15586
+ required:
15587
+ - ref
15588
+ BulkUpsertResult:
15589
+ type: object
15590
+ properties:
15591
+ saved:
15592
+ type: number
15593
+ failed:
15594
+ type: number
15595
+ results:
15596
+ type: object
15597
+ additionalProperties: true
15598
+ required:
15599
+ - saved
15600
+ - failed
15601
+ - results
15602
+ BulkDeleteResult:
15603
+ type: object
15604
+ properties:
15605
+ deleted:
15606
+ type: number
15607
+ required:
15608
+ - deleted
15609
+ MatchedRecord:
15610
+ type: object
15611
+ properties:
15612
+ matchedAt:
15613
+ $ref: "#/components/schemas/MatchedAtLevel"
15614
+ required:
15615
+ - matchedAt
15616
+ MatchResult:
15617
+ type: object
15618
+ properties:
15619
+ records:
15620
+ type: array
15621
+ items:
15622
+ $ref: "#/components/schemas/MatchedRecord"
15623
+ best:
15624
+ type: object
15625
+ additionalProperties:
15626
+ $ref: "#/components/schemas/MatchedRecord"
15627
+ required:
15628
+ - records
15629
+ UpsertRecordInput:
15630
+ type: object
15631
+ properties:
15632
+ ref:
15633
+ type: string
15634
+ recordType:
15635
+ type: string
15636
+ customId:
15637
+ type: string
15638
+ sourceSystem:
15639
+ type: string
15640
+ startsAt:
15641
+ type: string
15642
+ expiresAt:
15643
+ type: string
15644
+ status:
15645
+ type: string
15646
+ scope:
15647
+ $ref: "#/components/schemas/RecordScope"
15648
+ data:
15649
+ type: object
15650
+ additionalProperties: true
15651
+ metadata:
15652
+ type: object
15653
+ additionalProperties: true
15654
+ required:
15655
+ - ref
15656
+ UpsertRecordResponse:
15657
+ type: object
15658
+ properties:
15659
+ created:
15660
+ type: boolean
15661
+ required:
15662
+ - created
15663
+ MatchRecordsInput:
15664
+ type: object
15665
+ properties:
15666
+ target:
15667
+ $ref: "#/components/schemas/RecordTarget"
15668
+ strategy:
15669
+ type: string
15670
+ enum:
15671
+ - all
15672
+ - best
15673
+ recordType:
15674
+ type: string
15675
+ limit:
15676
+ type: number
15677
+ includeScheduled:
15678
+ type: boolean
15679
+ includeExpired:
15680
+ type: boolean
15681
+ at:
15682
+ type: string
15683
+ required:
15684
+ - target
15474
15685
  AppRecord:
15475
15686
  type: object
15476
15687
  properties:
@@ -15488,6 +15699,10 @@ components:
15488
15699
  type: string
15489
15700
  ref:
15490
15701
  type: string
15702
+ customId:
15703
+ type: string
15704
+ sourceSystem:
15705
+ type: string
15491
15706
  status:
15492
15707
  type: string
15493
15708
  productId:
@@ -15514,6 +15729,10 @@ components:
15514
15729
  type: string
15515
15730
  deletedAt:
15516
15731
  type: string
15732
+ scope:
15733
+ $ref: "#/components/schemas/RecordScope"
15734
+ specificity:
15735
+ type: number
15517
15736
  data:
15518
15737
  type: object
15519
15738
  additionalProperties: true
@@ -15523,6 +15742,9 @@ components:
15523
15742
  admin:
15524
15743
  type: object
15525
15744
  additionalProperties: true
15745
+ metadata:
15746
+ type: object
15747
+ additionalProperties: true
15526
15748
  required:
15527
15749
  - id
15528
15750
  - orgId
@@ -15531,6 +15753,8 @@ components:
15531
15753
  - visibility
15532
15754
  - recordType
15533
15755
  - ref
15756
+ - customId
15757
+ - sourceSystem
15534
15758
  - status
15535
15759
  - productId
15536
15760
  - proofId
@@ -15544,9 +15768,12 @@ components:
15544
15768
  - startsAt
15545
15769
  - expiresAt
15546
15770
  - deletedAt
15771
+ - scope
15772
+ - specificity
15547
15773
  - data
15548
15774
  - owner
15549
15775
  - admin
15776
+ - metadata
15550
15777
  CreateRecordInput:
15551
15778
  type: object
15552
15779
  properties:
@@ -15576,6 +15803,12 @@ components:
15576
15803
  type: string
15577
15804
  expiresAt:
15578
15805
  type: string
15806
+ scope:
15807
+ $ref: "#/components/schemas/RecordScope"
15808
+ customId:
15809
+ type: string
15810
+ sourceSystem:
15811
+ type: string
15579
15812
  data:
15580
15813
  type: object
15581
15814
  additionalProperties: true
@@ -15585,6 +15818,9 @@ components:
15585
15818
  admin:
15586
15819
  type: object
15587
15820
  additionalProperties: true
15821
+ metadata:
15822
+ type: object
15823
+ additionalProperties: true
15588
15824
  required:
15589
15825
  - recordType
15590
15826
  UpdateRecordInput:
@@ -15611,6 +15847,15 @@ components:
15611
15847
  type: string
15612
15848
  expiresAt:
15613
15849
  type: string
15850
+ scope:
15851
+ $ref: "#/components/schemas/RecordScope"
15852
+ customId:
15853
+ type: string
15854
+ sourceSystem:
15855
+ type: string
15856
+ metadata:
15857
+ type: object
15858
+ additionalProperties: true
15614
15859
  RecordListQueryParams:
15615
15860
  type: object
15616
15861
  properties:
@@ -15618,8 +15863,20 @@ components:
15618
15863
  type: string
15619
15864
  ref:
15620
15865
  type: string
15866
+ refPrefix:
15867
+ type: string
15868
+ customId:
15869
+ type: string
15870
+ sourceSystem:
15871
+ type: string
15621
15872
  proofId:
15622
15873
  type: string
15874
+ variantId:
15875
+ type: string
15876
+ batchId:
15877
+ type: string
15878
+ q:
15879
+ type: string
15623
15880
  authorId:
15624
15881
  type: string
15625
15882
  parentType:
@@ -15630,8 +15887,16 @@ components:
15630
15887
  type: string
15631
15888
  expiresAt:
15632
15889
  type: string
15890
+ includeScheduled:
15891
+ type: boolean
15892
+ includeExpired:
15893
+ type: boolean
15894
+ at:
15895
+ type: string
15633
15896
  contactId:
15634
15897
  type: string
15898
+ includeDeleted:
15899
+ type: boolean
15635
15900
  RelatedResponse:
15636
15901
  type: object
15637
15902
  properties: