@@ -382,6 +382,30 @@ class InstrumentRecordsCommands:
382382 print (response )
383383
384384
385+ class SubjectCommands :
386+ @require_url
387+ @require_token
388+ @staticmethod
389+ def delete (id : str ) -> None :
390+ url = f'{ config .base_url } /v1/subjects/{ id } '
391+ response = HttpClient .delete (url )
392+ print (response )
393+
394+ @require_url
395+ @require_token
396+ @staticmethod
397+ def find (min_date : datetime | None , subject_id : str | None ) -> None :
398+ url = build_url_with_params (
399+ f'{ config .base_url } /v1/subjects' ,
400+ {
401+ 'minDate' : min_date ,
402+ 'subjectId' : subject_id ,
403+ },
404+ )
405+ response = HttpClient .get (url )
406+ print (response )
407+
408+
385409class InstrumentsCommands :
386410 @require_url
387411 @require_token
@@ -517,6 +541,22 @@ class CLI:
517541 )
518542 update_parser .set_defaults (fn = InstrumentRecordsCommands .update )
519543
544+ def _create_subjects_parser (self ):
545+ subparsers = self ._create_subcommand_subparsers ('subjects' )
546+
547+ delete_parser = subparsers .add_parser ('delete' , help = 'delete an subject record by id' )
548+ delete_parser .add_argument ('--id' , required = True , help = 'id of the subject record to delete' )
549+ delete_parser .set_defaults (fn = InstrumentRecordsCommands .delete )
550+
551+ find_parser = subparsers .add_parser ('find' , help = 'search subject records by optional filters' )
552+ find_parser .add_argument (
553+ '--min-date' ,
554+ type = ArgumentTypes .valid_datetime ,
555+ help = 'filter records created after this date (format: yyyy-mm-dd or yyyy-mm-dd hh:mm:ss)' ,
556+ )
557+ find_parser .add_argument ('--subject-id' , help = 'filter by subject id' )
558+ find_parser .set_defaults (fn = InstrumentRecordsCommands .find )
559+
520560 def _create_instruments_parser (self ):
521561 subparsers = self ._create_subcommand_subparsers ('instruments' )
522562 get_parser = subparsers .add_parser ('list' , help = 'list all instruments, optionally filtered by kind' )
0 commit comments