@proveanything/smartlinks 1.10.0 → 1.10.1
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/api/appObjects.d.ts +16 -1
- package/dist/api/appObjects.js +23 -0
- package/dist/docs/API_SUMMARY.md +107 -4
- package/dist/docs/app-objects.md +79 -9
- package/dist/openapi.yaml +213 -3
- package/dist/types/appObjects.d.ts +128 -6
- package/docs/API_SUMMARY.md +107 -4
- package/docs/app-objects.md +79 -9
- package/openapi.yaml +213 -3
- package/package.json +1 -1
package/dist/api/appObjects.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AppCase, CreateCaseInput, UpdateCaseInput, AppendHistoryInput, CaseSummaryRequest, CaseSummaryResponse, CaseListQueryParams, AppThread, CreateThreadInput, UpdateThreadInput, ReplyInput, ThreadListQueryParams, AppRecord, CreateRecordInput, CreateRecordResponse, UpdateRecordInput, UpsertRecordInput, UpsertRecordResponse, MatchRecordsInput, MatchResult, BulkUpsertItem, BulkUpsertResult, BulkDeleteResult, BulkDeleteInput, RecordListQueryParams, PaginatedResponse, AggregateRequest, AggregateResponse, RelatedResponse } from '../types/appObjects';
|
|
1
|
+
import type { AppCase, CreateCaseInput, UpdateCaseInput, AppendHistoryInput, CaseSummaryRequest, CaseSummaryResponse, CaseListQueryParams, AppThread, CreateThreadInput, UpdateThreadInput, ReplyInput, ThreadListQueryParams, AppRecord, CreateRecordInput, CreateRecordResponse, UpdateRecordInput, UpsertRecordInput, UpsertRecordResponse, MatchRecordsInput, MatchResult, BulkUpsertItem, BulkUpsertResult, BulkDeleteResult, BulkDeleteInput, RecordListQueryParams, ResolveAllParams, ResolveAllResult, PreviewRuleParams, PreviewRuleResult, PaginatedResponse, AggregateRequest, AggregateResponse, RelatedResponse } from '../types/appObjects';
|
|
2
2
|
export declare namespace app {
|
|
3
3
|
namespace cases {
|
|
4
4
|
/**
|
|
@@ -239,5 +239,20 @@ export declare namespace app {
|
|
|
239
239
|
* ```
|
|
240
240
|
*/
|
|
241
241
|
function bulkDelete(collectionId: string, appId: string, input: BulkDeleteInput): Promise<BulkDeleteResult>;
|
|
242
|
+
/**
|
|
243
|
+
* Resolve every applicable record for a product context in one call.
|
|
244
|
+
* Returns records across all tiers (proof, batch, variant, product, rule, facet, collection)
|
|
245
|
+
* deduplicated and sorted by specificity descending.
|
|
246
|
+
* POST /records/resolve-all
|
|
247
|
+
*
|
|
248
|
+
* @param admin - false for public (visibility-filtered), true for admin (all records)
|
|
249
|
+
*/
|
|
250
|
+
function resolveAll(collectionId: string, appId: string, input: ResolveAllParams, admin?: boolean): Promise<ResolveAllResult>;
|
|
251
|
+
/**
|
|
252
|
+
* Preview which products in the collection match a given facetRule.
|
|
253
|
+
* Admin only. Use for live "matches N products" feedback while authoring a rule.
|
|
254
|
+
* POST /records/preview-rule
|
|
255
|
+
*/
|
|
256
|
+
function previewRule(collectionId: string, appId: string, input: PreviewRuleParams): Promise<PreviewRuleResult>;
|
|
242
257
|
}
|
|
243
258
|
}
|
package/dist/api/appObjects.js
CHANGED
|
@@ -378,6 +378,29 @@ export var app;
|
|
|
378
378
|
return post(path, input);
|
|
379
379
|
}
|
|
380
380
|
records_1.bulkDelete = bulkDelete;
|
|
381
|
+
/**
|
|
382
|
+
* Resolve every applicable record for a product context in one call.
|
|
383
|
+
* Returns records across all tiers (proof, batch, variant, product, rule, facet, collection)
|
|
384
|
+
* deduplicated and sorted by specificity descending.
|
|
385
|
+
* POST /records/resolve-all
|
|
386
|
+
*
|
|
387
|
+
* @param admin - false for public (visibility-filtered), true for admin (all records)
|
|
388
|
+
*/
|
|
389
|
+
async function resolveAll(collectionId, appId, input, admin = false) {
|
|
390
|
+
const path = `${basePath(collectionId, appId, admin)}/resolve-all`;
|
|
391
|
+
return post(path, input);
|
|
392
|
+
}
|
|
393
|
+
records_1.resolveAll = resolveAll;
|
|
394
|
+
/**
|
|
395
|
+
* Preview which products in the collection match a given facetRule.
|
|
396
|
+
* Admin only. Use for live "matches N products" feedback while authoring a rule.
|
|
397
|
+
* POST /records/preview-rule
|
|
398
|
+
*/
|
|
399
|
+
async function previewRule(collectionId, appId, input) {
|
|
400
|
+
const path = `${basePath(collectionId, appId, true)}/preview-rule`;
|
|
401
|
+
return post(path, input);
|
|
402
|
+
}
|
|
403
|
+
records_1.previewRule = previewRule;
|
|
381
404
|
})(records = app.records || (app.records = {}));
|
|
382
405
|
})(app || (app = {})); // end namespace app
|
|
383
406
|
// ==================== HELPERS ====================
|
package/dist/docs/API_SUMMARY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Smartlinks API Summary
|
|
2
2
|
|
|
3
|
-
Version: 1.10.
|
|
3
|
+
Version: 1.10.1 | Generated: 2026-04-25T15:35:27.893Z
|
|
4
4
|
|
|
5
5
|
This is a concise summary of all available API functions and types.
|
|
6
6
|
|
|
@@ -1880,6 +1880,27 @@ interface ReplyInput {
|
|
|
1880
1880
|
}
|
|
1881
1881
|
```
|
|
1882
1882
|
|
|
1883
|
+
**FacetRuleClause** (interface)
|
|
1884
|
+
```typescript
|
|
1885
|
+
interface FacetRuleClause {
|
|
1886
|
+
* Facet key this clause tests, e.g. "brand", "type", "bread-type".
|
|
1887
|
+
* Must reference a defined facet on the collection.
|
|
1888
|
+
facetKey: string
|
|
1889
|
+
* One or more facet value keys that satisfy the clause (OR semantics).
|
|
1890
|
+
* At least one value required. Server deduplicates and sorts.
|
|
1891
|
+
anyOf: string[]
|
|
1892
|
+
}
|
|
1893
|
+
```
|
|
1894
|
+
|
|
1895
|
+
**FacetRule** (interface)
|
|
1896
|
+
```typescript
|
|
1897
|
+
interface FacetRule {
|
|
1898
|
+
* All clauses must be satisfied (AND semantics).
|
|
1899
|
+
* Must be non-empty; no duplicate facetKey entries.
|
|
1900
|
+
all: FacetRuleClause[]
|
|
1901
|
+
}
|
|
1902
|
+
```
|
|
1903
|
+
|
|
1883
1904
|
**ScopeFacetClause** (interface)
|
|
1884
1905
|
```typescript
|
|
1885
1906
|
interface ScopeFacetClause {
|
|
@@ -1927,6 +1948,7 @@ interface BulkUpsertItem {
|
|
|
1927
1948
|
scope?: RecordScope
|
|
1928
1949
|
data?: Record<string, unknown> | null
|
|
1929
1950
|
metadata?: Record<string, unknown> | null
|
|
1951
|
+
facetRule?: FacetRule | null
|
|
1930
1952
|
}
|
|
1931
1953
|
```
|
|
1932
1954
|
|
|
@@ -1950,13 +1972,26 @@ interface BulkDeleteResult {
|
|
|
1950
1972
|
}
|
|
1951
1973
|
```
|
|
1952
1974
|
|
|
1975
|
+
**MatchEntry** (interface)
|
|
1976
|
+
```typescript
|
|
1977
|
+
interface MatchEntry {
|
|
1978
|
+
record: AppRecord
|
|
1979
|
+
matchedAt: MatchedAt
|
|
1980
|
+
matchedRule?: FacetRule
|
|
1981
|
+
* Number of clauses in the rule that fired.
|
|
1982
|
+
* Present only when matchedAt === 'rule'.
|
|
1983
|
+
matchedClauseCount?: number
|
|
1984
|
+
specificity: number
|
|
1985
|
+
}
|
|
1986
|
+
```
|
|
1987
|
+
|
|
1953
1988
|
**MatchResult** (interface)
|
|
1954
1989
|
```typescript
|
|
1955
1990
|
interface MatchResult {
|
|
1956
|
-
records:
|
|
1991
|
+
records: MatchEntry[]
|
|
1957
1992
|
* Only present when strategy is 'best'.
|
|
1958
1993
|
* The single highest-specificity record per recordType.
|
|
1959
|
-
best?: Record<string,
|
|
1994
|
+
best?: Record<string, MatchEntry>
|
|
1960
1995
|
}
|
|
1961
1996
|
```
|
|
1962
1997
|
|
|
@@ -1973,6 +2008,7 @@ interface UpsertRecordInput {
|
|
|
1973
2008
|
scope?: RecordScope
|
|
1974
2009
|
data?: Record<string, unknown> | null
|
|
1975
2010
|
metadata?: Record<string, unknown> | null
|
|
2011
|
+
facetRule?: FacetRule | null
|
|
1976
2012
|
}
|
|
1977
2013
|
```
|
|
1978
2014
|
|
|
@@ -2022,6 +2058,10 @@ interface AppRecord {
|
|
|
2022
2058
|
* Numeric specificity score computed from scope.
|
|
2023
2059
|
* Higher = more specific. 0 = universal scope.
|
|
2024
2060
|
specificity: number
|
|
2061
|
+
* Facet rule for rule records (ref starts with "rule:").
|
|
2062
|
+
* null on all other record types. Mutually exclusive with scope.
|
|
2063
|
+
* SDK 1.10.
|
|
2064
|
+
facetRule: FacetRule | null
|
|
2025
2065
|
data: Record<string, unknown>
|
|
2026
2066
|
owner: Record<string, unknown>
|
|
2027
2067
|
admin: Record<string, unknown> // admin only
|
|
@@ -2052,6 +2092,7 @@ interface CreateRecordInput {
|
|
|
2052
2092
|
owner?: Record<string, unknown>
|
|
2053
2093
|
admin?: Record<string, unknown> // admin only
|
|
2054
2094
|
metadata?: Record<string, unknown>
|
|
2095
|
+
facetRule?: FacetRule | null
|
|
2055
2096
|
}
|
|
2056
2097
|
```
|
|
2057
2098
|
|
|
@@ -2071,6 +2112,57 @@ interface UpdateRecordInput {
|
|
|
2071
2112
|
customId?: string
|
|
2072
2113
|
sourceSystem?: string
|
|
2073
2114
|
metadata?: Record<string, unknown>
|
|
2115
|
+
facetRule?: FacetRule | null
|
|
2116
|
+
}
|
|
2117
|
+
```
|
|
2118
|
+
|
|
2119
|
+
**ResolveAllParams** (interface)
|
|
2120
|
+
```typescript
|
|
2121
|
+
interface ResolveAllParams {
|
|
2122
|
+
context: {
|
|
2123
|
+
productId?: string
|
|
2124
|
+
variantId?: string
|
|
2125
|
+
batchId?: string
|
|
2126
|
+
proofId?: string
|
|
2127
|
+
* Facet assignments for the product — used for both legacy facet-ref matching
|
|
2128
|
+
* and facetRule evaluation.
|
|
2129
|
+
* e.g. { "brand": "samsung", "type": ["tv", "laptop"] }
|
|
2130
|
+
facets?: Record<string, string | string[]>
|
|
2131
|
+
}
|
|
2132
|
+
recordType?: string
|
|
2133
|
+
tiers?: Array<'proof' | 'batch' | 'variant' | 'product' | 'rule' | 'facet' | 'collection'>
|
|
2134
|
+
limit?: number
|
|
2135
|
+
at?: string
|
|
2136
|
+
includeScheduled?: boolean
|
|
2137
|
+
includeExpired?: boolean
|
|
2138
|
+
}
|
|
2139
|
+
```
|
|
2140
|
+
|
|
2141
|
+
**ResolveAllResult** (interface)
|
|
2142
|
+
```typescript
|
|
2143
|
+
interface ResolveAllResult {
|
|
2144
|
+
* Every applicable record for the given product context, sorted by precedence
|
|
2145
|
+
* (most-specific first). Each record appears at most once.
|
|
2146
|
+
records: MatchEntry[]
|
|
2147
|
+
* true if the result was truncated at the safety cap.
|
|
2148
|
+
* Default cap: 500 records. Use `limit` to raise it (max 5000).
|
|
2149
|
+
truncated?: boolean
|
|
2150
|
+
}
|
|
2151
|
+
```
|
|
2152
|
+
|
|
2153
|
+
**PreviewRuleParams** (interface)
|
|
2154
|
+
```typescript
|
|
2155
|
+
interface PreviewRuleParams {
|
|
2156
|
+
facetRule: FacetRule
|
|
2157
|
+
limit?: number
|
|
2158
|
+
}
|
|
2159
|
+
```
|
|
2160
|
+
|
|
2161
|
+
**PreviewRuleResult** (interface)
|
|
2162
|
+
```typescript
|
|
2163
|
+
interface PreviewRuleResult {
|
|
2164
|
+
sampleProductIds: string[]
|
|
2165
|
+
totalMatches: number
|
|
2074
2166
|
}
|
|
2075
2167
|
```
|
|
2076
2168
|
|
|
@@ -2140,7 +2232,7 @@ interface PublicCreateBranch {
|
|
|
2140
2232
|
|
|
2141
2233
|
**BulkDeleteInput** = ``
|
|
2142
2234
|
|
|
2143
|
-
**
|
|
2235
|
+
**MatchedAt** = ``
|
|
2144
2236
|
|
|
2145
2237
|
### asset
|
|
2146
2238
|
|
|
@@ -7306,6 +7398,17 @@ Upsert up to 500 records in a single transaction. Each row is individually error
|
|
|
7306
7398
|
input: BulkDeleteInput) → `Promise<BulkDeleteResult>`
|
|
7307
7399
|
Soft-delete records in bulk. Supports two modes: - **refs mode**: explicit list of refs (max 1000) - **scope mode**: delete by scope anchor (productId / variantId / etc.) POST /records/bulk-delete (admin only) ```ts // Refs mode await app.records.bulkDelete(collectionId, appId, { refs: ['product:prod_abc', 'product:prod_xyz'], recordType: 'nutrition', }); // Scope mode await app.records.bulkDelete(collectionId, appId, { scope: { productId: 'prod_abc' }, }); ```
|
|
7308
7400
|
|
|
7401
|
+
**resolveAll**(collectionId: string,
|
|
7402
|
+
appId: string,
|
|
7403
|
+
input: ResolveAllParams,
|
|
7404
|
+
admin: boolean = false) → `Promise<ResolveAllResult>`
|
|
7405
|
+
Resolve every applicable record for a product context in one call. Returns records across all tiers (proof, batch, variant, product, rule, facet, collection) deduplicated and sorted by specificity descending. POST /records/resolve-all
|
|
7406
|
+
|
|
7407
|
+
**previewRule**(collectionId: string,
|
|
7408
|
+
appId: string,
|
|
7409
|
+
input: PreviewRuleParams) → `Promise<PreviewRuleResult>`
|
|
7410
|
+
Preview which products in the collection match a given facetRule. Admin only. Use for live "matches N products" feedback while authoring a rule. POST /records/preview-rule
|
|
7411
|
+
|
|
7309
7412
|
### app.threads
|
|
7310
7413
|
|
|
7311
7414
|
Conversation-oriented app objects for comments, discussions, Q&A, and reply-driven experiences.
|
package/dist/docs/app-objects.md
CHANGED
|
@@ -545,24 +545,94 @@ Every record in the response includes a `matchedAt` field indicating **which sco
|
|
|
545
545
|
```typescript
|
|
546
546
|
const { records } = await app.records.match(collectionId, appId, { target, recordType: 'nutrition' }, true);
|
|
547
547
|
|
|
548
|
-
for (const
|
|
549
|
-
switch (
|
|
550
|
-
case 'proof':
|
|
551
|
-
case 'batch':
|
|
552
|
-
case 'variant':
|
|
553
|
-
case 'product':
|
|
554
|
-
case '
|
|
555
|
-
case '
|
|
548
|
+
for (const entry of records) {
|
|
549
|
+
switch (entry.matchedAt) {
|
|
550
|
+
case 'proof': /* "Scan-specific" */ break;
|
|
551
|
+
case 'batch': /* "Batch-specific" */ break;
|
|
552
|
+
case 'variant': /* "Size-specific" */ break;
|
|
553
|
+
case 'product': /* "Inherited from product" */ break;
|
|
554
|
+
case 'rule': /* "Matches rule" */ break;
|
|
555
|
+
case 'facet': /* "Tier-specific" */ break;
|
|
556
|
+
case 'collection': /* "Collection default" */ break;
|
|
557
|
+
case 'universal': /* "Default" */ break;
|
|
556
558
|
}
|
|
557
559
|
}
|
|
558
560
|
```
|
|
559
561
|
|
|
560
|
-
Precedence follows
|
|
562
|
+
Precedence follows: `proof > batch > variant > product > rule > facet > collection > universal`.
|
|
561
563
|
|
|
562
564
|
#### React — `useResolvedRecord`
|
|
563
565
|
|
|
564
566
|
For React consumers, the `useResolvedRecord` hook in `@proveanything/smartlinks-utils-ui` wraps `records.match()` and returns the best-matching record with loading and error states. The raw `records.match()` API exists for non-React consumers and custom resolution logic.
|
|
565
567
|
|
|
568
|
+
### Facet-Rule Records
|
|
569
|
+
|
|
570
|
+
A record can declare a **multi-clause boolean rule** (`facetRule`) describing which products it applies to, instead of a single `scope.facets` entry. The rule is AND across facet keys, OR within values of each key:
|
|
571
|
+
|
|
572
|
+
```typescript
|
|
573
|
+
// Create a record that matches all Samsung TVs and laptops
|
|
574
|
+
await app.records.create(collectionId, appId, {
|
|
575
|
+
recordType: 'warranty',
|
|
576
|
+
facetRule: {
|
|
577
|
+
all: [
|
|
578
|
+
{ facetKey: 'brand', anyOf: ['samsung'] },
|
|
579
|
+
{ facetKey: 'type', anyOf: ['tv', 'laptop'] },
|
|
580
|
+
],
|
|
581
|
+
},
|
|
582
|
+
data: { warrantyYears: 2 },
|
|
583
|
+
}, true);
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
`facetRule` is **mutually exclusive with `scope`**. A record has either a structured scope or a facetRule, never both. The server assigns `ref: 'rule:<ulid>'` automatically.
|
|
587
|
+
|
|
588
|
+
Specificity for rule records: `Σ (50 + clause.anyOf.length)` across all clauses. A 2-clause rule with 1 value each scores `(50+1)+(50+1) = 102`, which ranks above a plain product-scoped record (100) in `resolveAll()` results.
|
|
589
|
+
|
|
590
|
+
Use `records.previewRule()` to see which products a rule would match before creating it:
|
|
591
|
+
|
|
592
|
+
```typescript
|
|
593
|
+
const { sampleProductIds, totalMatches } = await app.records.previewRule(collectionId, appId, {
|
|
594
|
+
facetRule: {
|
|
595
|
+
all: [{ facetKey: 'brand', anyOf: ['samsung'] }],
|
|
596
|
+
},
|
|
597
|
+
});
|
|
598
|
+
// totalMatches: 42, sampleProductIds: ['prod_001', 'prod_002', ...]
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
### Resolve All
|
|
602
|
+
|
|
603
|
+
Use `app.records.resolveAll()` to fetch **every applicable record for a product context** in one request—across all tiers (proof, batch, variant, product, rule, facet, collection defaults), deduplicated and sorted by specificity:
|
|
604
|
+
|
|
605
|
+
```typescript
|
|
606
|
+
// All records that apply to this product context (admin)
|
|
607
|
+
const { records, truncated } = await app.records.resolveAll(collectionId, appId, {
|
|
608
|
+
context: {
|
|
609
|
+
productId: 'prod_001',
|
|
610
|
+
facets: { brand: 'samsung', type: 'tv' },
|
|
611
|
+
},
|
|
612
|
+
recordType: 'warranty',
|
|
613
|
+
}, true);
|
|
614
|
+
|
|
615
|
+
for (const entry of records) {
|
|
616
|
+
console.log(entry.matchedAt, entry.specificity, entry.record.id);
|
|
617
|
+
if (entry.matchedAt === 'rule') {
|
|
618
|
+
console.log('rule fired:', entry.matchedRule, 'clauses:', entry.matchedClauseCount);
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
// Public endpoint — visibility-filtered (admin records excluded)
|
|
623
|
+
const { records: publicRecords } = await app.records.resolveAll(collectionId, appId, {
|
|
624
|
+
context: { productId: 'prod_001', facets: { brand: 'samsung' } },
|
|
625
|
+
}, false);
|
|
626
|
+
|
|
627
|
+
// Filter to specific tiers
|
|
628
|
+
const { records: ruleRecords } = await app.records.resolveAll(collectionId, appId, {
|
|
629
|
+
context: { productId: 'prod_001', facets: { brand: 'samsung', type: 'tv' } },
|
|
630
|
+
tiers: ['product', 'rule', 'collection'],
|
|
631
|
+
}, true);
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
`truncated: true` means the result hit the safety cap (default 500). Raise it with `limit` (max 5000).
|
|
635
|
+
|
|
566
636
|
### Upsert
|
|
567
637
|
|
|
568
638
|
Create-or-update a record by `ref` in a single call:
|
package/dist/openapi.yaml
CHANGED
|
@@ -12404,6 +12404,90 @@ paths:
|
|
|
12404
12404
|
application/json:
|
|
12405
12405
|
schema:
|
|
12406
12406
|
$ref: "#/components/schemas/MatchRecordsInput"
|
|
12407
|
+
/{zone}/collection/{collectionId}/app/{appId}/records/preview-rule:
|
|
12408
|
+
post:
|
|
12409
|
+
tags:
|
|
12410
|
+
- records
|
|
12411
|
+
summary: Preview which products in the collection match a given facetRule.
|
|
12412
|
+
operationId: records_previewRule
|
|
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
|
|
12426
|
+
in: path
|
|
12427
|
+
required: true
|
|
12428
|
+
schema:
|
|
12429
|
+
type: string
|
|
12430
|
+
responses:
|
|
12431
|
+
200:
|
|
12432
|
+
description: Success
|
|
12433
|
+
content:
|
|
12434
|
+
application/json:
|
|
12435
|
+
schema:
|
|
12436
|
+
$ref: "#/components/schemas/PreviewRuleResult"
|
|
12437
|
+
400:
|
|
12438
|
+
description: Bad request
|
|
12439
|
+
401:
|
|
12440
|
+
description: Unauthorized
|
|
12441
|
+
404:
|
|
12442
|
+
description: Not found
|
|
12443
|
+
requestBody:
|
|
12444
|
+
required: true
|
|
12445
|
+
content:
|
|
12446
|
+
application/json:
|
|
12447
|
+
schema:
|
|
12448
|
+
$ref: "#/components/schemas/PreviewRuleParams"
|
|
12449
|
+
/{zone}/collection/{collectionId}/app/{appId}/records/resolve-all:
|
|
12450
|
+
post:
|
|
12451
|
+
tags:
|
|
12452
|
+
- records
|
|
12453
|
+
summary: Resolve every applicable record for a product context in one call.
|
|
12454
|
+
operationId: records_resolveAll
|
|
12455
|
+
security: []
|
|
12456
|
+
parameters:
|
|
12457
|
+
- name: zone
|
|
12458
|
+
in: path
|
|
12459
|
+
required: true
|
|
12460
|
+
schema:
|
|
12461
|
+
type: string
|
|
12462
|
+
- name: collectionId
|
|
12463
|
+
in: path
|
|
12464
|
+
required: true
|
|
12465
|
+
schema:
|
|
12466
|
+
type: string
|
|
12467
|
+
- name: appId
|
|
12468
|
+
in: path
|
|
12469
|
+
required: true
|
|
12470
|
+
schema:
|
|
12471
|
+
type: string
|
|
12472
|
+
responses:
|
|
12473
|
+
200:
|
|
12474
|
+
description: Success
|
|
12475
|
+
content:
|
|
12476
|
+
application/json:
|
|
12477
|
+
schema:
|
|
12478
|
+
$ref: "#/components/schemas/ResolveAllResult"
|
|
12479
|
+
400:
|
|
12480
|
+
description: Bad request
|
|
12481
|
+
401:
|
|
12482
|
+
description: Unauthorized
|
|
12483
|
+
404:
|
|
12484
|
+
description: Not found
|
|
12485
|
+
requestBody:
|
|
12486
|
+
required: true
|
|
12487
|
+
content:
|
|
12488
|
+
application/json:
|
|
12489
|
+
schema:
|
|
12490
|
+
$ref: "#/components/schemas/ResolveAllParams"
|
|
12407
12491
|
/{zone}/collection/{collectionId}/app/{appId}/records/upsert:
|
|
12408
12492
|
post:
|
|
12409
12493
|
tags:
|
|
@@ -15514,6 +15598,27 @@ components:
|
|
|
15514
15598
|
type: string
|
|
15515
15599
|
contactId:
|
|
15516
15600
|
type: string
|
|
15601
|
+
FacetRuleClause:
|
|
15602
|
+
type: object
|
|
15603
|
+
properties:
|
|
15604
|
+
facetKey:
|
|
15605
|
+
type: string
|
|
15606
|
+
anyOf:
|
|
15607
|
+
type: array
|
|
15608
|
+
items:
|
|
15609
|
+
type: string
|
|
15610
|
+
required:
|
|
15611
|
+
- facetKey
|
|
15612
|
+
- anyOf
|
|
15613
|
+
FacetRule:
|
|
15614
|
+
type: object
|
|
15615
|
+
properties:
|
|
15616
|
+
all:
|
|
15617
|
+
type: array
|
|
15618
|
+
items:
|
|
15619
|
+
$ref: "#/components/schemas/FacetRuleClause"
|
|
15620
|
+
required:
|
|
15621
|
+
- all
|
|
15517
15622
|
ScopeFacetClause:
|
|
15518
15623
|
type: object
|
|
15519
15624
|
properties:
|
|
@@ -15583,6 +15688,8 @@ components:
|
|
|
15583
15688
|
metadata:
|
|
15584
15689
|
type: object
|
|
15585
15690
|
additionalProperties: true
|
|
15691
|
+
facetRule:
|
|
15692
|
+
$ref: "#/components/schemas/FacetRule"
|
|
15586
15693
|
required:
|
|
15587
15694
|
- ref
|
|
15588
15695
|
BulkUpsertResult:
|
|
@@ -15610,20 +15717,37 @@ components:
|
|
|
15610
15717
|
type: object
|
|
15611
15718
|
properties:
|
|
15612
15719
|
matchedAt:
|
|
15613
|
-
$ref: "#/components/schemas/
|
|
15720
|
+
$ref: "#/components/schemas/MatchedAt"
|
|
15721
|
+
required:
|
|
15722
|
+
- matchedAt
|
|
15723
|
+
MatchEntry:
|
|
15724
|
+
type: object
|
|
15725
|
+
properties:
|
|
15726
|
+
record:
|
|
15727
|
+
$ref: "#/components/schemas/AppRecord"
|
|
15728
|
+
matchedAt:
|
|
15729
|
+
$ref: "#/components/schemas/MatchedAt"
|
|
15730
|
+
matchedRule:
|
|
15731
|
+
$ref: "#/components/schemas/FacetRule"
|
|
15732
|
+
matchedClauseCount:
|
|
15733
|
+
type: number
|
|
15734
|
+
specificity:
|
|
15735
|
+
type: number
|
|
15614
15736
|
required:
|
|
15737
|
+
- record
|
|
15615
15738
|
- matchedAt
|
|
15739
|
+
- specificity
|
|
15616
15740
|
MatchResult:
|
|
15617
15741
|
type: object
|
|
15618
15742
|
properties:
|
|
15619
15743
|
records:
|
|
15620
15744
|
type: array
|
|
15621
15745
|
items:
|
|
15622
|
-
$ref: "#/components/schemas/
|
|
15746
|
+
$ref: "#/components/schemas/MatchEntry"
|
|
15623
15747
|
best:
|
|
15624
15748
|
type: object
|
|
15625
15749
|
additionalProperties:
|
|
15626
|
-
$ref: "#/components/schemas/
|
|
15750
|
+
$ref: "#/components/schemas/MatchEntry"
|
|
15627
15751
|
required:
|
|
15628
15752
|
- records
|
|
15629
15753
|
UpsertRecordInput:
|
|
@@ -15651,6 +15775,8 @@ components:
|
|
|
15651
15775
|
metadata:
|
|
15652
15776
|
type: object
|
|
15653
15777
|
additionalProperties: true
|
|
15778
|
+
facetRule:
|
|
15779
|
+
$ref: "#/components/schemas/FacetRule"
|
|
15654
15780
|
required:
|
|
15655
15781
|
- ref
|
|
15656
15782
|
UpsertRecordResponse:
|
|
@@ -15733,6 +15859,8 @@ components:
|
|
|
15733
15859
|
$ref: "#/components/schemas/RecordScope"
|
|
15734
15860
|
specificity:
|
|
15735
15861
|
type: number
|
|
15862
|
+
facetRule:
|
|
15863
|
+
$ref: "#/components/schemas/FacetRule"
|
|
15736
15864
|
data:
|
|
15737
15865
|
type: object
|
|
15738
15866
|
additionalProperties: true
|
|
@@ -15770,6 +15898,7 @@ components:
|
|
|
15770
15898
|
- deletedAt
|
|
15771
15899
|
- scope
|
|
15772
15900
|
- specificity
|
|
15901
|
+
- facetRule
|
|
15773
15902
|
- data
|
|
15774
15903
|
- owner
|
|
15775
15904
|
- admin
|
|
@@ -15821,6 +15950,8 @@ components:
|
|
|
15821
15950
|
metadata:
|
|
15822
15951
|
type: object
|
|
15823
15952
|
additionalProperties: true
|
|
15953
|
+
facetRule:
|
|
15954
|
+
$ref: "#/components/schemas/FacetRule"
|
|
15824
15955
|
required:
|
|
15825
15956
|
- recordType
|
|
15826
15957
|
UpdateRecordInput:
|
|
@@ -15856,6 +15987,8 @@ components:
|
|
|
15856
15987
|
metadata:
|
|
15857
15988
|
type: object
|
|
15858
15989
|
additionalProperties: true
|
|
15990
|
+
facetRule:
|
|
15991
|
+
$ref: "#/components/schemas/FacetRule"
|
|
15859
15992
|
RecordListQueryParams:
|
|
15860
15993
|
type: object
|
|
15861
15994
|
properties:
|
|
@@ -15897,6 +16030,83 @@ components:
|
|
|
15897
16030
|
type: string
|
|
15898
16031
|
includeDeleted:
|
|
15899
16032
|
type: boolean
|
|
16033
|
+
ResolveAllParams:
|
|
16034
|
+
type: object
|
|
16035
|
+
properties:
|
|
16036
|
+
context:
|
|
16037
|
+
type: object
|
|
16038
|
+
additionalProperties: true
|
|
16039
|
+
productId:
|
|
16040
|
+
type: string
|
|
16041
|
+
variantId:
|
|
16042
|
+
type: string
|
|
16043
|
+
batchId:
|
|
16044
|
+
type: string
|
|
16045
|
+
proofId:
|
|
16046
|
+
type: string
|
|
16047
|
+
facets:
|
|
16048
|
+
type: object
|
|
16049
|
+
additionalProperties:
|
|
16050
|
+
type: array
|
|
16051
|
+
items:
|
|
16052
|
+
type: object
|
|
16053
|
+
additionalProperties: true
|
|
16054
|
+
recordType:
|
|
16055
|
+
type: string
|
|
16056
|
+
tiers:
|
|
16057
|
+
type: array
|
|
16058
|
+
items:
|
|
16059
|
+
type: string
|
|
16060
|
+
enum:
|
|
16061
|
+
- proof
|
|
16062
|
+
- batch
|
|
16063
|
+
- variant
|
|
16064
|
+
- product
|
|
16065
|
+
- rule
|
|
16066
|
+
- facet
|
|
16067
|
+
- collection
|
|
16068
|
+
limit:
|
|
16069
|
+
type: number
|
|
16070
|
+
at:
|
|
16071
|
+
type: string
|
|
16072
|
+
includeScheduled:
|
|
16073
|
+
type: boolean
|
|
16074
|
+
includeExpired:
|
|
16075
|
+
type: boolean
|
|
16076
|
+
required:
|
|
16077
|
+
- context
|
|
16078
|
+
ResolveAllResult:
|
|
16079
|
+
type: object
|
|
16080
|
+
properties:
|
|
16081
|
+
records:
|
|
16082
|
+
type: array
|
|
16083
|
+
items:
|
|
16084
|
+
$ref: "#/components/schemas/MatchEntry"
|
|
16085
|
+
truncated:
|
|
16086
|
+
type: boolean
|
|
16087
|
+
required:
|
|
16088
|
+
- records
|
|
16089
|
+
PreviewRuleParams:
|
|
16090
|
+
type: object
|
|
16091
|
+
properties:
|
|
16092
|
+
facetRule:
|
|
16093
|
+
$ref: "#/components/schemas/FacetRule"
|
|
16094
|
+
limit:
|
|
16095
|
+
type: number
|
|
16096
|
+
required:
|
|
16097
|
+
- facetRule
|
|
16098
|
+
PreviewRuleResult:
|
|
16099
|
+
type: object
|
|
16100
|
+
properties:
|
|
16101
|
+
sampleProductIds:
|
|
16102
|
+
type: array
|
|
16103
|
+
items:
|
|
16104
|
+
type: string
|
|
16105
|
+
totalMatches:
|
|
16106
|
+
type: number
|
|
16107
|
+
required:
|
|
16108
|
+
- sampleProductIds
|
|
16109
|
+
- totalMatches
|
|
15900
16110
|
RelatedResponse:
|
|
15901
16111
|
type: object
|
|
15902
16112
|
properties:
|