vars-client 0.1.0__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.
- vars_client/__init__.py +5 -0
- vars_client/auth/jwt_bootstrap.py +92 -0
- vars_client/auth/jwt_exchange.py +30 -0
- vars_client/auth/middleware.py +30 -0
- vars_client/auth/raziel.py +80 -0
- vars_client/auth/static_key.py +25 -0
- vars_client/client.py +114 -0
- vars_client/config.py +113 -0
- vars_client/generated/__init__.py +23 -0
- vars_client/generated/annosaurus/.kiota.log +2 -0
- vars_client/generated/annosaurus/annosaurus_client.py +50 -0
- vars_client/generated/annosaurus/kiota-lock.json +35 -0
- vars_client/generated/annosaurus/models/annotation_create_s_c.py +92 -0
- vars_client/generated/annosaurus/models/annotation_s_c.py +121 -0
- vars_client/generated/annosaurus/models/annotation_update_s_c.py +88 -0
- vars_client/generated/annosaurus/models/association_s_c.py +76 -0
- vars_client/generated/annosaurus/models/association_update_s_c.py +64 -0
- vars_client/generated/annosaurus/models/authorization_s_c.py +51 -0
- vars_client/generated/annosaurus/models/bad_request.py +58 -0
- vars_client/generated/annosaurus/models/bulk_annotation_s_c.py +117 -0
- vars_client/generated/annosaurus/models/cached_ancillary_datum_s_c.py +128 -0
- vars_client/generated/annosaurus/models/cached_video_reference_info_create_s_c.py +60 -0
- vars_client/generated/annosaurus/models/cached_video_reference_info_s_c.py +68 -0
- vars_client/generated/annosaurus/models/cached_video_reference_info_update_s_c.py +60 -0
- vars_client/generated/annosaurus/models/concept_association_request.py +52 -0
- vars_client/generated/annosaurus/models/concept_association_request_s_c.py +52 -0
- vars_client/generated/annosaurus/models/concept_association_response_s_c.py +61 -0
- vars_client/generated/annosaurus/models/concept_association_s_c.py +72 -0
- vars_client/generated/annosaurus/models/concept_count.py +51 -0
- vars_client/generated/annosaurus/models/concurrent_request.py +56 -0
- vars_client/generated/annosaurus/models/concurrent_request_count_s_c.py +58 -0
- vars_client/generated/annosaurus/models/concurrent_request_s_c.py +56 -0
- vars_client/generated/annosaurus/models/constraint_request.py +87 -0
- vars_client/generated/annosaurus/models/count.py +47 -0
- vars_client/generated/annosaurus/models/count_for_video_reference_s_c.py +52 -0
- vars_client/generated/annosaurus/models/delete_count_s_c.py +72 -0
- vars_client/generated/annosaurus/models/depth_histogram_s_c.py +55 -0
- vars_client/generated/annosaurus/models/geographic_range_s_c.py +67 -0
- vars_client/generated/annosaurus/models/health_status.py +75 -0
- vars_client/generated/annosaurus/models/image_create_s_c.py +80 -0
- vars_client/generated/annosaurus/models/image_reference_s_c.py +76 -0
- vars_client/generated/annosaurus/models/image_s_c.py +88 -0
- vars_client/generated/annosaurus/models/image_update_s_c.py +80 -0
- vars_client/generated/annosaurus/models/imaged_moment_s_c.py +93 -0
- vars_client/generated/annosaurus/models/imaged_moment_timestamp_update_s_c.py +51 -0
- vars_client/generated/annosaurus/models/index_s_c.py +68 -0
- vars_client/generated/annosaurus/models/index_update_s_c.py +60 -0
- vars_client/generated/annosaurus/models/metadata.py +63 -0
- vars_client/generated/annosaurus/models/move_imaged_moments.py +56 -0
- vars_client/generated/annosaurus/models/multi_request.py +48 -0
- vars_client/generated/annosaurus/models/multi_request_count_s_c.py +58 -0
- vars_client/generated/annosaurus/models/multi_request_s_c.py +48 -0
- vars_client/generated/annosaurus/models/not_found.py +58 -0
- vars_client/generated/annosaurus/models/observation_s_c.py +87 -0
- vars_client/generated/annosaurus/models/observation_update_s_c.py +72 -0
- vars_client/generated/annosaurus/models/observations_update.py +64 -0
- vars_client/generated/annosaurus/models/query_constraints.py +128 -0
- vars_client/generated/annosaurus/models/query_constraints_response_s_c_count.py +61 -0
- vars_client/generated/annosaurus/models/query_constraints_response_s_c_depth_histogram_s_c.py +61 -0
- vars_client/generated/annosaurus/models/query_constraints_response_s_c_geographic_range_s_c.py +61 -0
- vars_client/generated/annosaurus/models/query_constraints_response_s_c_seq_annotation_s_c.py +61 -0
- vars_client/generated/annosaurus/models/query_constraints_response_s_c_time_histogram_s_c.py +61 -0
- vars_client/generated/annosaurus/models/query_constraints_s_c.py +128 -0
- vars_client/generated/annosaurus/models/query_request.py +86 -0
- vars_client/generated/annosaurus/models/rename_concept.py +51 -0
- vars_client/generated/annosaurus/models/rename_count_s_c.py +55 -0
- vars_client/generated/annosaurus/models/server_error.py +58 -0
- vars_client/generated/annosaurus/models/time_histogram_s_c.py +55 -0
- vars_client/generated/annosaurus/models/unauthorized.py +58 -0
- vars_client/generated/annosaurus/models/video_timestamp_s_c.py +60 -0
- vars_client/generated/annosaurus/models/window_request_s_c.py +56 -0
- vars_client/generated/annosaurus/v1/ancillarydata/ancillarydata_request_builder.py +163 -0
- vars_client/generated/annosaurus/v1/ancillarydata/bulk/bulk_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/ancillarydata/imagedmoment/imagedmoment_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/ancillarydata/imagedmoment/item/with_imaged_moment_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/ancillarydata/item/with_ancillary_data_uu_item_request_builder.py +140 -0
- vars_client/generated/annosaurus/v1/ancillarydata/merge/item/with_video_reference_uu_item_request_builder.py +106 -0
- vars_client/generated/annosaurus/v1/ancillarydata/merge/merge_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/ancillarydata/observation/item/with_observation_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/ancillarydata/observation/observation_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/ancillarydata/videoreference/item/with_video_reference_uu_item_request_builder.py +134 -0
- vars_client/generated/annosaurus/v1/ancillarydata/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/annotations/annotations_request_builder.py +174 -0
- vars_client/generated/annosaurus/v1/annotations/association/association_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/annotations/association/item/with_association_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/annotations/bulk/bulk_request_builder.py +150 -0
- vars_client/generated/annosaurus/v1/annotations/concurrent/concurrent_request_builder.py +33 -0
- vars_client/generated/annosaurus/v1/annotations/concurrent/count/count_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/annotations/imagereference/imagereference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/annotations/imagereference/item/with_image_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/annotations/item/with_observation_uu_item_request_builder.py +141 -0
- vars_client/generated/annosaurus/v1/annotations/multi/count/count_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/annotations/multi/multi_request_builder.py +33 -0
- vars_client/generated/annosaurus/v1/annotations/videoreference/item/with_video_reference_uu_item_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/annotations/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/associations/associations_request_builder.py +153 -0
- vars_client/generated/annosaurus/v1/associations/bulk/bulk_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/associations/conceptassociations/conceptassociations_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/associations/delete/delete_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/associations/item/association_uu_item_request_builder.py +198 -0
- vars_client/generated/annosaurus/v1/associations/item/item/with_link_name_item_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/associations/toconcept/count/count_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/associations/toconcept/count/item/with_concept_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/associations/toconcept/rename/rename_request_builder.py +98 -0
- vars_client/generated/annosaurus/v1/associations/toconcept/toconcept_request_builder.py +43 -0
- vars_client/generated/annosaurus/v1/auth/auth_request_builder.py +90 -0
- vars_client/generated/annosaurus/v1/fast/concept/concept_request_builder.py +48 -0
- vars_client/generated/annosaurus/v1/fast/concept/images/images_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/fast/concept/images/item/with_concept_item_request_builder.py +99 -0
- vars_client/generated/annosaurus/v1/fast/concept/item/with_concept_item_request_builder.py +99 -0
- vars_client/generated/annosaurus/v1/fast/concurrent/concurrent_request_builder.py +107 -0
- vars_client/generated/annosaurus/v1/fast/count/count_request_builder.py +138 -0
- vars_client/generated/annosaurus/v1/fast/details/details_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/fast/details/item/item/with_link_value_item_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/fast/details/item/with_link_name_item_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/fast/fast_request_builder.py +250 -0
- vars_client/generated/annosaurus/v1/fast/georange/georange_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/fast/imagedmoments/concept/concept_request_builder.py +33 -0
- vars_client/generated/annosaurus/v1/fast/imagedmoments/concept/images/images_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/fast/imagedmoments/concept/images/item/with_concept_item_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/fast/imagedmoments/imagedmoments_request_builder.py +43 -0
- vars_client/generated/annosaurus/v1/fast/imagedmoments/toconcept/images/images_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/fast/imagedmoments/toconcept/images/item/with_toconcept_item_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/fast/imagedmoments/toconcept/toconcept_request_builder.py +33 -0
- vars_client/generated/annosaurus/v1/fast/images/count/count_request_builder.py +33 -0
- vars_client/generated/annosaurus/v1/fast/images/count/videoreference/item/with_video_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/fast/images/count/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/fast/images/images_request_builder.py +43 -0
- vars_client/generated/annosaurus/v1/fast/images/videoreference/item/with_video_reference_uu_item_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/fast/images/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/fast/multi/multi_request_builder.py +107 -0
- vars_client/generated/annosaurus/v1/fast/toconcept/images/images_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/fast/toconcept/images/item/with_toconcept_item_request_builder.py +99 -0
- vars_client/generated/annosaurus/v1/fast/toconcept/toconcept_request_builder.py +33 -0
- vars_client/generated/annosaurus/v1/fast/videoreference/item/with_video_reference_uu_item_request_builder.py +142 -0
- vars_client/generated/annosaurus/v1/fast/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/health/health_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/histogram/depth/depth_request_builder.py +104 -0
- vars_client/generated/annosaurus/v1/histogram/histogram_request_builder.py +43 -0
- vars_client/generated/annosaurus/v1/histogram/time/time_request_builder.py +104 -0
- vars_client/generated/annosaurus/v1/imagedmoments/bulk/bulk_request_builder.py +33 -0
- vars_client/generated/annosaurus/v1/imagedmoments/bulk/move/move_request_builder.py +98 -0
- vars_client/generated/annosaurus/v1/imagedmoments/concept/concept_request_builder.py +58 -0
- vars_client/generated/annosaurus/v1/imagedmoments/concept/count/count_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/concept/count/item/with_concept_name_item_request_builder.py +85 -0
- vars_client/generated/annosaurus/v1/imagedmoments/concept/images/count/count_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/concept/images/count/item/with_concept_name_item_request_builder.py +85 -0
- vars_client/generated/annosaurus/v1/imagedmoments/concept/images/images_request_builder.py +48 -0
- vars_client/generated/annosaurus/v1/imagedmoments/concept/images/item/with_concept_name_item_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/imagedmoments/concept/item/with_concept_name_item_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/imagedmoments/count/all/all_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/imagedmoments/count/count_request_builder.py +53 -0
- vars_client/generated/annosaurus/v1/imagedmoments/count/images/images_request_builder.py +103 -0
- vars_client/generated/annosaurus/v1/imagedmoments/count/images/item/with_video_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/imagedmoments/count/linkname/item/with_link_name_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/imagedmoments/count/linkname/linkname_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/counts/counts_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/imagedmoments/find/find_request_builder.py +43 -0
- vars_client/generated/annosaurus/v1/imagedmoments/find/images/images_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/imagedmoments/find/linkname/item/with_link_name_item_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/imagedmoments/find/linkname/linkname_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/imagedmoments_request_builder.py +233 -0
- vars_client/generated/annosaurus/v1/imagedmoments/imagereference/imagereference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/imagedmoments/imagereference/item/with_image_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/imagedmoments/item/with_imaged_moment_uu_item_request_builder.py +183 -0
- vars_client/generated/annosaurus/v1/imagedmoments/modified/count/count_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/modified/count/item/item/with_end_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/imagedmoments/modified/count/item/with_start_item_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/modified/item/item/with_end_item_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/imagedmoments/modified/item/with_start_item_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/modified/modified_request_builder.py +48 -0
- vars_client/generated/annosaurus/v1/imagedmoments/newtime/item/item/with_time_item_request_builder.py +90 -0
- vars_client/generated/annosaurus/v1/imagedmoments/newtime/item/with_video_reference_uu_item_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/newtime/newtime_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/imagedmoments/observation/item/with_observation_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/imagedmoments/observation/observation_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/imagedmoments/tapetime/tapetime_request_builder.py +98 -0
- vars_client/generated/annosaurus/v1/imagedmoments/videoreference/item/with_video_reference_uu_item_request_builder.py +130 -0
- vars_client/generated/annosaurus/v1/imagedmoments/videoreference/modified/item/item/with_date_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/imagedmoments/videoreference/modified/item/with_uu_item_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/imagedmoments/videoreference/modified/modified_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/imagedmoments/videoreference/videoreference_request_builder.py +110 -0
- vars_client/generated/annosaurus/v1/imagedmoments/windowrequest/windowrequest_request_builder.py +105 -0
- vars_client/generated/annosaurus/v1/imagereferences/imagereferences_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/imagereferences/item/with_image_reference_uu_item_request_builder.py +180 -0
- vars_client/generated/annosaurus/v1/images/images_request_builder.py +144 -0
- vars_client/generated/annosaurus/v1/images/item/with_image_reference_uu_item_request_builder.py +141 -0
- vars_client/generated/annosaurus/v1/images/name/item/with_image_file_name_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/images/name/name_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/images/url/item/with_url_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/images/url/url_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/images/videoreference/item/with_video_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/images/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/index/index_request_builder.py +43 -0
- vars_client/generated/annosaurus/v1/index/tapetime/tapetime_request_builder.py +98 -0
- vars_client/generated/annosaurus/v1/index/videoreference/item/with_video_reference_uu_item_request_builder.py +92 -0
- vars_client/generated/annosaurus/v1/index/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/observations/activities/activities_request_builder.py +84 -0
- vars_client/generated/annosaurus/v1/observations/association/association_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/observations/association/item/with_association_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/observations/bulk/bulk_request_builder.py +98 -0
- vars_client/generated/annosaurus/v1/observations/concept/concept_request_builder.py +53 -0
- vars_client/generated/annosaurus/v1/observations/concept/count/count_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/observations/concept/count/item/with_concept_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/observations/concept/images/count/count_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/observations/concept/images/count/item/with_concept_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/observations/concept/images/images_request_builder.py +33 -0
- vars_client/generated/annosaurus/v1/observations/concept/rename/rename_request_builder.py +98 -0
- vars_client/generated/annosaurus/v1/observations/concepts/concepts_request_builder.py +100 -0
- vars_client/generated/annosaurus/v1/observations/concepts/item/with_video_reference_uu_item_request_builder.py +84 -0
- vars_client/generated/annosaurus/v1/observations/counts/counts_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/observations/delete/delete_request_builder.py +105 -0
- vars_client/generated/annosaurus/v1/observations/delete/duration/duration_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/observations/delete/duration/item/with_observation_uu_item_request_builder.py +90 -0
- vars_client/generated/annosaurus/v1/observations/groups/groups_request_builder.py +84 -0
- vars_client/generated/annosaurus/v1/observations/item/with_observation_uu_item_request_builder.py +183 -0
- vars_client/generated/annosaurus/v1/observations/observations_request_builder.py +129 -0
- vars_client/generated/annosaurus/v1/observations/videoreference/count/count_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/observations/videoreference/count/item/with_video_reference_uu_item_request_builder.py +99 -0
- vars_client/generated/annosaurus/v1/observations/videoreference/item/with_video_reference_uu_item_request_builder.py +97 -0
- vars_client/generated/annosaurus/v1/observations/videoreference/videoreference_request_builder.py +49 -0
- vars_client/generated/annosaurus/v1/query/columns/columns_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/query/count/count_request_builder.py +95 -0
- vars_client/generated/annosaurus/v1/query/download/download_request_builder.py +92 -0
- vars_client/generated/annosaurus/v1/query/query_request_builder.py +63 -0
- vars_client/generated/annosaurus/v1/query/run/run_request_builder.py +92 -0
- vars_client/generated/annosaurus/v1/v1_request_builder.py +163 -0
- vars_client/generated/annosaurus/v1/videoreferences/item/with_video_info_uu_item_request_builder.py +183 -0
- vars_client/generated/annosaurus/v1/videoreferences/missioncontact/item/with_missioncontact_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/videoreferences/missioncontact/missioncontact_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/videoreferences/missioncontacts/missioncontacts_request_builder.py +84 -0
- vars_client/generated/annosaurus/v1/videoreferences/missionid/item/with_mission_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/videoreferences/missionid/missionid_request_builder.py +38 -0
- vars_client/generated/annosaurus/v1/videoreferences/missionids/missionids_request_builder.py +84 -0
- vars_client/generated/annosaurus/v1/videoreferences/videoreference/item/with_video_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/annosaurus/v1/videoreferences/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/annosaurus/v1/videoreferences/videoreferences/videoreferences_request_builder.py +85 -0
- vars_client/generated/annosaurus/v1/videoreferences/videoreferences_request_builder.py +227 -0
- vars_client/generated/beholder/.kiota.log +10 -0
- vars_client/generated/beholder/beholder_client.py +60 -0
- vars_client/generated/beholder/capture/capture_request_builder.py +121 -0
- vars_client/generated/beholder/capture/jpg/jpg_request_builder.py +101 -0
- vars_client/generated/beholder/capture/png/png_request_builder.py +101 -0
- vars_client/generated/beholder/health/health_request_builder.py +84 -0
- vars_client/generated/beholder/kiota-lock.json +35 -0
- vars_client/generated/beholder/models/capture_request.py +62 -0
- vars_client/generated/beholder/models/health_status.py +79 -0
- vars_client/generated/beholder/models/image_type.py +73 -0
- vars_client/generated/beholder/models/jpeg.py +43 -0
- vars_client/generated/beholder/models/not_found.py +58 -0
- vars_client/generated/beholder/models/png.py +43 -0
- vars_client/generated/beholder/models/unauthorized.py +58 -0
- vars_client/generated/oni/.kiota.log +2 -0
- vars_client/generated/oni/kiota-lock.json +35 -0
- vars_client/generated/oni/models/authorization_s_c.py +51 -0
- vars_client/generated/oni/models/bad_request.py +58 -0
- vars_client/generated/oni/models/concept_create.py +67 -0
- vars_client/generated/oni/models/concept_metadata.py +100 -0
- vars_client/generated/oni/models/concept_name_create.py +59 -0
- vars_client/generated/oni/models/concept_name_update.py +55 -0
- vars_client/generated/oni/models/concept_update.py +59 -0
- vars_client/generated/oni/models/count.py +47 -0
- vars_client/generated/oni/models/extended_history.py +87 -0
- vars_client/generated/oni/models/extended_link.py +67 -0
- vars_client/generated/oni/models/health_status.py +75 -0
- vars_client/generated/oni/models/link.py +59 -0
- vars_client/generated/oni/models/link_create.py +59 -0
- vars_client/generated/oni/models/link_rename_to_concept_request.py +51 -0
- vars_client/generated/oni/models/link_rename_to_concept_response.py +55 -0
- vars_client/generated/oni/models/link_update.py +55 -0
- vars_client/generated/oni/models/media.py +75 -0
- vars_client/generated/oni/models/media_create.py +67 -0
- vars_client/generated/oni/models/media_update.py +63 -0
- vars_client/generated/oni/models/not_found.py +58 -0
- vars_client/generated/oni/models/page_seq_extended_history.py +62 -0
- vars_client/generated/oni/models/page_seq_extended_link.py +62 -0
- vars_client/generated/oni/models/page_seq_reference.py +62 -0
- vars_client/generated/oni/models/page_seq_string.py +55 -0
- vars_client/generated/oni/models/pref_node.py +55 -0
- vars_client/generated/oni/models/pref_node_update.py +55 -0
- vars_client/generated/oni/models/rank.py +51 -0
- vars_client/generated/oni/models/raw_concept.py +81 -0
- vars_client/generated/oni/models/raw_concept_metadata.py +69 -0
- vars_client/generated/oni/models/raw_concept_name.py +59 -0
- vars_client/generated/oni/models/raw_link.py +59 -0
- vars_client/generated/oni/models/raw_media.py +67 -0
- vars_client/generated/oni/models/reference.py +63 -0
- vars_client/generated/oni/models/reference_query.py +51 -0
- vars_client/generated/oni/models/reference_update.py +51 -0
- vars_client/generated/oni/models/serde_concept.py +63 -0
- vars_client/generated/oni/models/server_error.py +58 -0
- vars_client/generated/oni/models/unauthorized.py +58 -0
- vars_client/generated/oni/models/user_account.py +79 -0
- vars_client/generated/oni/models/user_account_create.py +71 -0
- vars_client/generated/oni/models/user_account_update.py +67 -0
- vars_client/generated/oni/oni_client.py +50 -0
- vars_client/generated/oni/v1/auth/auth_request_builder.py +100 -0
- vars_client/generated/oni/v1/auth/login/login_request_builder.py +90 -0
- vars_client/generated/oni/v1/concept/children/children_request_builder.py +38 -0
- vars_client/generated/oni/v1/concept/children/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/concept/concept_request_builder.py +204 -0
- vars_client/generated/oni/v1/concept/find/find_request_builder.py +38 -0
- vars_client/generated/oni/v1/concept/find/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/concept/item/with_name_delete_response.py +43 -0
- vars_client/generated/oni/v1/concept/item/with_name_item_request_builder.py +186 -0
- vars_client/generated/oni/v1/concept/parent/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/concept/parent/parent_request_builder.py +38 -0
- vars_client/generated/oni/v1/concept/query/query_request_builder.py +33 -0
- vars_client/generated/oni/v1/concept/query/root/root_request_builder.py +87 -0
- vars_client/generated/oni/v1/concept/ranks/ranks_request_builder.py +87 -0
- vars_client/generated/oni/v1/health/health_request_builder.py +87 -0
- vars_client/generated/oni/v1/history/approve/approve_request_builder.py +38 -0
- vars_client/generated/oni/v1/history/approve/item/with_p1_item_request_builder.py +90 -0
- vars_client/generated/oni/v1/history/approved/approved_request_builder.py +112 -0
- vars_client/generated/oni/v1/history/approved/count/count_request_builder.py +87 -0
- vars_client/generated/oni/v1/history/concept/concept_request_builder.py +38 -0
- vars_client/generated/oni/v1/history/concept/item/with_p1_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/history/history_request_builder.py +88 -0
- vars_client/generated/oni/v1/history/item/with_p1_delete_response.py +43 -0
- vars_client/generated/oni/v1/history/item/with_p1_item_request_builder.py +134 -0
- vars_client/generated/oni/v1/history/pending/count/count_request_builder.py +87 -0
- vars_client/generated/oni/v1/history/pending/pending_request_builder.py +112 -0
- vars_client/generated/oni/v1/history/reject/item/with_p1_item_request_builder.py +90 -0
- vars_client/generated/oni/v1/history/reject/reject_request_builder.py +38 -0
- vars_client/generated/oni/v1/linkrealizations/concept/concept_request_builder.py +38 -0
- vars_client/generated/oni/v1/linkrealizations/concept/item/with_concept_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/linkrealizations/count/count_request_builder.py +87 -0
- vars_client/generated/oni/v1/linkrealizations/item/linkrealizations_delete_response.py +43 -0
- vars_client/generated/oni/v1/linkrealizations/item/linkrealizations_item_request_builder.py +186 -0
- vars_client/generated/oni/v1/linkrealizations/linkrealizations_request_builder.py +209 -0
- vars_client/generated/oni/v1/linkrealizations/prototype/prototype_request_builder.py +95 -0
- vars_client/generated/oni/v1/linkrealizations/query/linkname/item/with_link_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/linkrealizations/query/linkname/linkname_request_builder.py +38 -0
- vars_client/generated/oni/v1/linkrealizations/query/query_request_builder.py +33 -0
- vars_client/generated/oni/v1/links/item/using/item/with_link_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/links/item/using/using_request_builder.py +38 -0
- vars_client/generated/oni/v1/links/item/with_name_item_request_builder.py +97 -0
- vars_client/generated/oni/v1/links/links_request_builder.py +112 -0
- vars_client/generated/oni/v1/links/query/linkrealizations/item/with_link_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/links/query/linkrealizations/linkrealizations_request_builder.py +38 -0
- vars_client/generated/oni/v1/links/query/query_request_builder.py +33 -0
- vars_client/generated/oni/v1/linktemplates/concept/concept_request_builder.py +48 -0
- vars_client/generated/oni/v1/linktemplates/concept/count/count_request_builder.py +38 -0
- vars_client/generated/oni/v1/linktemplates/concept/count/item/with_concept_name_item_request_builder.py +84 -0
- vars_client/generated/oni/v1/linktemplates/concept/item/with_concept_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/linktemplates/count/count_request_builder.py +87 -0
- vars_client/generated/oni/v1/linktemplates/item/linktemplates_delete_response.py +43 -0
- vars_client/generated/oni/v1/linktemplates/item/linktemplates_item_request_builder.py +186 -0
- vars_client/generated/oni/v1/linktemplates/linktemplates_request_builder.py +219 -0
- vars_client/generated/oni/v1/linktemplates/prototype/prototype_request_builder.py +95 -0
- vars_client/generated/oni/v1/linktemplates/query/for_/for_request_builder.py +38 -0
- vars_client/generated/oni/v1/linktemplates/query/for_/item/using/item/with_link_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/linktemplates/query/for_/item/using/using_request_builder.py +38 -0
- vars_client/generated/oni/v1/linktemplates/query/for_/item/with_concept_name_item_request_builder.py +97 -0
- vars_client/generated/oni/v1/linktemplates/query/query_request_builder.py +33 -0
- vars_client/generated/oni/v1/linktemplates/toconcept/count/count_request_builder.py +38 -0
- vars_client/generated/oni/v1/linktemplates/toconcept/count/item/with_to_concept_item_request_builder.py +84 -0
- vars_client/generated/oni/v1/linktemplates/toconcept/item/with_to_concept_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/linktemplates/toconcept/rename/rename_request_builder.py +98 -0
- vars_client/generated/oni/v1/linktemplates/toconcept/toconcept_request_builder.py +58 -0
- vars_client/generated/oni/v1/media/item/media_delete_response.py +43 -0
- vars_client/generated/oni/v1/media/item/media_item_request_builder.py +186 -0
- vars_client/generated/oni/v1/media/media_request_builder.py +123 -0
- vars_client/generated/oni/v1/media/search/concept/concept_request_builder.py +38 -0
- vars_client/generated/oni/v1/media/search/concept/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/media/search/search_request_builder.py +33 -0
- vars_client/generated/oni/v1/names/item/with_name_item_request_builder.py +185 -0
- vars_client/generated/oni/v1/names/names_request_builder.py +169 -0
- vars_client/generated/oni/v1/phylogeny/basic/basic_request_builder.py +38 -0
- vars_client/generated/oni/v1/phylogeny/basic/item/with_name_item_request_builder.py +85 -0
- vars_client/generated/oni/v1/phylogeny/down/down_request_builder.py +38 -0
- vars_client/generated/oni/v1/phylogeny/down/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/phylogeny/phylogeny_request_builder.py +73 -0
- vars_client/generated/oni/v1/phylogeny/siblings/item/with_name_item_request_builder.py +85 -0
- vars_client/generated/oni/v1/phylogeny/siblings/siblings_request_builder.py +38 -0
- vars_client/generated/oni/v1/phylogeny/taxa/item/with_name_item_request_builder.py +85 -0
- vars_client/generated/oni/v1/phylogeny/taxa/taxa_request_builder.py +38 -0
- vars_client/generated/oni/v1/phylogeny/up/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/phylogeny/up/up_request_builder.py +38 -0
- vars_client/generated/oni/v1/prefs/prefs_delete_response.py +43 -0
- vars_client/generated/oni/v1/prefs/prefs_request_builder.py +283 -0
- vars_client/generated/oni/v1/prefs/startswith/startswith_request_builder.py +96 -0
- vars_client/generated/oni/v1/raw/concept/concept_request_builder.py +38 -0
- vars_client/generated/oni/v1/raw/concept/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/raw/names/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/raw/names/names_request_builder.py +38 -0
- vars_client/generated/oni/v1/raw/raw_request_builder.py +43 -0
- vars_client/generated/oni/v1/references/add/add_request_builder.py +38 -0
- vars_client/generated/oni/v1/references/add/item/add_item_request_builder.py +33 -0
- vars_client/generated/oni/v1/references/add/item/to/item/with_concept_item_request_builder.py +90 -0
- vars_client/generated/oni/v1/references/add/item/to/to_request_builder.py +38 -0
- vars_client/generated/oni/v1/references/item/references_delete_response.py +43 -0
- vars_client/generated/oni/v1/references/item/references_item_request_builder.py +186 -0
- vars_client/generated/oni/v1/references/query/citation/citation_request_builder.py +107 -0
- vars_client/generated/oni/v1/references/query/doi/doi_request_builder.py +95 -0
- vars_client/generated/oni/v1/references/query/query_request_builder.py +43 -0
- vars_client/generated/oni/v1/references/references_request_builder.py +198 -0
- vars_client/generated/oni/v1/references/remove/item/from_/from_request_builder.py +38 -0
- vars_client/generated/oni/v1/references/remove/item/from_/item/with_concept_item_request_builder.py +90 -0
- vars_client/generated/oni/v1/references/remove/item/remove_item_request_builder.py +33 -0
- vars_client/generated/oni/v1/references/remove/remove_request_builder.py +38 -0
- vars_client/generated/oni/v1/users/item/with_name_delete_response.py +43 -0
- vars_client/generated/oni/v1/users/item/with_name_item_request_builder.py +186 -0
- vars_client/generated/oni/v1/users/role/item/with_role_item_request_builder.py +87 -0
- vars_client/generated/oni/v1/users/role/role_request_builder.py +38 -0
- vars_client/generated/oni/v1/users/users_request_builder.py +166 -0
- vars_client/generated/oni/v1/v1_request_builder.py +163 -0
- vars_client/generated/panoptes/.kiota.log +2 -0
- vars_client/generated/panoptes/kiota-lock.json +35 -0
- vars_client/generated/panoptes/models/authorization_s_c.py +51 -0
- vars_client/generated/panoptes/models/bad_request.py +58 -0
- vars_client/generated/panoptes/models/health_status.py +75 -0
- vars_client/generated/panoptes/models/image_params.py +59 -0
- vars_client/generated/panoptes/models/not_found.py +58 -0
- vars_client/generated/panoptes/models/server_error.py +58 -0
- vars_client/generated/panoptes/models/unauthorized.py +58 -0
- vars_client/generated/panoptes/panoptes/panoptes_request_builder.py +33 -0
- vars_client/generated/panoptes/panoptes/v1/auth/auth_request_builder.py +90 -0
- vars_client/generated/panoptes/panoptes/v1/health/health_request_builder.py +87 -0
- vars_client/generated/panoptes/panoptes/v1/images/images_request_builder.py +38 -0
- vars_client/generated/panoptes/panoptes/v1/images/item/item/item/with_name_item_request_builder.py +141 -0
- vars_client/generated/panoptes/panoptes/v1/images/item/item/with_deployment_item_request_builder.py +38 -0
- vars_client/generated/panoptes/panoptes/v1/images/item/with_camera_item_request_builder.py +38 -0
- vars_client/generated/panoptes/panoptes/v1/v1_request_builder.py +53 -0
- vars_client/generated/panoptes/panoptes_client.py +50 -0
- vars_client/generated/raziel/.kiota.log +3 -0
- vars_client/generated/raziel/config/auth/auth_request_builder.py +97 -0
- vars_client/generated/raziel/config/auth/verify/verify_request_builder.py +87 -0
- vars_client/generated/raziel/config/config_request_builder.py +53 -0
- vars_client/generated/raziel/config/endpoints/endpoints_request_builder.py +96 -0
- vars_client/generated/raziel/config/health/available/available_request_builder.py +87 -0
- vars_client/generated/raziel/config/health/expected/expected_request_builder.py +87 -0
- vars_client/generated/raziel/config/health/health_request_builder.py +117 -0
- vars_client/generated/raziel/config/health/status/status_request_builder.py +87 -0
- vars_client/generated/raziel/kiota-lock.json +35 -0
- vars_client/generated/raziel/models/bearer_auth.py +47 -0
- vars_client/generated/raziel/models/health_status.py +75 -0
- vars_client/generated/raziel/models/map_string.py +43 -0
- vars_client/generated/raziel/models/not_found.py +58 -0
- vars_client/generated/raziel/models/serialized_endpoint_config.py +63 -0
- vars_client/generated/raziel/models/server_error.py +58 -0
- vars_client/generated/raziel/models/service_status.py +58 -0
- vars_client/generated/raziel/models/unauthorized.py +58 -0
- vars_client/generated/raziel/raziel_client.py +50 -0
- vars_client/generated/vampire_squid/.kiota.log +3 -0
- vars_client/generated/vampire_squid/kiota-lock.json +35 -0
- vars_client/generated/vampire_squid/models/authorization.py +51 -0
- vars_client/generated/vampire_squid/models/bad_request.py +58 -0
- vars_client/generated/vampire_squid/models/health_status.py +75 -0
- vars_client/generated/vampire_squid/models/last_updated_time.py +48 -0
- vars_client/generated/vampire_squid/models/media.py +125 -0
- vars_client/generated/vampire_squid/models/move_video_params.py +56 -0
- vars_client/generated/vampire_squid/models/not_found.py +58 -0
- vars_client/generated/vampire_squid/models/server_error.py +58 -0
- vars_client/generated/vampire_squid/models/unauthorized.py +58 -0
- vars_client/generated/vampire_squid/models/video.py +80 -0
- vars_client/generated/vampire_squid/models/video_reference.py +93 -0
- vars_client/generated/vampire_squid/models/video_reference_create.py +88 -0
- vars_client/generated/vampire_squid/models/video_reference_update.py +88 -0
- vars_client/generated/vampire_squid/models/video_sequence.py +76 -0
- vars_client/generated/vampire_squid/models/video_sequence_create.py +55 -0
- vars_client/generated/vampire_squid/models/video_sequence_update.py +55 -0
- vars_client/generated/vampire_squid/models/video_update.py +69 -0
- vars_client/generated/vampire_squid/v1/auth/auth_request_builder.py +90 -0
- vars_client/generated/vampire_squid/v1/health/health_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/camera/camera_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/media/camera/item/item/datetime_item_request_builder.py +102 -0
- vars_client/generated/vampire_squid/v1/media/camera/item/item/item/with_end_timestamp_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/camera/item/with_camera_item_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/media/concurrent/concurrent_request_builder.py +39 -0
- vars_client/generated/vampire_squid/v1/media/concurrent/item/with_video_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/item/with_video_reference_uu_item_request_builder.py +97 -0
- vars_client/generated/vampire_squid/v1/media/media_request_builder.py +244 -0
- vars_client/generated/vampire_squid/v1/media/move/item/with_video_reference_uu_item_request_builder.py +98 -0
- vars_client/generated/vampire_squid/v1/media/move/move_request_builder.py +39 -0
- vars_client/generated/vampire_squid/v1/media/sha512/item/with_sha512_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/sha512/sha512_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/media/uri/item/with_uri_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/uri/uri_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/media/video/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/video/video_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/media/videoreference/filename/filename_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/media/videoreference/filename/item/with_filename_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/videoreference/item/with_video_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/videoreference/videoreference_request_builder.py +49 -0
- vars_client/generated/vampire_squid/v1/media/videosequence/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/media/videosequence/videosequence_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/v1_request_builder.py +83 -0
- vars_client/generated/vampire_squid/v1/videoreferences/item/with_uu_item_request_builder.py +183 -0
- vars_client/generated/vampire_squid/v1/videoreferences/lastupdate/item/with_uu_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videoreferences/lastupdate/lastupdate_request_builder.py +39 -0
- vars_client/generated/vampire_squid/v1/videoreferences/sha512/item/with_sha512_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videoreferences/sha512/sha512_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videoreferences/uri/item/with_uri_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videoreferences/uri/uri_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videoreferences/uris/uris_request_builder.py +84 -0
- vars_client/generated/vampire_squid/v1/videoreferences/videoreferences_request_builder.py +207 -0
- vars_client/generated/vampire_squid/v1/videos/item/with_uu_item_request_builder.py +183 -0
- vars_client/generated/vampire_squid/v1/videos/lastupdate/item/with_uu_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videos/lastupdate/lastupdate_request_builder.py +39 -0
- vars_client/generated/vampire_squid/v1/videos/name/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videos/name/name_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videos/names/names_request_builder.py +33 -0
- vars_client/generated/vampire_squid/v1/videos/names/videosequence/item/with_video_sequence_name_item_request_builder.py +84 -0
- vars_client/generated/vampire_squid/v1/videos/names/videosequence/videosequence_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videos/timestamp/item/item/with_end_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videos/timestamp/item/start_item_request_builder.py +102 -0
- vars_client/generated/vampire_squid/v1/videos/timestamp/timestamp_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videos/videoreference/item/with_video_reference_uu_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videos/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/vampire_squid/v1/videos/videos_request_builder.py +226 -0
- vars_client/generated/vampire_squid/v1/videos/videosequence/item/with_video_sequence_uu_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videos/videosequence/name/item/with_video_sequence_name_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videos/videosequence/name/name_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videos/videosequence/videosequence_request_builder.py +49 -0
- vars_client/generated/vampire_squid/v1/videosequences/camera/camera_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videosequences/camera/item/item/with_timestamp_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videosequences/camera/item/with_camera_item_request_builder.py +102 -0
- vars_client/generated/vampire_squid/v1/videosequences/cameras/cameras_request_builder.py +84 -0
- vars_client/generated/vampire_squid/v1/videosequences/item/with_uu_item_request_builder.py +183 -0
- vars_client/generated/vampire_squid/v1/videosequences/lastupdate/item/with_uu_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videosequences/lastupdate/lastupdate_request_builder.py +39 -0
- vars_client/generated/vampire_squid/v1/videosequences/name/item/with_name_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videosequences/name/name_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videosequences/names/camera/camera_request_builder.py +38 -0
- vars_client/generated/vampire_squid/v1/videosequences/names/camera/item/with_camera_item_request_builder.py +84 -0
- vars_client/generated/vampire_squid/v1/videosequences/names/empty/empty_request_builder.py +84 -0
- vars_client/generated/vampire_squid/v1/videosequences/names/names_request_builder.py +104 -0
- vars_client/generated/vampire_squid/v1/videosequences/videoreference/item/with_videoreferenceuu_item_request_builder.py +87 -0
- vars_client/generated/vampire_squid/v1/videosequences/videoreference/videoreference_request_builder.py +39 -0
- vars_client/generated/vampire_squid/v1/videosequences/videosequences_request_builder.py +227 -0
- vars_client/generated/vampire_squid/vampire_squid_client.py +50 -0
- vars_client/py.typed +0 -0
- vars_client/skimmer.py +40 -0
- vars_client-0.1.0.dist-info/METADATA +130 -0
- vars_client-0.1.0.dist-info/RECORD +538 -0
- vars_client-0.1.0.dist-info/WHEEL +4 -0
- vars_client-0.1.0.dist-info/licenses/LICENSE +201 -0
vars_client/__init__.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Shared machinery for auth schemes that exchange a credential for a
|
|
2
|
+
short-lived Bearer JWT (the pattern used by Annosaurus/VampireSquid/Oni/
|
|
3
|
+
Panoptes' `/auth` endpoint and Raziel's `/config/auth` endpoint).
|
|
4
|
+
|
|
5
|
+
Subclasses only need to say *what* credential to send and *where* to send
|
|
6
|
+
it; caching, proactive refresh, and concurrency-safe re-exchange are handled
|
|
7
|
+
here.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import asyncio
|
|
13
|
+
from abc import abstractmethod
|
|
14
|
+
from datetime import datetime, timedelta
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
import httpx
|
|
18
|
+
from kiota_abstractions.authentication import AuthenticationProvider
|
|
19
|
+
from kiota_abstractions.request_information import RequestInformation
|
|
20
|
+
|
|
21
|
+
AUTHORIZATION_HEADER = "Authorization"
|
|
22
|
+
|
|
23
|
+
DEFAULT_TOKEN_LIFETIME = timedelta(hours=24)
|
|
24
|
+
DEFAULT_REFRESH_BUFFER = timedelta(minutes=5)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class JWTBootstrapAuthProvider(AuthenticationProvider):
|
|
28
|
+
"""Exchanges a credential for a Bearer JWT, caches it, and refreshes it
|
|
29
|
+
proactively before expiry. Call `invalidate()` to force re-exchange on
|
|
30
|
+
the next request (e.g. after a 401 from the resource server).
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
def __init__(
|
|
34
|
+
self,
|
|
35
|
+
base_url: str,
|
|
36
|
+
exchange_path: str,
|
|
37
|
+
token_field: str = "token",
|
|
38
|
+
*,
|
|
39
|
+
token_lifetime: timedelta = DEFAULT_TOKEN_LIFETIME,
|
|
40
|
+
refresh_buffer: timedelta = DEFAULT_REFRESH_BUFFER,
|
|
41
|
+
http_client: httpx.AsyncClient | None = None,
|
|
42
|
+
) -> None:
|
|
43
|
+
self._exchange_url = base_url.rstrip("/") + exchange_path
|
|
44
|
+
self._token_field = token_field
|
|
45
|
+
self._token_lifetime = token_lifetime
|
|
46
|
+
self._refresh_buffer = refresh_buffer
|
|
47
|
+
self._http_client = http_client or httpx.AsyncClient()
|
|
48
|
+
self._token: str | None = None
|
|
49
|
+
self._issued_at: datetime | None = None
|
|
50
|
+
self._lock = asyncio.Lock()
|
|
51
|
+
|
|
52
|
+
@abstractmethod
|
|
53
|
+
def _exchange_headers(self) -> dict[str, str]:
|
|
54
|
+
"""Headers carrying the initial credential for the exchange request."""
|
|
55
|
+
|
|
56
|
+
def invalidate(self) -> None:
|
|
57
|
+
"""Discard the cached token, forcing a fresh exchange on next use."""
|
|
58
|
+
self._token = None
|
|
59
|
+
self._issued_at = None
|
|
60
|
+
|
|
61
|
+
def _is_stale(self) -> bool:
|
|
62
|
+
if self._token is None or self._issued_at is None:
|
|
63
|
+
return True
|
|
64
|
+
age = datetime.now() - self._issued_at
|
|
65
|
+
return age >= self._token_lifetime - self._refresh_buffer
|
|
66
|
+
|
|
67
|
+
async def _refresh(self) -> None:
|
|
68
|
+
async with self._lock:
|
|
69
|
+
if not self._is_stale():
|
|
70
|
+
return # another waiter already refreshed
|
|
71
|
+
response = await self._http_client.post(
|
|
72
|
+
self._exchange_url, headers=self._exchange_headers()
|
|
73
|
+
)
|
|
74
|
+
response.raise_for_status()
|
|
75
|
+
self._token = response.json()[self._token_field]
|
|
76
|
+
self._issued_at = datetime.now()
|
|
77
|
+
|
|
78
|
+
async def get_token(self) -> str:
|
|
79
|
+
if self._is_stale():
|
|
80
|
+
await self._refresh()
|
|
81
|
+
assert self._token is not None
|
|
82
|
+
return self._token
|
|
83
|
+
|
|
84
|
+
async def authenticate_request(
|
|
85
|
+
self,
|
|
86
|
+
request: RequestInformation,
|
|
87
|
+
additional_authentication_context: dict[str, Any] | None = None,
|
|
88
|
+
) -> None:
|
|
89
|
+
if request.headers.contains(AUTHORIZATION_HEADER):
|
|
90
|
+
request.headers.remove(AUTHORIZATION_HEADER)
|
|
91
|
+
token = await self.get_token()
|
|
92
|
+
request.headers.add(AUTHORIZATION_HEADER, f"Bearer {token}")
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""Auth provider for the API-key JWT exchange used by Annosaurus, Vampire
|
|
2
|
+
Squid, Oni, and Panoptes: `Authorization: APIKEY <key>` -> JWT.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import httpx
|
|
8
|
+
|
|
9
|
+
from vars_client.auth.jwt_bootstrap import JWTBootstrapAuthProvider
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class JWTExchangeAuthProvider(JWTBootstrapAuthProvider):
|
|
13
|
+
def __init__(
|
|
14
|
+
self,
|
|
15
|
+
base_url: str,
|
|
16
|
+
api_key: str,
|
|
17
|
+
*,
|
|
18
|
+
exchange_path: str = "/v1/auth",
|
|
19
|
+
http_client: httpx.AsyncClient | None = None,
|
|
20
|
+
) -> None:
|
|
21
|
+
super().__init__(
|
|
22
|
+
base_url,
|
|
23
|
+
exchange_path,
|
|
24
|
+
token_field="access_token",
|
|
25
|
+
http_client=http_client,
|
|
26
|
+
)
|
|
27
|
+
self._api_key = api_key
|
|
28
|
+
|
|
29
|
+
def _exchange_headers(self) -> dict[str, str]:
|
|
30
|
+
return {"Authorization": f"APIKEY {self._api_key}"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""HTTP middleware pairing with JWTBootstrapAuthProvider to retry a request
|
|
2
|
+
once, with a freshly exchanged token, if the resource server rejects the
|
|
3
|
+
cached one with a 401.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
import httpx
|
|
9
|
+
from kiota_http.middleware import BaseMiddleware
|
|
10
|
+
|
|
11
|
+
from vars_client.auth.jwt_bootstrap import AUTHORIZATION_HEADER, JWTBootstrapAuthProvider
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class RefreshOnUnauthorizedMiddleware(BaseMiddleware):
|
|
15
|
+
def __init__(self, auth_provider: JWTBootstrapAuthProvider) -> None:
|
|
16
|
+
super().__init__()
|
|
17
|
+
self._auth_provider = auth_provider
|
|
18
|
+
|
|
19
|
+
async def send(
|
|
20
|
+
self, request: httpx.Request, transport: httpx.AsyncBaseTransport
|
|
21
|
+
) -> httpx.Response:
|
|
22
|
+
response = await super().send(request, transport)
|
|
23
|
+
if response.status_code != 401:
|
|
24
|
+
return response
|
|
25
|
+
|
|
26
|
+
self._auth_provider.invalidate()
|
|
27
|
+
token = await self._auth_provider.get_token()
|
|
28
|
+
request.headers[AUTHORIZATION_HEADER] = f"Bearer {token}"
|
|
29
|
+
await response.aclose()
|
|
30
|
+
return await super().send(request, transport)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Auth provider for Raziel's two-stage bootstrap:
|
|
2
|
+
|
|
3
|
+
1. POST Basic-encoded credentials to `/config/auth` -> JWT.
|
|
4
|
+
2. GET `/config/endpoints` with that JWT as Bearer -> per-service base URLs
|
|
5
|
+
and secrets for the rest of the VARS stack.
|
|
6
|
+
|
|
7
|
+
Stage 1 is handled by the inherited JWTBootstrapAuthProvider machinery.
|
|
8
|
+
Stage 2 (`get_endpoints`) is a one-off config fetch, not a per-request auth
|
|
9
|
+
attachment, so it lives here as an extra method beyond the
|
|
10
|
+
AuthenticationProvider interface.
|
|
11
|
+
|
|
12
|
+
Both username and password are optional: Raziel's `/config/endpoints` works
|
|
13
|
+
fine without an Authorization header, it just omits the `secret` field from
|
|
14
|
+
each entry. This lets institutions that only need read-only access skip
|
|
15
|
+
credentials entirely.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
import base64
|
|
21
|
+
from typing import Any
|
|
22
|
+
|
|
23
|
+
import httpx
|
|
24
|
+
from kiota_abstractions.request_information import RequestInformation
|
|
25
|
+
|
|
26
|
+
from vars_client.auth.jwt_bootstrap import JWTBootstrapAuthProvider
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class RazielAuthProvider(JWTBootstrapAuthProvider):
|
|
30
|
+
def __init__(
|
|
31
|
+
self,
|
|
32
|
+
base_url: str,
|
|
33
|
+
username: str | None = None,
|
|
34
|
+
password: str | None = None,
|
|
35
|
+
*,
|
|
36
|
+
exchange_path: str = "/config/auth",
|
|
37
|
+
endpoints_path: str = "/config/endpoints",
|
|
38
|
+
http_client: httpx.AsyncClient | None = None,
|
|
39
|
+
) -> None:
|
|
40
|
+
super().__init__(
|
|
41
|
+
base_url,
|
|
42
|
+
exchange_path,
|
|
43
|
+
token_field="accessToken",
|
|
44
|
+
http_client=http_client,
|
|
45
|
+
)
|
|
46
|
+
self._username = username
|
|
47
|
+
self._password = password
|
|
48
|
+
self._endpoints_url = base_url.rstrip("/") + endpoints_path
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def is_anonymous(self) -> bool:
|
|
52
|
+
return self._username is None or self._password is None
|
|
53
|
+
|
|
54
|
+
def _exchange_headers(self) -> dict[str, str]:
|
|
55
|
+
credentials = base64.b64encode(f"{self._username}:{self._password}".encode()).decode()
|
|
56
|
+
return {"Authorization": f"Basic {credentials}"}
|
|
57
|
+
|
|
58
|
+
async def authenticate_request(
|
|
59
|
+
self,
|
|
60
|
+
request: RequestInformation,
|
|
61
|
+
additional_authentication_context: dict[str, Any] | None = None,
|
|
62
|
+
) -> None:
|
|
63
|
+
if self.is_anonymous:
|
|
64
|
+
return
|
|
65
|
+
await super().authenticate_request(request, additional_authentication_context)
|
|
66
|
+
|
|
67
|
+
async def get_endpoints(self, *, internal: bool = False) -> list[dict]:
|
|
68
|
+
"""Fetch service base URLs from Raziel's config endpoint. Secrets are
|
|
69
|
+
only included in the response when authenticated.
|
|
70
|
+
"""
|
|
71
|
+
headers = {}
|
|
72
|
+
if not self.is_anonymous:
|
|
73
|
+
headers["Authorization"] = f"Bearer {await self.get_token()}"
|
|
74
|
+
response = await self._http_client.get(
|
|
75
|
+
self._endpoints_url,
|
|
76
|
+
headers=headers,
|
|
77
|
+
params={"internal": internal},
|
|
78
|
+
)
|
|
79
|
+
response.raise_for_status()
|
|
80
|
+
return response.json()
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Auth provider for Beholder: every request just carries a static
|
|
2
|
+
`X-Api-Key` header, no exchange or expiry involved.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
from kiota_abstractions.authentication import AuthenticationProvider
|
|
10
|
+
from kiota_abstractions.request_information import RequestInformation
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class StaticKeyAuthProvider(AuthenticationProvider):
|
|
14
|
+
def __init__(self, api_key: str, *, header_name: str = "X-Api-Key") -> None:
|
|
15
|
+
self._api_key = api_key
|
|
16
|
+
self._header_name = header_name
|
|
17
|
+
|
|
18
|
+
async def authenticate_request(
|
|
19
|
+
self,
|
|
20
|
+
request: RequestInformation,
|
|
21
|
+
additional_authentication_context: dict[str, Any] | None = None,
|
|
22
|
+
) -> None:
|
|
23
|
+
if request.headers.contains(self._header_name):
|
|
24
|
+
request.headers.remove(self._header_name)
|
|
25
|
+
request.headers.add(self._header_name, self._api_key)
|
vars_client/client.py
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"""Top-level session object: resolves a ConfigProvider's endpoints once and
|
|
2
|
+
wires each generated service client to a Kiota RequestAdapter with the auth
|
|
3
|
+
provider appropriate for that service.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from kiota_abstractions.authentication import AnonymousAuthenticationProvider
|
|
9
|
+
from kiota_http.httpx_request_adapter import HttpxRequestAdapter
|
|
10
|
+
from kiota_http.kiota_client_factory import KiotaClientFactory
|
|
11
|
+
|
|
12
|
+
from vars_client.auth.jwt_exchange import JWTExchangeAuthProvider
|
|
13
|
+
from vars_client.auth.middleware import RefreshOnUnauthorizedMiddleware
|
|
14
|
+
from vars_client.auth.static_key import StaticKeyAuthProvider
|
|
15
|
+
from vars_client.config import ConfigProvider, RazielConfigProvider, ServiceEndpoint
|
|
16
|
+
from vars_client.generated import (
|
|
17
|
+
AnnosaurusClient,
|
|
18
|
+
BeholderClient,
|
|
19
|
+
OniClient,
|
|
20
|
+
PanoptesClient,
|
|
21
|
+
RazielClient,
|
|
22
|
+
VampireSquidClient,
|
|
23
|
+
)
|
|
24
|
+
from vars_client.skimmer import SkimmerClient
|
|
25
|
+
|
|
26
|
+
# service name -> (generated client class, JWT-exchange path)
|
|
27
|
+
JWT_EXCHANGE_SERVICES = {
|
|
28
|
+
"annosaurus": (AnnosaurusClient, "/v1/auth"),
|
|
29
|
+
"vampire_squid": (VampireSquidClient, "/v1/auth"),
|
|
30
|
+
"oni": (OniClient, "/v1/auth"),
|
|
31
|
+
"panoptes": (PanoptesClient, "/panoptes/v1/auth"),
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _adapter(auth_provider, base_url: str, *, http_client=None) -> HttpxRequestAdapter:
|
|
36
|
+
# HttpxRequestAdapter's `base_url` constructor kwarg is a no-op (it's
|
|
37
|
+
# only ever read from `http_client.base_url` at init time) -- the
|
|
38
|
+
# property setter is the only thing that actually takes effect.
|
|
39
|
+
adapter = HttpxRequestAdapter(auth_provider, http_client=http_client)
|
|
40
|
+
adapter.base_url = base_url
|
|
41
|
+
return adapter
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _strip_versioned_suffix(url: str, exchange_path: str) -> str:
|
|
45
|
+
# Raziel's registered service URLs already include the versioned path
|
|
46
|
+
# prefix (e.g. ".../anno/v1") that's also baked into each service's
|
|
47
|
+
# OpenAPI paths ("/v1/health", "/v1/auth", ...). Combining them as-is
|
|
48
|
+
# double-versions the URL and 404s, so strip the prefix back off. A
|
|
49
|
+
# ConfigProvider that already supplies the bare service root (no
|
|
50
|
+
# version suffix) is left untouched.
|
|
51
|
+
prefix = exchange_path.rsplit("/", 1)[0] # "/v1/auth" -> "/v1", "/panoptes/v1/auth" -> "/panoptes/v1"
|
|
52
|
+
url = url.rstrip("/")
|
|
53
|
+
return url[: -len(prefix)] if prefix and url.endswith(prefix) else url
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _jwt_exchange_adapter(endpoint: ServiceEndpoint, exchange_path: str) -> HttpxRequestAdapter:
|
|
57
|
+
base_url = _strip_versioned_suffix(endpoint.url, exchange_path)
|
|
58
|
+
|
|
59
|
+
# No secret configured -> build an anonymous client rather than refusing
|
|
60
|
+
# to connect. Every service's read endpoints work unauthenticated; only
|
|
61
|
+
# writes require a Bearer token, and those will simply fail at the point
|
|
62
|
+
# of use if attempted without one.
|
|
63
|
+
if not endpoint.secret:
|
|
64
|
+
return _adapter(AnonymousAuthenticationProvider(), base_url)
|
|
65
|
+
|
|
66
|
+
auth_provider = JWTExchangeAuthProvider(base_url, endpoint.secret, exchange_path=exchange_path)
|
|
67
|
+
http_client = KiotaClientFactory.create_with_custom_middleware(
|
|
68
|
+
[*KiotaClientFactory.get_default_middleware(None), RefreshOnUnauthorizedMiddleware(auth_provider)]
|
|
69
|
+
)
|
|
70
|
+
return _adapter(auth_provider, base_url, http_client=http_client)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class VARSClient:
|
|
74
|
+
"""`await VARSClient(config).connect()` then use `.annosaurus`,
|
|
75
|
+
`.vampire_squid`, `.oni`, `.panoptes`, `.beholder`, `.raziel`, and
|
|
76
|
+
`.skimmer`. Attributes stay `None` for services the ConfigProvider
|
|
77
|
+
didn't return an endpoint for.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
def __init__(self, config: ConfigProvider) -> None:
|
|
81
|
+
self._config = config
|
|
82
|
+
self.annosaurus: AnnosaurusClient | None = None
|
|
83
|
+
self.vampire_squid: VampireSquidClient | None = None
|
|
84
|
+
self.oni: OniClient | None = None
|
|
85
|
+
self.panoptes: PanoptesClient | None = None
|
|
86
|
+
self.beholder: BeholderClient | None = None
|
|
87
|
+
self.raziel: RazielClient | None = None
|
|
88
|
+
self.skimmer: SkimmerClient | None = None
|
|
89
|
+
|
|
90
|
+
async def connect(self) -> VARSClient:
|
|
91
|
+
endpoints = await self._config.get_endpoints()
|
|
92
|
+
|
|
93
|
+
for name, (client_cls, exchange_path) in JWT_EXCHANGE_SERVICES.items():
|
|
94
|
+
if name in endpoints:
|
|
95
|
+
setattr(self, name, client_cls(_jwt_exchange_adapter(endpoints[name], exchange_path)))
|
|
96
|
+
|
|
97
|
+
if (endpoint := endpoints.get("beholder")) is not None:
|
|
98
|
+
# Every Beholder capture endpoint requires the key except
|
|
99
|
+
# /health, which still works anonymously.
|
|
100
|
+
auth_provider = (
|
|
101
|
+
StaticKeyAuthProvider(endpoint.secret)
|
|
102
|
+
if endpoint.secret
|
|
103
|
+
else AnonymousAuthenticationProvider()
|
|
104
|
+
)
|
|
105
|
+
self.beholder = BeholderClient(_adapter(auth_provider, endpoint.url))
|
|
106
|
+
|
|
107
|
+
if (endpoint := endpoints.get("skimmer")) is not None:
|
|
108
|
+
self.skimmer = SkimmerClient(endpoint.url)
|
|
109
|
+
|
|
110
|
+
if isinstance(self._config, RazielConfigProvider):
|
|
111
|
+
adapter = _adapter(self._config.auth, self._config.base_url)
|
|
112
|
+
self.raziel = RazielClient(adapter)
|
|
113
|
+
|
|
114
|
+
return self
|
vars_client/config.py
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"""Decouples "where do I find each service's base URL and secret" from
|
|
2
|
+
Raziel specifically, so institutions not running Raziel can still use the
|
|
3
|
+
library by supplying config directly (YAML/dict) or via environment
|
|
4
|
+
variables.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
from abc import ABC, abstractmethod
|
|
11
|
+
from dataclasses import dataclass
|
|
12
|
+
|
|
13
|
+
import httpx
|
|
14
|
+
import yaml
|
|
15
|
+
|
|
16
|
+
from vars_client.auth.raziel import RazielAuthProvider
|
|
17
|
+
|
|
18
|
+
SERVICE_NAMES = ("raziel", "annosaurus", "vampire_squid", "oni", "panoptes", "beholder")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass(frozen=True)
|
|
22
|
+
class ServiceEndpoint:
|
|
23
|
+
name: str
|
|
24
|
+
url: str
|
|
25
|
+
secret: str | None = None
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ConfigProvider(ABC):
|
|
29
|
+
@abstractmethod
|
|
30
|
+
async def get_endpoints(self) -> dict[str, ServiceEndpoint]:
|
|
31
|
+
"""Return known service endpoints keyed by service name."""
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class RazielConfigProvider(ConfigProvider):
|
|
35
|
+
"""Discovers endpoints at runtime via Raziel's `/config/endpoints`.
|
|
36
|
+
|
|
37
|
+
`username`/`password` are optional -- without them, endpoints are
|
|
38
|
+
discovered anonymously and come back without secrets, which is enough
|
|
39
|
+
for read-only access to the services that allow it.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
def __init__(
|
|
43
|
+
self,
|
|
44
|
+
base_url: str,
|
|
45
|
+
username: str | None = None,
|
|
46
|
+
password: str | None = None,
|
|
47
|
+
*,
|
|
48
|
+
internal: bool = False,
|
|
49
|
+
http_client: httpx.AsyncClient | None = None,
|
|
50
|
+
) -> None:
|
|
51
|
+
self.base_url = base_url
|
|
52
|
+
self.auth = RazielAuthProvider(base_url, username, password, http_client=http_client)
|
|
53
|
+
self._internal = internal
|
|
54
|
+
|
|
55
|
+
async def get_endpoints(self) -> dict[str, ServiceEndpoint]:
|
|
56
|
+
raw = await self.auth.get_endpoints(internal=self._internal)
|
|
57
|
+
return {
|
|
58
|
+
# Raziel names services with hyphens (e.g. "vampire-squid");
|
|
59
|
+
# normalize to underscores to match the identifiers used
|
|
60
|
+
# everywhere else in this library (JWT_EXCHANGE_SERVICES,
|
|
61
|
+
# SERVICE_NAMES, VARSClient attributes).
|
|
62
|
+
(name := entry["name"].replace("-", "_")): ServiceEndpoint(
|
|
63
|
+
name=name, url=entry["url"], secret=entry.get("secret")
|
|
64
|
+
)
|
|
65
|
+
for entry in raw
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class StaticConfigProvider(ConfigProvider):
|
|
70
|
+
"""Fixed endpoints supplied directly, for institutions not running Raziel."""
|
|
71
|
+
|
|
72
|
+
def __init__(self, endpoints: dict[str, ServiceEndpoint]) -> None:
|
|
73
|
+
self._endpoints = endpoints
|
|
74
|
+
|
|
75
|
+
async def get_endpoints(self) -> dict[str, ServiceEndpoint]:
|
|
76
|
+
return dict(self._endpoints)
|
|
77
|
+
|
|
78
|
+
@classmethod
|
|
79
|
+
def from_dict(cls, data: dict[str, dict[str, str]]) -> StaticConfigProvider:
|
|
80
|
+
endpoints = {
|
|
81
|
+
name: ServiceEndpoint(name=name, url=entry["url"], secret=entry.get("secret"))
|
|
82
|
+
for name, entry in data.items()
|
|
83
|
+
}
|
|
84
|
+
return cls(endpoints)
|
|
85
|
+
|
|
86
|
+
@classmethod
|
|
87
|
+
def from_yaml(cls, path: str) -> StaticConfigProvider:
|
|
88
|
+
with open(path) as f:
|
|
89
|
+
data = yaml.safe_load(f)
|
|
90
|
+
return cls.from_dict(data)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class EnvConfigProvider(ConfigProvider):
|
|
94
|
+
"""Reads `{prefix}_{SERVICE}_URL` / `{prefix}_{SERVICE}_SECRET` env vars.
|
|
95
|
+
|
|
96
|
+
e.g. VARS_ANNOSAURUS_URL, VARS_ANNOSAURUS_SECRET. Services with no URL
|
|
97
|
+
set are omitted, not errored on.
|
|
98
|
+
"""
|
|
99
|
+
|
|
100
|
+
def __init__(self, services: tuple[str, ...] = SERVICE_NAMES, *, prefix: str = "VARS") -> None:
|
|
101
|
+
self._services = services
|
|
102
|
+
self._prefix = prefix
|
|
103
|
+
|
|
104
|
+
async def get_endpoints(self) -> dict[str, ServiceEndpoint]:
|
|
105
|
+
endpoints = {}
|
|
106
|
+
for name in self._services:
|
|
107
|
+
env_key = name.upper()
|
|
108
|
+
url = os.environ.get(f"{self._prefix}_{env_key}_URL")
|
|
109
|
+
if url is None:
|
|
110
|
+
continue
|
|
111
|
+
secret = os.environ.get(f"{self._prefix}_{env_key}_SECRET")
|
|
112
|
+
endpoints[name] = ServiceEndpoint(name=name, url=url, secret=secret)
|
|
113
|
+
return endpoints
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""Hand-maintained convenience re-exports of the generated service clients.
|
|
2
|
+
|
|
3
|
+
This file is never touched by scripts/generate.sh — Kiota writes only into
|
|
4
|
+
the per-service subdirectories below, not this top-level package.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from vars_client.generated.annosaurus.annosaurus_client import AnnosaurusClient
|
|
8
|
+
from vars_client.generated.beholder.beholder_client import BeholderClient
|
|
9
|
+
from vars_client.generated.oni.oni_client import OniClient
|
|
10
|
+
from vars_client.generated.panoptes.panoptes_client import PanoptesClient
|
|
11
|
+
from vars_client.generated.raziel.raziel_client import RazielClient
|
|
12
|
+
from vars_client.generated.vampire_squid.vampire_squid_client import (
|
|
13
|
+
VampireSquidClient,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"AnnosaurusClient",
|
|
18
|
+
"BeholderClient",
|
|
19
|
+
"OniClient",
|
|
20
|
+
"PanoptesClient",
|
|
21
|
+
"RazielClient",
|
|
22
|
+
"VampireSquidClient",
|
|
23
|
+
]
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Warning: KiotaBuilder OpenAPI warning: #/ - A servers entry (v3) or host + basePath + schemes properties (v2) was not present in the OpenAPI description. The root URL will need to be set manually with the request adapter.
|
|
2
|
+
Warning: KiotaBuilder No server url found in the OpenAPI document. The base url will need to be set when using the client.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from kiota_abstractions.api_client_builder import enable_backing_store_for_serialization_writer_factory, register_default_deserializer, register_default_serializer
|
|
4
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
|
5
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
|
6
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
|
7
|
+
from kiota_abstractions.serialization import ParseNodeFactoryRegistry, SerializationWriterFactoryRegistry
|
|
8
|
+
from kiota_serialization_form.form_parse_node_factory import FormParseNodeFactory
|
|
9
|
+
from kiota_serialization_form.form_serialization_writer_factory import FormSerializationWriterFactory
|
|
10
|
+
from kiota_serialization_json.json_parse_node_factory import JsonParseNodeFactory
|
|
11
|
+
from kiota_serialization_json.json_serialization_writer_factory import JsonSerializationWriterFactory
|
|
12
|
+
from kiota_serialization_multipart.multipart_serialization_writer_factory import MultipartSerializationWriterFactory
|
|
13
|
+
from kiota_serialization_text.text_parse_node_factory import TextParseNodeFactory
|
|
14
|
+
from kiota_serialization_text.text_serialization_writer_factory import TextSerializationWriterFactory
|
|
15
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from .v1.v1_request_builder import V1RequestBuilder
|
|
19
|
+
|
|
20
|
+
class AnnosaurusClient(BaseRequestBuilder):
|
|
21
|
+
"""
|
|
22
|
+
The main entry point of the SDK, exposes the configuration and the fluent API.
|
|
23
|
+
"""
|
|
24
|
+
def __init__(self,request_adapter: RequestAdapter) -> None:
|
|
25
|
+
"""
|
|
26
|
+
Instantiates a new AnnosaurusClient and sets the default values.
|
|
27
|
+
param request_adapter: The request adapter to use to execute the requests.
|
|
28
|
+
Returns: None
|
|
29
|
+
"""
|
|
30
|
+
if request_adapter is None:
|
|
31
|
+
raise TypeError("request_adapter cannot be null.")
|
|
32
|
+
super().__init__(request_adapter, "{+baseurl}", None)
|
|
33
|
+
register_default_serializer(JsonSerializationWriterFactory)
|
|
34
|
+
register_default_serializer(TextSerializationWriterFactory)
|
|
35
|
+
register_default_serializer(FormSerializationWriterFactory)
|
|
36
|
+
register_default_serializer(MultipartSerializationWriterFactory)
|
|
37
|
+
register_default_deserializer(JsonParseNodeFactory)
|
|
38
|
+
register_default_deserializer(TextParseNodeFactory)
|
|
39
|
+
register_default_deserializer(FormParseNodeFactory)
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def v1(self) -> V1RequestBuilder:
|
|
43
|
+
"""
|
|
44
|
+
The v1 property
|
|
45
|
+
"""
|
|
46
|
+
from .v1.v1_request_builder import V1RequestBuilder
|
|
47
|
+
|
|
48
|
+
return V1RequestBuilder(self.request_adapter, self.path_parameters)
|
|
49
|
+
|
|
50
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"descriptionHash": "EEF9DDCF9EC8646AF0A83C688745BD11A8D3B2C60A75BC838827474E2DBC87702E2CB5F214172F88CA24C16137E9099AB3FD8D976BF4324E79993F45DDD0813D",
|
|
3
|
+
"descriptionLocation": "../../../../specs/annosaurus.yaml",
|
|
4
|
+
"lockFileVersion": "1.0.0",
|
|
5
|
+
"kiotaVersion": "1.32.5",
|
|
6
|
+
"clientClassName": "AnnosaurusClient",
|
|
7
|
+
"typeAccessModifier": "Public",
|
|
8
|
+
"clientNamespaceName": "vars_client.generated.annosaurus",
|
|
9
|
+
"language": "Python",
|
|
10
|
+
"usesBackingStore": false,
|
|
11
|
+
"excludeBackwardCompatible": true,
|
|
12
|
+
"includeAdditionalData": true,
|
|
13
|
+
"disableSSLValidation": false,
|
|
14
|
+
"serializers": [
|
|
15
|
+
"Microsoft.Kiota.Serialization.Json.JsonSerializationWriterFactory",
|
|
16
|
+
"Microsoft.Kiota.Serialization.Text.TextSerializationWriterFactory",
|
|
17
|
+
"Microsoft.Kiota.Serialization.Form.FormSerializationWriterFactory",
|
|
18
|
+
"Microsoft.Kiota.Serialization.Multipart.MultipartSerializationWriterFactory"
|
|
19
|
+
],
|
|
20
|
+
"deserializers": [
|
|
21
|
+
"Microsoft.Kiota.Serialization.Json.JsonParseNodeFactory",
|
|
22
|
+
"Microsoft.Kiota.Serialization.Text.TextParseNodeFactory",
|
|
23
|
+
"Microsoft.Kiota.Serialization.Form.FormParseNodeFactory"
|
|
24
|
+
],
|
|
25
|
+
"structuredMimeTypes": [
|
|
26
|
+
"application/json",
|
|
27
|
+
"text/plain;q=0.9",
|
|
28
|
+
"application/x-www-form-urlencoded;q=0.2",
|
|
29
|
+
"multipart/form-data;q=0.1"
|
|
30
|
+
],
|
|
31
|
+
"includePatterns": [],
|
|
32
|
+
"excludePatterns": [],
|
|
33
|
+
"disabledValidationRules": [],
|
|
34
|
+
"allowedExternalOrigins": []
|
|
35
|
+
}
|