Repository navigation
Expand file tree
/
Copy pathapi-inventory.json
More file actions
883 lines (883 loc) · 55.3 KB
/
Copy pathapi-inventory.json
File metadata and controls
883 lines (883 loc) · 55.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
{
"schemaVersion": 1,
"package": "node-solr-lambda",
"clientVersion": "4.0.0-beta.0",
"documentationBaselines": {
"8": "8.11",
"9": "9.11",
"10": "10.1"
},
"runtimeCertification": "unverified",
"statusDefinitions": {
"methodImplemented": "A public client method exists for this operation.",
"typeCoverage": "complete means common request and response options have dedicated exported types; partial means a generic record or escape hatch remains.",
"unitTests": "present means at least one unit test covers the method or shared transport path; it does not mean every action is covered.",
"integrationTests": "tested means the exact operation behavior has passed an integration test on every pinned Solr version listed as tested; partial means some versions or behavior are tested; not-run means no real Solr server test has been executed for the operation."
},
"entries": [
{
"id": "update.add",
"area": "Update",
"clientMethod": "add",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/client.test.ts",
"test/config.test.ts",
"test/integration/solr-smoke.test.ts",
"test/cancellation.types.ts",
"test/integration/solr-update.test.ts",
"test/validation.test.ts",
"test/modules.test.ts",
"test/integration/solr-update-cloud.test.ts",
"test/integration/solr-document-fidelity.test.ts"
],
"notes": "Document add is exercised in the CRUD smoke test on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images. Named SolrUpdateOptions now expose overwrite, commitWithin, and SolrCloud _route_ serialization; request parameter serialization and invalid values are covered by unit tests. SolrCloud integration tests verify add/update route behavior on an implicit-router collection using shard-scoped query read-back, and verify commitWithin search visibility without a manual commit on the pinned _default configset, across Solr 8.11.4/9.11.0/10.1.0. The commitWithin test asserts bounded eventual visibility only; hard/soft commit behavior remains controlled by server configuration. Field-specific SolrAtomicUpdateOperation and SolrAtomicUpdateDocument types plus atomicUpdate() support set, add, add-distinct, remove, removeregex, and numeric inc. Unit, consumer type, and pinned Solr 8.11.4/9.11.0/10.1.0 integration tests cover atomic updates. Single JSON documents use /update/json/docs; arrays use /update. Both forms are integration-tested on pinned Solr 8.11.4/9.11.0/10.1.0. commitWithin is a scheduling hint whose hard/soft behavior is controlled by Solr's commitWithin configuration; the client does not force either commit type. Update methods default to SolrUpdateResponse; successful output validation is wired to the public operation key. SolrHttpError.errorResponse exposes SolrErrorResponse while solrError remains the normalized detail. Mock validation tests cover success/error paths; add/update responseHeader.status is integration-tested on Solr 8.11.4/9.11.0/10.1.0. Unit tests assert the single-document, document-array, and command-map JSON endpoint selection, typed response header, and HTTP error propagation. Unit tests assert single-document, document-array, and command-map endpoint selection, typed response headers, and HTTP error propagation. Nested parent/child/grandchild JSON document indexing and exact Unicode/multi-valued field read-back are covered by test/integration/solr-document-fidelity.test.ts and passed on pinned Solr 8.11.4, 9.11.0, and 10.1.0 in CI run #42392182590. Nested documents must be sent using the array form add([document]) so the request uses /update; Solr's /update/json/docs convenience path flattens complex JSON by default. See docs/update.md and ADR 0003. Nested parent/child/grandchild document round-trip and Unicode/multi-valued field round-trip passed on pinned Solr 8.11.4, 9.11.0, and 10.1.0 in CI run #42392182590."
},
{
"id": "update.atomicUpdate",
"area": "Update",
"clientMethod": "atomicUpdate",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/client.test.ts",
"test/integration/solr-update.test.ts"
],
"notes": "Field-specific atomic update modifiers are covered by unit/type assertions and integration tests on Solr 8.11.4, 9.11.0, and 10.1.0."
},
{
"id": "admin.collections",
"area": "Collections",
"clientMethod": "collections",
"httpMethod": "GET",
"path": "/solr/admin/collections?action={action}",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/admin.test.ts",
"test/integration/solr-collections.test.ts",
"test/integration/solrcloud-split-migrate-optin.test.ts",
"test/collections-types.ts",
"test/backup-restore.test.ts",
"test/backup-restore-api-types.ts",
"test/integration/solrcloud-backup-restore.test.ts"
],
"notes": "SolrCloud CREATE/LIST/DELETE, alias lifecycle, implicit-router shard lifecycle, named ADDREPLICA/DELETEREPLICA lifecycle, replica property add/delete and BALANCESHARDUNIQUE responses, plus multi-node MOVEREPLICA and REBALANCELEADERS leader reassignment are tested on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images (CI #177, #192, #209, and PR #142 CI #224). MOVEREPLICA verifies the named replica becomes active on a different live node. REBALANCELEADERS assigns preferredLeader to an active non-leader and verifies it becomes shard leader. Distinct snapshot operations and some cluster-state response details remain unverified. The BACKUP/LISTBACKUP/RESTORE/DELETEBACKUP and async status flow described below is integration-tested; this does not certify every snapshot action or response field. Additional operation evidence: Typed SolrCloud collection backup/restore actions and asynchronous REQUESTSTATUS/DELETESTATUS tracking. Full backup, list, restore, query read-back, and delete cycle is integration-tested on Solr 8.11.4, 9.11.0, and 10.1.0 with a shared local filesystem volume mounted on both SolrCloud nodes. S3 and other external repositories are not certified. LISTALIASES defaults to SolrCollectionAliasesResponse; CREATEALIAS/DELETEALIAS default to SolrCollectionAliasResponse; CLUSTERSTATUS defaults to SolrClusterStatusResponse with extensible collection/shard/replica models. Filtered cluster status and unobserved version-specific fields remain optional/open. CREATESHARD/DELETESHARD now default to SolrCollectionShardOperationResponse and remain integration-tested on all pinned versions. SPLITSHARD has a typed V1 split.key contract (shard or routing-key mode). MIGRATE uses V1 collection/split.key/target.collection/forward.timeout/async parameters and the same response envelope. Both now have opt-in asynchronous integration checks that require SOLR_DESTRUCTIVE_OPT_IN=true, a loopback endpoint, SOLR_CLOUD=true, SOLR_MULTINODE=true, and disposable collections; the manual workflow provisions its own two-node cluster. The tests verify child-shard state and document read-back after split, and target document read-back after migration. The opt-in workflow has not yet been executed, so both operations remain runtime-unverified. Abort, partial-failure recovery, and concurrent-write behavior are not certified. RELOAD now has exact action-specific serialization and isolated collection integration coverage on pinned Solr 8.11.4/9.11.0/10.1.0. MODIFYCOLLECTION, ADDROLE, and REMOVEROLE now have dedicated serialization and consumer type fixtures; MODIFYCOLLECTION remains runtime-unverified because it mutates collection policy, while role actions remain runtime-unverified because they mutate cluster-wide node role assignments. Named response contracts now cover every action literal: LIST uses SolrCollectionListResponse; CREATE/DELETE/RELOAD/MODIFYCOLLECTION use SolrCollectionAdminResponse; replica lifecycle, movement, balancing, and property actions use SolrCollectionReplicaResponse; ADDROLE/REMOVEROLE use SolrCollectionRoleResponse. CollectionAdminResponse<A> selects the default contract from the action literal while explicit caller generics remain supported. These are extensible response envelopes, not a claim that all action-specific payload fields or all actions are runtime-certified. FORCELEADER is now a separate typed V1 action with exact query serialization and consumer type coverage; its per-version runtime status is recorded independently as unverified until stale-replica fault injection is completed."
},
{
"id": "update.commit",
"area": "Update",
"clientMethod": "commit",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/client.test.ts",
"test/integration/solr-smoke.test.ts",
"test/integration/solr-update.test.ts",
"test/cancellation.types.ts",
"test/validation.test.ts"
],
"notes": "Hard commit with waitSearcher is exercised by the CRUD and update integration tests on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images. Command-body serialization is covered by explicit unit tests. SolrCommitOptions expose waitSearcher, softCommit, expungeDeletes (hard-commit only), and openSearcher (request parameter); integration tests cover openSearcher=false and expungeDeletes on Solr 8.11.4/9.11.0/10.1.0. Legacy CommitOptions.maxSegments is deprecated and rejected. Update methods default to SolrUpdateResponse; successful output validation is wired to the public operation key. SolrHttpError.errorResponse exposes SolrErrorResponse while solrError remains the normalized detail. Mock validation tests cover success/error paths; add/update responseHeader.status is integration-tested on Solr 8.11.4/9.11.0/10.1.0."
},
{
"id": "config.api",
"area": "Config",
"clientMethod": "config",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/config",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/config.md",
"testFiles": [
"test/modules.test.ts",
"test/integration/solr-config-security.test.ts",
"test/integration/solr-config-components.test.ts",
"test/admin-api-types.ts"
],
"notes": "Config API set-user-property plus GET /config/overlay userProps read-back pass on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images; fixture cleanup unsets the property (CI #166). An isolated temporary request handler is added, read back through GET /config, and removed on all three pinned versions. Common set-property/unset-property names and property-specific values are exported for the shared Solr 8.11/9.11/10.1 baseline. SolrConfigRequestHandlerParams adds value-aware autocomplete for common request defaults/appends/invariants (q, fq, fl, rows, start, sort, wt, echoParams, time limits) while keeping the parameter map open. Effective read models distinguish request handlers, search components, response writers, init params, and listeners; response writers expose contentType/charset and listeners expose standard event names while allowing plugin event strings. Search-component and other plugin-defined options remain open and use customOptions for flattened command-specific extensions. Consumer fixtures cover typed common handler parameters, invalid known values, named read models, existing set-property allow-list, user properties, and config responses. Security API authentication/authorization checks remain in the separate security matrix (CI #162); version-specific common properties remain outside the shared property union."
},
{
"id": "admin.core",
"area": "Core Admin",
"clientMethod": "coreAdmin",
"httpMethod": "GET",
"path": "/solr/admin/cores?action={action}",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/admin.test.ts",
"test/integration/solr-core-lifecycle.test.ts"
],
"notes": "STATUS has exported CoreAdminStatusResponse with typed per-core paths/config metadata, optional index statistics, initialization failures, and extensible unknown fields. Non-STATUS actions default to exported CoreAdminCommandResponse (responseHeader plus extensible fields); callers can supply a more specific generic. Unit and consumer type fixtures cover minimal/detailed STATUS payloads and non-STATUS response inference. Isolated CREATE, STATUS, and RELOAD pass with unique disposable cores on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images; fixture cleanup UNLOADs them (CI #145). RENAME, SWAP, MERGEINDEXES, SPLIT, REQUESTSTATUS, and REQUESTRECOVERY are not runtime-certified."
},
{
"id": "update.delete",
"area": "Update",
"clientMethod": "delete",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/modules.test.ts",
"test/integration/solr-smoke.test.ts",
"test/client.test.ts",
"test/cancellation.types.ts",
"test/integration/solr-update.test.ts",
"test/validation.test.ts"
],
"notes": "Document deletion by ID is exercised in the CRUD smoke test on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images. Delete-by-ID and delete-by-query serialization are covered by unit tests; SolrDeleteOptions expose route and commitWithin, with runtime verification of these request options remaining unverified on Solr 8/9/10. Update methods default to SolrUpdateResponse; successful output validation is wired to the public operation key. SolrHttpError.errorResponse exposes SolrErrorResponse while solrError remains the normalized detail. Mock validation tests cover success/error paths; add/update responseHeader.status is integration-tested on Solr 8.11.4/9.11.0/10.1.0. Delete-by-query is integration-tested with persisted-state assertions: all matching documents are removed while a non-matching document remains on Solr 8.11.4, 9.11.0, and 10.1.0. "
},
{
"id": "export.api",
"area": "Export",
"clientMethod": "export",
"httpMethod": "GET",
"path": "/solr/{core-or-collection}/export",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/export.md",
"testFiles": [
"test/client.test.ts",
"test/errors.test.ts",
"test/cancellation.test.ts",
"test/integration/solr-export.test.ts",
"test/export.test.ts",
"test/export-api-types.ts"
],
"notes": "Typed SolrExportParams requires fl and sort, supports filter query arrays, raw or structured sort expressions, batchSize, response writer selection, optional local expr, and customParams. export() returns the raw backpressure-aware Response. Sort fields must be single-valued docValues int/long/float/double/string fields; fl additionally supports date/boolean and multi-valued fields. includeStoredFields=true is runtime-tested specifically on Solr 10.1.0: the integration test reads back a stored-only field. No runtime support claim is made for Solr 8.11.4 or 9.11.0. The general raw Export response flow is independently tested on Solr 8.11.4, 9.11.0, and 10.1.0; unit tests cover typed serialization."
},
{
"id": "config.get",
"area": "Config",
"clientMethod": "getConfig",
"httpMethod": "GET",
"path": "/solr/{core-or-collection}/config",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/config.md",
"testFiles": [
"test/integration/solr-config-components.test.ts",
"test/integration/solr-config-operations.test.ts"
],
"notes": "GET /config reads back an isolated request handler after add and update, and confirms its removal after delete on pinned Solr 8.11.4, 9.11.0, and 10.1.0. The effective configuration response is asserted, not merely the HTTP status."
},
{
"id": "config.getOverlay",
"area": "Config",
"clientMethod": "getConfigOverlay",
"httpMethod": "GET",
"path": "/solr/{core-or-collection}/config/overlay",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/config.md",
"testFiles": [
"test/integration/solr-config-operations.test.ts"
],
"notes": "GET /config/overlay reads back Config API property mutations and verifies unset cleanup on pinned Solr 8.11.4, 9.11.0, and 10.1.0. This is persisted overlay state, distinct from effective GET /config."
},
{
"id": "metrics.api",
"area": "Metrics",
"clientMethod": "metrics",
"httpMethod": "GET",
"path": "/solr/admin/metrics",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/modules.test.ts",
"test/integration/solr-system-metrics.test.ts"
],
"notes": "JVM response-format coverage remains distinct: observed JSON registry on Solr 8/9 and Prometheus exposition on Solr 10.1. A node group check asserts non-empty JSON registry data on Solr 8/9 and Prometheus samples on Solr 10.1. Registry, prefix, and regex filters are asserted against JSON responses on Solr 8/9; Solr 10.1 supports Prometheus/OpenMetrics rather than the JSON writer. Exported SolrMetricsJsonResponse, SolrMetricsRegistry, and SolrMetricValue model stable envelope/value shapes while leaving registry and metric names open for plugins and future Solr versions."
},
{
"id": "update.optimize",
"area": "Update",
"clientMethod": "optimize",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/client.test.ts",
"test/integration/solr-optimize.test.ts",
"test/cancellation.types.ts",
"test/integration/solr-update.test.ts",
"test/validation.test.ts"
],
"notes": "Optimize followed by query asserting committed documents remain available passed on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images. SolrOptimizeOptions expose maxSegments and waitSearcher with unit and consumer type coverage; the existing optimize behavior remains integration-tested on all pinned versions. SolrOptimizeOptions expose maxSegments, waitSearcher, and openSearcher; maxSegments is optimize-only and defaults to Solr's unlimited target. The integration test exercises maxSegments on all pinned versions. openSearcher is request-parameter serialized; its optimize-specific runtime effect remains unverified. Update methods default to SolrUpdateResponse; successful output validation is wired to the public operation key. SolrHttpError.errorResponse exposes SolrErrorResponse while solrError remains the normalized detail. Mock validation tests cover success/error paths; add/update responseHeader.status is integration-tested on Solr 8.11.4/9.11.0/10.1.0."
},
{
"id": "admin.ping",
"area": "Core Admin",
"clientMethod": "ping",
"httpMethod": "GET",
"path": "/solr/{core-or-collection}/admin/ping",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/admin.test.ts",
"test/cancellation.test.ts",
"test/integration/solr-core-lifecycle.test.ts"
],
"notes": "Ping response status OK is asserted on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images (CI #145)."
},
{
"id": "query.select",
"area": "Query",
"clientMethod": "query",
"httpMethod": "GET",
"path": "/solr/{core-or-collection}/select",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/query.md",
"testFiles": [
"test/client.test.ts",
"test/query-types.ts",
"test/modules.test.ts",
"test/integration/solr-smoke.test.ts",
"test/integration/solr-cursor.test.ts",
"test/query.test.ts",
"test/integration/solr-morelikethis.test.ts",
"test/integration/solr-spatial.test.ts",
"test/spellcheck-doc-examples.ts",
"test/integration/solr-spellcheck.test.ts",
"test/integration/solr-document-fidelity.test.ts",
"test/transport-serialization.test.ts",
"test/suggester-doc-examples.ts",
"test/integration/solr-suggester.test.ts"
],
"notes": "Generic SolrResponse<TDocument> and SolrQueryResponse<TDocument, TJsonFacet> types expose document metadata, classic facet counts, caller-shaped JSON facets, highlighting, grouping, stats, and debug sections. Consumer compile tests verify document inference and response-section property types. Basic query serialization and document retrieval plus cursorMark multi-page traversal are tested on the pinned Solr 8.11.4, 9.11.0, and 10.1.0 images; typed declarations do not certify every optional response section at runtime. Typed classic Facet Component options cover field facets and per-field limit/offset/sort/mincount/missing/prefix/method overrides, query facets, and numeric/date range facets with include/other/hardend and filter/dv methods. Solr date bucketing uses range facets; legacy facet.date parameters were removed in Solr 6. Integration coverage asserts field/query counts and numeric/date range response sections on pinned Solr 8.11.4, 9.11.0, and 10.1.0. Typed highlighting options cover field selection, highlighter method, snippet/fragment sizing, field matching, alternate fields, phrase and multi-term highlighting, encoders/tags, and per-field overrides. Unit and consumer type tests cover parameter serialization and invalid values; integration tests verify returned snippets on pinned Solr 8.11.4, 9.11.0, and 10.1.0. Typed Result Grouping options cover group.field, group.func, group.query, per-group limit/offset/sort, group format/main/ngroups/truncate/facet/cache settings; typed grouped response models expose matches, group counts, and per-group document lists. Typed collapse and expand options serialize the Collapsing Query Parser filter and Expand component parameters, with expanded document maps in the response. Standalone integration tests verify field grouping, group sorting, collapse selection, and expansion on Solr 8.11.4, 9.11.0, and 10.1.0. Function grouping and collapse remain subject to Solr's documented distributed/shard-local limitations. Typed Stats Component options support repeated fields, per-field local statistic selection, percentiles, cardinality, tag/key/excludeTags, global stats facets, and calcDistinct. SolrFieldStats response models include nested facet breakdowns, percentiles, and cardinality. Unit and consumer type tests cover encoding and response properties; integration tests verify numeric aggregates, distinct values/counts, cardinality, and category breakdowns on Solr 8.11.4, 9.11.0, and 10.1.0. Typed MoreLikeThis Search Component options cover field selection, result count, term/document-frequency thresholds, word/token/query-term limits, boosting, query fields, and interesting terms. Unit and consumer type tests cover serialization and response typing; integration tests verify similar-document results on pinned Solr 8.11.4, 9.11.0, and 10.1.0. Geospatial geofilt/bbox filters and geodist sorting are integration-tested on pinned Solr 8.11.4, 9.11.0, and 10.1.0 using an isolated LatLonPointSpatialField and deterministic nearby/far points; assertions verify inclusion/exclusion and nearest-to-farthest ordering. SpellCheck is an optional server-side component; the client only serializes request options and types its response, and never mutates dictionary or request-handler configuration. The configured default-handler SpellCheck integration test verifies indexed suggestions, frequencies, and a corrected collation; it passed on pinned Solr 8.11.4, 9.11.0, and 10.1.0 in CI run #42392182590. Long query parameter preservation on the current GET contract (no automatic GET-to-POST switching) is unit-tested in test/transport-serialization.test.ts. Nested-document child-transformer and Unicode read-back assertions in test/integration/solr-document-fidelity.test.ts passed on pinned Solr 8.11.4, 9.11.0, and 10.1.0 in CI run #42392182590; long query preservation is covered by transport unit tests. No automatic GET-to-POST fallback is implemented. Suggester is modelled as an optional query component because it is attached to a deployment-configured SearchHandler; typed dictionary/query/count/context/build/reload parameters and dictionary/query-keyed responses are covered by unit and consumer type tests. The disposable configured-handler Suggester integration test verifies indexed terms and finite weights; it passed on pinned Solr 8.11.4, 9.11.0, and 10.1.0 in CI run #42392182590."
},
{
"id": "query.realtimeGet",
"area": "RealTime Get",
"clientMethod": "get",
"httpMethod": "GET",
"path": "/solr/{core-or-collection}/get",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/realtime-get.md",
"testFiles": [
"test/client.test.ts",
"test/get-doc-examples.ts",
"test/integration/solr-get.test.ts"
],
"notes": "Typed single-ID and multi-ID requests use distinct generic response shapes. The API supports field selection, repeated filter queries, custom Solr parameters, and shared request controls. Unit tests cover URL/query serialization, cancellation propagation, reserved-parameter protection, and invalid ID/filter/field values; consumer type fixtures cover valid and invalid request forms. The integration test in test/integration/solr-get.test.ts verifies uncommitted single- and multi-ID read-after-write behavior before the searcher view is updated, including field selection, on pinned Solr 8.11.4, 9.11.0, and 10.1.0. All three versions passed in CI run #42392182590."
},
{
"id": "query.json",
"area": "Query",
"clientMethod": "queryJson",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/query",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/query.md",
"testFiles": [
"test/modules.test.ts",
"test/integration/solr-json-query.test.ts"
],
"notes": "JSON Request API query body now has a typed SolrJsonQueryRequest model and recursive JSON Facet API terms/query/range definitions, nested metrics, and domain transformations. SolrJsonQueryResponse<TDocument, TJsonFacet> exposes caller-typed facet results. Unit and consumer type tests cover nested serialization and invalid discriminators; integration tests verify terms/query/range facets, nested metrics, and excludeTags domain behavior on pinned Solr 8.11.4, 9.11.0, and 10.1.0. Other JSON Request API options remain available through params or the legacy custom-body overload."
},
{
"id": "replication.handler",
"area": "Replication",
"clientMethod": "replication",
"httpMethod": "GET",
"path": "/solr/{core}/replication?command={command}",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"documentation": "docs/replication.md",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"testFiles": [
"test/replication.test.ts",
"test/replication-api-types.ts",
"test/integration/solr-replication.test.ts",
"test/integration/solr-replication-lifecycle.test.ts",
"test/backup-restore.test.ts",
"test/backup-restore-api-types.ts",
"test/integration/solr-core-backup-restore.test.ts"
],
"notes": "Typed V1 ReplicationHandler commands for enablereplication, disablereplication, indexversion, fetchindex, abortfetch, snappull, abort, enablepoll, disablepoll, details, filelist, backup, restore, restorestatus, and deletebackup; replicationFile() returns raw filecontent streams. Live integration coverage on Solr 8.11.4, 9.11.0, and 10.1.0 covers indexversion, details, filelist, filecontent, leader enable/disable, and a disposable two-core leader/follower fetch using fetchindex with follower query read-back passed the full standalone/security matrix on Solr 8.11.4, 9.11.0, and 10.1.0 (CI #640). A bounded disposable-core in-progress abort test passes on Solr 9.11.0 and 10.1.0. Solr 8.11.4 is explicitly deferred: repeated CI runs did not expose details.follower.isReplicating=true during a throttled transfer, so the test is skipped for that version and live abort remains unverified there. enablepoll/disablepoll retain unit serialization coverage only. Core-level backup, restore, restorestatus, and deletebackup are integration-tested on all three pinned versions. Filelist uses the generation returned by newer Solr indexversion responses and falls back to the legacy indexversion parameter when that field is absent. Additional operation evidence: Core-level ReplicationHandler backup, restore, restorestatus, and deletebackup are typed. Backup defaults to the core dataDir; restore status is polled with restorestatus. Full backup/restore/read-back/delete cycle is integration-tested on Solr 8.11.4, 9.11.0, and 10.1.0. Custom filesystem locations must be permitted by server allowPaths."
},
{
"id": "replication.file",
"area": "Replication",
"clientMethod": "replicationFile",
"httpMethod": "GET",
"path": "/solr/{core}/replication?command={command}",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"documentation": "docs/replication.md",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"testFiles": [
"test/replication.test.ts",
"test/integration/solr-replication.test.ts"
],
"notes": "Returns raw replication file content as a Response stream; integration coverage requests a listed leader index file and verifies a successful non-empty binary response on pinned Solr 8.11.4, 9.11.0, and 10.1.0."
},
{
"id": "transport.request",
"area": "Transport",
"clientMethod": "request",
"httpMethod": "GET|POST|PUT|DELETE",
"path": "caller-defined path",
"methodImplemented": true,
"typeCoverage": "generic-by-design",
"unitTests": "present",
"integrationTests": "not-run",
"versions": {
"8": "unverified",
"9": "unverified",
"10": "unverified"
},
"documentation": "docs/configuration.md",
"testFiles": [
"test/client.test.ts",
"test/config.test.ts",
"test/cancellation.test.ts",
"test/authentication.test.ts",
"test/raw-request.test.ts",
"test/transport-serialization.test.ts"
],
"notes": "Generic escape hatch. It does not imply typed support for every Solr endpoint. Basic and Bearer Authorization header construction is unit-tested. The built-in transport does not log requests or add configured authorization values to error properties; custom Fetch logging and server-controlled response bodies still require caller-side redaction. Generic custom-handler request tests verify repeated query parameter preservation and extensible unknown JSON response fields in test/raw-request.test.ts. Generic custom-handler extensibility, repeated query parameters, and preservation of unknown plugin response fields are covered by raw-request unit tests. Optional `SolrClientConfig.jsonCodec` applies a caller-supplied parser to successful and structured error JSON payloads and a serializer to JSON request bodies. Tests cover exact BigInt round-trip above 2^53-1, normal numbers, decimals, arrays, nested objects, malformed JSON fallback, HTTP errors, and unchanged native defaults. This is client-side behavior and does not carry Solr server-version certification."
},
{
"id": "transport.requestRaw",
"area": "Transport",
"clientMethod": "requestRaw",
"httpMethod": "GET|POST|PUT|DELETE",
"path": "caller-defined path",
"methodImplemented": true,
"typeCoverage": "generic-by-design",
"unitTests": "present",
"integrationTests": "not-run",
"versions": {
"8": "unverified",
"9": "unverified",
"10": "unverified"
},
"documentation": "docs/raw-requests.md",
"testFiles": [
"test/errors.test.ts",
"test/cancellation.test.ts",
"test/client.test.ts",
"test/raw-request.test.ts",
"test/authentication.test.ts"
],
"notes": "Generic raw-response escape hatch using the shared Solr transport. Supports typed methods, query parameters, headers, request bodies, cancellation, timeouts, retry policy, configured validation, and standard Solr error classes. Relative paths and same-origin absolute URLs are supported; cross-origin absolute URLs, embedded credentials, and fragments are rejected before Fetch to prevent credential leakage. String bodies are passed through unchanged when callers supply an explicit Content-Type. Custom endpoint behavior is unverified on Solr 8/9/10 until endpoint-specific integration tests are added. Basic and Bearer Authorization header construction is unit-tested. The built-in transport does not log requests or add configured authorization values to error properties; custom Fetch logging and server-controlled response bodies still require caller-side redaction. When `requestRaw()` receives a non-string JSON body or an HTTP error response, it uses the configured JSON codec. Explicit string bodies and successful raw response streams bypass parsing/serialization and remain unchanged."
},
{
"id": "update.rollback",
"area": "Update",
"clientMethod": "rollback",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/client.test.ts",
"test/integration/solr-update-lifecycle.test.ts",
"test/cancellation.types.ts",
"test/integration/solr-update.test.ts",
"test/validation.test.ts"
],
"notes": "Rollback discards a pending, uncommitted document on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images (CI #145). Command-body serialization is covered by explicit unit tests. Update methods default to SolrUpdateResponse; successful output validation is wired to the public operation key. SolrHttpError.errorResponse exposes SolrErrorResponse while solrError remains the normalized detail. Mock validation tests cover success/error paths; add/update responseHeader.status is integration-tested on Solr 8.11.4/9.11.0/10.1.0."
},
{
"id": "schema.api",
"area": "Schema",
"clientMethod": "schema",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/schema",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/schema.md",
"testFiles": [
"test/modules.test.ts",
"test/admin-api-types.ts",
"test/integration/solr-schema.test.ts"
],
"notes": "Field, field-type, dynamic-field add/replace/delete and copy-field add/delete commands are unit-tested for exact serialization and integration-tested with responseHeader.status plus schema read-back on pinned Solr 8.11.4, 9.11.0, and 10.1.0. Copy-field replacement is implemented by delete+add because Solr has no native replace-copy-field command. Integration tests verify full schema metadata, name, version, uniqueKey, and similarity response envelopes on all pinned versions. Similarity plugin mutation remains runtime-unverified. The public client implements V1 Schema API routes; Solr 10 V2 routes are not included."
},
{
"id": "security.api",
"area": "Security",
"clientMethod": "security",
"httpMethod": "GET|POST",
"path": "/solr/admin/{authentication|authorization}",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/modules.test.ts",
"test/integration/solr-security.test.ts"
],
"notes": "Authentication overloads default to SolrAuthenticationResponse and accept SolrAuthenticationCommand for BasicAuthPlugin set-user, delete-user, and set-property operations, including documented MultiAuthPlugin Basic scheme wrappers for set-user/set-property. BasicAuth configuration exposes hashed credential strings; these must not be logged or treated as plaintext. Authorization has separate SolrAuthorizationResponse/SolrAuthorizationCommand types for RuleBasedAuthorizationPlugin. Custom plugin schemas remain open/unsupported beyond the explicit extension points. Unit serialization and compile-time fixtures cover auth command shapes; existing authenticated read and set-property/read-back integration tests pass on pinned Solr 8.11.4, 9.11.0, and 10.1.0. User create/delete mutations are not performed against shared integration security state."
},
{
"id": "update.softCommit",
"area": "Update",
"clientMethod": "softCommit",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/client.test.ts",
"test/integration/solr-update-lifecycle.test.ts",
"test/cancellation.types.ts",
"test/integration/solr-update.test.ts",
"test/validation.test.ts"
],
"notes": "A newly added document becomes searchable after softCommit on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images (CI #145). Command-body serialization is covered by explicit unit tests. SolrSoftCommitOptions expose waitSearcher/openSearcher; softCommit() now waits for searcher registration by default and is integration-tested for immediate visibility on all pinned versions. Update methods default to SolrUpdateResponse; successful output validation is wired to the public operation key. SolrHttpError.errorResponse exposes SolrErrorResponse while solrError remains the normalized detail. Mock validation tests cover success/error paths; add/update responseHeader.status is integration-tested on Solr 8.11.4/9.11.0/10.1.0."
},
{
"id": "streaming.api",
"area": "Streaming",
"clientMethod": "stream",
"httpMethod": "GET",
"path": "/solr/{core-or-collection}/stream",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/streaming.md",
"testFiles": [
"test/modules.test.ts",
"test/streaming.test.ts",
"test/streaming-api-types.ts",
"test/integration/solr-streaming.test.ts"
],
"notes": "Default SolrStreamingExpressionResponse models the JSON result-set envelope and extensible tuple fields; SolrStreamingExpressionErrorTuple describes in-band EXCEPTION tuples. Callers can supply a response or tuple-specific generic shape. Unknown envelope and tuple fields remain accessible. HTTP-level Solr errors continue through the shared typed transport. SolrCloud search is integration-tested on pinned Solr 8.11.4, 9.11.0, and 10.1.0. Unit tests cover response parsing, in-band error tuples, cancellation during body consumption, and cleanup after body-stream errors. This API parses the complete JSON response and is not an incremental tuple-stream parser."
},
{
"id": "system.info",
"area": "System",
"clientMethod": "systemInfo",
"httpMethod": "GET",
"path": "/solr/admin/info/system",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/modules.test.ts",
"test/integration/solr-system-metrics.test.ts"
],
"notes": "System info metadata response passed on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images."
},
{
"id": "update.update",
"area": "Update",
"clientMethod": "update",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "partial",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/client.test.ts",
"test/integration/solr-update.test.ts",
"test/cancellation.types.ts",
"test/validation.test.ts",
"test/modules.test.ts",
"test/integration/solr-update-cloud.test.ts"
],
"notes": "Replacing an existing document and reading back its updated field is tested on pinned Solr 8.11.4, 9.11.0, and 10.1.0 images. Atomic updates are integration-tested on all three pinned versions. Typed JSON updateCommands() has its own inventory entry; its add + commit + persisted-document read-back path is integration-tested on all three pinned versions. Named SolrUpdateOptions now expose overwrite, commitWithin, and SolrCloud _route_ serialization; request parameter serialization and invalid values are covered by unit tests. SolrCloud integration tests verify add/update route behavior on an implicit-router collection using shard-scoped query read-back, and verify commitWithin search visibility without a manual commit on the pinned _default configset, across Solr 8.11.4/9.11.0/10.1.0. The commitWithin test asserts bounded eventual visibility only; hard/soft commit behavior remains controlled by server configuration. Field-specific SolrAtomicUpdateOperation and SolrAtomicUpdateDocument types plus atomicUpdate() support set, add, add-distinct, remove, removeregex, and numeric inc. Unit, consumer type, and pinned Solr 8.11.4/9.11.0/10.1.0 integration tests cover atomic updates. Single JSON documents use /update/json/docs; arrays use /update. Both forms are integration-tested on pinned Solr 8.11.4/9.11.0/10.1.0. commitWithin is a scheduling hint whose hard/soft behavior is controlled by Solr's commitWithin configuration; the client does not force either commit type. Update methods default to SolrUpdateResponse; successful output validation is wired to the public operation key. SolrHttpError.errorResponse exposes SolrErrorResponse while solrError remains the normalized detail. Mock validation tests cover success/error paths; add/update responseHeader.status is integration-tested on Solr 8.11.4/9.11.0/10.1.0."
},
{
"id": "update.commands",
"area": "Update",
"method": "SolrClient.updateCommands",
"path": "/update/json",
"typeCoverage": "complete",
"testFiles": [
"test/client.test.ts",
"test/cancellation.types.ts",
"test/integration/solr-update.test.ts",
"test/validation.test.ts",
"test/modules.test.ts",
"test/integration/solr-json-update-commands.test.ts"
],
"documentation": "docs/update.md",
"notes": "Typed SolrJsonUpdateCommands supports add, delete, commit, optimize, and rollback command objects; command-object serialization and single/array document routing are unit and consumer-type tested. The integration suite independently executes updateCommands() add + commit, delete by ID, delete by query, optimize, and rollback on pinned Solr 8.11.4, 9.11.0, and 10.1.0. Persisted-state assertions verify both delete forms, preservation after optimize, and discard of an uncommitted add after rollback. Commit command options are exercised for searcher visibility. optimize-specific openSearcher behavior remains unverified. openSearcher values in commit/optimize command objects are extracted to the request parameter; conflicting values are rejected. Update methods default to SolrUpdateResponse; successful output validation is wired to the public operation key. SolrHttpError.errorResponse exposes SolrErrorResponse while solrError remains the normalized detail. Mock validation tests cover success/error paths; add/update responseHeader.status is integration-tested on Solr 8.11.4/9.11.0/10.1.0.",
"clientMethod": "updateCommands",
"methodImplemented": true,
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
}
},
{
"id": "export.stream",
"area": "Export",
"clientMethod": "exportStream",
"httpMethod": "GET",
"path": "/solr/{core-or-collection}/export",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/export.md",
"testFiles": [
"test/export.test.ts",
"test/integration/solr-export.test.ts"
],
"notes": "Returns the Export response body as a backpressure-aware ReadableStream of bytes. It delegates to export(), preserving the same request parameters and server compatibility."
},
{
"id": "system.properties",
"area": "System",
"clientMethod": "systemProperties",
"httpMethod": "GET",
"path": "/solr/admin/info/properties",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/admin.test.ts",
"test/admin-api-types.ts"
],
"notes": "Read-only JVM and process properties. Response is intentionally extensible because available properties vary by runtime and deployment; integration tests verify a representative response on pinned Solr 8.11.4, 9.11.0, and 10.1.0."
},
{
"id": "system.threads",
"area": "System",
"clientMethod": "systemThreads",
"httpMethod": "GET",
"path": "/solr/admin/info/threads",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/admin.test.ts",
"test/admin-api-types.ts"
],
"notes": "Read-only JVM thread diagnostics. Thread detail and response payload vary by JVM; integration tests verify a representative response on pinned Solr 8.11.4, 9.11.0, and 10.1.0."
},
{
"id": "system.logging",
"area": "System",
"clientMethod": "systemLogging",
"httpMethod": "GET",
"path": "/solr/admin/info/logging",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/admin.test.ts",
"test/admin-api-types.ts"
],
"notes": "Read-only logger configuration and level information. This client method does not mutate logger levels; integration tests verify a representative response on pinned Solr 8.11.4, 9.11.0, and 10.1.0."
},
{
"id": "update.addStream",
"area": "Update",
"clientMethod": "addStream",
"httpMethod": "POST",
"path": "/solr/{core-or-collection}/update",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "tested",
"versions": {
"8": "tested",
"9": "tested",
"10": "tested"
},
"documentation": "docs/update.md",
"testFiles": [
"test/add-stream.test.ts",
"test/streaming-add-doc-examples.ts",
"test/integration/solr-add-stream.test.ts"
],
"notes": "Consumes an AsyncIterable<SolrDocument> and emits a valid top-level JSON array through a Web ReadableStream with highWaterMark 1. Serializes and validates one document at a time, reuses the configured JSON codec and shared request controls, propagates producer/validation errors, HTTP failures, timeout and caller/consumer cancellation, closes the iterator, and disables retries for the non-replayable POST body. Consumer type fixtures assert default/custom response generics and reject synchronous iterables plus invalid numeric option types. Unit tests explicitly cover slow producers, a slow consumer with bounded pull-ahead, framing, empty input, per-document validation, shared auth/headers/request defaults, HTTP errors, timeout/cancellation cleanup, codec use, and no retries. A deterministic 250-document pinned Solr integration test verifies count/order read-back on Solr 8.11.4, 9.11.0, and 10.1.0. Full combined CI run #42376175065 passed 30/30 jobs across Node.js 20/22/24 and standalone, authenticated, and SolrCloud matrices; the standalone job logs confirm 250-document read-back on each pinned image. Partial ingestion is possible if the source or connection fails after the server has accepted a prefix; the operation is not atomic and does not auto-commit."
},
{
"id": "admin.collections.forceleader",
"area": "Collections",
"clientMethod": "collections",
"httpMethod": "GET",
"path": "/solr/admin/collections?action=FORCELEADER&collection={collection}&shard={shard}",
"methodImplemented": true,
"typeCoverage": "complete",
"unitTests": "present",
"integrationTests": "not-run",
"versions": {
"8": "unverified",
"9": "unverified",
"10": "unverified"
},
"documentation": "docs/administration.md",
"testFiles": [
"test/admin.test.ts",
"test/collections-types.ts"
],
"notes": "V1 expert-level shard leader recovery action. Exact collection/shard query serialization and ForceLeaderParams/SolrCollectionShardOperationResponse inference are unit/type-tested. Apache Solr warns that promoting a stale replica may lose acknowledged updates. No runtime test has been executed; actual leader reassignment requires an isolated stale-replica fault-injection scenario."
},
{
"id": "v2.request",
"area": "V2 Generic",
"clientMethod": "v2.request",
"httpMethod": "GET/POST/PUT/DELETE",
"path": "/solr/api/{path}",
"methodImplemented": true,
"typeCoverage": "generic-by-design",
"unitTests": "present",
"integrationTests": "not-run",
"versions": {
"8": "unverified",
"9": "unverified",
"10": "unverified"
},
"documentation": "docs/solr-v2-api-strategy.md",
"testFiles": [
"test/v2.test.ts",
"test/v2-types.ts",
"test/v2-introspection.test.ts"
],
"notes": "Low-level JSON request escape hatch only. The caller owns operation-specific request/response contracts. Shared transport applies auth, defaults, timeout, cancellation, retry, validation and JSON codec. No operation-specific runtime compatibility is claimed."
},
{
"id": "v2.requestRaw",
"area": "V2 Generic",
"clientMethod": "v2.requestRaw",
"httpMethod": "GET/POST/PUT/DELETE",
"path": "/solr/api/{path}",
"methodImplemented": true,
"typeCoverage": "generic-by-design",
"unitTests": "present",
"integrationTests": "not-run",
"versions": {
"8": "unverified",
"9": "unverified",
"10": "unverified"
},
"documentation": "docs/solr-v2-api-strategy.md",
"testFiles": [
"test/v2.test.ts",
"test/v2-types.ts"
],
"notes": "Low-level raw-response escape hatch only. The caller owns operation-specific request/response contracts. No operation-specific runtime compatibility is claimed."
}
]
}