@instruments/materialgraph 0.37.3 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/associations-client.js +12 -3
  2. package/by-spec-types.d.ts +1 -1
  3. package/catalogue-types.d.ts +36 -37
  4. package/categories-client.d.ts +2 -2
  5. package/client-response-schema.d.ts +3 -0
  6. package/client-response-schema.js +79 -0
  7. package/client.d.ts +9 -4
  8. package/client.js +46 -18
  9. package/color-profiles-types.d.ts +0 -10
  10. package/colors-client.d.ts +7 -5
  11. package/colors-client.js +6 -3
  12. package/errors.d.ts +4 -4
  13. package/errors.js +13 -10
  14. package/find-variants-by-color-types.d.ts +6 -8
  15. package/find-variants-by-vector-types.d.ts +3 -0
  16. package/get-variant-types.d.ts +22 -1
  17. package/http-transport.d.ts +2 -1
  18. package/http-transport.js +12 -10
  19. package/index.d.ts +22 -21
  20. package/material-block-types.d.ts +7 -1
  21. package/material-resources-client.js +4 -1
  22. package/nearest-paints-types.d.ts +33 -0
  23. package/nearest-paints-types.js +1 -0
  24. package/operation-responses.d.ts +65 -0
  25. package/operation-responses.js +1 -0
  26. package/operations.d.ts +4 -12
  27. package/operations.generated.d.ts +11 -0
  28. package/operations.generated.js +189 -0
  29. package/operations.js +10 -178
  30. package/package.json +2 -2
  31. package/parse-operation-response.d.ts +5 -0
  32. package/parse-operation-response.js +202 -0
  33. package/response-schemas.generated.d.ts +1 -1
  34. package/response-schemas.generated.js +35 -32
  35. package/runs.d.ts +2 -1
  36. package/runs.js +45 -12
  37. package/samplize-catalogue-types.d.ts +8 -8
  38. package/samplize-colorvec.js +111 -80
  39. package/search-variants-types.d.ts +1 -1
  40. package/sse.d.ts +2 -1
  41. package/sse.js +7 -5
  42. package/types.d.ts +6 -6
  43. package/webmcp.generated.js +3 -3
