@instruments/materialgraph 0.25.0 → 0.26.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/association-types.d.ts +20 -20
- package/associations-client.d.ts +4 -4
- package/associations-client.js +3 -10
- package/attribution-types.d.ts +3 -3
- package/brand-most-sampled-types.d.ts +4 -4
- package/brand-types.d.ts +6 -6
- package/brands-client.d.ts +4 -4
- package/brands-client.js +9 -13
- package/browse-types.d.ts +8 -8
- package/by-colour-types.d.ts +18 -18
- package/by-spec-types.d.ts +14 -14
- package/catalog-discovery-types.d.ts +14 -14
- package/catalogue-client.d.ts +4 -4
- package/catalogue-client.js +38 -37
- package/catalogue-types.d.ts +4 -4
- package/citation-types.d.ts +4 -4
- package/client-browse.d.ts +4 -4
- package/client-browse.js +24 -25
- package/client-config.d.ts +2 -2
- package/client-exploration.d.ts +3 -3
- package/client-exploration.js +4 -6
- package/client-source-material-comments.d.ts +4 -4
- package/client-source-material-comments.js +4 -38
- package/client-vocabulary.d.ts +8 -8
- package/client-vocabulary.js +20 -30
- package/client.d.ts +11 -45
- package/client.js +143 -188
- package/codes-client.d.ts +2 -2
- package/codes-client.js +8 -8
- package/codes-types.d.ts +34 -34
- package/colour-aggregate-types.d.ts +24 -24
- package/colours-client.d.ts +2 -2
- package/colours-client.js +15 -15
- package/compare-types.d.ts +10 -10
- package/composition-client.d.ts +3 -3
- package/composition-client.js +8 -7
- package/composition-types.d.ts +12 -12
- package/coordinate-client.d.ts +2 -2
- package/coordinate-client.js +1 -13
- package/corpus-scope-types.d.ts +3 -3
- package/corpus-scope-types.js +1 -25
- package/correction-types.d.ts +10 -10
- package/demand-batch-types.d.ts +18 -18
- package/demand-types.d.ts +24 -24
- package/errors.d.ts +12 -12
- package/errors.js +53 -52
- package/exploration-types.d.ts +22 -22
- package/fan-deck-types.d.ts +6 -6
- package/http-transport.d.ts +13 -21
- package/http-transport.js +31 -28
- package/identify-types.d.ts +10 -10
- package/index.d.ts +0 -6
- package/index.js +0 -2
- package/match-rejection-types.d.ts +6 -6
- package/match-stream-types.d.ts +32 -32
- package/match-stream.d.ts +2 -2
- package/match-stream.js +55 -41
- package/match-types.d.ts +8 -8
- package/material-asset-types.d.ts +26 -26
- package/material-block-types.d.ts +6 -6
- package/material-query-plan-types.d.ts +26 -26
- package/material-resources-client.d.ts +5 -5
- package/material-resources-client.js +10 -20
- package/material-types.d.ts +12 -12
- package/ndjson.js +16 -8
- package/operations.d.ts +6 -6
- package/operations.js +9 -39
- package/package.json +1 -1
- package/palette-completion-types.d.ts +22 -22
- package/palette-search-types.d.ts +28 -28
- package/query-understanding-types.d.ts +38 -35
- package/render-assets-types.d.ts +8 -8
- package/resolve-client.d.ts +2 -2
- package/resolve-client.js +4 -6
- package/resolve-colour-types.d.ts +8 -8
- package/resolve-types.d.ts +10 -10
- package/run-types.d.ts +70 -70
- package/runs.d.ts +13 -26
- package/runs.js +77 -89
- package/samplize-catalogue-types.d.ts +18 -18
- package/samplize-colorvec.d.ts +20 -20
- package/samplize-colorvec.js +66 -42
- package/schema-resource-types.d.ts +38 -38
- package/schema-resource-types.js +5 -5
- package/search-card-types.d.ts +4 -4
- package/search-collapse-types.d.ts +4 -4
- package/search-mood-types.d.ts +2 -2
- package/search-refinement-types.d.ts +8 -8
- package/search-request-types.d.ts +5 -5
- package/search-response-receipt-types.d.ts +58 -42
- package/search-response-types.d.ts +2 -2
- package/search-result-validation.d.ts +3 -3
- package/search-result-validation.js +53 -36
- package/search-window-types.d.ts +2 -2
- package/slot-pool-types.d.ts +20 -20
- package/source-material-validation.d.ts +3 -3
- package/source-material-validation.js +35 -39
- package/spec-facet-types.d.ts +10 -10
- package/spec-types.d.ts +6 -6
- package/specifications.d.ts +9 -25
- package/specifications.js +15 -21
- package/sse.d.ts +2 -2
- package/sse.js +32 -16
- package/substitute-types.d.ts +22 -22
- package/suggest-types.d.ts +7 -7
- package/suggest-types.js +3 -3
- package/taxonomy-coverage-types.d.ts +8 -8
- package/types.d.ts +119 -119
- package/validation.d.ts +26 -26
- package/validation.js +97 -92
- package/webmcp.d.ts +2 -2
- package/webmcp.generated.js +94 -93
- package/project-types.d.ts +0 -79
- package/project-types.js +0 -9
- package/projects.d.ts +0 -13
- package/projects.js +0 -46
- package/run-events.d.ts +0 -106
- package/run-events.js +0 -32
- package/schedule-reference-types.d.ts +0 -46
- package/schedule-reference-types.js +0 -1
- package/schedule-references-client.d.ts +0 -14
- package/schedule-references-client.js +0 -26
- package/schedule-types.d.ts +0 -261
- package/schedule-types.js +0 -1
package/types.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export type { SearchResponse } from "./search-response-types.js";
|
|
2
1
|
import type { ResponseAttribution } from "./attribution-types.js";
|
|
3
2
|
import type { BySpecVerdict } from "./by-spec-types.js";
|
|
4
3
|
/**
|
|
@@ -36,6 +35,7 @@ import type { MoodInterpretation } from "./search-mood-types.js";
|
|
|
36
35
|
import type { SearchDisambiguation, SearchSuggestion } from "./search-refinement-types.js";
|
|
37
36
|
import type { CompoundColourConstraintReceipt, CompoundFormConstraintReceipt, SearchExecutionPlan, SearchMode, SearchRefinementReceipt, SearchRerankReport, SearchResponseExplainReceipts } from "./search-response-receipt-types.js";
|
|
38
37
|
import type { SearchWindowReceipt } from "./search-window-types.js";
|
|
38
|
+
export type { SearchResponse } from "./search-response-types.js";
|
|
39
39
|
export type * from "./search-response-receipt-types.js";
|
|
40
40
|
export type { MoodInterpretation } from "./search-mood-types.js";
|
|
41
41
|
export type OpenEnum<T extends string> = T | (string & {});
|
|
@@ -44,7 +44,7 @@ export type { JsonValue } from "./json-value-types.js";
|
|
|
44
44
|
* One palette swatch of a material's main image — colour DERIVED FROM PRODUCT
|
|
45
45
|
* IMAGERY, so read it as visual likeness, never as a declared colour spec.
|
|
46
46
|
*/
|
|
47
|
-
export
|
|
47
|
+
export type PaletteSwatch = {
|
|
48
48
|
hex: string;
|
|
49
49
|
proportion: number;
|
|
50
50
|
/** Stored human colour name for the swatch, when one was extracted. */
|
|
@@ -56,21 +56,21 @@ export interface PaletteSwatch {
|
|
|
56
56
|
* derived here" — never "achromatic".
|
|
57
57
|
*/
|
|
58
58
|
oklab?: OklabTriple;
|
|
59
|
-
}
|
|
59
|
+
};
|
|
60
60
|
/** Loose colour metadata for a search result's main image; every field is independently optional. */
|
|
61
|
-
export
|
|
61
|
+
export type ColourMeta = {
|
|
62
62
|
mood?: string;
|
|
63
63
|
dominantFamily?: string;
|
|
64
64
|
dominantHex?: string;
|
|
65
|
-
}
|
|
65
|
+
};
|
|
66
66
|
/** OKLab triple. */
|
|
67
|
-
export
|
|
67
|
+
export type OklabTriple = {
|
|
68
68
|
l: number;
|
|
69
69
|
a: number;
|
|
70
70
|
b: number;
|
|
71
|
-
}
|
|
71
|
+
};
|
|
72
72
|
/** The material's dominant-colour block (tile/detail projections). */
|
|
73
|
-
export
|
|
73
|
+
export type MaterialColour = {
|
|
74
74
|
dominantHex: string | null;
|
|
75
75
|
hsl: {
|
|
76
76
|
h: number;
|
|
@@ -80,12 +80,12 @@ export interface MaterialColour {
|
|
|
80
80
|
oklab: OklabTriple | null;
|
|
81
81
|
chroma: number | null;
|
|
82
82
|
vibrancy: number | null;
|
|
83
|
-
}
|
|
83
|
+
};
|
|
84
84
|
/** Where the served image came from. */
|
|
85
85
|
export type ImageSource = OpenEnum<"r2" | "origin">;
|
|
86
86
|
export type { DimensionEntry, MaterialAvailability, MaterialDetail, MaterialFacet, MaterialSuccessor, MaterialTile, SiblingTile, } from "./material-types.js";
|
|
87
87
|
/** Per-signal scores, present on a result when `explain` was requested. */
|
|
88
|
-
export
|
|
88
|
+
export type SearchResultSignals = {
|
|
89
89
|
/** Voyage similarity in the dedicated variant text-portrait space. */
|
|
90
90
|
portrait?: number | null;
|
|
91
91
|
image: number | null;
|
|
@@ -94,9 +94,9 @@ export interface SearchResultSignals {
|
|
|
94
94
|
lexical: number | null;
|
|
95
95
|
/** Compatibility slot for retired seeded secondary scoring; currently null. */
|
|
96
96
|
text: number | null;
|
|
97
|
-
}
|
|
97
|
+
};
|
|
98
98
|
/** An accepted/measured visual meaning — descriptive evidence, never a ranking cause. */
|
|
99
|
-
export
|
|
99
|
+
export type VisualMeaning = {
|
|
100
100
|
id: string;
|
|
101
101
|
label: string;
|
|
102
102
|
values: string[];
|
|
@@ -105,7 +105,7 @@ export interface VisualMeaning {
|
|
|
105
105
|
sourceBasis?: string;
|
|
106
106
|
version?: string;
|
|
107
107
|
appliedAt?: string;
|
|
108
|
-
}
|
|
108
|
+
};
|
|
109
109
|
/**
|
|
110
110
|
* One material in a search / match result list.
|
|
111
111
|
*
|
|
@@ -115,7 +115,7 @@ export interface VisualMeaning {
|
|
|
115
115
|
* answer is "no". A missing `retired` is not "still current"; a missing
|
|
116
116
|
* `visualMeanings` is not "this material has no visual meaning".
|
|
117
117
|
*/
|
|
118
|
-
export
|
|
118
|
+
export type SearchResultItem = {
|
|
119
119
|
/** This hit's attribution key — see {@link ResponseAttribution}. Opaque. */
|
|
120
120
|
resultId?: string;
|
|
121
121
|
/** Accepted sampleability fact. Absent means unknown, never false. */
|
|
@@ -266,7 +266,7 @@ export interface SearchResultItem {
|
|
|
266
266
|
* attribute rather than a list of candidates.
|
|
267
267
|
*/
|
|
268
268
|
attributes?: Record<string, string | string[] | null>;
|
|
269
|
-
}
|
|
269
|
+
};
|
|
270
270
|
/**
|
|
271
271
|
* A feed total with its honesty basis — THE CLAIM ABOUT THE MATCH SET, which is
|
|
272
272
|
* a different number from `results.length` (this page).
|
|
@@ -285,29 +285,29 @@ export interface SearchResultItem {
|
|
|
285
285
|
* A response with no `counts` at all states no total: `count: true` is opt-in,
|
|
286
286
|
* and the absence of a total is not a total of zero.
|
|
287
287
|
*/
|
|
288
|
-
export
|
|
288
|
+
export type CountedTotal = {
|
|
289
289
|
value: number;
|
|
290
290
|
basis: OpenEnum<"exact" | "lowerBound">;
|
|
291
|
-
}
|
|
291
|
+
};
|
|
292
292
|
/**
|
|
293
293
|
* Feed counts — present ONLY under `count:true` or `collapse:"product"`. This is
|
|
294
294
|
* the corpus-level claim; `results.length` is the page. Never report one as the
|
|
295
295
|
* other.
|
|
296
296
|
*/
|
|
297
|
-
export
|
|
297
|
+
export type SearchCounts = {
|
|
298
298
|
variants: CountedTotal;
|
|
299
299
|
products?: CountedTotal;
|
|
300
|
-
}
|
|
300
|
+
};
|
|
301
301
|
/**
|
|
302
302
|
* One value within a facet's counts: the CANONICAL token (send it back verbatim
|
|
303
303
|
* as a filter term), its display label, and how many variants in the counted
|
|
304
304
|
* set carry it.
|
|
305
305
|
*/
|
|
306
|
-
export
|
|
306
|
+
export type SearchFacetValue = {
|
|
307
307
|
value: string;
|
|
308
308
|
label: string;
|
|
309
309
|
variants: number;
|
|
310
|
-
}
|
|
310
|
+
};
|
|
311
311
|
/**
|
|
312
312
|
* One facet's counts. `basis` is the honesty label, and — per the negotiated
|
|
313
313
|
* MG-1010 contract — its union is CLOSED: exactly `"exact"` or `"lowerBound"`,
|
|
@@ -318,11 +318,11 @@ export interface SearchFacetValue {
|
|
|
318
318
|
* pool-counted value is NEVER `exact`. `truncated` is ALWAYS present: true
|
|
319
319
|
* when more distinct values existed beyond the reported list.
|
|
320
320
|
*/
|
|
321
|
-
export
|
|
321
|
+
export type SearchFacetCount = {
|
|
322
322
|
values: SearchFacetValue[];
|
|
323
323
|
truncated: boolean;
|
|
324
324
|
basis: "exact" | "lowerBound";
|
|
325
|
-
}
|
|
325
|
+
};
|
|
326
326
|
/**
|
|
327
327
|
* A requested facet that was not counted, with its reason: `"unsupported"` —
|
|
328
328
|
* the id is known but facet counting does not cover it; `"timeout"` — the
|
|
@@ -330,22 +330,22 @@ export interface SearchFacetCount {
|
|
|
330
330
|
* rail could not count; the page is intact). Render it as "couldn't count",
|
|
331
331
|
* never as zero.
|
|
332
332
|
*/
|
|
333
|
-
export
|
|
333
|
+
export type SearchAbsentFacet = {
|
|
334
334
|
facetId: string;
|
|
335
335
|
reason: OpenEnum<"unsupported" | "timeout">;
|
|
336
|
-
}
|
|
336
|
+
};
|
|
337
337
|
/**
|
|
338
338
|
* Per-query facet counts (MG-1010) — present ONLY when the request sent
|
|
339
339
|
* `facetCounts`. `counts` is keyed by requested facet id; every requested
|
|
340
340
|
* facet not in `absent` has an entry, including empty ones. `poolSize` is
|
|
341
341
|
* present exactly when the counts are pool-derived.
|
|
342
342
|
*/
|
|
343
|
-
export
|
|
343
|
+
export type SearchFacets = {
|
|
344
344
|
poolSize?: number;
|
|
345
345
|
requested: string[];
|
|
346
346
|
absent: SearchAbsentFacet[];
|
|
347
347
|
counts: Record<string, SearchFacetCount>;
|
|
348
|
-
}
|
|
348
|
+
};
|
|
349
349
|
/**
|
|
350
350
|
* The search response envelope. `view` discriminates the `results` union:
|
|
351
351
|
* `"full"` (default) carries {@link SearchResultItem}s, `"card"` the lean
|
|
@@ -358,7 +358,7 @@ export interface SearchFacets {
|
|
|
358
358
|
* you asked for it. Follow `cursor` for the rest. "I found 24 materials" is
|
|
359
359
|
* wrong whenever `limit` was 24.
|
|
360
360
|
*/
|
|
361
|
-
export
|
|
361
|
+
export type SearchData = {
|
|
362
362
|
/** Result attribution — see {@link ResponseAttribution}. `basis` is `mode` verbatim here. */
|
|
363
363
|
attribution?: ResponseAttribution;
|
|
364
364
|
view: OpenEnum<"full" | "card">;
|
|
@@ -410,6 +410,7 @@ export interface SearchData extends SearchResponseExplainReceipts {
|
|
|
410
410
|
facets?: SearchFacets;
|
|
411
411
|
/** Receipt that narrows the exact finalized pool behind lower-bound facets. */
|
|
412
412
|
refinement?: SearchRefinementReceipt;
|
|
413
|
+
/** One or more sentences written for a person; absent when there is nothing to say. */
|
|
413
414
|
note?: string;
|
|
414
415
|
timings?: Record<string, number>;
|
|
415
416
|
/** A detected mood term overridden by a stronger colour reading. */
|
|
@@ -438,51 +439,51 @@ export interface SearchData extends SearchResponseExplainReceipts {
|
|
|
438
439
|
query?: Record<string, unknown>;
|
|
439
440
|
/** A `getVariantBrief` echo of the seed variant, present only in `variantId` seed mode. */
|
|
440
441
|
seed?: MaterialTile | Record<string, unknown>;
|
|
441
|
-
}
|
|
442
|
+
} & SearchResponseExplainReceipts;
|
|
442
443
|
export type ColourDictionaryId = OpenEnum<"colour_family" | "colour_mood" | "colour_undertone">;
|
|
443
|
-
export
|
|
444
|
+
export type ColourFacetTerm = {
|
|
444
445
|
id: string;
|
|
445
446
|
label: string;
|
|
446
447
|
aliases: string[];
|
|
447
448
|
variants: number;
|
|
448
449
|
brands: number;
|
|
449
|
-
}
|
|
450
|
-
export
|
|
450
|
+
};
|
|
451
|
+
export type ColourFacetDictionary = {
|
|
451
452
|
attributeId: ColourDictionaryId;
|
|
452
453
|
name: string;
|
|
453
454
|
description: string;
|
|
454
455
|
terms: ColourFacetTerm[];
|
|
455
|
-
}
|
|
456
|
-
export
|
|
456
|
+
};
|
|
457
|
+
export type ColourFacetsResponse = {
|
|
457
458
|
count: number;
|
|
458
459
|
dictionaries: ColourFacetDictionary[];
|
|
459
|
-
}
|
|
460
|
-
export
|
|
460
|
+
};
|
|
461
|
+
export type CategoryNode = {
|
|
461
462
|
key: string;
|
|
462
463
|
name: string;
|
|
463
464
|
parentKey: string | null;
|
|
464
465
|
path: string;
|
|
465
466
|
level: OpenEnum<"group" | "type">;
|
|
466
|
-
}
|
|
467
|
-
export
|
|
467
|
+
};
|
|
468
|
+
export type TaxonomyResponse = {
|
|
468
469
|
count: number;
|
|
469
470
|
categories: CategoryNode[];
|
|
470
|
-
}
|
|
471
|
-
export
|
|
471
|
+
};
|
|
472
|
+
export type DemandMomentum = {
|
|
472
473
|
state: OpenEnum<"rising" | "fading" | "stable" | "emerging" | "insufficient_volume">;
|
|
473
474
|
percentChange: number | null;
|
|
474
475
|
trailingSpecCount: number;
|
|
475
476
|
priorSpecCount: number;
|
|
476
|
-
}
|
|
477
|
-
export
|
|
477
|
+
};
|
|
478
|
+
export type CompanionDemand = {
|
|
478
479
|
specCount: number;
|
|
479
480
|
projectCount: number;
|
|
480
481
|
momentum: DemandMomentum | null;
|
|
481
|
-
}
|
|
482
|
-
export
|
|
482
|
+
};
|
|
483
|
+
export type ProjectTypeShare = {
|
|
483
484
|
projectType: string;
|
|
484
485
|
projectCount: number;
|
|
485
|
-
}
|
|
486
|
+
};
|
|
486
487
|
/**
|
|
487
488
|
* A pairing item from the behavioural arm — real order evidence, or board
|
|
488
489
|
* curation when this seed has no order edges.
|
|
@@ -499,7 +500,7 @@ export interface ProjectTypeShare {
|
|
|
499
500
|
*
|
|
500
501
|
* See {@link ColourPairing} for the third, non-evidential arm.
|
|
501
502
|
*/
|
|
502
|
-
export
|
|
503
|
+
export type CospecPairing = {
|
|
503
504
|
/** The evidence tier. `cospec` = orders; `considered` = boards. Read it before phrasing. */
|
|
504
505
|
source: "cospec" | "considered";
|
|
505
506
|
/** Opaque — round-trip verbatim. */
|
|
@@ -536,29 +537,29 @@ export interface CospecPairing {
|
|
|
536
537
|
topProjectTypes: ProjectTypeShare[];
|
|
537
538
|
/** Graph-owned colour ranking facts, present only for an explicitly ordered rail. */
|
|
538
539
|
ranking?: PairingRanking;
|
|
539
|
-
}
|
|
540
|
+
};
|
|
540
541
|
/**
|
|
541
542
|
* A pairing item topped up from colour palette-similarity — a LOOK-ALIKE, not
|
|
542
543
|
* evidence. Nobody ordered these together and nobody boarded them together; the
|
|
543
544
|
* palettes sit near each other in OKLab. Say "shares a palette with" and never
|
|
544
545
|
* "specified together" or "often paired with".
|
|
545
546
|
*/
|
|
546
|
-
export
|
|
547
|
+
export type ColourPairing = {
|
|
547
548
|
source: "colour";
|
|
548
549
|
score: number;
|
|
549
550
|
/** Graph-owned colour ranking facts, present only for an explicitly ordered rail. */
|
|
550
551
|
ranking?: PairingRanking;
|
|
551
|
-
}
|
|
552
|
+
} & MaterialTile;
|
|
552
553
|
export type PairingOrderMode = "relevance" | "lightness_asc" | "lightness_desc";
|
|
553
554
|
export type PairingCorpus = "all" | "material_bank";
|
|
554
|
-
export
|
|
555
|
+
export type PairingRanking = {
|
|
555
556
|
anchorColourSimilarity: number | null;
|
|
556
557
|
lightness: number | null;
|
|
557
558
|
anchorColourSimilarityMeasurable: boolean;
|
|
558
559
|
lightnessMeasurable: boolean;
|
|
559
560
|
basis: OpenEnum<"dominant_colour_oklab">;
|
|
560
|
-
}
|
|
561
|
-
export
|
|
561
|
+
};
|
|
562
|
+
export type PairingOrdering = {
|
|
562
563
|
requested: OpenEnum<PairingOrderMode>;
|
|
563
564
|
applied: OpenEnum<PairingOrderMode>;
|
|
564
565
|
direction: OpenEnum<"ascending" | "descending">;
|
|
@@ -570,14 +571,14 @@ export interface PairingOrdering {
|
|
|
570
571
|
};
|
|
571
572
|
missingValues: OpenEnum<"last">;
|
|
572
573
|
tieBreak: OpenEnum<"variantId_asc">;
|
|
573
|
-
}
|
|
574
|
+
};
|
|
574
575
|
/**
|
|
575
576
|
* One pairing, discriminated by `source` into three tiers of very different
|
|
576
577
|
* strength: `cospec` (real orders) > `considered` (board activity) > `colour`
|
|
577
578
|
* (palette look-alike). Branch on `source` before you write a sentence about it.
|
|
578
579
|
*/
|
|
579
580
|
export type PairingItem = CospecPairing | ColourPairing;
|
|
580
|
-
export
|
|
581
|
+
export type PairingsResponse = {
|
|
581
582
|
seed: MaterialTile;
|
|
582
583
|
/** A rail, not a ranked corpus — mixed evidence tiers, capped by `limit`. */
|
|
583
584
|
items: PairingItem[];
|
|
@@ -598,70 +599,70 @@ export interface PairingsResponse {
|
|
|
598
599
|
ordering?: PairingOrdering;
|
|
599
600
|
/** Opaque continuation bound to the seed, filters, corpus, and order. */
|
|
600
601
|
nextCursor?: Cursor;
|
|
601
|
-
}
|
|
602
|
-
export
|
|
602
|
+
};
|
|
603
|
+
export type MaterialResponse = {
|
|
603
604
|
material: MaterialDetail;
|
|
604
605
|
/** Present only when `include: "siblings"` was requested. */
|
|
605
606
|
siblings?: SiblingTile[];
|
|
606
|
-
}
|
|
607
|
-
export
|
|
607
|
+
};
|
|
608
|
+
export type SiblingsResponse = {
|
|
608
609
|
siblings: SiblingTile[];
|
|
609
|
-
}
|
|
610
|
+
};
|
|
610
611
|
/**
|
|
611
612
|
* Batch read of tile projections. `materials` is NOT positional — resolve by
|
|
612
613
|
* `variantId`, and read `missingIds` rather than inferring absence from length.
|
|
613
614
|
*/
|
|
614
|
-
export
|
|
615
|
+
export type MaterialsBatchTileResponse = {
|
|
615
616
|
materials: MaterialTile[];
|
|
616
617
|
/** Requested ids that resolved to nothing. Echoed verbatim, opaque. */
|
|
617
618
|
missingIds: VariantId[];
|
|
618
|
-
}
|
|
619
|
+
};
|
|
619
620
|
/**
|
|
620
621
|
* Batch read of detail projections. `materials` is NOT positional — resolve by
|
|
621
622
|
* `variantId`, and read `missingIds` rather than inferring absence from length.
|
|
622
623
|
*/
|
|
623
|
-
export
|
|
624
|
+
export type MaterialsBatchDetailResponse = {
|
|
624
625
|
materials: MaterialDetail[];
|
|
625
626
|
/** Requested ids that resolved to nothing. Echoed verbatim, opaque. */
|
|
626
627
|
missingIds: VariantId[];
|
|
627
|
-
}
|
|
628
|
-
export
|
|
629
|
-
suggestions:
|
|
628
|
+
};
|
|
629
|
+
export type SuggestColourResponse = {
|
|
630
|
+
suggestions: {
|
|
630
631
|
term: string;
|
|
631
632
|
hex: string;
|
|
632
633
|
libraryId?: string;
|
|
633
634
|
kind: string;
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
export
|
|
635
|
+
}[];
|
|
636
|
+
};
|
|
637
|
+
export type AttributeCandidate = {
|
|
637
638
|
attributeId: string;
|
|
638
639
|
name: string;
|
|
639
640
|
description: string;
|
|
640
641
|
score: number;
|
|
641
642
|
facetable: boolean;
|
|
642
643
|
blockIds: string[];
|
|
643
|
-
}
|
|
644
|
-
export
|
|
644
|
+
};
|
|
645
|
+
export type ResolveAttributeResponse = {
|
|
645
646
|
query: string;
|
|
646
647
|
candidates: AttributeCandidate[];
|
|
647
|
-
}
|
|
648
|
+
};
|
|
648
649
|
export type * from "./catalog-discovery-types.js";
|
|
649
650
|
export type * from "./resolve-types.js";
|
|
650
651
|
export type * from "./resolve-colour-types.js";
|
|
651
652
|
export type * from "./suggest-types.js";
|
|
652
653
|
export type * from "./by-spec-types.js";
|
|
653
|
-
export
|
|
654
|
+
export type WhoamiResponse = {
|
|
654
655
|
principal: string;
|
|
655
656
|
scopes: string[];
|
|
656
|
-
}
|
|
657
|
+
};
|
|
657
658
|
/** A single colour entry in a search palette — exactly one of `hex` or `name`. */
|
|
658
|
-
export
|
|
659
|
+
export type ColourInput = {
|
|
659
660
|
hex?: string;
|
|
660
661
|
name?: string;
|
|
661
662
|
weight?: number;
|
|
662
663
|
role?: OpenEnum<"any" | "is" | "accent">;
|
|
663
664
|
sourceName?: string;
|
|
664
|
-
}
|
|
665
|
+
};
|
|
665
666
|
/** A raw incoming image to search by. */
|
|
666
667
|
export type SearchImageInput = {
|
|
667
668
|
type: "url";
|
|
@@ -672,7 +673,7 @@ export type SearchImageInput = {
|
|
|
672
673
|
};
|
|
673
674
|
export type { SearchGetParams, SearchInput } from "./search-request-types.js";
|
|
674
675
|
/** Options for a batch material read. */
|
|
675
|
-
export
|
|
676
|
+
export type MaterialsBatchOptions = {
|
|
676
677
|
/** Projection depth. `tile` omits fields rather than reporting them absent. */
|
|
677
678
|
view?: "tile" | "detail";
|
|
678
679
|
/**
|
|
@@ -682,9 +683,9 @@ export interface MaterialsBatchOptions {
|
|
|
682
683
|
* `missingIds`, not an error.
|
|
683
684
|
*/
|
|
684
685
|
idKind?: OpenEnum<"variantId" | "materialBankId">;
|
|
685
|
-
}
|
|
686
|
+
};
|
|
686
687
|
/** Options for a pairings read. */
|
|
687
|
-
export
|
|
688
|
+
export type PairingsOptions = {
|
|
688
689
|
/** Comma-separated coarse category display names; filters both arms. */
|
|
689
690
|
categories?: string;
|
|
690
691
|
/** Page size, 1–24 inclusive (default 12). The server rejects (400), not clamps, values outside this range. */
|
|
@@ -697,14 +698,14 @@ export interface PairingsOptions {
|
|
|
697
698
|
corpus?: PairingCorpus;
|
|
698
699
|
/** The previous response's `nextCursor`, passed back verbatim. */
|
|
699
700
|
cursor?: Cursor;
|
|
700
|
-
}
|
|
701
|
+
};
|
|
701
702
|
/** Options for `catalog/attributes/resolve`. */
|
|
702
|
-
export
|
|
703
|
+
export type ResolveAttributeOptions = {
|
|
703
704
|
limit?: number;
|
|
704
705
|
facetableOnly?: boolean;
|
|
705
|
-
}
|
|
706
|
+
};
|
|
706
707
|
/** Options for `search/specifications`. */
|
|
707
|
-
export
|
|
708
|
+
export type BySpecOptions = {
|
|
708
709
|
limit?: number;
|
|
709
710
|
/**
|
|
710
711
|
* Numeric range criteria as `attribute:min..max` strings, ANDed with the
|
|
@@ -713,14 +714,14 @@ export interface BySpecOptions {
|
|
|
713
714
|
* token with neither is refused by the server rather than matching everything.
|
|
714
715
|
*/
|
|
715
716
|
ranges?: string[];
|
|
716
|
-
}
|
|
717
|
+
};
|
|
717
718
|
export type * from "./demand-types.js";
|
|
718
719
|
/** One quarter's tally. Sparse across a series — an absent quarter is not a zero. */
|
|
719
|
-
export
|
|
720
|
+
export type DemandQuarter = {
|
|
720
721
|
quarter: string;
|
|
721
722
|
specCount: number;
|
|
722
723
|
projectCount: number;
|
|
723
|
-
}
|
|
724
|
+
};
|
|
724
725
|
/**
|
|
725
726
|
* Which behavioural signal a demand read is scoped to — and therefore what a
|
|
726
727
|
* number drawn from it may honestly be called.
|
|
@@ -736,12 +737,12 @@ export interface DemandQuarter {
|
|
|
736
737
|
*/
|
|
737
738
|
export type DemandSignal = OpenEnum<"sampled" | "considered" | "specified">;
|
|
738
739
|
export type * from "./demand-batch-types.js";
|
|
739
|
-
export
|
|
740
|
-
colors:
|
|
740
|
+
export type ExtractedPalette = {
|
|
741
|
+
colors: {
|
|
741
742
|
hex: string;
|
|
742
743
|
name: string;
|
|
743
744
|
proportion: number;
|
|
744
|
-
}
|
|
745
|
+
}[];
|
|
745
746
|
dominant: {
|
|
746
747
|
family: string;
|
|
747
748
|
hex: string;
|
|
@@ -749,24 +750,24 @@ export interface ExtractedPalette {
|
|
|
749
750
|
oklch: string;
|
|
750
751
|
} | null;
|
|
751
752
|
mood: string;
|
|
752
|
-
}
|
|
753
|
-
export
|
|
753
|
+
};
|
|
754
|
+
export type ExtractPaletteResponse = {
|
|
754
755
|
palette: ExtractedPalette | null;
|
|
755
|
-
}
|
|
756
|
+
};
|
|
756
757
|
export type * from "./spec-facet-types.js";
|
|
757
|
-
export
|
|
758
|
+
export type ApplicableSpecAttribute = {
|
|
758
759
|
id: string;
|
|
759
760
|
name: string;
|
|
760
761
|
valueKind: string;
|
|
761
762
|
required: boolean;
|
|
762
|
-
}
|
|
763
|
-
export
|
|
763
|
+
};
|
|
764
|
+
export type ApplicableSpecBlock = {
|
|
764
765
|
blockId: string;
|
|
765
766
|
name: string;
|
|
766
767
|
applicability: OpenEnum<"required" | "recommended" | "optional" | "unusual">;
|
|
767
768
|
attributes: ApplicableSpecAttribute[];
|
|
768
|
-
}
|
|
769
|
-
export
|
|
769
|
+
};
|
|
770
|
+
export type ApplicableSpecsResponse = {
|
|
770
771
|
found: boolean;
|
|
771
772
|
productType: {
|
|
772
773
|
id: string;
|
|
@@ -774,8 +775,8 @@ export interface ApplicableSpecsResponse {
|
|
|
774
775
|
} | null;
|
|
775
776
|
blocks: ApplicableSpecBlock[];
|
|
776
777
|
hint?: string;
|
|
777
|
-
}
|
|
778
|
-
export
|
|
778
|
+
};
|
|
779
|
+
export type GlossaryAttributeMatch = {
|
|
779
780
|
kind: "attribute";
|
|
780
781
|
id: string;
|
|
781
782
|
name: string;
|
|
@@ -786,8 +787,8 @@ export interface GlossaryAttributeMatch {
|
|
|
786
787
|
comparable: boolean;
|
|
787
788
|
dictionaryId?: string;
|
|
788
789
|
usedInBlocks: string[];
|
|
789
|
-
}
|
|
790
|
-
export
|
|
790
|
+
};
|
|
791
|
+
export type GlossaryValueMatch = {
|
|
791
792
|
kind: "value";
|
|
792
793
|
id: string;
|
|
793
794
|
label: string;
|
|
@@ -796,18 +797,18 @@ export interface GlossaryValueMatch {
|
|
|
796
797
|
dictionaryId: string;
|
|
797
798
|
dictionaryName: string;
|
|
798
799
|
attributeIds: string[];
|
|
799
|
-
}
|
|
800
|
-
export
|
|
800
|
+
};
|
|
801
|
+
export type GlossaryTermResponse = {
|
|
801
802
|
found: boolean;
|
|
802
803
|
term: string;
|
|
803
804
|
match: GlossaryAttributeMatch | GlossaryValueMatch | null;
|
|
804
|
-
alternates?:
|
|
805
|
+
alternates?: {
|
|
805
806
|
kind: OpenEnum<"attribute" | "value">;
|
|
806
807
|
id: string;
|
|
807
808
|
label: string;
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
export
|
|
809
|
+
}[];
|
|
810
|
+
};
|
|
811
|
+
export type BrandProfile = {
|
|
811
812
|
id: string;
|
|
812
813
|
slug: string;
|
|
813
814
|
name: string;
|
|
@@ -823,34 +824,33 @@ export interface BrandProfile {
|
|
|
823
824
|
foundedYear: number | null;
|
|
824
825
|
description: string | null;
|
|
825
826
|
website: string | null;
|
|
826
|
-
}
|
|
827
|
-
export
|
|
827
|
+
};
|
|
828
|
+
export type BrandProfileResponse = {
|
|
828
829
|
found: boolean;
|
|
829
830
|
query: string;
|
|
830
831
|
brand: BrandProfile | null;
|
|
831
832
|
/** Trade / spec signals ON RECORD, keyed by attribute id. Absent = no value held (never infer false). */
|
|
832
833
|
trade: Record<string, boolean | string>;
|
|
833
|
-
links:
|
|
834
|
+
links: {
|
|
834
835
|
label: string;
|
|
835
836
|
url: string;
|
|
836
|
-
}
|
|
837
|
-
alternates:
|
|
837
|
+
}[];
|
|
838
|
+
alternates: {
|
|
838
839
|
id: string;
|
|
839
840
|
name: string;
|
|
840
|
-
}
|
|
841
|
-
}
|
|
841
|
+
}[];
|
|
842
|
+
};
|
|
842
843
|
/** Body for `POST /api/v1/search/palettes/extract`. */
|
|
843
|
-
export
|
|
844
|
+
export type ExtractPaletteInput = {
|
|
844
845
|
/** The query image as a data URI or bare base64 string. */
|
|
845
846
|
image: string;
|
|
846
847
|
/** Max palette swatches to return (default 6). */
|
|
847
848
|
max?: number;
|
|
848
|
-
}
|
|
849
|
+
};
|
|
849
850
|
/** Options for a cacheable GET batch read (`materialsCached`). */
|
|
850
|
-
export
|
|
851
|
-
}
|
|
851
|
+
export type MaterialsBatchGetOptions = MaterialsBatchOptions;
|
|
852
852
|
/** Options for `brands/{brandSlug}`. */
|
|
853
|
-
export
|
|
853
|
+
export type BrandOptions = {
|
|
854
854
|
/** Alternate fuzzy query; takes precedence over the path slug when present. */
|
|
855
855
|
q?: string;
|
|
856
|
-
}
|
|
856
|
+
};
|