standardbots 2.0.0.dev1745468079__py3-none-any.whl → 2.0.0.dev1750459189__py3-none-any.whl

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.

Potentially problematic release.


This version of standardbots might be problematic. Click here for more details.

@@ -354,6 +354,374 @@ class Default:
354
354
  if parsed is None and (is_user_error or is_unavailable):
355
355
  parsed = models.parse_error_response(json.loads(response.data))
356
356
 
357
+ return Response(
358
+ parsed,
359
+ response.status,
360
+ response
361
+ )
362
+ except urllib3.exceptions.MaxRetryError:
363
+ return Response(
364
+ models.ErrorResponse(
365
+ error=models.ErrorEnum.InternalServerError,
366
+ message="Connection Refused"
367
+ ),
368
+ 503,
369
+ None
370
+ )
371
+ class Payload:
372
+ def __init__(self, request_manager: RequestManager):
373
+ self._request_manager = request_manager
374
+
375
+
376
+ def set_payload(
377
+ self,
378
+ body: models.PayloadStateRequest,
379
+ ) -> Response[
380
+ Union[
381
+ models.ErrorResponse,
382
+ models.ErrorResponse,
383
+ None
384
+ ],
385
+ None
386
+ ]:
387
+ """
388
+ Set a value for the mass being carried by the robot's end-effector.
389
+
390
+ """
391
+ path = "/api/v1/payload"
392
+ try:
393
+ response = self._request_manager.request(
394
+ "POST",
395
+ path,
396
+ headers=self._request_manager.json_headers(),
397
+ body=json.dumps(models.serialize_payload_state_request(body)),
398
+ )
399
+ parsed = None
400
+ if response.status == 400:
401
+ parsed = models.parse_error_response(json.loads(response.data))
402
+
403
+ is_user_error = response.status >= 400 and response.status <= 500
404
+ is_unavailable = response.status == 503
405
+ if parsed is None and (is_user_error or is_unavailable):
406
+ parsed = models.parse_error_response(json.loads(response.data))
407
+
408
+ return Response(
409
+ parsed,
410
+ response.status,
411
+ response
412
+ )
413
+ except urllib3.exceptions.MaxRetryError:
414
+ return Response(
415
+ models.ErrorResponse(
416
+ error=models.ErrorEnum.InternalServerError,
417
+ message="Connection Refused"
418
+ ),
419
+ 503,
420
+ None
421
+ )
422
+ def get_payload(
423
+ self,
424
+ ) -> Response[
425
+ Union[
426
+ models.PayloadStateResponse,
427
+ models.ErrorResponse,
428
+ None
429
+ ],
430
+ models.PayloadStateResponse
431
+ ]:
432
+ """
433
+ Get the current mass value being carried by the robot&#x27;s end-effector.
434
+
435
+ """
436
+ path = "/api/v1/payload"
437
+ try:
438
+ response = self._request_manager.request(
439
+ "GET",
440
+ path,
441
+ headers=self._request_manager.json_headers(),
442
+ )
443
+ parsed = None
444
+ if response.status == 200:
445
+ parsed = models.parse_payload_state_response(json.loads(response.data))
446
+
447
+ is_user_error = response.status >= 400 and response.status <= 500
448
+ is_unavailable = response.status == 503
449
+ if parsed is None and (is_user_error or is_unavailable):
450
+ parsed = models.parse_error_response(json.loads(response.data))
451
+
452
+ return Response(
453
+ parsed,
454
+ response.status,
455
+ response
456
+ )
457
+ except urllib3.exceptions.MaxRetryError:
458
+ return Response(
459
+ models.ErrorResponse(
460
+ error=models.ErrorEnum.InternalServerError,
461
+ message="Connection Refused"
462
+ ),
463
+ 503,
464
+ None
465
+ )
466
+ class Recorder:
467
+ def __init__(self, request_manager: RequestManager):
468
+ self._request_manager = request_manager
469
+
470
+
471
+ def get_recorder_state(
472
+ self,
473
+ ) -> Response[
474
+ Union[
475
+ models.RecorderState,
476
+ models.ErrorResponse,
477
+ None
478
+ ],
479
+ models.RecorderState
480
+ ]:
481
+ """
482
+ Get the state of the recorder
483
+ """
484
+ path = "/api/v1/recorder/state"
485
+ try:
486
+ response = self._request_manager.request(
487
+ "GET",
488
+ path,
489
+ headers=self._request_manager.json_headers(),
490
+ )
491
+ parsed = None
492
+ if response.status == 200:
493
+ parsed = models.parse_recorder_state(json.loads(response.data))
494
+
495
+ is_user_error = response.status >= 400 and response.status <= 500
496
+ is_unavailable = response.status == 503
497
+ if parsed is None and (is_user_error or is_unavailable):
498
+ parsed = models.parse_error_response(json.loads(response.data))
499
+
500
+ return Response(
501
+ parsed,
502
+ response.status,
503
+ response
504
+ )
505
+ except urllib3.exceptions.MaxRetryError:
506
+ return Response(
507
+ models.ErrorResponse(
508
+ error=models.ErrorEnum.InternalServerError,
509
+ message="Connection Refused"
510
+ ),
511
+ 503,
512
+ None
513
+ )
514
+ def update_recording(
515
+ self,
516
+ body: models.RecorderConfig,
517
+ ) -> Response[
518
+ Union[
519
+ models.UpdateRecordingResponse,
520
+ models.ErrorResponse,
521
+ None
522
+ ],
523
+ models.UpdateRecordingResponse
524
+ ]:
525
+ """
526
+ Update recording configuration
527
+ """
528
+ path = "/api/v1/recorder/update"
529
+ try:
530
+ response = self._request_manager.request(
531
+ "POST",
532
+ path,
533
+ headers=self._request_manager.json_headers(),
534
+ body=json.dumps(models.serialize_recorder_config(body)),
535
+ )
536
+ parsed = None
537
+ if response.status == 200:
538
+ parsed = models.parse_update_recording_response(json.loads(response.data))
539
+
540
+ is_user_error = response.status >= 400 and response.status <= 500
541
+ is_unavailable = response.status == 503
542
+ if parsed is None and (is_user_error or is_unavailable):
543
+ parsed = models.parse_error_response(json.loads(response.data))
544
+
545
+ return Response(
546
+ parsed,
547
+ response.status,
548
+ response
549
+ )
550
+ except urllib3.exceptions.MaxRetryError:
551
+ return Response(
552
+ models.ErrorResponse(
553
+ error=models.ErrorEnum.InternalServerError,
554
+ message="Connection Refused"
555
+ ),
556
+ 503,
557
+ None
558
+ )
559
+ def enable_recorder_bot(
560
+ self,
561
+ body: models.ToggleRecorderBotRequest,
562
+ ) -> Response[
563
+ Union[
564
+ models.UpdateRecordingResponse,
565
+ models.ErrorResponse,
566
+ None
567
+ ],
568
+ models.UpdateRecordingResponse
569
+ ]:
570
+ """
571
+ Enable or disable a secondary bot
572
+ """
573
+ path = "/api/v1/recorder/set-bot-enabled"
574
+ try:
575
+ response = self._request_manager.request(
576
+ "POST",
577
+ path,
578
+ headers=self._request_manager.json_headers(),
579
+ body=json.dumps(models.serialize_toggle_recorder_bot_request(body)),
580
+ )
581
+ parsed = None
582
+ if response.status == 200:
583
+ parsed = models.parse_update_recording_response(json.loads(response.data))
584
+
585
+ is_user_error = response.status >= 400 and response.status <= 500
586
+ is_unavailable = response.status == 503
587
+ if parsed is None and (is_user_error or is_unavailable):
588
+ parsed = models.parse_error_response(json.loads(response.data))
589
+
590
+ return Response(
591
+ parsed,
592
+ response.status,
593
+ response
594
+ )
595
+ except urllib3.exceptions.MaxRetryError:
596
+ return Response(
597
+ models.ErrorResponse(
598
+ error=models.ErrorEnum.InternalServerError,
599
+ message="Connection Refused"
600
+ ),
601
+ 503,
602
+ None
603
+ )
604
+ def start_recording(
605
+ self,
606
+ body: models.StartRecordingRequest,
607
+ ) -> Response[
608
+ Union[
609
+ models.StartRecordingResponse,
610
+ models.ErrorResponse,
611
+ None
612
+ ],
613
+ models.StartRecordingResponse
614
+ ]:
615
+ """
616
+ Start recording movement and camera data
617
+ """
618
+ path = "/api/v1/recorder/start"
619
+ try:
620
+ response = self._request_manager.request(
621
+ "POST",
622
+ path,
623
+ headers=self._request_manager.json_headers(),
624
+ body=json.dumps(models.serialize_start_recording_request(body)),
625
+ )
626
+ parsed = None
627
+ if response.status == 200:
628
+ parsed = models.parse_start_recording_response(json.loads(response.data))
629
+
630
+ is_user_error = response.status >= 400 and response.status <= 500
631
+ is_unavailable = response.status == 503
632
+ if parsed is None and (is_user_error or is_unavailable):
633
+ parsed = models.parse_error_response(json.loads(response.data))
634
+
635
+ return Response(
636
+ parsed,
637
+ response.status,
638
+ response
639
+ )
640
+ except urllib3.exceptions.MaxRetryError:
641
+ return Response(
642
+ models.ErrorResponse(
643
+ error=models.ErrorEnum.InternalServerError,
644
+ message="Connection Refused"
645
+ ),
646
+ 503,
647
+ None
648
+ )
649
+ def stop_recording(
650
+ self,
651
+ body: models.StopRecordingRequest,
652
+ ) -> Response[
653
+ Union[
654
+ models.StopRecordingResponse,
655
+ models.ErrorResponse,
656
+ None
657
+ ],
658
+ models.StopRecordingResponse
659
+ ]:
660
+ """
661
+ Stop recording movement and camera data
662
+ """
663
+ path = "/api/v1/recorder/stop"
664
+ try:
665
+ response = self._request_manager.request(
666
+ "POST",
667
+ path,
668
+ headers=self._request_manager.json_headers(),
669
+ body=json.dumps(models.serialize_stop_recording_request(body)),
670
+ )
671
+ parsed = None
672
+ if response.status == 200:
673
+ parsed = models.parse_stop_recording_response(json.loads(response.data))
674
+
675
+ is_user_error = response.status >= 400 and response.status <= 500
676
+ is_unavailable = response.status == 503
677
+ if parsed is None and (is_user_error or is_unavailable):
678
+ parsed = models.parse_error_response(json.loads(response.data))
679
+
680
+ return Response(
681
+ parsed,
682
+ response.status,
683
+ response
684
+ )
685
+ except urllib3.exceptions.MaxRetryError:
686
+ return Response(
687
+ models.ErrorResponse(
688
+ error=models.ErrorEnum.InternalServerError,
689
+ message="Connection Refused"
690
+ ),
691
+ 503,
692
+ None
693
+ )
694
+ def save_recording(
695
+ self,
696
+ body: models.SaveRecordingRequest,
697
+ ) -> Response[
698
+ Union[
699
+ models.SaveRecordingResponse,
700
+ models.ErrorResponse,
701
+ None
702
+ ],
703
+ models.SaveRecordingResponse
704
+ ]:
705
+ """
706
+ Save recording to marvin app
707
+ """
708
+ path = "/api/v1/recorder/save"
709
+ try:
710
+ response = self._request_manager.request(
711
+ "POST",
712
+ path,
713
+ headers=self._request_manager.json_headers(),
714
+ body=json.dumps(models.serialize_save_recording_request(body)),
715
+ )
716
+ parsed = None
717
+ if response.status == 200:
718
+ parsed = models.parse_save_recording_response(json.loads(response.data))
719
+
720
+ is_user_error = response.status >= 400 and response.status <= 500
721
+ is_unavailable = response.status == 503
722
+ if parsed is None and (is_user_error or is_unavailable):
723
+ parsed = models.parse_error_response(json.loads(response.data))
724
+
357
725
  return Response(
358
726
  parsed,
359
727
  response.status,
@@ -373,29 +741,396 @@ class Default:
373
741
  self._request_manager = request_manager
374
742
 
375
743
 
376
- def get_sensors(
744
+ def get_sensors(
745
+ self,
746
+ ) -> Response[
747
+ Union[
748
+ models.SensorsConfiguration,
749
+ models.ErrorResponse,
750
+ None
751
+ ],
752
+ models.SensorsConfiguration
753
+ ]:
754
+ """
755
+ Get the current state of all sensors
756
+ """
757
+ path = "/api/v1/equipment/custom/sensors"
758
+ try:
759
+ response = self._request_manager.request(
760
+ "GET",
761
+ path,
762
+ headers=self._request_manager.json_headers(),
763
+ )
764
+ parsed = None
765
+ if response.status == 200:
766
+ parsed = models.parse_sensors_configuration(json.loads(response.data))
767
+
768
+ is_user_error = response.status >= 400 and response.status <= 500
769
+ is_unavailable = response.status == 503
770
+ if parsed is None and (is_user_error or is_unavailable):
771
+ parsed = models.parse_error_response(json.loads(response.data))
772
+
773
+ return Response(
774
+ parsed,
775
+ response.status,
776
+ response
777
+ )
778
+ except urllib3.exceptions.MaxRetryError:
779
+ return Response(
780
+ models.ErrorResponse(
781
+ error=models.ErrorEnum.InternalServerError,
782
+ message="Connection Refused"
783
+ ),
784
+ 503,
785
+ None
786
+ )
787
+ class Space:
788
+ def __init__(self, request_manager: RequestManager):
789
+ self._request_manager = request_manager
790
+
791
+
792
+ def list_planes(
793
+ self,
794
+ limit: int,
795
+ offset: int,
796
+ ) -> Response[
797
+ Union[
798
+ models.PlanesPaginatedResponse,
799
+ models.ErrorResponse,
800
+ None
801
+ ],
802
+ models.PlanesPaginatedResponse
803
+ ]:
804
+ """
805
+ List Planes
806
+ """
807
+ path = "/api/v1/space/planes"
808
+ try:
809
+ response = self._request_manager.request(
810
+ "GET",
811
+ path,
812
+ headers=self._request_manager.json_headers(),
813
+ fields={
814
+ "limit": models.serialize_i_64(limit),
815
+ "offset": models.serialize_i_64(offset),
816
+ }
817
+ )
818
+ parsed = None
819
+ if response.status == 200:
820
+ parsed = models.parse_planes_paginated_response(json.loads(response.data))
821
+
822
+ is_user_error = response.status >= 400 and response.status <= 500
823
+ is_unavailable = response.status == 503
824
+ if parsed is None and (is_user_error or is_unavailable):
825
+ parsed = models.parse_error_response(json.loads(response.data))
826
+
827
+ return Response(
828
+ parsed,
829
+ response.status,
830
+ response
831
+ )
832
+ except urllib3.exceptions.MaxRetryError:
833
+ return Response(
834
+ models.ErrorResponse(
835
+ error=models.ErrorEnum.InternalServerError,
836
+ message="Connection Refused"
837
+ ),
838
+ 503,
839
+ None
840
+ )
841
+ class Teleop:
842
+ def __init__(self, request_manager: RequestManager):
843
+ self._request_manager = request_manager
844
+
845
+
846
+ def get_state(
847
+ self,
848
+ ) -> Response[
849
+ Union[
850
+ models.TeleopState,
851
+ models.ErrorResponse,
852
+ None
853
+ ],
854
+ models.TeleopState
855
+ ]:
856
+ """
857
+ Get the state of the teleop
858
+ """
859
+ path = "/api/v1/teleop/state"
860
+ try:
861
+ response = self._request_manager.request(
862
+ "GET",
863
+ path,
864
+ headers=self._request_manager.json_headers(),
865
+ )
866
+ parsed = None
867
+ if response.status == 200:
868
+ parsed = models.parse_teleop_state(json.loads(response.data))
869
+
870
+ is_user_error = response.status >= 400 and response.status <= 500
871
+ is_unavailable = response.status == 503
872
+ if parsed is None and (is_user_error or is_unavailable):
873
+ parsed = models.parse_error_response(json.loads(response.data))
874
+
875
+ return Response(
876
+ parsed,
877
+ response.status,
878
+ response
879
+ )
880
+ except urllib3.exceptions.MaxRetryError:
881
+ return Response(
882
+ models.ErrorResponse(
883
+ error=models.ErrorEnum.InternalServerError,
884
+ message="Connection Refused"
885
+ ),
886
+ 503,
887
+ None
888
+ )
889
+ def enable_bot(
890
+ self,
891
+ body: models.ToggleTeleopBotRequest,
892
+ ) -> Response[
893
+ Union[
894
+ models.TeleopState,
895
+ models.ErrorResponse,
896
+ None
897
+ ],
898
+ models.TeleopState
899
+ ]:
900
+ """
901
+ Enable or disable a secondary bot
902
+ """
903
+ path = "/api/v1/teleop/set-bot-enabled"
904
+ try:
905
+ response = self._request_manager.request(
906
+ "POST",
907
+ path,
908
+ headers=self._request_manager.json_headers(),
909
+ body=json.dumps(models.serialize_toggle_teleop_bot_request(body)),
910
+ )
911
+ parsed = None
912
+ if response.status == 200:
913
+ parsed = models.parse_teleop_state(json.loads(response.data))
914
+
915
+ is_user_error = response.status >= 400 and response.status <= 500
916
+ is_unavailable = response.status == 503
917
+ if parsed is None and (is_user_error or is_unavailable):
918
+ parsed = models.parse_error_response(json.loads(response.data))
919
+
920
+ return Response(
921
+ parsed,
922
+ response.status,
923
+ response
924
+ )
925
+ except urllib3.exceptions.MaxRetryError:
926
+ return Response(
927
+ models.ErrorResponse(
928
+ error=models.ErrorEnum.InternalServerError,
929
+ message="Connection Refused"
930
+ ),
931
+ 503,
932
+ None
933
+ )
934
+ def set_teleop_config(
935
+ self,
936
+ body: models.TeleopConfig,
937
+ ) -> Response[
938
+ Union[
939
+ models.TeleopState,
940
+ models.ErrorResponse,
941
+ None
942
+ ],
943
+ models.TeleopState
944
+ ]:
945
+ """
946
+ Set teleop config parameters
947
+ """
948
+ path = "/api/v1/teleop/set-config"
949
+ try:
950
+ response = self._request_manager.request(
951
+ "POST",
952
+ path,
953
+ headers=self._request_manager.json_headers(),
954
+ body=json.dumps(models.serialize_teleop_config(body)),
955
+ )
956
+ parsed = None
957
+ if response.status == 200:
958
+ parsed = models.parse_teleop_state(json.loads(response.data))
959
+
960
+ is_user_error = response.status >= 400 and response.status <= 500
961
+ is_unavailable = response.status == 503
962
+ if parsed is None and (is_user_error or is_unavailable):
963
+ parsed = models.parse_error_response(json.loads(response.data))
964
+
965
+ return Response(
966
+ parsed,
967
+ response.status,
968
+ response
969
+ )
970
+ except urllib3.exceptions.MaxRetryError:
971
+ return Response(
972
+ models.ErrorResponse(
973
+ error=models.ErrorEnum.InternalServerError,
974
+ message="Connection Refused"
975
+ ),
976
+ 503,
977
+ None
978
+ )
979
+ def start_teleop(
980
+ self,
981
+ ) -> Response[
982
+ Union[
983
+ models.StartTeleopResponse,
984
+ models.ErrorResponse,
985
+ None
986
+ ],
987
+ models.StartTeleopResponse
988
+ ]:
989
+ """
990
+ Start teleoperation
991
+ """
992
+ path = "/api/v1/teleop/start"
993
+ try:
994
+ response = self._request_manager.request(
995
+ "POST",
996
+ path,
997
+ headers=self._request_manager.json_headers(),
998
+ )
999
+ parsed = None
1000
+ if response.status == 200:
1001
+ parsed = models.parse_start_teleop_response(json.loads(response.data))
1002
+
1003
+ is_user_error = response.status >= 400 and response.status <= 500
1004
+ is_unavailable = response.status == 503
1005
+ if parsed is None and (is_user_error or is_unavailable):
1006
+ parsed = models.parse_error_response(json.loads(response.data))
1007
+
1008
+ return Response(
1009
+ parsed,
1010
+ response.status,
1011
+ response
1012
+ )
1013
+ except urllib3.exceptions.MaxRetryError:
1014
+ return Response(
1015
+ models.ErrorResponse(
1016
+ error=models.ErrorEnum.InternalServerError,
1017
+ message="Connection Refused"
1018
+ ),
1019
+ 503,
1020
+ None
1021
+ )
1022
+ def stop_teleop(
1023
+ self,
1024
+ ) -> Response[
1025
+ Union[
1026
+ models.StopTeleopResponse,
1027
+ models.ErrorResponse,
1028
+ None
1029
+ ],
1030
+ models.StopTeleopResponse
1031
+ ]:
1032
+ """
1033
+ Stop recording movement and camera data
1034
+ """
1035
+ path = "/api/v1/teleop/stop"
1036
+ try:
1037
+ response = self._request_manager.request(
1038
+ "POST",
1039
+ path,
1040
+ headers=self._request_manager.json_headers(),
1041
+ )
1042
+ parsed = None
1043
+ if response.status == 200:
1044
+ parsed = models.parse_stop_teleop_response(json.loads(response.data))
1045
+
1046
+ is_user_error = response.status >= 400 and response.status <= 500
1047
+ is_unavailable = response.status == 503
1048
+ if parsed is None and (is_user_error or is_unavailable):
1049
+ parsed = models.parse_error_response(json.loads(response.data))
1050
+
1051
+ return Response(
1052
+ parsed,
1053
+ response.status,
1054
+ response
1055
+ )
1056
+ except urllib3.exceptions.MaxRetryError:
1057
+ return Response(
1058
+ models.ErrorResponse(
1059
+ error=models.ErrorEnum.InternalServerError,
1060
+ message="Connection Refused"
1061
+ ),
1062
+ 503,
1063
+ None
1064
+ )
1065
+ def set_ratio_control(
1066
+ self,
1067
+ body: models.SetRatioControlRequest,
1068
+ ) -> Response[
1069
+ Union[
1070
+ models.TeleopState,
1071
+ models.ErrorResponse,
1072
+ None
1073
+ ],
1074
+ models.TeleopState
1075
+ ]:
1076
+ """
1077
+ Set ratio control parameters
1078
+ """
1079
+ path = "/api/v1/teleop/set-ratio-control"
1080
+ try:
1081
+ response = self._request_manager.request(
1082
+ "POST",
1083
+ path,
1084
+ headers=self._request_manager.json_headers(),
1085
+ body=json.dumps(models.serialize_set_ratio_control_request(body)),
1086
+ )
1087
+ parsed = None
1088
+ if response.status == 200:
1089
+ parsed = models.parse_teleop_state(json.loads(response.data))
1090
+
1091
+ is_user_error = response.status >= 400 and response.status <= 500
1092
+ is_unavailable = response.status == 503
1093
+ if parsed is None and (is_user_error or is_unavailable):
1094
+ parsed = models.parse_error_response(json.loads(response.data))
1095
+
1096
+ return Response(
1097
+ parsed,
1098
+ response.status,
1099
+ response
1100
+ )
1101
+ except urllib3.exceptions.MaxRetryError:
1102
+ return Response(
1103
+ models.ErrorResponse(
1104
+ error=models.ErrorEnum.InternalServerError,
1105
+ message="Connection Refused"
1106
+ ),
1107
+ 503,
1108
+ None
1109
+ )
1110
+ class Webrtc:
1111
+ def __init__(self, request_manager: RequestManager):
1112
+ self._request_manager = request_manager
1113
+
1114
+
1115
+ def send_message(
377
1116
  self,
1117
+ body: models.SendMessageRequest,
378
1118
  ) -> Response[
379
- Union[
380
- models.SensorsConfiguration,
381
- models.ErrorResponse,
382
- None
383
- ],
384
- models.SensorsConfiguration
1119
+ None,
1120
+ None
385
1121
  ]:
386
1122
  """
387
- Get the current state of all sensors
1123
+ Send a WebRTC signaling message
388
1124
  """
389
- path = "/api/v1/equipment/custom/sensors"
1125
+ path = "/api/v1/webrtc/message"
390
1126
  try:
391
1127
  response = self._request_manager.request(
392
- "GET",
1128
+ "POST",
393
1129
  path,
394
1130
  headers=self._request_manager.json_headers(),
1131
+ body=json.dumps(models.serialize_send_message_request(body)),
395
1132
  )
396
1133
  parsed = None
397
- if response.status == 200:
398
- parsed = models.parse_sensors_configuration(json.loads(response.data))
399
1134
 
400
1135
  is_user_error = response.status >= 400 and response.status <= 500
401
1136
  is_unavailable = response.status == 503
@@ -416,40 +1151,35 @@ class Default:
416
1151
  503,
417
1152
  None
418
1153
  )
419
- class Space:
420
- def __init__(self, request_manager: RequestManager):
421
- self._request_manager = request_manager
422
-
423
-
424
- def list_planes(
1154
+ def get_messages(
425
1155
  self,
426
- limit: int,
427
- offset: int,
1156
+ base_url: str,
1157
+ client_id: str,
428
1158
  ) -> Response[
429
1159
  Union[
430
- models.PlanesPaginatedResponse,
1160
+ models.GetMessagesResponse,
431
1161
  models.ErrorResponse,
432
1162
  None
433
1163
  ],
434
- models.PlanesPaginatedResponse
1164
+ models.GetMessagesResponse
435
1165
  ]:
436
1166
  """
437
- List Planes
1167
+ Get pending WebRTC signaling messages
438
1168
  """
439
- path = "/api/v1/space/planes"
1169
+ path = "/api/v1/webrtc/messages"
440
1170
  try:
441
1171
  response = self._request_manager.request(
442
1172
  "GET",
443
1173
  path,
444
1174
  headers=self._request_manager.json_headers(),
445
1175
  fields={
446
- "limit": models.serialize_i_64(limit),
447
- "offset": models.serialize_i_64(offset),
1176
+ "baseUrl": models.serialize_str(base_url),
1177
+ "clientId": models.serialize_str(client_id),
448
1178
  }
449
1179
  )
450
1180
  parsed = None
451
1181
  if response.status == 200:
452
- parsed = models.parse_planes_paginated_response(json.loads(response.data))
1182
+ parsed = models.parse_get_messages_response(json.loads(response.data))
453
1183
 
454
1184
  is_user_error = response.status >= 400 and response.status <= 500
455
1185
  is_unavailable = response.status == 503
@@ -473,15 +1203,23 @@ class Default:
473
1203
 
474
1204
  calibration: Calibration
475
1205
  equipment: Equipment
1206
+ payload: Payload
1207
+ recorder: Recorder
476
1208
  sensors: Sensors
477
1209
  space: Space
1210
+ teleop: Teleop
1211
+ webrtc: Webrtc
478
1212
 
479
1213
  def __init__(self, request_manager: RequestManager):
480
1214
  self._request_manager = request_manager
481
1215
  self.calibration = Default.Calibration(request_manager)
482
1216
  self.equipment = Default.Equipment(request_manager)
1217
+ self.payload = Default.Payload(request_manager)
1218
+ self.recorder = Default.Recorder(request_manager)
483
1219
  self.sensors = Default.Sensors(request_manager)
484
1220
  self.space = Default.Space(request_manager)
1221
+ self.teleop = Default.Teleop(request_manager)
1222
+ self.webrtc = Default.Webrtc(request_manager)
485
1223
 
486
1224
  class Movement:
487
1225
  _request_manager: RequestManager
@@ -783,14 +1521,113 @@ class Movement:
783
1521
  503,
784
1522
  None
785
1523
  )
1524
+ class PositionControlled:
1525
+ def __init__(self, request_manager: RequestManager):
1526
+ self._request_manager = request_manager
1527
+
1528
+
1529
+ def set_arm_position_controlled(
1530
+ self,
1531
+ body: models.ArmPositionUpdateControlledRequest,
1532
+ ) -> Response[
1533
+ Union[
1534
+ models.SetArmPositionControlledResponse,
1535
+ models.ErrorResponse,
1536
+ None
1537
+ ],
1538
+ models.SetArmPositionControlledResponse
1539
+ ]:
1540
+ """
1541
+ Control the position of the RO1 Robot arm in a controlled manner. This endpoint will return once the movement is initiated. The client should then call the heartbeat endpoint every 300ms to continue the movement and get its status. The robot should be idle before calling this endpoint.
1542
+
1543
+ """
1544
+ path = "/api/v1/movement/position/arm/controlled"
1545
+ try:
1546
+ response = self._request_manager.request(
1547
+ "POST",
1548
+ path,
1549
+ headers=self._request_manager.json_headers(),
1550
+ body=json.dumps(models.serialize_arm_position_update_controlled_request(body)),
1551
+ )
1552
+ parsed = None
1553
+ if response.status == 200:
1554
+ parsed = models.parse_set_arm_position_controlled_response(json.loads(response.data))
1555
+
1556
+ is_user_error = response.status >= 400 and response.status <= 500
1557
+ is_unavailable = response.status == 503
1558
+ if parsed is None and (is_user_error or is_unavailable):
1559
+ parsed = models.parse_error_response(json.loads(response.data))
1560
+
1561
+ return Response(
1562
+ parsed,
1563
+ response.status,
1564
+ response
1565
+ )
1566
+ except urllib3.exceptions.MaxRetryError:
1567
+ return Response(
1568
+ models.ErrorResponse(
1569
+ error=models.ErrorEnum.InternalServerError,
1570
+ message="Connection Refused"
1571
+ ),
1572
+ 503,
1573
+ None
1574
+ )
1575
+ def send_heartbeat(
1576
+ self,
1577
+ command_id: str,
1578
+ ) -> Response[
1579
+ Union[
1580
+ models.SetArmPositionControlledResponse,
1581
+ models.ErrorResponse,
1582
+ None
1583
+ ],
1584
+ models.SetArmPositionControlledResponse
1585
+ ]:
1586
+ """
1587
+ Use this endpoint to send a heartbeat for the current movement. This assumes that the client has already called the &quot;Set Arm Position With Heartbeat&quot; endpoint and that the movement is in progress. This heartbeat should be sent every 300ms. The robot should be executing a movement when calling this endpoint.
1588
+
1589
+ """
1590
+ path = "/api/v1/movement/position/arm/controlled/{command_id}/heartbeat"
1591
+ path = path.replace("{command_id}", str(command_id))
1592
+ try:
1593
+ response = self._request_manager.request(
1594
+ "POST",
1595
+ path,
1596
+ headers=self._request_manager.json_headers(),
1597
+ )
1598
+ parsed = None
1599
+ if response.status == 200:
1600
+ parsed = models.parse_set_arm_position_controlled_response(json.loads(response.data))
1601
+
1602
+ is_user_error = response.status >= 400 and response.status <= 500
1603
+ is_unavailable = response.status == 503
1604
+ if parsed is None and (is_user_error or is_unavailable):
1605
+ parsed = models.parse_error_response(json.loads(response.data))
1606
+
1607
+ return Response(
1608
+ parsed,
1609
+ response.status,
1610
+ response
1611
+ )
1612
+ except urllib3.exceptions.MaxRetryError:
1613
+ return Response(
1614
+ models.ErrorResponse(
1615
+ error=models.ErrorEnum.InternalServerError,
1616
+ message="Connection Refused"
1617
+ ),
1618
+ 503,
1619
+ None
1620
+ )
786
1621
 
787
1622
  brakes: Brakes
788
1623
  position: Position
1624
+ position_controlled: PositionControlled
789
1625
 
790
1626
  def __init__(self, request_manager: RequestManager):
791
1627
  self._request_manager = request_manager
792
1628
  self.brakes = Movement.Brakes(request_manager)
793
1629
  self.position = Movement.Position(request_manager)
1630
+ self.position_controlled = Movement.PositionControlled(request_manager)
794
1631
 
795
1632
  class Camera:
796
1633
  _request_manager: RequestManager
@@ -1011,16 +1848,66 @@ class Camera:
1011
1848
  503,
1012
1849
  None
1013
1850
  )