@@ -0,0 +1,189 @@
1
+ // GENERATED by apps/web/scripts/generate-openapi-v1.ts. Do not edit.
2
+ export const MATERIALGRAPH_API_VERSION = "0.8.0";
3
+ const OPERATION_DEFINITIONS = [
4
+ [
5
+ "colors.nearestPaints",
6
+ "GET",
7
+ "/api/v1/colors/nearest-paints",
8
+ "find_nearest_paints",
9
+ ],
10
+ [
11
+ "getCatalogueGeneration",
12
+ "GET",
13
+ "/api/v1/catalog/generation",
14
+ "get_catalogue_generation",
15
+ ],
16
+ ["catalogs", "GET", "/api/v1/catalogs", "list_catalog_documents"],
17
+ [
18
+ "catalogPages",
19
+ "GET",
20
+ "/api/v1/catalogs/{catalogId}/pages",
21
+ "list_catalog_pages",
22
+ ],
23
+ [
24
+ "catalogPageRepresentation",
25
+ "GET",
26
+ "/api/v1/catalog-pages/{pageId}/representation",
27
+ "get_catalog_page_representation",
28
+ ],
29
+ [
30
+ "catalogReferences",
31
+ "GET",
32
+ "/api/v1/catalogs/{catalogId}/references",
33
+ "list_catalog_product_references",
34
+ ],
35
+ [
36
+ "samplizeCatalogue",
37
+ "GET",
38
+ "/api/v1/catalogues/samplize/products",
39
+ "samplize_catalogue_products",
40
+ ],
41
+ [
42
+ "catalogueReferences",
43
+ "POST",
44
+ "/api/v1/catalogues/references",
45
+ "get_catalogue_references_batch",
46
+ ],
47
+ [
48
+ "catalogueCollections",
49
+ "GET",
50
+ "/api/v1/catalogues/collections",
51
+ "list_catalogue_channel_collections",
52
+ ],
53
+ [
54
+ "catalogueDocumentAccess",
55
+ "GET",
56
+ "/api/v1/catalogues/documents/{documentId}",
57
+ "get_catalogue_document_access",
58
+ ],
59
+ [
60
+ "materialBlocks",
61
+ "GET",
62
+ "/api/v1/materials/{variantId}/blocks",
63
+ "list_material_blocks",
64
+ ],
65
+ [
66
+ "listVariantAssets",
67
+ "GET",
68
+ "/api/v1/variants/{variantId}/assets",
69
+ "list_variant_assets",
70
+ ],
71
+ [
72
+ "materialDocuments",
73
+ "GET",
74
+ "/api/v1/materials/{variantId}/documents",
75
+ "list_material_documents",
76
+ ],
77
+ [
78
+ "schema",
79
+ "GET",
80
+ "/api/v1/schema/value-dictionaries",
81
+ "list_schema_value_dictionaries",
82
+ ],
83
+ [
84
+ "pairings",
85
+ "GET",
86
+ "/api/v1/materials/{variantId}/pairings",
87
+ "get_material_pairings",
88
+ ],
89
+ [
90
+ "associatedFinishes",
91
+ "GET",
92
+ "/api/v1/associated/finishes",
93
+ "list_associated_finishes",
94
+ ],
95
+ [
96
+ "associatedProducts",
97
+ "GET",
98
+ "/api/v1/associated/products",
99
+ "list_associated_products",
100
+ ],
101
+ ["applicability", "GET", "/api/v1/applicability", "get_applicability"],
102
+ ["listVariants", "GET", "/api/v1/variants", "list_variants"],
103
+ [
104
+ "listVariantFacets",
105
+ "POST",
106
+ "/api/v1/variants/facets",
107
+ "list_variant_facets",
108
+ ],
109
+ ["searchVariants", "POST", "/api/v1/variants/search", "search_variants"],
110
+ [
111
+ "findVariantsByColor",
112
+ "GET",
113
+ "/api/v1/variants/by-color",
114
+ "find_variants_by_color",
115
+ ],
116
+ [
117
+ "findVariantsByVector",
118
+ "POST",
119
+ "/api/v1/variants/by-vector",
120
+ "find_variants_by_vector",
121
+ ],
122
+ [
123
+ "findSampledTogether",
124
+ "GET",
125
+ "/api/v1/variants/sampled-together",
126
+ "find_sampled_together",
127
+ ],
128
+ ["resolveVariant", "POST", "/api/v1/variants/resolve", "resolve_variant"],
129
+ ["getVariant", "GET", "/api/v1/variants/{variantId}", "get_variant"],
130
+ [
131
+ "resolveColor",
132
+ "GET",
133
+ "/api/v1/search/colors/resolve",
134
+ "resolve_color_name",
135
+ ],
136
+ [
137
+ "listAttributes",
138
+ "GET",
139
+ "/api/v1/catalog/attributes",
140
+ "catalog_list_attributes",
141
+ ],
142
+ [
143
+ "listEnumValues",
144
+ "GET",
145
+ "/api/v1/catalog/enum-values",
146
+ "catalog_list_enum_values",
147
+ ],
148
+ ["categories.list", "GET", "/api/v1/categories", "list_categories"],
149
+ ["categories.get", "GET", "/api/v1/categories/{id}", "get_category"],
150
+ ["whoami", "GET", "/api/v1/whoami", "whoami"],
151
+ [
152
+ "colors.profiles",
153
+ "GET",
154
+ "/api/v1/colors/profiles",
155
+ "get_category_color_profiles",
156
+ ],
157
+ [
158
+ "extractPalette",
159
+ "POST",
160
+ "/api/v1/search/palettes/extract",
161
+ "extract_image_palette",
162
+ ],
163
+ ["brands", "GET", "/api/v1/brands", "list_brands"],
164
+ [
165
+ "uploadSourceMaterial",
166
+ "POST",
167
+ "/api/v1/source-material",
168
+ "upload_source_material",
169
+ ],
170
+ [
171
+ "workflows.start",
172
+ "POST",
173
+ "/api/v1/workflows/{workflowId}/runs",
174
+ "create_public_run",
175
+ ],
176
+ [
177
+ "workflows.run",
178
+ "GET",
179
+ "/api/v1/workflows/{workflowId}/runs/{runId}",
180
+ "get_public_run",
181
+ ],
182
+ [
183
+ "workflows.streamRunEvents",
184
+ "GET",
185
+ "/api/v1/workflows/{workflowId}/runs/{runId}/events",
186
+ "list_public_run_events",
187
+ ],
188
+ ];
189
+ export const SDK_OPERATIONS = Object.freeze(OPERATION_DEFINITIONS.map(([clientMethod, method, path, operationId]) => Object.freeze({ clientMethod, method, operationId, path })));
package/operations.js CHANGED
@@ -1,180 +1,6 @@
1
1
  import { MaterialGraphError } from "./errors.js";
