@graphcommerce/algolia-products 9.1.0-canary.46 → 9.1.0-canary.48

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @graphcommerce/algolia-products
2
2
 
3
+ ## 9.1.0-canary.48
4
+
5
+ ## 9.1.0-canary.47
6
+
7
+ ### Patch Changes
8
+
9
+ - [`499b30c`](https://github.com/graphcommerce-org/graphcommerce/commit/499b30c275571a675b176e0c0397104b608ad0a0) - Updated used spec for API and expose the multi search endpoint. ([@paales](https://github.com/paales))
10
+
3
11
  ## 9.1.0-canary.46
4
12
 
5
13
  ## 9.1.0-canary.45
package/algolia-spec.yaml CHANGED
@@ -264,6 +264,7 @@ paths:
264
264
  tags:
265
265
  - search
266
266
  operationId: searchSingleIndex
267
+ x-mcp-tool: true
267
268
  x-use-read-transporter: true
268
269
  x-cacheable: true
269
270
  x-acl:
@@ -299,6 +300,75 @@ paths:
299
300
  $ref: '#/components/responses/MethodNotAllowed'
300
301
  '404':
301
302
  $ref: '#/components/responses/IndexNotFound'
303
+ /1/indexes/*/queries:
304
+ post:
305
+ tags:
306
+ - search
307
+ operationId: search
308
+ x-use-read-transporter: true
309
+ x-cacheable: true
310
+ x-legacy-signature: true
311
+ x-acl:
312
+ - search
313
+ summary: Search multiple indices
314
+ description: >
315
+ Sends multiple search requests to one or more indices.
316
+
317
+
318
+ This can be useful in these cases:
319
+
320
+
321
+ - Different indices for different purposes, such as, one index for products, another one for marketing content.
322
+
323
+ - Multiple searches to the same index—for example, with different filters.
324
+
325
+
326
+ Use the helper `searchForHits` or `searchForFacets` to get the results in a more convenient format, if you already know the return type you want.
327
+
328
+ requestBody:
329
+ required: true
330
+ description: >-
331
+ Muli-search request body. Results are returned in the same order as the requests.
332
+
333
+ content:
334
+ application/json:
335
+ schema:
336
+ title: searchMethodParams
337
+ type: object
338
+ additionalProperties: false
339
+ properties:
340
+ requests:
341
+ type: array
342
+ items:
343
+ $ref: '#/components/schemas/SearchQuery'
344
+ strategy:
345
+ $ref: '#/components/schemas/searchStrategy'
346
+ required:
347
+ - requests
348
+ responses:
349
+ '200':
350
+ description: OK
351
+ content:
352
+ application/json:
353
+ schema:
354
+ title: searchResponses
355
+ type: object
356
+ additionalProperties: false
357
+ properties:
358
+ results:
359
+ type: array
360
+ items:
361
+ $ref: '#/components/schemas/searchResult'
362
+ required:
363
+ - results
364
+ '400':
365
+ $ref: '#/components/responses/BadRequest'
366
+ '402':
367
+ $ref: '#/components/responses/FeatureNotEnabled'
368
+ '403':
369
+ $ref: '#/components/responses/MethodNotAllowed'
370
+ '404':
371
+ $ref: '#/components/responses/IndexNotFound'
302
372
  /1/indexes/{indexName}/facets/{facetName}/query:
303
373
  post:
304
374
  tags:
@@ -364,8 +434,9 @@ paths:
364
434
  tags:
365
435
  - search
366
436
  operationId: getSettings
437
+ x-mcp-tool: true
367
438
  x-acl:
368
- - search
439
+ - settings
369
440
  description: Retrieves an object with non-null index settings.
370
441
  summary: Retrieve index settings
371
442
  parameters:
@@ -385,6 +456,310 @@ paths:
385
456
  $ref: '#/components/responses/MethodNotAllowed'
386
457
  '404':
387
458
  $ref: '#/components/responses/IndexNotFound'
459
+ /1/indexes/{indexName}/synonyms/{objectID}:
460
+ get:
461
+ tags:
462
+ - search
463
+ operationId: getSynonym
464
+ x-acl:
465
+ - settings
466
+ summary: Retrieve a synonym
467
+ description: |
468
+ Retrieves a synonym by its ID.
469
+ To find the object IDs for your synonyms,
470
+ use the [`search` operation](#tag/Synonyms/operation/searchSynonyms).
471
+ parameters:
472
+ - $ref: '#/components/parameters/IndexName'
473
+ - $ref: '#/components/parameters/parameters_ObjectID'
474
+ responses:
475
+ '200':
476
+ description: OK
477
+ content:
478
+ application/json:
479
+ schema:
480
+ $ref: '#/components/schemas/synonymHit'
481
+ '400':
482
+ $ref: '#/components/responses/BadRequest'
483
+ '402':
484
+ $ref: '#/components/responses/FeatureNotEnabled'
485
+ '403':
486
+ $ref: '#/components/responses/MethodNotAllowed'
487
+ '404':
488
+ $ref: '#/components/responses/IndexNotFound'
489
+ /1/indexes/{indexName}/synonyms/search:
490
+ post:
491
+ tags:
492
+ - search
493
+ operationId: searchSynonyms
494
+ x-mcp-tool: true
495
+ x-use-read-transporter: true
496
+ x-cacheable: true
497
+ x-acl:
498
+ - settings
499
+ summary: Search for synonyms
500
+ description: Searches for synonyms in your index.
501
+ parameters:
502
+ - $ref: '#/components/parameters/IndexName'
503
+ requestBody:
504
+ description: Body of the `searchSynonyms` operation.
505
+ content:
506
+ application/json:
507
+ schema:
508
+ title: searchSynonymsParams
509
+ type: object
510
+ additionalProperties: false
511
+ properties:
512
+ query:
513
+ $ref: '#/components/schemas/query'
514
+ type:
515
+ $ref: '#/components/schemas/SynonymType'
516
+ page:
517
+ $ref: '#/components/schemas/page'
518
+ hitsPerPage:
519
+ $ref: '#/components/schemas/hitsPerPage'
520
+ responses:
521
+ '200':
522
+ description: OK
523
+ content:
524
+ application/json:
525
+ schema:
526
+ $ref: '#/components/schemas/searchSynonymsResponse'
527
+ '400':
528
+ $ref: '#/components/responses/BadRequest'
529
+ '402':
530
+ $ref: '#/components/responses/FeatureNotEnabled'
531
+ '403':
532
+ $ref: '#/components/responses/MethodNotAllowed'
533
+ '404':
534
+ $ref: '#/components/responses/IndexNotFound'
535
+ /1/indexes/{indexName}/rules/{objectID}:
536
+ get:
537
+ tags:
538
+ - search
539
+ operationId: getRule
540
+ x-acl:
541
+ - settings
542
+ summary: Retrieve a rule
543
+ description: >
544
+ Retrieves a rule by its ID.
545
+
546
+ To find the object ID of rules, use the [`search` operation](#tag/Rules/operation/searchRules).
547
+
548
+ parameters:
549
+ - $ref: '#/components/parameters/IndexName'
550
+ - $ref: '#/components/parameters/ObjectIDRule'
551
+ responses:
552
+ '200':
553
+ description: OK
554
+ content:
555
+ application/json:
556
+ schema:
557
+ $ref: '#/components/schemas/rule'
558
+ '400':
559
+ $ref: '#/components/responses/BadRequest'
560
+ '402':
561
+ $ref: '#/components/responses/FeatureNotEnabled'
562
+ '403':
563
+ $ref: '#/components/responses/MethodNotAllowed'
564
+ '404':
565
+ $ref: '#/components/responses/IndexNotFound'
566
+ /1/indexes/{indexName}/rules/search:
567
+ post:
568
+ tags:
569
+ - search
570
+ operationId: searchRules
571
+ x-mcp-tool: true
572
+ x-use-read-transporter: true
573
+ x-cacheable: true
574
+ x-acl:
575
+ - settings
576
+ summary: Search for rules
577
+ description: Searches for rules in your index.
578
+ parameters:
579
+ - $ref: '#/components/parameters/IndexName'
580
+ requestBody:
581
+ content:
582
+ application/json:
583
+ schema:
584
+ title: searchRulesParams
585
+ type: object
586
+ description: Rules search parameters.
587
+ additionalProperties: false
588
+ properties:
589
+ query:
590
+ $ref: '#/components/schemas/parameters_query'
591
+ anchoring:
592
+ $ref: '#/components/schemas/anchoring'
593
+ context:
594
+ type: string
595
+ description: Only return rules that match the context (exact match).
596
+ example: mobile
597
+ page:
598
+ $ref: '#/components/schemas/parameters_page'
599
+ hitsPerPage:
600
+ $ref: '#/components/schemas/parameters_hitsPerPage'
601
+ enabled:
602
+ oneOf:
603
+ - type: boolean
604
+ description: |
605
+ If `true`, return only enabled rules.
606
+ If `false`, return only inactive rules.
607
+ By default, _all_ rules are returned.
608
+ - type: 'null'
609
+ default: null
610
+ responses:
611
+ '200':
612
+ description: OK
613
+ content:
614
+ application/json:
615
+ schema:
616
+ title: searchRulesResponse
617
+ type: object
618
+ additionalProperties: false
619
+ required:
620
+ - hits
621
+ - nbHits
622
+ - page
623
+ - nbPages
624
+ properties:
625
+ hits:
626
+ type: array
627
+ description: Rules that matched the search criteria.
628
+ items:
629
+ $ref: '#/components/schemas/rule'
630
+ nbHits:
631
+ type: integer
632
+ description: Number of rules that matched the search criteria.
633
+ page:
634
+ type: integer
635
+ description: Current page.
636
+ nbPages:
637
+ type: integer
638
+ description: Number of pages.
639
+ '400':
640
+ $ref: '#/components/responses/BadRequest'
641
+ '402':
642
+ $ref: '#/components/responses/FeatureNotEnabled'
643
+ '403':
644
+ $ref: '#/components/responses/MethodNotAllowed'
645
+ '404':
646
+ $ref: '#/components/responses/IndexNotFound'
647
+ /1/dictionaries/{dictionaryName}/search:
648
+ post:
649
+ tags:
650
+ - search
651
+ operationId: searchDictionaryEntries
652
+ x-use-read-transporter: true
653
+ x-cacheable: true
654
+ x-acl:
655
+ - settings
656
+ description: Searches for standard and custom dictionary entries.
657
+ summary: Search dictionary entries
658
+ parameters:
659
+ - $ref: '#/components/parameters/DictionaryName'
660
+ requestBody:
661
+ required: true
662
+ content:
663
+ application/json:
664
+ schema:
665
+ title: searchDictionaryEntriesParams
666
+ description: Search parameter.
667
+ type: object
668
+ required:
669
+ - query
670
+ additionalProperties: false
671
+ properties:
672
+ query:
673
+ $ref: '#/components/schemas/query'
674
+ page:
675
+ $ref: '#/components/schemas/page'
676
+ hitsPerPage:
677
+ $ref: '#/components/schemas/hitsPerPage'
678
+ language:
679
+ $ref: '#/components/schemas/supportedLanguage'
680
+ responses:
681
+ '200':
682
+ description: OK
683
+ content:
684
+ application/json:
685
+ schema:
686
+ $ref: '#/components/schemas/searchDictionaryEntriesResponse'
687
+ '400':
688
+ $ref: '#/components/responses/BadRequest'
689
+ '402':
690
+ $ref: '#/components/responses/FeatureNotEnabled'
691
+ '403':
692
+ $ref: '#/components/responses/MethodNotAllowed'
693
+ '404':
694
+ $ref: '#/components/responses/IndexNotFound'
695
+ /1/dictionaries/*/settings:
696
+ get:
697
+ tags:
698
+ - search
699
+ operationId: getDictionarySettings
700
+ x-acl:
701
+ - settings
702
+ summary: Retrieve dictionary settings
703
+ description: >-
704
+ Retrieves the languages for which standard dictionary entries are turned off.
705
+
706
+ responses:
707
+ '200':
708
+ description: OK
709
+ content:
710
+ application/json:
711
+ schema:
712
+ title: getDictionarySettingsResponse
713
+ additionalProperties: false
714
+ type: object
715
+ required:
716
+ - disableStandardEntries
717
+ properties:
718
+ disableStandardEntries:
719
+ $ref: '#/components/schemas/standardEntries'
720
+ '400':
721
+ $ref: '#/components/responses/BadRequest'
722
+ '402':
723
+ $ref: '#/components/responses/FeatureNotEnabled'
724
+ '403':
725
+ $ref: '#/components/responses/MethodNotAllowed'
726
+ '404':
727
+ $ref: '#/components/responses/IndexNotFound'
728
+ /1/dictionaries/*/languages:
729
+ get:
730
+ tags:
731
+ - search
732
+ operationId: getDictionaryLanguages
733
+ x-acl:
734
+ - settings
735
+ description: >
736
+ Lists supported languages with their supported dictionary types and number of custom entries.
737
+
738
+ summary: List available languages
739
+ externalDocs:
740
+ url: >-
741
+ https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/in-depth/supported-languages/
742
+
743
+ description: Supported languages.
744
+ responses:
745
+ '200':
746
+ description: OK
747
+ content:
748
+ application/json:
749
+ schema:
750
+ title: getDictionaryLanguagesResponse
751
+ type: object
752
+ additionalProperties:
753
+ x-additionalPropertiesName: language
754
+ $ref: '#/components/schemas/languages'
755
+ '400':
756
+ $ref: '#/components/responses/BadRequest'
757
+ '402':
758
+ $ref: '#/components/responses/FeatureNotEnabled'
759
+ '403':
760
+ $ref: '#/components/responses/MethodNotAllowed'
761
+ '404':
762
+ $ref: '#/components/responses/IndexNotFound'
388
763
  components:
389
764
  securitySchemes:
390
765
  appId:
@@ -1085,6 +1460,8 @@ components:
1085
1460
  enum:
1086
1461
  - min
1087
1462
  - strict
1463
+ - 'true'
1464
+ - 'false'
1088
1465
  typoTolerance:
1089
1466
  description: >
1090
1467
  Whether [typo tolerance](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/typo-tolerance/) is enabled and how it is applied.
@@ -2058,8 +2435,6 @@ components:
2058
2435
  baseSearchResponse:
2059
2436
  type: object
2060
2437
  additionalProperties: true
2061
- required:
2062
- - processingTimeMS
2063
2438
  properties:
2064
2439
  abTestID:
2065
2440
  type: integer
@@ -2271,6 +2646,7 @@ components:
2271
2646
  - partial
2272
2647
  - full
2273
2648
  highlightResultOption:
2649
+ title: highlightResultOption
2274
2650
  type: object
2275
2651
  description: Surround words that match the query with HTML tags for highlighting.
2276
2652
  additionalProperties: false
@@ -2297,6 +2673,7 @@ components:
2297
2673
  - matchLevel
2298
2674
  - matchedWords
2299
2675
  highlightResultMap:
2676
+ title: highlightResultMap
2300
2677
  type: object
2301
2678
  description: Surround words that match the query with HTML tags for highlighting.
2302
2679
  x-is-free-form: false
@@ -2309,11 +2686,13 @@ components:
2309
2686
  - $ref: '#/components/schemas/highlightResultMap'
2310
2687
  - $ref: '#/components/schemas/highlightResultArray'
2311
2688
  highlightResultArray:
2689
+ title: highlightResultArray
2312
2690
  type: array
2313
2691
  description: Surround words that match the query with HTML tags for highlighting.
2314
2692
  items:
2315
2693
  $ref: '#/components/schemas/highlightResult'
2316
2694
  snippetResultOption:
2695
+ title: snippetResultOption
2317
2696
  type: object
2318
2697
  description: Snippets that show the context around a matching search query.
2319
2698
  additionalProperties: false
@@ -2328,6 +2707,7 @@ components:
2328
2707
  x-discriminator-fields:
2329
2708
  - matchLevel
2330
2709
  snippetResultMap:
2710
+ title: snippetResultMap
2331
2711
  type: object
2332
2712
  description: Snippets that show the context around a matching search query.
2333
2713
  x-is-free-form: false
@@ -2340,6 +2720,7 @@ components:
2340
2720
  - $ref: '#/components/schemas/snippetResultMap'
2341
2721
  - $ref: '#/components/schemas/snippetResultArray'
2342
2722
  snippetResultArray:
2723
+ title: snippetResultArray
2343
2724
  type: array
2344
2725
  description: Snippets that show the context around a matching search query.
2345
2726
  items:
@@ -4102,10 +4483,12 @@ components:
4102
4483
  example: 100
4103
4484
  dataSize:
4104
4485
  type: integer
4486
+ format: int64
4105
4487
  description: Number of bytes of the index in minified format.
4106
4488
  example: 48450
4107
4489
  fileSize:
4108
4490
  type: integer
4491
+ format: int64
4109
4492
  description: Number of bytes of the index binary file.
4110
4493
  example: 112927
4111
4494
  lastBuildTimeS:
@@ -4262,6 +4645,127 @@ components:
4262
4645
  - copyOperationResponse
4263
4646
  - batchResponses
4264
4647
  - moveOperationResponse
4648
+ RunID:
4649
+ type: string
4650
+ description: Universally unique identifier (UUID) of a task run.
4651
+ example: 6c02aeb1-775e-418e-870b-1faccd4b2c0f
4652
+ EventID:
4653
+ type: string
4654
+ description: Universally unique identifier (UUID) of an event.
4655
+ example: 6c02aeb1-775e-418e-870b-1faccd4b2c0f
4656
+ EventStatus:
4657
+ oneOf:
4658
+ - type: string
4659
+ enum:
4660
+ - created
4661
+ - started
4662
+ - retried
4663
+ - failed
4664
+ - succeeded
4665
+ - critical
4666
+ - type: 'null'
4667
+ EventType:
4668
+ type: string
4669
+ enum:
4670
+ - fetch
4671
+ - record
4672
+ - log
4673
+ - transform
4674
+ PublishedAt:
4675
+ type: string
4676
+ description: Date of publish RFC 3339 format.
4677
+ Event:
4678
+ type: object
4679
+ description: An event describe a step of the task execution flow..
4680
+ additionalProperties: false
4681
+ properties:
4682
+ eventID:
4683
+ $ref: '#/components/schemas/EventID'
4684
+ runID:
4685
+ $ref: '#/components/schemas/RunID'
4686
+ status:
4687
+ $ref: '#/components/schemas/EventStatus'
4688
+ type:
4689
+ $ref: '#/components/schemas/EventType'
4690
+ batchSize:
4691
+ type: integer
4692
+ description: The extracted record batch size.
4693
+ example: 10
4694
+ minimum: 0
4695
+ multipleOf: 1
4696
+ data:
4697
+ oneOf:
4698
+ - type: object
4699
+ additionalProperties: true
4700
+ - type: 'null'
4701
+ publishedAt:
4702
+ $ref: '#/components/schemas/PublishedAt'
4703
+ required:
4704
+ - eventID
4705
+ - runID
4706
+ - status
4707
+ - type
4708
+ - batchSize
4709
+ - publishedAt
4710
+ CreatedAt:
4711
+ type: string
4712
+ description: Date of creation in RFC 3339 format.
4713
+ WatchResponse:
4714
+ type: object
4715
+ additionalProperties: false
4716
+ properties:
4717
+ runID:
4718
+ $ref: '#/components/schemas/RunID'
4719
+ eventID:
4720
+ $ref: '#/components/schemas/EventID'
4721
+ data:
4722
+ type: array
4723
+ description: >
4724
+ This field is always null when used with the Push endpoint.
4725
+
4726
+ When used for a source discover or source validate run, it will include the sampled data of the source.
4727
+
4728
+ items:
4729
+ type: object
4730
+ events:
4731
+ description: >-
4732
+ in case of error, observability events will be added to the response.
4733
+
4734
+ type: array
4735
+ items:
4736
+ $ref: '#/components/schemas/Event'
4737
+ message:
4738
+ description: >-
4739
+ a message describing the outcome of the operation that has been ran (push, discover or validate) run.
4740
+
4741
+ type: string
4742
+ createdAt:
4743
+ $ref: '#/components/schemas/CreatedAt'
4744
+ required:
4745
+ - runID
4746
+ replaceAllObjectsWithTransformationResponse:
4747
+ type: object
4748
+ additionalProperties: false
4749
+ properties:
4750
+ copyOperationResponse:
4751
+ description: >-
4752
+ The response of the `operationIndex` request for the `copy` operation.
4753
+
4754
+ $ref: '#/components/schemas/updatedAtResponse'
4755
+ watchResponses:
4756
+ type: array
4757
+ description: The response of the `push` request(s).
4758
+ items:
4759
+ $ref: '#/components/schemas/WatchResponse'
4760
+ moveOperationResponse:
4761
+ description: >-
4762
+ The response of the `operationIndex` request for the `move` operation.
4763
+
4764
+ $ref: '#/components/schemas/updatedAtResponse'
4765
+ required:
4766
+ - copyOperationResponse
4767
+ - watchResponses
4768
+ - moveOperationResponse
4265
4769
  builtInOperationType:
4266
4770
  type: string
4267
4771
  enum:
@@ -4297,7 +4801,7 @@ components:
4297
4801
  PathInPath:
4298
4802
  name: path
4299
4803
  in: path
4300
- description: Path of the endpoint, anything after "/1" must be specified.
4804
+ description: Path of the endpoint, for example `1/newFeature`.
4301
4805
  required: true
4302
4806
  schema:
4303
4807
  type: string
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@graphcommerce/algolia-products",
3
3
  "homepage": "https://www.graphcommerce.org/",
4
4
  "repository": "github:graphcommerce-org/graphcommerce",
5
- "version": "9.1.0-canary.46",
5
+ "version": "9.1.0-canary.48",
6
6
  "sideEffects": false,
7
7
  "prettier": "@graphcommerce/prettier-config-pwa",
8
8
  "eslintConfig": {
@@ -15,14 +15,14 @@
15
15
  "generate": "tsx scripts/generate-spec.mts"
16
16
  },
17
17
  "peerDependencies": {
18
- "@graphcommerce/google-datalayer": "^9.1.0-canary.46",
19
- "@graphcommerce/graphql": "^9.1.0-canary.46",
20
- "@graphcommerce/graphql-mesh": "^9.1.0-canary.46",
21
- "@graphcommerce/magento-customer": "^9.1.0-canary.46",
22
- "@graphcommerce/magento-product": "^9.1.0-canary.46",
23
- "@graphcommerce/magento-search": "^9.1.0-canary.46",
24
- "@graphcommerce/next-config": "^9.1.0-canary.46",
25
- "@graphcommerce/next-ui": "^9.1.0-canary.46",
18
+ "@graphcommerce/google-datalayer": "^9.1.0-canary.48",
19
+ "@graphcommerce/graphql": "^9.1.0-canary.48",
20
+ "@graphcommerce/graphql-mesh": "^9.1.0-canary.48",
21
+ "@graphcommerce/magento-customer": "^9.1.0-canary.48",
22
+ "@graphcommerce/magento-product": "^9.1.0-canary.48",
23
+ "@graphcommerce/magento-search": "^9.1.0-canary.48",
24
+ "@graphcommerce/next-config": "^9.1.0-canary.48",
25
+ "@graphcommerce/next-ui": "^9.1.0-canary.48",
26
26
  "react": "^18.2.0"
27
27
  },
28
28
  "devDependencies": {
@@ -11,7 +11,7 @@ const response = await fetch(
11
11
 
12
12
  const openApiSchema = yaml.load(await response.text()) as OpenAPIV3.Document
13
13
 
14
- const acl = ['search']
14
+ const acl = ['search', 'settings']
15
15
 
16
16
  const newSchema: OpenAPIV3.Document = {
17
17
  ...openApiSchema,
@@ -45,7 +45,7 @@ const newSchema: OpenAPIV3.Document = {
45
45
 
46
46
  // Remove the search endpoint + remove the getObjects endpoint.
47
47
  if (
48
- path === '/1/indexes/*/queries' ||
48
+ // path === '/1/indexes/*/queries' ||
49
49
  path === '/1/indexes/*/objects' ||
50
50
  path === '/1/indexes/{indexName}/{objectID}'
51
51
  )