1851
+ class Bot:
1852
+ def __init__(self, request_manager: RequestManager):
1853
+ self._request_manager = request_manager
1854
+
1855
+
1856
+ def get_connected_cameras(
1857
+ self,
1858
+ ) -> Response[
1859
+ Union[
1860
+ models.CameraDeviceList,
1861
+ models.ErrorResponse,
1862
+ None
1863
+ ],
1864
+ models.CameraDeviceList
1865
+ ]:
1866
+ """
1867
+ Retrieve the list of connected camera devices from camera bot.
1868
+ """
1869
+ path = "/api/v1/cameras/connected"
1870
+ try:
1871
+ response = self._request_manager.request(
1872
+ "GET",
1873
+ path,
1874
+ headers=self._request_manager.json_headers(),
1875
+ )
1876
+ parsed = None
1877
+ if response.status == 200:
1878
+ parsed = models.parse_camera_device_list(json.loads(response.data))
1879
+
1880
+ is_user_error = response.status >= 400 and response.status <= 500
1881
+ is_unavailable = response.status == 503
1882
+ if parsed is None and (is_user_error or is_unavailable):
1883
+ parsed = models.parse_error_response(json.loads(response.data))
1884
+
1885
+ return Response(
1886
+ parsed,
1887
+ response.status,
1888
+ response
1889
+ )
1890
+ except urllib3.exceptions.MaxRetryError:
1891
+ return Response(
1892
+ models.ErrorResponse(
1893
+ error=models.ErrorEnum.InternalServerError,
1894
+ message="Connection Refused"
1895
+ ),
1896
+ 503,
1897
+ None
1898
+ )
1014
1899
 