2
- export const MATERIALGRAPH_API_VERSION = "0.8.0";
3
- const OPERATION_DEFINITIONS = [
4
- ["catalogs", "GET", "/api/v1/catalogs", "list_catalog_documents"],
5
- [
6
- "catalogPages",
7
- "GET",
8
- "/api/v1/catalogs/{catalogId}/pages",
9
- "list_catalog_pages",
10
- ],
11
- [
12
- "catalogPageRepresentation",
13
- "GET",
14
- "/api/v1/catalog-pages/{pageId}/representation",
15
- "get_catalog_page_representation",
16
- ],
17
- [
18
- "catalogReferences",
19
- "GET",
20
- "/api/v1/catalogs/{catalogId}/references",
21
- "list_catalog_product_references",
22
- ],
23
- [
24
- "samplizeCatalogue",
25
- "GET",
26
- "/api/v1/catalogues/samplize/products",
27
- "samplize_catalogue_products",
28
- ],
29
- [
30
- "catalogueReferences",
31
- "POST",
32
- "/api/v1/catalogues/references",
33
- "get_catalogue_references_batch",
34
- ],
35
- [
36
- "catalogueCollections",
37
- "GET",
38
- "/api/v1/catalogues/collections",
39
- "list_catalogue_channel_collections",
40
- ],
41
- [
42
- "catalogueDocumentAccess",
43
- "GET",
44
- "/api/v1/catalogues/documents/{documentId}",
45
- "get_catalogue_document_access",
46
- ],
47
- [
48
- "materialBlocks",
49
- "GET",
50
- "/api/v1/materials/{variantId}/blocks",
51
- "list_material_blocks",
52
- ],
53
- [
54
- "listVariantAssets",
55
- "GET",
56
- "/api/v1/variants/{variantId}/assets",
57
- "list_variant_assets",
58
- ],
59
- [
60
- "materialDocuments",
61
- "GET",
62
- "/api/v1/materials/{variantId}/documents",
63
- "list_material_documents",
64
- ],
65
- [
66
- "schema",
67
- "GET",
68
- "/api/v1/schema/value-dictionaries",
69
- "list_schema_value_dictionaries",
70
- ],
71
- [
72
- "pairings",
73
- "GET",
74
- "/api/v1/materials/{variantId}/pairings",
75
- "get_material_pairings",
76
- ],
77
- [
78
- "associatedFinishes",
79
- "GET",
80
- "/api/v1/associated/finishes",
81
- "list_associated_finishes",
82
- ],
83
- [
84
- "associatedProducts",
85
- "GET",
86
- "/api/v1/associated/products",
87
- "list_associated_products",
88
- ],
89
- ["applicability", "GET", "/api/v1/applicability", "get_applicability"],
90
- ["listVariants", "GET", "/api/v1/variants", "list_variants"],
91
- [
92
- "listVariantFacets",
93
- "POST",
94
- "/api/v1/variants/facets",
95
- "list_variant_facets",
96
- ],
97
- ["searchVariants", "POST", "/api/v1/variants/search", "search_variants"],
98
- [
99
- "findVariantsByColor",
100
- "POST",
101
- "/api/v1/variants/by-color",
102
- "find_variants_by_color",
103
- ],
104
- [
105
- "findVariantsByVector",
106
- "POST",
107
- "/api/v1/variants/by-vector",
108
- "find_variants_by_vector",
109
- ],
110
- [
111
- "findSampledTogether",
112
- "POST",
113
- "/api/v1/variants/sampled-together",
114
- "find_sampled_together",
115
- ],
116
- ["resolveVariant", "POST", "/api/v1/variants/resolve", "resolve_variant"],
117
- ["getVariant", "GET", "/api/v1/variants/{variantId}", "get_variant"],
118
- [
119
- "resolveColor",
120
- "GET",
121
- "/api/v1/search/colors/resolve",
122
- "resolve_color_name",
123
- ],
124
- [
125
- "listAttributes",
126
- "GET",
127
- "/api/v1/catalog/attributes",
128
- "catalog_list_attributes",
129
- ],
130
- [
131
- "listEnumValues",
132
- "GET",
133
- "/api/v1/catalog/enum-values",
134
- "catalog_list_enum_values",
135
- ],
136
- ["categories.list", "GET", "/api/v1/categories", "list_categories"],
137
- ["categories.get", "GET", "/api/v1/categories/{id}", "get_category"],
138
- ["whoami", "GET", "/api/v1/whoami", "whoami"],
139
- [
140
- "colors.profiles",
141
- "GET",
142
- "/api/v1/colors/profiles",
143
- "get_category_color_profiles",
144
- ],
145
- [
146
- "extractPalette",
147
- "POST",
148
- "/api/v1/search/palettes/extract",
149
- "extract_image_palette",
150
- ],
151
- ["brands", "GET", "/api/v1/brands", "list_brands"],
152
- [
153
- "uploadSourceMaterial",
154
- "POST",
155
- "/api/v1/source-material",
156
- "upload_source_material",
157
- ],
158
- [
159
- "workflows.start",
160
- "POST",
161
- "/api/v1/workflows/{workflowId}/runs",
162
- "create_public_run",
163
- ],
164
- [
165
- "workflows.run",
166
- "GET",
167
- "/api/v1/workflows/{workflowId}/runs/{runId}",
168
- "get_public_run",
169
- ],
170
- [
171
- "workflows.streamRunEvents",
172
- "GET",
173
- "/api/v1/workflows/{workflowId}/runs/{runId}/events",
174
- "list_public_run_events",
175
- ],
176
- ];
177
- export const SDK_OPERATIONS = Object.freeze(OPERATION_DEFINITIONS.map(([clientMethod, method, path, operationId]) => Object.freeze({ clientMethod, method, operationId, path })));
2
+ import { SDK_OPERATIONS, } from "./operations.generated.js";
3
+ export { MATERIALGRAPH_API_VERSION, SDK_OPERATIONS, } from "./operations.generated.js";
178
4
  /** Look up a registered operation by its OpenAPI `operationId`. */
