@nickchristensen/ppls 1.0.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -75,7 +75,7 @@ $ ppls config get hostname
75
75
  * [`ppls document-types update ID`](#ppls-document-types-update-id)
76
76
  * [`ppls documents add [PATH]`](#ppls-documents-add-path)
77
77
  * [`ppls documents delete ID`](#ppls-documents-delete-id)
78
- * [`ppls documents download ID`](#ppls-documents-download-id)
78
+ * [`ppls documents download [ID]`](#ppls-documents-download-id)
79
79
  * [`ppls documents list`](#ppls-documents-list)
80
80
  * [`ppls documents show ID`](#ppls-documents-show-id)
81
81
  * [`ppls documents update ID`](#ppls-documents-update-id)
@@ -108,7 +108,7 @@ EXAMPLES
108
108
  $ ppls config get hostname
109
109
  ```
110
110
 
111
- _See code: [src/commands/config/get.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/config/get.ts)_
111
+ _See code: [src/commands/config/get.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/config/get.ts)_
112
112
 
113
113
  ## `ppls config init`
114
114
 
@@ -131,7 +131,7 @@ EXAMPLES
131
131
  $ ppls config init
132
132
  ```
133
133
 
134
- _See code: [src/commands/config/init.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/config/init.ts)_
134
+ _See code: [src/commands/config/init.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/config/init.ts)_
135
135
 
136
136
  ## `ppls config list`
137
137
 
@@ -155,7 +155,7 @@ EXAMPLES
155
155
  $ ppls config list
156
156
  ```
157
157
 
158
- _See code: [src/commands/config/list.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/config/list.ts)_
158
+ _See code: [src/commands/config/list.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/config/list.ts)_
159
159
 
160
160
  ## `ppls config remove KEY`
161
161
 
@@ -178,7 +178,7 @@ EXAMPLES
178
178
  $ ppls config remove token
179
179
  ```
180
180
 
181
- _See code: [src/commands/config/remove.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/config/remove.ts)_
181
+ _See code: [src/commands/config/remove.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/config/remove.ts)_
182
182
 
183
183
  ## `ppls config set KEY VALUE`
184
184
 
@@ -204,7 +204,7 @@ EXAMPLES
204
204
  $ ppls config set headers '{"X-Api-Key":"token"}'
205
205
  ```
206
206
 
207
- _See code: [src/commands/config/set.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/config/set.ts)_
207
+ _See code: [src/commands/config/set.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/config/set.ts)_
208
208
 
209
209
  ## `ppls correspondents add NAME`
210
210
 
@@ -236,7 +236,7 @@ EXAMPLES
236
236
  $ ppls correspondents add "Acme Corp"
237
237
  ```
238
238
 
239
- _See code: [src/commands/correspondents/add.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/correspondents/add.ts)_
239
+ _See code: [src/commands/correspondents/add.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/correspondents/add.ts)_
240
240
 
241
241
  ## `ppls correspondents delete ID`
242
242
 
@@ -271,7 +271,7 @@ EXAMPLES
271
271
  $ ppls correspondents delete 123
272
272
  ```
273
273
 
274
- _See code: [src/commands/correspondents/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/correspondents/delete.ts)_
274
+ _See code: [src/commands/correspondents/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/correspondents/delete.ts)_
275
275
 
276
276
  ## `ppls correspondents list`
277
277
 
@@ -280,15 +280,13 @@ List correspondents
280
280
  ```
281
281
  USAGE
282
282
  $ ppls correspondents list [--date-format <value>] [--header <value>...] [--hostname <value>] [--plain | --json |
283
- --table] [--token <value>] [--page <value>] [--page-size <value>] [--id-in <value> | --name-contains <value>]
283
+ --table] [--token <value>] [--id-in <value>... | --name-contains <value>] [--page <value> --page-size <value>]
284
284
  [--sort <value>]
285
285
 
286
286
  FLAGS
287
- --id-in=<value> Filter by id list (comma-separated)
288
- --name-contains=<value> Filter by name substring
289
- --page=<value> Page number to fetch
290
- --page-size=<value> Number of results per page
291
- --sort=<value> Sort results by the provided field
287
+ --page=<value> Page number to fetch
288
+ --page-size=<value> [default: disable pagination, all results] Number of results per page
289
+ --sort=<value> Sort results by the provided field
292
290
 
293
291
  GLOBAL FLAGS
294
292
  --date-format=<value> [default: yyyy-MM-dd, env: PPLS_DATE_FORMAT] Format output dates using a template.
@@ -301,6 +299,10 @@ ENVIRONMENT FLAGS
301
299
  --hostname=<value> [env: PPLS_HOSTNAME] Paperless-ngx base URL
302
300
  --token=<value> [env: PPLS_TOKEN] Paperless-ngx API token
303
301
 
302
+ FILTER FLAGS
303
+ --id-in=<value>... Filter by id list (repeatable or comma-separated)
304
+ --name-contains=<value> Filter by name substring
305
+
304
306
  DESCRIPTION
305
307
  List correspondents
306
308
 
@@ -308,7 +310,7 @@ EXAMPLES
308
310
  $ ppls correspondents list
309
311
  ```
310
312
 
311
- _See code: [src/commands/correspondents/list.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/correspondents/list.ts)_
313
+ _See code: [src/commands/correspondents/list.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/correspondents/list.ts)_
312
314
 
313
315
  ## `ppls correspondents show ID`
314
316
 
@@ -340,7 +342,7 @@ EXAMPLES
340
342
  $ ppls correspondents show 123
341
343
  ```
342
344
 
343
- _See code: [src/commands/correspondents/show.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/correspondents/show.ts)_
345
+ _See code: [src/commands/correspondents/show.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/correspondents/show.ts)_
344
346
 
345
347
  ## `ppls correspondents update ID`
346
348
 
@@ -375,7 +377,7 @@ EXAMPLES
375
377
  $ ppls correspondents update 123 --name "Acme Corp"
376
378
  ```
377
379
 
378
- _See code: [src/commands/correspondents/update.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/correspondents/update.ts)_
380
+ _See code: [src/commands/correspondents/update.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/correspondents/update.ts)_
379
381
 
380
382
  ## `ppls custom-fields add NAME`
381
383
 
@@ -413,7 +415,7 @@ EXAMPLES
413
415
  $ ppls custom-fields add "Due Date" --data-type date
414
416
  ```
415
417
 
416
- _See code: [src/commands/custom-fields/add.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/custom-fields/add.ts)_
418
+ _See code: [src/commands/custom-fields/add.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/custom-fields/add.ts)_
417
419
 
418
420
  ## `ppls custom-fields delete ID`
419
421
 
@@ -448,7 +450,7 @@ EXAMPLES
448
450
  $ ppls custom-fields delete 123
449
451
  ```
450
452
 
451
- _See code: [src/commands/custom-fields/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/custom-fields/delete.ts)_
453
+ _See code: [src/commands/custom-fields/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/custom-fields/delete.ts)_
452
454
 
453
455
  ## `ppls custom-fields list`
454
456
 
@@ -457,15 +459,13 @@ List custom fields
457
459
  ```
458
460
  USAGE
459
461
  $ ppls custom-fields list [--date-format <value>] [--header <value>...] [--hostname <value>] [--plain | --json |
460
- --table] [--token <value>] [--page <value>] [--page-size <value>] [--id-in <value> | --name-contains <value>]
462
+ --table] [--token <value>] [--id-in <value>... | --name-contains <value>] [--page <value> --page-size <value>]
461
463
  [--sort <value>]
462
464
 
463
465
  FLAGS
464
- --id-in=<value> Filter by id list (comma-separated)
465
- --name-contains=<value> Filter by name substring
466
- --page=<value> Page number to fetch
467
- --page-size=<value> Number of results per page
468
- --sort=<value> Sort results by the provided field
466
+ --page=<value> Page number to fetch
467
+ --page-size=<value> [default: disable pagination, all results] Number of results per page
468
+ --sort=<value> Sort results by the provided field
469
469
 
470
470
  GLOBAL FLAGS
471
471
  --date-format=<value> [default: yyyy-MM-dd, env: PPLS_DATE_FORMAT] Format output dates using a template.
@@ -478,6 +478,10 @@ ENVIRONMENT FLAGS
478
478
  --hostname=<value> [env: PPLS_HOSTNAME] Paperless-ngx base URL
479
479
  --token=<value> [env: PPLS_TOKEN] Paperless-ngx API token
480
480
 
481
+ FILTER FLAGS
482
+ --id-in=<value>... Filter by id list (repeatable or comma-separated)
483
+ --name-contains=<value> Filter by name substring
484
+
481
485
  DESCRIPTION
482
486
  List custom fields
483
487
 
@@ -485,7 +489,7 @@ EXAMPLES
485
489
  $ ppls custom-fields list
486
490
  ```
487
491
 
488
- _See code: [src/commands/custom-fields/list.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/custom-fields/list.ts)_
492
+ _See code: [src/commands/custom-fields/list.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/custom-fields/list.ts)_
489
493
 
490
494
  ## `ppls custom-fields show ID`
491
495
 
@@ -517,7 +521,7 @@ EXAMPLES
517
521
  $ ppls custom-fields show 123
518
522
  ```
519
523
 
520
- _See code: [src/commands/custom-fields/show.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/custom-fields/show.ts)_
524
+ _See code: [src/commands/custom-fields/show.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/custom-fields/show.ts)_
521
525
 
522
526
  ## `ppls custom-fields update ID`
523
527
 
@@ -556,7 +560,7 @@ EXAMPLES
556
560
  $ ppls custom-fields update 123 --name "Due Date"
557
561
  ```
558
562
 
559
- _See code: [src/commands/custom-fields/update.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/custom-fields/update.ts)_
563
+ _See code: [src/commands/custom-fields/update.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/custom-fields/update.ts)_
560
564
 
561
565
  ## `ppls document-types add NAME`
562
566
 
@@ -588,7 +592,7 @@ EXAMPLES
588
592
  $ ppls document-types add "Invoice"
589
593
  ```
590
594
 
591
- _See code: [src/commands/document-types/add.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/document-types/add.ts)_
595
+ _See code: [src/commands/document-types/add.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/document-types/add.ts)_
592
596
 
593
597
  ## `ppls document-types delete ID`
594
598
 
@@ -623,7 +627,7 @@ EXAMPLES
623
627
  $ ppls document-types delete 123
624
628
  ```
625
629
 
626
- _See code: [src/commands/document-types/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/document-types/delete.ts)_
630
+ _See code: [src/commands/document-types/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/document-types/delete.ts)_
627
631
 
628
632
  ## `ppls document-types list`
629
633
 
@@ -632,15 +636,13 @@ List document types
632
636
  ```
633
637
  USAGE
634
638
  $ ppls document-types list [--date-format <value>] [--header <value>...] [--hostname <value>] [--plain | --json |
635
- --table] [--token <value>] [--page <value>] [--page-size <value>] [--id-in <value> | --name-contains <value>]
639
+ --table] [--token <value>] [--id-in <value>... | --name-contains <value>] [--page <value> --page-size <value>]
636
640
  [--sort <value>]
637
641
 
638
642
  FLAGS
639
- --id-in=<value> Filter by id list (comma-separated)
640
- --name-contains=<value> Filter by name substring
641
- --page=<value> Page number to fetch
642
- --page-size=<value> Number of results per page
643
- --sort=<value> Sort results by the provided field
643
+ --page=<value> Page number to fetch
644
+ --page-size=<value> [default: disable pagination, all results] Number of results per page
645
+ --sort=<value> Sort results by the provided field
644
646
 
645
647
  GLOBAL FLAGS
646
648
  --date-format=<value> [default: yyyy-MM-dd, env: PPLS_DATE_FORMAT] Format output dates using a template.
@@ -653,6 +655,10 @@ ENVIRONMENT FLAGS
653
655
  --hostname=<value> [env: PPLS_HOSTNAME] Paperless-ngx base URL
654
656
  --token=<value> [env: PPLS_TOKEN] Paperless-ngx API token
655
657
 
658
+ FILTER FLAGS
659
+ --id-in=<value>... Filter by id list (repeatable or comma-separated)
660
+ --name-contains=<value> Filter by name substring
661
+
656
662
  DESCRIPTION
657
663
  List document types
658
664
 
@@ -660,7 +666,7 @@ EXAMPLES
660
666
  $ ppls document-types list
661
667
  ```
662
668
 
663
- _See code: [src/commands/document-types/list.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/document-types/list.ts)_
669
+ _See code: [src/commands/document-types/list.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/document-types/list.ts)_
664
670
 
665
671
  ## `ppls document-types show ID`
666
672
 
@@ -692,7 +698,7 @@ EXAMPLES
692
698
  $ ppls document-types show 123
693
699
  ```
694
700
 
695
- _See code: [src/commands/document-types/show.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/document-types/show.ts)_
701
+ _See code: [src/commands/document-types/show.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/document-types/show.ts)_
696
702
 
697
703
  ## `ppls document-types update ID`
698
704
 
@@ -727,7 +733,7 @@ EXAMPLES
727
733
  $ ppls document-types update 123 --name "Invoice"
728
734
  ```
729
735
 
730
- _See code: [src/commands/document-types/update.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/document-types/update.ts)_
736
+ _See code: [src/commands/document-types/update.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/document-types/update.ts)_
731
737
 
732
738
  ## `ppls documents add [PATH]`
733
739
 
@@ -769,7 +775,7 @@ EXAMPLES
769
775
  $ ppls documents add ./receipt.pdf --title "Receipt"
770
776
  ```
771
777
 
772
- _See code: [src/commands/documents/add.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/documents/add.ts)_
778
+ _See code: [src/commands/documents/add.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/documents/add.ts)_
773
779
 
774
780
  ## `ppls documents delete ID`
775
781
 
@@ -804,19 +810,19 @@ EXAMPLES
804
810
  $ ppls documents delete 123
805
811
  ```
806
812
 
807
- _See code: [src/commands/documents/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/documents/delete.ts)_
813
+ _See code: [src/commands/documents/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/documents/delete.ts)_
808
814
 
809
- ## `ppls documents download ID`
815
+ ## `ppls documents download [ID]`
810
816
 
811
817
  Download one or more documents
812
818
 
813
819
  ```
814
820
  USAGE
815
- $ ppls documents download ID [--date-format <value>] [--header <value>...] [--hostname <value>] [--plain | --json |
816
- --table] [--token <value>] [--original] [-o <value> | --output-dir <value>]
821
+ $ ppls documents download [ID...] [--date-format <value>] [--header <value>...] [--hostname <value>] [--plain | --json
822
+ | --table] [--token <value>] [--original] [-o <value> | --output-dir <value>]
817
823
 
818
824
  ARGUMENTS
819
- ID Document id or comma-separated list of ids
825
+ [ID...] Document id (repeatable or comma-separated)
820
826
 
821
827
  FLAGS
822
828
  -o, --output=<value> Output file path (single document)
@@ -838,12 +844,14 @@ DESCRIPTION
838
844
  Download one or more documents
839
845
 
840
846
  EXAMPLES
841
- $ ppls documents download 123 --output document.pdf
847
+ $ ppls documents download --output document.pdf 123
848
+
849
+ $ ppls documents download --output-dir ./downloads 123 456
842
850
 
843
- $ ppls documents download 123,124 --output-dir ./downloads
851
+ $ ppls documents download --output-dir ./downloads 123,456
844
852
  ```
845
853
 
846
- _See code: [src/commands/documents/download.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/documents/download.ts)_
854
+ _See code: [src/commands/documents/download.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/documents/download.ts)_
847
855
 
848
856
  ## `ppls documents list`
849
857
 
@@ -852,15 +860,37 @@ List documents
852
860
  ```
853
861
  USAGE
854
862
  $ ppls documents list [--date-format <value>] [--header <value>...] [--hostname <value>] [--plain | --json |
855
- --table] [--token <value>] [--page <value>] [--page-size <value>] [--id-in <value> | --name-contains <value>]
856
- [--sort <value>]
863
+ --table] [--token <value>] [--page <value> --page-size <value>] [--sort <value>] [--added-after YYYY-MM-DD|ISO-8601
864
+ | [--id-in <value>... | --name-contains <value>]] [--added-before YYYY-MM-DD|ISO-8601 | ] [--created-after
865
+ YYYY-MM-DD|ISO-8601 | ] [--created-before YYYY-MM-DD|ISO-8601 | ] [--modified-after YYYY-MM-DD|ISO-8601 | ]
866
+ [--modified-before YYYY-MM-DD|ISO-8601 | ] [--no-correspondent | [--correspondent <value>... | ] |
867
+ [--correspondent-not <value>... | ] | ] [--no-document-type | [--document-type <value>... | ] | [--document-type-not
868
+ <value>... | ] | ] [--no-tag | --tag <value>... | --tag-all <value>... | --tag-not <value>... | ]
857
869
 
858
870
  FLAGS
859
- --id-in=<value> Filter by id list (comma-separated)
860
- --name-contains=<value> Filter by name substring
861
- --page=<value> Page number to fetch
862
- --page-size=<value> Number of results per page
863
- --sort=<value> Sort results by the provided field
871
+ --page=<value> Page number to fetch
872
+ --page-size=<value> [default: disable pagination, all results] Number of results per page
873
+ --sort=<value> Sort results by the provided field
874
+
875
+ FILTER FLAGS
876
+ --added-after=YYYY-MM-DD|ISO-8601 Filter by added date (YYYY-MM-DD) or datetime (ISO 8601) >= value
877
+ --added-before=YYYY-MM-DD|ISO-8601 Filter by added date (YYYY-MM-DD) or datetime (ISO 8601) <= value
878
+ --correspondent=<value>... Filter by correspondent ids (repeatable or comma-separated)
879
+ --correspondent-not=<value>... Exclude correspondent ids (repeatable or comma-separated)
880
+ --created-after=YYYY-MM-DD|ISO-8601 Filter by created date (YYYY-MM-DD) or datetime (ISO 8601) >= value
881
+ --created-before=YYYY-MM-DD|ISO-8601 Filter by created date (YYYY-MM-DD) or datetime (ISO 8601) <= value
882
+ --document-type=<value>... Filter by document type ids (repeatable or comma-separated)
883
+ --document-type-not=<value>... Exclude document type ids (repeatable or comma-separated)
884
+ --id-in=<value>... Filter by id list (repeatable or comma-separated)
885
+ --modified-after=YYYY-MM-DD|ISO-8601 Filter by modified date (YYYY-MM-DD) or datetime (ISO 8601) >= value
886
+ --modified-before=YYYY-MM-DD|ISO-8601 Filter by modified date (YYYY-MM-DD) or datetime (ISO 8601) <= value
887
+ --name-contains=<value> Filter by name substring
888
+ --no-correspondent Filter documents with no correspondent
889
+ --no-document-type Filter documents with no document type
890
+ --no-tag Filter documents with no tags
891
+ --tag=<value>... Filter by tag ids (repeatable or comma-separated, OR)
892
+ --tag-all=<value>... Filter by tag ids (repeatable or comma-separated, AND)
893
+ --tag-not=<value>... Exclude tag ids (repeatable or comma-separated)
864
894
 
865
895
  GLOBAL FLAGS
866
896
  --date-format=<value> [default: yyyy-MM-dd, env: PPLS_DATE_FORMAT] Format output dates using a template.
@@ -880,7 +910,7 @@ EXAMPLES
880
910
  $ ppls documents list
881
911
  ```
882
912
 
883
- _See code: [src/commands/documents/list.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/documents/list.ts)_
913
+ _See code: [src/commands/documents/list.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/documents/list.ts)_
884
914
 
885
915
  ## `ppls documents show ID`
886
916
 
@@ -912,7 +942,7 @@ EXAMPLES
912
942
  $ ppls documents show 123
913
943
  ```
914
944
 
915
- _See code: [src/commands/documents/show.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/documents/show.ts)_
945
+ _See code: [src/commands/documents/show.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/documents/show.ts)_
916
946
 
917
947
  ## `ppls documents update ID`
918
948
 
@@ -955,7 +985,7 @@ EXAMPLES
955
985
  $ ppls documents update 123 --title "Receipt"
956
986
  ```
957
987
 
958
- _See code: [src/commands/documents/update.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/documents/update.ts)_
988
+ _See code: [src/commands/documents/update.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/documents/update.ts)_
959
989
 
960
990
  ## `ppls help [COMMAND]`
961
991
 
@@ -1007,7 +1037,7 @@ EXAMPLES
1007
1037
  $ ppls profile
1008
1038
  ```
1009
1039
 
1010
- _See code: [src/commands/profile.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/profile.ts)_
1040
+ _See code: [src/commands/profile.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/profile.ts)_
1011
1041
 
1012
1042
  ## `ppls tags add NAME`
1013
1043
 
@@ -1044,7 +1074,7 @@ EXAMPLES
1044
1074
  $ ppls tags add Inbox
1045
1075
  ```
1046
1076
 
1047
- _See code: [src/commands/tags/add.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/tags/add.ts)_
1077
+ _See code: [src/commands/tags/add.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/tags/add.ts)_
1048
1078
 
1049
1079
  ## `ppls tags delete ID`
1050
1080
 
@@ -1079,7 +1109,7 @@ EXAMPLES
1079
1109
  $ ppls tags delete 123
1080
1110
  ```
1081
1111
 
1082
- _See code: [src/commands/tags/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/tags/delete.ts)_
1112
+ _See code: [src/commands/tags/delete.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/tags/delete.ts)_
1083
1113
 
1084
1114
  ## `ppls tags list`
1085
1115
 
@@ -1088,15 +1118,13 @@ List tags
1088
1118
  ```
1089
1119
  USAGE
1090
1120
  $ ppls tags list [--date-format <value>] [--header <value>...] [--hostname <value>] [--plain | --json |
1091
- --table] [--token <value>] [--page <value>] [--page-size <value>] [--id-in <value> | --name-contains <value>]
1121
+ --table] [--token <value>] [--id-in <value>... | --name-contains <value>] [--page <value> --page-size <value>]
1092
1122
  [--sort <value>]
1093
1123
 
1094
1124
  FLAGS
1095
- --id-in=<value> Filter by id list (comma-separated)
1096
- --name-contains=<value> Filter by name substring
1097
- --page=<value> Page number to fetch
1098
- --page-size=<value> Number of results per page
1099
- --sort=<value> Sort results by the provided field
1125
+ --page=<value> Page number to fetch
1126
+ --page-size=<value> [default: disable pagination, all results] Number of results per page
1127
+ --sort=<value> Sort results by the provided field
1100
1128
 
1101
1129
  GLOBAL FLAGS
1102
1130
  --date-format=<value> [default: yyyy-MM-dd, env: PPLS_DATE_FORMAT] Format output dates using a template.
@@ -1109,6 +1137,10 @@ ENVIRONMENT FLAGS
1109
1137
  --hostname=<value> [env: PPLS_HOSTNAME] Paperless-ngx base URL
1110
1138
  --token=<value> [env: PPLS_TOKEN] Paperless-ngx API token
1111
1139
 
1140
+ FILTER FLAGS
1141
+ --id-in=<value>... Filter by id list (repeatable or comma-separated)
1142
+ --name-contains=<value> Filter by name substring
1143
+
1112
1144
  DESCRIPTION
1113
1145
  List tags
1114
1146
 
@@ -1116,7 +1148,7 @@ EXAMPLES
1116
1148
  $ ppls tags list
1117
1149
  ```
1118
1150
 
1119
- _See code: [src/commands/tags/list.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/tags/list.ts)_
1151
+ _See code: [src/commands/tags/list.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/tags/list.ts)_
1120
1152
 
1121
1153
  ## `ppls tags show ID`
1122
1154
 
@@ -1148,7 +1180,7 @@ EXAMPLES
1148
1180
  $ ppls tags show 123
1149
1181
  ```
1150
1182
 
1151
- _See code: [src/commands/tags/show.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/tags/show.ts)_
1183
+ _See code: [src/commands/tags/show.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/tags/show.ts)_
1152
1184
 
1153
1185
  ## `ppls tags update ID`
1154
1186
 
@@ -1186,5 +1218,5 @@ EXAMPLES
1186
1218
  $ ppls tags update 123 --name Inbox
1187
1219
  ```
1188
1220
 
1189
- _See code: [src/commands/tags/update.ts](https://github.com/nickchristensen/ppls/blob/v1.0.5/src/commands/tags/update.ts)_
1221
+ _See code: [src/commands/tags/update.ts](https://github.com/nickchristensen/ppls/blob/v1.2.0/src/commands/tags/update.ts)_
1190
1222
  <!-- commandsstop -->
@@ -6,6 +6,7 @@ export type ApiFlags = {
6
6
  hostname: string;
7
7
  token: string;
8
8
  };
9
+ type QueryParams = Record<string, number | number[] | string | string[] | undefined>;
9
10
  type ResolvedGlobalFlags = ApiFlags & {
10
11
  dateFormat: string;
11
12
  };
@@ -29,14 +30,14 @@ export declare abstract class BaseCommand extends Command {
29
30
  };
30
31
  static enableJsonFlag: boolean;
31
32
  private userConfigPromise?;
32
- protected buildApiUrl(hostnameValue: string, path: string, params?: Record<string, number | string | undefined>): URL;
33
- protected buildApiUrlFromFlags(flags: ApiFlags, path: string, params?: Record<string, number | string | undefined>): URL;
33
+ protected buildApiUrl(hostnameValue: string, path: string, params?: QueryParams): URL;
34
+ protected buildApiUrlFromFlags(flags: ApiFlags, path: string, params?: QueryParams): URL;
34
35
  protected deleteApiJson<T>(flags: ApiFlags, path: string): Promise<null | T>;
35
- protected fetchApiBinary(flags: ApiFlags, path: string, params?: Record<string, number | string | undefined>): Promise<{
36
+ protected fetchApiBinary(flags: ApiFlags, path: string, params?: QueryParams): Promise<{
36
37
  data: Uint8Array;
37
38
  headers: Headers;
38
39
  }>;
39
- protected fetchApiJson<T>(flags: ApiFlags, path: string, params?: Record<string, number | string | undefined>): Promise<T>;
40
+ protected fetchApiJson<T>(flags: ApiFlags, path: string, params?: QueryParams): Promise<T>;
40
41
  protected fetchJson<T>(url: URL, tokenValue: string, headers?: Record<string, string>): Promise<T>;
41
42
  protected formatErrorMessage(response: Response): Promise<string>;
42
43
  protected loadUserConfig(): Promise<UserConfig>;
@@ -31,7 +31,7 @@ type DownloadDocumentsOptions = {
31
31
  };
32
32
  export default class DocumentsDownload extends BaseCommand {
33
33
  static args: {
34
- id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
34
+ id: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
35
35
  };
36
36
  static description: string;
37
37
  static examples: string[];
@@ -40,9 +40,9 @@ export default class DocumentsDownload extends BaseCommand {
40
40
  output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
41
41
  'output-dir': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
42
42
  };
43
+ static strict: boolean;
43
44
  protected downloadDocument(options: DownloadDocumentOptions): Promise<DownloadResult>;
44
45
  protected downloadDocuments(options: DownloadDocumentsOptions): Promise<DownloadResult[]>;
45
- protected parseIds(raw: string): number[];
46
46
  run(): Promise<DownloadResult | DownloadResult[]>;
47
47
  }
48
48
  export {};
@@ -40,14 +40,26 @@ const resolveOutputPath = async (output, filename) => {
40
40
  }
41
41
  return resolved;
42
42
  };
43
+ const splitDelimitedValues = (input, delimiter) => {
44
+ const splitRegex = new RegExp(`(?<!\\\\)${delimiter}`);
45
+ return input
46
+ .split(splitRegex)
47
+ .map((value) => value.trim())
48
+ .map((value) => value
49
+ .replaceAll(new RegExp(`\\\\${delimiter}`, 'g'), delimiter)
50
+ .replace(/^"(.*)"$/, '$1')
51
+ .replace(/^'(.*)'$/, '$1'))
52
+ .filter((value) => value.length > 0);
53
+ };
43
54
  export default class DocumentsDownload extends BaseCommand {
44
55
  static args = {
45
- id: Args.string({ description: 'Document id or comma-separated list of ids', required: true }),
56
+ id: Args.string({ description: 'Document id (repeatable or comma-separated)' }),
46
57
  };
47
58
  static description = 'Download one or more documents';
48
59
  static examples = [
49
- '<%= config.bin %> <%= command.id %> 123 --output document.pdf',
50
- '<%= config.bin %> <%= command.id %> 123,124 --output-dir ./downloads',
60
+ '<%= config.bin %> <%= command.id %> --output document.pdf 123',
61
+ '<%= config.bin %> <%= command.id %> --output-dir ./downloads 123 456',
62
+ '<%= config.bin %> <%= command.id %> --output-dir ./downloads 123,456',
51
63
  ];
52
64
  static flags = {
53
65
  original: Flags.boolean({ description: 'Download original file' }),
@@ -62,6 +74,7 @@ export default class DocumentsDownload extends BaseCommand {
62
74
  exists: true,
63
75
  }),
64
76
  };
77
+ static strict = false;
65
78
  async downloadDocument(options) {
66
79
  const { apiFlags, id, original, output, outputDir } = options;
67
80
  const { data, headers: responseHeaders } = await this.fetchApiBinary(apiFlags, `/api/documents/${id}/download/`, {
@@ -103,28 +116,22 @@ export default class DocumentsDownload extends BaseCommand {
103
116
  }
104
117
  return results;
105
118
  }
106
- parseIds(raw) {
107
- const values = raw
108
- .split(',')
109
- .map((value) => value.trim())
110
- .filter((value) => value.length > 0);
119
+ async run() {
120
+ const { flags, metadata, raw } = await this.parse();
121
+ const { headers: apiHeaders, hostname, token } = await this.resolveGlobalFlags(flags, metadata);
122
+ const apiFlags = { headers: apiHeaders, hostname, token };
123
+ const typedFlags = flags;
124
+ const rawArgs = raw.filter((token) => token.type === 'arg').map((token) => token.input);
125
+ const values = rawArgs.flatMap((value) => splitDelimitedValues(value, ','));
111
126
  if (values.length === 0) {
112
127
  this.error('Provide at least one document id.');
113
128
  }
114
- return values.map((value) => {
129
+ const ids = values.map((value) => {
115
130
  if (!/^-?\d+$/.test(value)) {
116
131
  this.error(`Invalid document id: ${value}`);
117
132
  }
118
133
  return Number.parseInt(value, 10);
119
134
  });
120
- }
121
- async run() {
122
- const { args, flags, metadata } = await this.parse();
123
- const { headers: apiHeaders, hostname, token } = await this.resolveGlobalFlags(flags, metadata);
124
- const apiFlags = { headers: apiHeaders, hostname, token };
125
- const typedArgs = args;
126
- const typedFlags = flags;
127
- const ids = this.parseIds(typedArgs.id);
128
135
  let outputDir = typedFlags['output-dir'];
129
136
  if (ids.length > 1) {
130
137
  if (typedFlags.output) {
@@ -3,8 +3,38 @@ import { ListCommand } from '../../list-command.js';
3
3
  export default class DocumentsList extends ListCommand<Document> {
4
4
  static description: string;
5
5
  static examples: string[];
6
+ static flags: {
7
+ 'added-after': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ 'added-before': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ correspondent: import("@oclif/core/interfaces").OptionFlag<number[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ 'correspondent-not': import("@oclif/core/interfaces").OptionFlag<number[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'created-after': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'created-before': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ 'document-type': import("@oclif/core/interfaces").OptionFlag<number[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ 'document-type-not': import("@oclif/core/interfaces").OptionFlag<number[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ 'modified-after': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ 'modified-before': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ 'no-correspondent': import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'no-document-type': import("@oclif/core/interfaces").BooleanFlag<boolean>;
19
+ 'no-tag': import("@oclif/core/interfaces").BooleanFlag<boolean>;
20
+ tag: import("@oclif/core/interfaces").OptionFlag<number[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
21
+ 'tag-all': import("@oclif/core/interfaces").OptionFlag<number[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
22
+ 'tag-not': import("@oclif/core/interfaces").OptionFlag<number[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
23
+ 'id-in': import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
24
+ 'name-contains': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
25
+ page: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
26
+ 'page-size': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
27
+ sort: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
28
+ 'date-format': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
29
+ header: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
30
+ hostname: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
31
+ plain: import("@oclif/core/interfaces").BooleanFlag<boolean>;
32
+ table: import("@oclif/core/interfaces").BooleanFlag<boolean>;
33
+ token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
34
+ };
6
35
  protected listPath: string;
7
36
  protected tableAttrs: string[];
8
- protected listParams(flags: Parameters<ListCommand['listParams']>[0]): Record<string, number | string | undefined>;
37
+ protected extraListFlags(flags: Record<string, unknown>): Record<string, unknown>;
38
+ protected listParams(flags: Parameters<ListCommand['listParams']>[0]): Record<string, number | number[] | string | string[] | undefined>;
9
39
  protected plainTemplate(document: Document): string | undefined;
10
40
  }