1015
1900
  data: Data
1016
1901
  settings: Settings
1017
1902
  status: Status
1903
+ bot: Bot
1018
1904
 
1019
1905
  def __init__(self, request_manager: RequestManager):
1020
1906
  self._request_manager = request_manager
1021
1907
  self.data = Camera.Data(request_manager)
1022
1908
  self.settings = Camera.Settings(request_manager)
1023
1909
  self.status = Camera.Status(request_manager)
1910
+ self.bot = Camera.Bot(request_manager)
1024
1911
 
1025
1912
  class Faults:
1026
1913
  _request_manager: RequestManager
@@ -1393,6 +2280,112 @@ class IO:
1393
2280
  self.control = IO.Control(request_manager)
1394
2281
  self.status = IO.Status(request_manager)
1395
2282
 
2283
+ class Messenger:
2284
+ _request_manager: RequestManager
2285
+ class Peers:
2286
+ def __init__(self, request_manager: RequestManager):
2287
+ self._request_manager = request_manager
2288
+
2289
+
2290
+ def register_peer(
2291
+ self,
2292
+ body: models.RegisterPeerRequest,
2293
+ ) -> Response[
2294
+ Union[
2295
+ models.RegisterPeerResponse,
2296
+ models.ErrorResponse,
2297
+ None
2298
+ ],
2299
+ models.RegisterPeerResponse
2300
+ ]:
2301
+ """
2302
+ Register a new peer with the messenger system.
2303
+
2304
+ """
2305
+ path = "/api/v1/messenger/peers"
2306
+ try:
2307
+ response = self._request_manager.request(
2308
+ "POST",
2309
+ path,
2310
+ headers=self._request_manager.json_headers(),
2311
+ body=json.dumps(models.serialize_register_peer_request(body)),
2312
+ )
2313
+ parsed = None
2314
+ if response.status == 200:
2315
+ parsed = models.parse_register_peer_response(json.loads(response.data))
2316
+
2317
+ is_user_error = response.status >= 400 and response.status <= 500
2318
+ is_unavailable = response.status == 503
2319
+ if parsed is None and (is_user_error or is_unavailable):
2320
+ parsed = models.parse_error_response(json.loads(response.data))
2321
+
2322
+ return Response(
2323
+ parsed,
2324
+ response.status,
2325
+ response
2326
+ )
2327
+ except urllib3.exceptions.MaxRetryError:
2328
+ return Response(
2329
+ models.ErrorResponse(
2330
+ error=models.ErrorEnum.InternalServerError,
2331
+ message="Connection Refused"
2332
+ ),
2333
+ 503,
2334
+ None
2335
+ )
2336
+ def unregister_peer(
2337
+ self,
2338
+ body: models.UnregisterPeerRequest,
2339
+ ) -> Response[
2340
+ Union[
2341
+ models.UnregisterPeerResponse,
2342
+ models.ErrorResponse,
2343
+ None
2344
+ ],
2345
+ models.UnregisterPeerResponse
2346
+ ]:
2347
+ """
2348
+ Unregister an existing peer from the messenger system.
2349
+
2350
+ """
2351
+ path = "/api/v1/messenger/peers"
2352
+ try:
2353
+ response = self._request_manager.request(
2354
+ "DELETE",
2355
+ path,
2356
+ headers=self._request_manager.json_headers(),
2357
+ body=json.dumps(models.serialize_unregister_peer_request(body)),
2358
+ )
2359
+ parsed = None
2360
+ if response.status == 200:
2361
+ parsed = models.parse_unregister_peer_response(json.loads(response.data))
2362
+
2363
+ is_user_error = response.status >= 400 and response.status <= 500
2364
+ is_unavailable = response.status == 503
2365
+ if parsed is None and (is_user_error or is_unavailable):
2366
+ parsed = models.parse_error_response(json.loads(response.data))
2367
+
2368
+ return Response(
2369
+ parsed,
2370
+ response.status,
2371
+ response
2372
+ )
2373
+ except urllib3.exceptions.MaxRetryError:
2374
+ return Response(
2375
+ models.ErrorResponse(
2376
+ error=models.ErrorEnum.InternalServerError,
2377
+ message="Connection Refused"
2378
+ ),
2379
+ 503,
2380
+ None
2381
+ )
2382
+
2383
+ peers: Peers
2384
+
2385
+ def __init__(self, request_manager: RequestManager):
2386
+ self._request_manager = request_manager
2387
+ self.peers = Messenger.Peers(request_manager)
2388
+
1396
2389
  class Poses:
1397
2390
  _request_manager: RequestManager
1398
2391
  class ConstructPose:
@@ -2717,6 +3710,7 @@ class StandardBotsRobot(Default):
2717
3710
  general: General
2718
3711
  chat_gpt: ChatGPT
2719
3712
  io: IO
3713
+ messenger: Messenger
2720
3714
  poses: Poses
2721
3715
  recovery: Recovery
2722
3716
  ros: ROS
@@ -2741,6 +3735,7 @@ class StandardBotsRobot(Default):
2741
3735
  self.general = General(self._request_manager)
2742
3736
  self.chat_gpt = ChatGPT(self._request_manager)
2743
3737
  self.io = IO(self._request_manager)
3738
+ self.messenger = Messenger(self._request_manager)
2744
3739
  self.poses = Poses(self._request_manager)
2745
3740
  self.recovery = Recovery(self._request_manager)
2746
3741
  self.ros = ROS(self._request_manager)