179
5
  export const findSdkOperation = (operationId) => SDK_OPERATIONS.find((candidate) => candidate.operationId === operationId);
180
6
  /**
@@ -187,7 +13,13 @@ export const resolveOperation = (operationId) => {
187
13
  if (!match) {
188
14
  throw MaterialGraphError.unexpected(`Unknown SDK operation: ${operationId}`);
189
15
  }
190
- return match;
16
+ return { ...match, operationId };
191
17
  };
192
18
  /** Substitute `{param}` path placeholders with percent-encoded values. */
193
- export const operationPath = (sdkOperation, pathParams = {}) => Object.entries(pathParams).reduce((path, [name, value]) => path.replace(`{${name}}`, encodeURIComponent(value)), sdkOperation.path);
19
+ export const operationPath = (sdkOperation, pathParams = {}) => {
20
+ let path = sdkOperation.path;
21
+ for (const [name, value] of Object.entries(pathParams)) {
22
+ path = path.replace(`{${name}}`, encodeURIComponent(value));
23
+ }
24
+ return path;
25
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instruments/materialgraph",
3
- "version": "0.37.3",
3
+ "version": "0.39.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -21,7 +21,7 @@
21
21
  }
22
22
  },
23
23
  "dependencies": {
24
- "@instruments/colorscope": "^10.2.0"
24
+ "@instruments/colorscope": "^10.2.1"
25
25
  },
26
26
  "license": "Proprietary",
27
27
  "engines": {
@@ -0,0 +1,5 @@
1
+ import type { JsonOperationId, OperationResponses } from "./operation-responses.js";
2
+ import type { JsonSchema } from "./response-schemas.js";
3
+ /** Evaluate the JSON Schema keywords used by the published response contracts. */
4
+ export declare const matchesResponseSchema: (value: unknown, schema: unknown, root: JsonSchema) => boolean;
5
+ export declare const parseOperationResponse: <K extends JsonOperationId>(operationId: K, value: unknown) => Promise<OperationResponses[K]>;
@@ -0,0 +1,202 @@
1
+ import { openClientResponseEnums } from "./client-response-schema.js";
2
+ import { MaterialGraphError } from "./errors.js";
3
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
4
+ const sameJson = (left, right) => JSON.stringify(left) === JSON.stringify(right);
5
+ const matchesType = (value, type) => {
6
+ if (Array.isArray(type)) {
7
+ return type.some((candidate) => matchesType(value, candidate));
8
+ }
9
+ switch (type) {
10
+ case undefined: {
11
+ return true;
12
+ }
13
+ case "null": {
14
+ return value === null;
15
+ }
16
+ case "array": {
17
+ return Array.isArray(value);
18
+ }
19
+ case "object": {
20
+ return isRecord(value);
21
+ }
22
+ case "integer": {
23
+ return typeof value === "number" && Number.isInteger(value);
24
+ }
25
+ case "number": {
26
+ return typeof value === "number" && Number.isFinite(value);
27
+ }
28
+ case "string": {
29
+ return typeof value === "string";
30
+ }
31
+ case "boolean": {
32
+ return typeof value === "boolean";
33
+ }
34
+ default: {
35
+ return false;
36
+ }
37
+ }
38
+ };
39
+ const matchesNumberKeywords = (value, schema) => {
40
+ if (typeof value === "number") {
41
+ if (typeof schema.minimum === "number" && value < schema.minimum) {
42
+ return false;
43
+ }
44
+ if (typeof schema.maximum === "number" && value > schema.maximum) {
45
+ return false;
46
+ }
47
+ if (typeof schema.exclusiveMinimum === "number" &&
48
+ value <= schema.exclusiveMinimum) {
49
+ return false;
50
+ }
51
+ if (typeof schema.exclusiveMaximum === "number" &&
52
+ value >= schema.exclusiveMaximum) {
53
+ return false;
54
+ }
55
+ }
56
+ return true;
57
+ };
58
+ const matchesStringKeywords = (value, schema) => {
59
+ if (typeof value === "string") {
60
+ let length = 0;
61
+ for (const _codePoint of value) {
62
+ length += 1;
63
+ }
64
+ if (typeof schema.minLength === "number" && length < schema.minLength) {
65
+ return false;
66
+ }
67
+ if (typeof schema.maxLength === "number" && length > schema.maxLength) {
68
+ return false;
69
+ }
70
+ if (typeof schema.pattern === "string" &&
71
+ !new RegExp(schema.pattern, "u").test(value)) {
72
+ return false;
73
+ }
74
+ }
75
+ return true;
76
+ };
77
+ const matchesArrayKeywords = (value, schema, root) => {
78
+ if (Array.isArray(value)) {
79
+ if (typeof schema.minItems === "number" && value.length < schema.minItems) {
80
+ return false;
81
+ }
82
+ if (typeof schema.maxItems === "number" && value.length > schema.maxItems) {
83
+ return false;
84
+ }
85
+ const prefix = Array.isArray(schema.prefixItems) ? schema.prefixItems : [];
86
+ for (const [index, item] of value.entries()) {
87
+ const itemSchema = index < prefix.length ? prefix[index] : schema.items;
88
+ if (itemSchema !== undefined &&
89
+ !matchesResponseSchema(item, itemSchema, root)) {
90
+ return false;
91
+ }
92
+ }
93
+ }
94
+ return true;
95
+ };
96
+ const matchesObjectKeywords = (value, schema, root) => {
97
+ if (isRecord(value)) {
98
+ if (Array.isArray(schema.required) &&
99
+ !schema.required.every((key) => typeof key === "string" && Object.hasOwn(value, key))) {
100
+ return false;
101
+ }
102
+ const properties = isRecord(schema.properties) ? schema.properties : {};
103
+ for (const [key, item] of Object.entries(value)) {
104
+ if (schema.propertyNames !== undefined &&
105
+ !matchesResponseSchema(key, schema.propertyNames, root)) {
106
+ return false;
107
+ }
108
+ const property = Object.hasOwn(properties, key)
109
+ ? properties[key]
110
+ : schema.additionalProperties;
111
+ if (property !== undefined &&
112
+ !matchesResponseSchema(item, property, root)) {
113
+ return false;
114
+ }
115
+ }
116
+ }
117
+ return true;
118
+ };
119
+ const matchesResponseReference = (value, schema, root) => {
120
+ if (typeof schema.$ref === "string") {
121
+ if (!schema.$ref.startsWith("#/$defs/")) {
122
+ return false;
123
+ }
124
+ const name = schema.$ref
125
+ .slice(8)
126
+ .replaceAll("~1", "/")
127
+ .replaceAll("~0", "~");
128
+ if (!isRecord(root.$defs) ||
129
+ !matchesResponseSchema(value, root.$defs[name], root)) {
130
+ return false;
131
+ }
132
+ }
133
+ return true;
134
+ };
135
+ const matchesResponseValue = (value, schema) => {
136
+ if ("const" in schema && !sameJson(value, schema.const)) {
137
+ return false;
138
+ }
139
+ if (Array.isArray(schema.enum) &&
140
+ !schema.enum.some((candidate) => sameJson(candidate, value))) {
141
+ return false;
142
+ }
143
+ return true;
144
+ };
145
+ /** Evaluate the JSON Schema keywords used by the published response contracts. */
146
+ export const matchesResponseSchema = (value, schema, root) => {
147
+ if (typeof schema === "boolean") {
148
+ return schema;
149
+ }
150
+ if (!isRecord(schema)) {
151
+ return false;
152
+ }
153
+ if (!matchesResponseReference(value, schema, root)) {
154
+ return false;
155
+ }
156
+ if (!matchesType(value, schema.type)) {
157
+ return false;
158
+ }
159
+ if (!matchesResponseValue(value, schema)) {
160
+ return false;
161
+ }
162
+ if (Array.isArray(schema.anyOf) &&
163
+ !schema.anyOf.some((candidate) => matchesResponseSchema(value, candidate, root))) {
164
+ return false;
165
+ }
166
+ if ("not" in schema && matchesResponseSchema(value, schema.not, root)) {
167
+ return false;
168
+ }
169
+ if (!matchesNumberKeywords(value, schema)) {
170
+ return false;
171
+ }
172
+ if (!matchesStringKeywords(value, schema)) {
173
+ return false;
174
+ }
175
+ if (!matchesArrayKeywords(value, schema, root)) {
176
+ return false;
177
+ }
178
+ if (!matchesObjectKeywords(value, schema, root)) {
179
+ return false;
180
+ }
181
+ return true;
182
+ };
183
+ const schemas = new Map();
184
+ /** The operation's published schema, rather than a caller's type argument, proves its response. */
185
+ const isOperationResponse = (operationId, value) => {
186
+ const schema = schemas.get(operationId);
187
+ return schema !== undefined && matchesResponseSchema(value, schema, schema);
188
+ };
189
+ export const parseOperationResponse = async (operationId, value) => {
190
+ let schema = schemas.get(operationId);
191
+ if (!schema) {
192
+ // oxlint-disable-next-line howells/no-runtime-dynamic-imports -- Load the large response schema bundle only when a response needs validation.
193
+ const { responseSchema } = await import("./response-schemas.js");
194
+ schema = responseSchema(operationId);
195
+ openClientResponseEnums(schema);
196
+ schemas.set(operationId, schema);
197
+ }
198
+ if (!isOperationResponse(operationId, value)) {
199
+ throw MaterialGraphError.unexpected(`MaterialGraph ${operationId} returned an invalid response`);
200
+ }
201
+ return value;
202
+ };
@@ -1,5 +1,5 @@
1
1
  /** The API contract version the schemas were generated from. */
2
2
  export declare const RESPONSE_SCHEMA_API_VERSION = "0.8.0";
3
3
  /** Every SDK operation whose success response has a published JSON Schema. */
4
- export declare const RESPONSE_SCHEMA_OPERATION_IDS: readonly ["list_catalog_documents", "list_catalog_pages", "get_catalog_page_representation", "list_catalog_product_references", "samplize_catalogue_products", "get_catalogue_references_batch", "list_catalogue_channel_collections", "get_catalogue_document_access", "list_material_blocks", "list_variant_assets", "list_material_documents", "list_schema_value_dictionaries", "get_material_pairings", "list_associated_finishes", "list_associated_products", "get_applicability", "list_variants", "list_variant_facets", "search_variants", "find_variants_by_color", "find_variants_by_vector", "find_sampled_together", "resolve_variant", "get_variant", "resolve_color_name", "catalog_list_attributes", "catalog_list_enum_values", "list_categories", "get_category", "whoami", "get_category_color_profiles", "extract_image_palette", "list_brands", "upload_source_material", "create_public_run", "get_public_run"];
4
+ export declare const RESPONSE_SCHEMA_OPERATION_IDS: readonly ["find_nearest_paints", "get_catalogue_generation", "list_catalog_documents", "list_catalog_pages", "get_catalog_page_representation", "list_catalog_product_references", "samplize_catalogue_products", "get_catalogue_references_batch", "list_catalogue_channel_collections", "get_catalogue_document_access", "list_material_blocks", "list_variant_assets", "list_material_documents", "list_schema_value_dictionaries", "get_material_pairings", "list_associated_finishes", "list_associated_products", "get_applicability", "list_variants", "list_variant_facets", "search_variants", "find_variants_by_color", "find_variants_by_vector", "find_sampled_together", "resolve_variant", "get_variant", "resolve_color_name", "catalog_list_attributes", "catalog_list_enum_values", "list_categories", "get_category", "whoami", "get_category_color_profiles", "extract_image_palette", "list_brands", "upload_source_material", "create_public_run", "get_public_run"];
5
5
  export declare const RESPONSE_SCHEMA_CATALOGUE_JSON: string;