field-manager-python-client 4.7.15__tar.gz → 4.7.16__tar.gz
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.
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/PKG-INFO +8 -11
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/README.md +6 -7
- field_manager_python_client-4.7.16/field_manager_python_client/__init__.py +20 -0
- field_manager_python_client-4.7.16/field_manager_python_client/auth.py +318 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/pyproject.toml +9 -2
- field_manager_python_client-4.7.15/field_manager_python_client/__init__.py +0 -14
- field_manager_python_client-4.7.15/field_manager_python_client/auth.py +0 -393
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/delete_comment_projects_project_id_locations_location_id_comments_comment_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/get_likes_projects_project_id_locations_location_id_comments_comment_id_likes_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/get_location_comments_projects_project_id_locations_location_id_comments_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/get_method_comments_projects_project_id_locations_location_id_methods_method_id_comments_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/like_comment_projects_project_id_locations_location_id_comments_comment_id_likes_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/modify_comment_projects_project_id_locations_location_id_comments_comment_id_text_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/submit_comment_projects_project_id_locations_location_id_comments_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/comments/unlike_comment_projects_project_id_locations_location_id_comments_comment_id_likes_like_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/create_cross_section_lines_projects_project_id_cross_sections_lines_format_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/create_cross_section_projects_project_id_cross_sections_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/delete_cross_section_projects_project_id_cross_sections_cross_section_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/delete_cross_sections_projects_project_id_cross_sections_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/get_cross_section_plot_projects_project_id_cross_sections_cross_section_id_format_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/get_cross_section_projects_project_id_cross_sections_cross_section_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/get_cross_sections_for_project_projects_project_id_cross_sections_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/cross_sections/update_cross_section_projects_project_id_cross_sections_cross_section_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/export/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/export/export_files_projects_project_id_export_files_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/export/export_projects_project_id_export_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/files/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/files/change_file_metadata_projects_project_id_files_file_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/files/download_file_projects_project_id_files_file_id_download_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/files/download_file_specified_in_token_download_projects_project_id_file_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/files/download_project_file_download_projects_project_id_file_file_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/files/export_files_via_token_download_projects_project_id_export_files_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/files/file_token_projects_project_id_files_file_id_token_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/files/project_token_projects_project_id_token_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/gis/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/gis/get_coordinate_reference_system_coordinate_reference_system_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/gis/get_locations_in_project_projects_project_id_gis_onshore_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/create_layer_group_projects_project_id_layer_groups_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/create_organization_layer_group_organizations_organization_id_layer_groups_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/create_organization_soil_unit_organizations_organization_id_layer_groups_layer_group_id_soil_units_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/create_soil_unit_projects_project_id_layer_groups_layer_group_id_soil_units_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/delete_layer_group_projects_project_id_layer_groups_layer_group_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/delete_organization_layer_group_organizations_organization_id_layer_groups_layer_group_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/delete_organization_soil_unit_organizations_organization_id_layer_groups_layer_group_id_soil_units_soil_unit_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/delete_organization_soil_units_organizations_organization_id_layer_groups_layer_group_id_soil_units_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/delete_soil_unit_projects_project_id_layer_groups_layer_group_id_soil_units_soil_unit_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/delete_soil_units_projects_project_id_layer_groups_layer_group_id_soil_units_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/export_layer_interpretations_projects_project_id_layer_interpretations_export_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/get_layer_groups_projects_project_id_layer_groups_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/get_location_layer_filters_projects_project_id_location_layer_filters_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/get_location_layer_intervals_projects_project_id_layer_groups_layer_group_id_location_layer_intervals_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/get_location_layers_projects_project_id_locations_location_id_layer_interpretation_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/get_organization_layer_groups_organizations_organization_id_layer_groups_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/get_project_organization_layer_groups_projects_project_id_organization_layer_groups_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/patch_organization_soil_unit_organizations_organization_id_layer_groups_layer_group_id_soil_units_soil_unit_id_patch.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/patch_soil_unit_projects_project_id_layer_groups_layer_group_id_soil_units_soil_unit_id_patch.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/save_layer_interpretation_projects_project_id_locations_location_id_layer_interpretation_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/layer_interpretations/set_default_layer_group_projects_project_id_layer_groups_layer_group_id_set_default_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/location_types/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/location_types/get_location_iogp_type_location_iogp_types_iogp_type_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/location_types/get_location_iogp_types_location_iogp_types_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/add_location_to_project_projects_project_id_locations_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/delete_file_projects_project_id_locations_location_id_files_file_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/delete_location_in_project_projects_project_id_locations_location_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/delete_locations_in_project_projects_project_id_locations_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/export_projects_project_id_locations_location_id_export_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/get_files_in_location_in_project_projects_project_id_locations_location_id_files_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/get_location_in_project_by_name_projects_project_id_locations_get_by_name_name_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/get_location_in_project_projects_project_id_locations_location_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/get_locations_in_project_projects_project_id_locations_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/update_location_in_project_projects_project_id_locations_location_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/update_locations_in_project_projects_project_id_locations_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/upload_file_to_location_projects_project_id_locations_location_id_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/locations/upload_locations_to_project_projects_project_id_locations_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/add_map_layout_to_project_projects_project_id_map_layouts_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/add_map_layout_version_projects_project_id_map_layouts_map_layout_id_versions_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/delete_map_layout_in_project_projects_project_id_map_layouts_map_layout_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/delete_map_layout_version_projects_project_id_map_layouts_map_layout_id_versions_map_layout_version_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/delete_map_layouts_in_project_projects_project_id_map_layouts_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/get_map_layout_in_project_projects_project_id_map_layouts_map_layout_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/get_map_layouts_in_project_projects_project_id_map_layouts_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/update_map_layout_in_project_projects_project_id_map_layouts_map_layout_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/map_layouts/update_map_layout_version_projects_project_id_map_layouts_map_layout_id_versions_map_layout_version_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/method_types/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/method_types/get_method_type_method_types_method_type_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/method_types/get_method_types_method_types_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/add_method_to_location_projects_project_id_locations_location_id_methods_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/add_methods_to_location_batch_projects_project_id_locations_location_id_methods_batch_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/batch_delete_methods_for_location_projects_project_id_locations_location_id_methods_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/create_data_row_projects_project_id_locations_location_id_methods_method_id_data_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/delete_data_row_projects_project_id_locations_location_id_methods_method_id_data_method_data_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/delete_file_projects_project_id_locations_location_id_methods_method_id_files_file_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/delete_method_for_location_projects_project_id_locations_location_id_methods_method_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/export_projects_project_id_locations_location_id_methods_method_id_export_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/get_files_for_method_projects_project_id_locations_location_id_methods_method_id_files_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/get_method_projects_project_id_locations_location_id_methods_method_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/get_methods_data_projects_project_id_locations_location_id_methods_method_id_data_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/get_methods_for_location_of_type_projects_project_id_locations_location_id_methods_type_method_type_name_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/get_methods_for_location_projects_project_id_locations_location_id_methods_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/update_data_row_projects_project_id_locations_location_id_methods_method_id_data_method_data_id_patch.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/update_data_row_projects_project_id_locations_location_id_methods_method_id_data_method_data_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/update_method_for_location_projects_project_id_locations_location_id_methods_method_id_patch.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/update_method_for_location_projects_project_id_locations_location_id_methods_method_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/methods/upload_file_projects_project_id_locations_location_id_methods_method_id_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/nadag/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/nadag/get_nadag_sync_status_details_projects_project_id_nadag_sync_status_details_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/nadag/get_nadag_sync_status_projects_project_id_nadag_sync_status_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/nadag/start_nadag_sync_projects_project_id_nadag_sync_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/add_organization_organizations_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/create_web_map_service_organization_organizations_organization_id_web_map_services_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/delete_file_organizations_organization_id_files_file_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/delete_web_map_service_organization_organizations_organization_id_web_map_services_web_map_service_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/download_file_organizations_organization_id_files_file_id_download_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/get_files_in_organization_organizations_organization_id_files_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/get_organization_by_external_id_organizations_get_by_external_id_external_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/get_organization_organizations_organization_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/get_organization_projects_organizations_organization_id_projects_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/get_organization_users_organizations_organization_id_users_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/get_organization_web_map_service_organizations_organization_id_web_map_services_web_map_service_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/get_organization_web_map_services_organizations_organization_id_web_map_services_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/get_organizations_organizations_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/move_organization_project_organizations_organization_id_projects_project_id_move_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/read_web_map_services_project_projects_project_id_web_map_services_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/update_organization_organizations_organization_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/update_web_map_service_organization_organizations_organization_id_web_map_services_web_map_service_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/organizations/upload_file_to_organization_organizations_organization_id_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/piezometers/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/piezometers/create_piezometer_model_projects_project_id_piezometers_models_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/piezometers/get_piezometer_model_projects_project_id_piezometers_models_model_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/piezometers/get_piezometer_models_projects_project_id_piezometers_models_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/piezometers/get_piezometer_units_piezometers_units_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/piezometers/get_piezometer_vendor_projects_project_id_piezometers_vendors_vendor_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/piezometers/get_piezometer_vendors_projects_project_id_piezometers_vendors_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/piezometers/update_piezometer_model_projects_project_id_piezometers_models_model_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/plots/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/plots/get_plot_from_sequence_plots_project_project_id_format_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/plots/get_plot_preview_for_location_project_project_id_locations_location_id_plots_svg_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/plots/get_plot_projects_project_id_locations_location_id_methods_plots_format_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/plots/get_plot_sequence_plots_project_project_id_plot_sequence_format_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/project_areas/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/project_areas/create_project_areas_projects_project_id_project_areas_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/project_areas/delete_project_areas_projects_project_id_project_areas_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/project_areas/get_linkable_projects_for_project_area_projects_project_id_project_areas_project_area_id_linkable_projects_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/project_areas/get_project_areas_for_project_projects_project_id_project_areas_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/project_areas/update_project_areas_projects_project_id_project_areas_patch.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/add_project_projects_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/create_web_map_service_project_projects_project_id_web_map_services_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/delete_file_projects_project_id_files_file_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/delete_files_projects_project_id_files_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/delete_project_favorite_projects_project_id_favorite_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/delete_project_projects_project_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/delete_projects_projects_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/delete_web_map_service_project_projects_project_id_web_map_services_web_map_service_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/download_logo_projects_project_id_logo_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/get_file_in_project_projects_project_id_files_file_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/get_files_in_project_projects_project_id_files_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/get_linked_projects_projects_project_id_linked_projects_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/get_project_projects_project_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/get_project_summary_projects_project_id_summary_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/get_project_users_projects_project_id_users_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/get_projects_projects_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/link_linked_project_projects_project_id_linked_projects_linked_project_id_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/read_web_map_service_project_projects_project_id_web_map_services_web_map_service_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/refresh_project_from_citadel_projects_project_id_refresh_from_citadel_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/search_projects_projects_search_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/unlink_linked_project_projects_project_id_linked_projects_linked_project_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/update_project_favorite_projects_project_id_favorite_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/update_project_favorite_projects_project_id_favorite_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/update_project_projects_project_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/update_web_map_service_project_projects_project_id_web_map_services_web_map_service_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/projects/upload_file_to_project_projects_project_id_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/public/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/public/get_organization_by_email_address_public_organizations_email_address_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/public/get_organization_information_public_organizations_organization_id_information_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sample_containers/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sample_containers/get_sample_container_sample_containers_sample_container_type_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sample_containers/get_sample_containers_sample_containers_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sample_materials/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sample_materials/get_sample_material_sample_materials_sample_material_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sample_materials/get_sample_materials_sample_materials_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sampler_types/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sampler_types/get_sampler_type_sampler_types_sampler_type_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sampler_types/get_sampler_types_sampler_types_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sampling_techniques/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sampling_techniques/get_sampling_technique_sampling_techniques_sampling_technique_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/sampling_techniques/get_sampling_techniques_sampling_techniques_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/create_shape_projects_project_id_shapes_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/delete_file_from_shape_projects_project_id_shapes_shape_id_files_file_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/delete_shape_files_projects_project_id_shapes_shape_id_files_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/delete_shape_projects_project_id_shapes_shape_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/delete_shapes_projects_project_id_shapes_delete_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/get_files_projects_project_id_shapes_shape_id_files_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/get_shape_projects_project_id_shapes_shape_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/get_shapes_projects_project_id_shapes_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/update_shape_projects_project_id_shapes_shape_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/shapes/upload_file_to_shape_projects_project_id_shapes_shape_id_file_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/standards/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/standards/get_project_standards_standards_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/standards/get_standard_standards_standard_id_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/trackers/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/trackers/tracker_upload_trackers_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/users/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/users/add_user_role_users_user_id_roles_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/users/add_user_users_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/users/get_users_users_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/users/remove_user_role_users_user_id_roles_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/users/set_current_user_nadag_user_id_users_me_nadag_user_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/version/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/version/get_version_version_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/web_map_services/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/web_map_services/create_application_layer_web_map_service_web_map_services_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/web_map_services/delete_application_layer_web_map_service_web_map_services_web_map_service_id_delete.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/web_map_services/list_application_layer_web_map_services_web_map_services_get.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/api/web_map_services/update_application_layer_web_map_service_web_map_services_web_map_service_id_put.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/client.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/errors.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/__init__.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/application_class_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/background_map_layer.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/bedrock_info.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/bedrock_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/body_create_shape_projects_project_id_shapes_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/body_upload_file_projects_project_id_locations_location_id_methods_method_id_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/body_upload_file_to_location_projects_project_id_locations_location_id_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/body_upload_file_to_organization_organizations_organization_id_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/body_upload_file_to_project_projects_project_id_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/body_upload_file_to_shape_projects_project_id_shapes_shape_id_file_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/body_upload_locations_to_project_projects_project_id_locations_upload_post.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/color_mode.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/comment.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/comment_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/comment_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/cpt_options.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/create_cross_section_lines_projects_project_id_cross_sections_lines_format_post_format.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/cross_section.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/cross_section_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/cross_section_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/crs_info.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/date_format.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/dp_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/export.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/export_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/file.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/file_extended.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/file_extension.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/file_min.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/file_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/file_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/fm_plot_options.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/get_cross_section_plot_projects_project_id_cross_sections_cross_section_id_format_get_format.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/get_location_layers_response.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/hatch_style_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/height_reference.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/http_validation_error.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/image_size.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/iogp_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/iogp_type_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/language.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/layer_group.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/layer_group_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/layer_group_with_soil_units.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/layer_interpretation_export_format.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/layer_interval_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/layer_interval_with_soil_unit.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/like.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/linked_project_info.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_coordinates.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_gis.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_info.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_export_interval.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_export_request.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_export_result.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_filter_export_result.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_filter_request.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_filter_response.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_filter_result.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_interval_segment.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_intervals_response.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_layer_intervals_result.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_min.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_summary.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/location_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/map_layout.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/map_layout_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/map_layout_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/map_layout_version.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/map_layout_version_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/map_layout_version_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/map_scale.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ad.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ad_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ad_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cd.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cd_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cd_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cpt.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cpt_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cpt_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cpt_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cpt_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_cpt_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_def.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_def_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_def_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dp.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dp_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dp_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dp_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dp_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dt.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dt_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dt_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dt_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dt_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_dt_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_esa.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_esa_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_esa_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_export_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_inc.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_inc_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_inc_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_info.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_iw.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_iw_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_iw_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_min.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_other.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_other_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_other_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_plot_format.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pt.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pt_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pt_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pz.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pz_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pz_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pz_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pz_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_pz_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rcd.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rcd_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rcd_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rcd_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rcd_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rcd_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ro.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ro_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ro_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rp.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rp_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rp_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rp_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rp_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rp_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rs.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rs_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rs_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rws.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rws_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_rws_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sa.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sa_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sa_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_slb.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_slb_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_slb_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_slb_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_slb_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_slb_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_spt.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_spt_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_spt_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_srs.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_srs_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_srs_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_srs_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_srs_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_srs_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ss.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ss_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ss_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ss_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ss_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_ss_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_status_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sti.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sti_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sti_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sti_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sti_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_sti_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_summary.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_svt.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_svt_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_svt_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_svt_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_svt_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_svt_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tot.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tot_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tot_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tot_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tot_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tot_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tp.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tp_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tp_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tr.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tr_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tr_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tr_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tr_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_tr_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_type_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_type_enum_str.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_wst.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_wst_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_wst_data.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_wst_data_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_wst_data_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/method_wst_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_blocker.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_blocker_code.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_failed_entity_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_failed_sync.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_message.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_overview_status.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_ready_items.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_ready_location.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_ready_method.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_ready_project.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_ready_report.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_status.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_status_counts.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_sync_status_details.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_user_id_response.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/nadag_user_id_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/operation.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/options.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/organization.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/organization_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/organization_information.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/organization_layer_group_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/organization_min.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/organization_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/orientation.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/page_number_prefix_by_method.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/page_number_start_per_method.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/paper_size.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/pdf_options.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/pdf_options_date_format.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/pdf_options_lang.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/pdf_options_paper_size.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/pdf_options_sort_figures_by.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/pdf_page_info.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/piezometer_model.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/piezometer_model_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/piezometer_model_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/piezometer_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/piezometer_vendor.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/pizeometer_units.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/plot_data_stats.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/plot_data_stats_percentiles.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/plot_format.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/plot_info_object.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/plot_info_object_stats_type_0.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/plot_sequence.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/plot_sequence_options.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/plot_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_area.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_area_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_area_linkable_project.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_area_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_info.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_role_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_search.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_summary.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/project_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/reading_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/role.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/role_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/role_entity_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/role_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/sample_container_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/sample_material.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/sampler_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/sampling_technique.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/save_layer_interpretation_request.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/save_layer_interpretation_response.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/scales.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/scaling_mode.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/shape.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/shape_color.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/shape_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/soil_type_enum.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/soil_unit.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/soil_unit_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/soil_unit_patch.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/sounding_class.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/standard.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/standard_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/sub_shape.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/sync_status.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/transformation_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/user.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/user_create_request.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/validation_error.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/validation_error_context.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/web_map_service.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/web_map_service_create.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/web_map_service_level.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/web_map_service_type.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/models/web_map_service_update.py +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/py.typed +0 -0
- {field_manager_python_client-4.7.15 → field_manager_python_client-4.7.16}/field_manager_python_client/types.py +0 -0
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: field-manager-python-client
|
|
3
|
-
Version: 4.7.
|
|
3
|
+
Version: 4.7.16
|
|
4
4
|
Summary: A client library for accessing Field Manager Data API
|
|
5
5
|
Author: Jiyang Ye
|
|
6
6
|
Author-email: jiyang.ye@ngi.no
|
|
7
7
|
Maintainer: Jiyang Ye
|
|
8
8
|
Maintainer-email: jiyang.ye@ngi.no
|
|
9
|
-
Requires-Python: >=3.
|
|
9
|
+
Requires-Python: >=3.11,<4.0
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
13
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
13
|
Requires-Dist: attrs (>=22.2.0)
|
|
@@ -32,13 +30,12 @@ pip install field_manager_python_client python-keycloak
|
|
|
32
30
|
|
|
33
31
|
### Authentication
|
|
34
32
|
|
|
35
|
-
The easiest way to get started is using the built-in
|
|
33
|
+
The easiest way to get started for scripting is using the built-in device-code helper:
|
|
36
34
|
|
|
37
35
|
```python
|
|
38
|
-
from field_manager_python_client import
|
|
36
|
+
from field_manager_python_client import get_prod_device_code_client
|
|
39
37
|
|
|
40
|
-
|
|
41
|
-
client = get_prod_client(email="your.email@example.com")
|
|
38
|
+
client = get_prod_device_code_client()
|
|
42
39
|
```
|
|
43
40
|
|
|
44
41
|
### Basic Usage
|
|
@@ -53,11 +50,11 @@ print(f"Project: {project_info.name}")
|
|
|
53
50
|
|
|
54
51
|
## 🔐 Authentication Options
|
|
55
52
|
|
|
56
|
-
### 1.
|
|
53
|
+
### 1. Device Code Authentication (Recommended)
|
|
57
54
|
```python
|
|
58
|
-
from field_manager_python_client import
|
|
55
|
+
from field_manager_python_client import authenticate_with_device_code
|
|
59
56
|
|
|
60
|
-
client =
|
|
57
|
+
client = authenticate_with_device_code(environment="prod")
|
|
61
58
|
```
|
|
62
59
|
|
|
63
60
|
### 2. Manual Token Setup
|
|
@@ -11,13 +11,12 @@ pip install field_manager_python_client python-keycloak
|
|
|
11
11
|
|
|
12
12
|
### Authentication
|
|
13
13
|
|
|
14
|
-
The easiest way to get started is using the built-in
|
|
14
|
+
The easiest way to get started for scripting is using the built-in device-code helper:
|
|
15
15
|
|
|
16
16
|
```python
|
|
17
|
-
from field_manager_python_client import
|
|
17
|
+
from field_manager_python_client import get_prod_device_code_client
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
client = get_prod_client(email="your.email@example.com")
|
|
19
|
+
client = get_prod_device_code_client()
|
|
21
20
|
```
|
|
22
21
|
|
|
23
22
|
### Basic Usage
|
|
@@ -32,11 +31,11 @@ print(f"Project: {project_info.name}")
|
|
|
32
31
|
|
|
33
32
|
## 🔐 Authentication Options
|
|
34
33
|
|
|
35
|
-
### 1.
|
|
34
|
+
### 1. Device Code Authentication (Recommended)
|
|
36
35
|
```python
|
|
37
|
-
from field_manager_python_client import
|
|
36
|
+
from field_manager_python_client import authenticate_with_device_code
|
|
38
37
|
|
|
39
|
-
client =
|
|
38
|
+
client = authenticate_with_device_code(environment="prod")
|
|
40
39
|
```
|
|
41
40
|
|
|
42
41
|
### 2. Manual Token Setup
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""A client library for accessing Field Manager Data API"""
|
|
2
|
+
|
|
3
|
+
from .auth import (
|
|
4
|
+
TokenManager,
|
|
5
|
+
authenticate_with_device_code,
|
|
6
|
+
get_prod_device_code_client,
|
|
7
|
+
get_service_account_client,
|
|
8
|
+
get_test_device_code_client,
|
|
9
|
+
)
|
|
10
|
+
from .client import AuthenticatedClient, Client
|
|
11
|
+
|
|
12
|
+
__all__ = (
|
|
13
|
+
"AuthenticatedClient",
|
|
14
|
+
"Client",
|
|
15
|
+
"authenticate_with_device_code",
|
|
16
|
+
"get_test_device_code_client",
|
|
17
|
+
"get_prod_device_code_client",
|
|
18
|
+
"get_service_account_client",
|
|
19
|
+
"TokenManager",
|
|
20
|
+
)
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"""Authentication helpers for the Field Manager Python Client."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
import os
|
|
5
|
+
import time
|
|
6
|
+
import webbrowser
|
|
7
|
+
from typing import Any, Literal
|
|
8
|
+
|
|
9
|
+
import httpx
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
from keycloak import KeycloakOpenID
|
|
13
|
+
except ImportError:
|
|
14
|
+
raise ImportError("python-keycloak is required for authentication. Install it with: pip install python-keycloak")
|
|
15
|
+
|
|
16
|
+
from .client import AuthenticatedClient
|
|
17
|
+
|
|
18
|
+
# Environment configurations
|
|
19
|
+
ENVIRONMENTS = {
|
|
20
|
+
"test": {
|
|
21
|
+
"KEYCLOAK_SERVER_URL": "https://keycloak.test.ngiapi.no/auth/",
|
|
22
|
+
"KEYCLOAK_REALM": "tenant-geohub-public",
|
|
23
|
+
"KEYCLOAK_DEVICE_CLIENT_ID": "fieldmanager-devicecode-client",
|
|
24
|
+
"BASE_URL": "https://app.test.fieldmanager.io/api/location",
|
|
25
|
+
},
|
|
26
|
+
"prod": {
|
|
27
|
+
"KEYCLOAK_SERVER_URL": "https://keycloak.ngiapi.no/auth/",
|
|
28
|
+
"KEYCLOAK_REALM": "tenant-geohub-public",
|
|
29
|
+
"KEYCLOAK_DEVICE_CLIENT_ID": "fieldmanager-devicecode-client",
|
|
30
|
+
"BASE_URL": "https://app.fieldmanager.io/api/location",
|
|
31
|
+
},
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
DEFAULT_SCOPE = "openid"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class TokenManager:
|
|
38
|
+
"""Manages OAuth2 tokens with automatic refresh capabilities."""
|
|
39
|
+
|
|
40
|
+
def __init__(
|
|
41
|
+
self,
|
|
42
|
+
keycloak_openid: KeycloakOpenID,
|
|
43
|
+
initial_token: dict[str, Any] | None = None,
|
|
44
|
+
token_file: str | None = None,
|
|
45
|
+
):
|
|
46
|
+
"""
|
|
47
|
+
Initialize the TokenManager.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
keycloak_openid: The Keycloak OpenID client
|
|
51
|
+
initial_token: Optional initial token data
|
|
52
|
+
token_file: Optional path to token storage file
|
|
53
|
+
"""
|
|
54
|
+
self.keycloak = keycloak_openid
|
|
55
|
+
self.token_file = token_file or "token_store.json"
|
|
56
|
+
|
|
57
|
+
if initial_token:
|
|
58
|
+
self.access_token = initial_token["access_token"]
|
|
59
|
+
self.refresh_token = initial_token.get("refresh_token")
|
|
60
|
+
self.expires_at = time.time() + initial_token["expires_in"]
|
|
61
|
+
else:
|
|
62
|
+
self.access_token = None
|
|
63
|
+
self.refresh_token = None
|
|
64
|
+
self.expires_at = 0
|
|
65
|
+
|
|
66
|
+
def save_tokens(self) -> None:
|
|
67
|
+
"""Save tokens to a file."""
|
|
68
|
+
try:
|
|
69
|
+
with open(self.token_file, "w") as f:
|
|
70
|
+
json.dump(
|
|
71
|
+
{
|
|
72
|
+
"access_token": self.access_token,
|
|
73
|
+
"refresh_token": self.refresh_token,
|
|
74
|
+
"expires_at": self.expires_at,
|
|
75
|
+
},
|
|
76
|
+
f,
|
|
77
|
+
)
|
|
78
|
+
except Exception as e:
|
|
79
|
+
print(f"Unable to save tokens. Error: {e}")
|
|
80
|
+
|
|
81
|
+
def load_tokens(self) -> None:
|
|
82
|
+
"""Load tokens from a file if it exists."""
|
|
83
|
+
if os.path.exists(self.token_file):
|
|
84
|
+
try:
|
|
85
|
+
with open(self.token_file) as f:
|
|
86
|
+
data = json.load(f)
|
|
87
|
+
self.access_token = data.get("access_token")
|
|
88
|
+
self.refresh_token = data.get("refresh_token")
|
|
89
|
+
self.expires_at = data.get("expires_at", 0)
|
|
90
|
+
except Exception as e:
|
|
91
|
+
print(f"Unable to load tokens. Error: {e}")
|
|
92
|
+
|
|
93
|
+
def is_access_token_valid(self) -> bool:
|
|
94
|
+
"""Check if the access token is still valid (with 60-second buffer)."""
|
|
95
|
+
return time.time() < self.expires_at - 60
|
|
96
|
+
|
|
97
|
+
def refresh_access_token(self) -> bool:
|
|
98
|
+
"""Attempt to refresh the token using the refresh token."""
|
|
99
|
+
if not self.refresh_token:
|
|
100
|
+
return False
|
|
101
|
+
try:
|
|
102
|
+
new_token = self.keycloak.refresh_token(self.refresh_token)
|
|
103
|
+
self.access_token = new_token["access_token"]
|
|
104
|
+
self.refresh_token = new_token.get("refresh_token", self.refresh_token)
|
|
105
|
+
self.expires_at = time.time() + new_token["expires_in"]
|
|
106
|
+
self.save_tokens()
|
|
107
|
+
return True
|
|
108
|
+
except Exception as e:
|
|
109
|
+
print(f"Failed to refresh access token. Error: {e}")
|
|
110
|
+
return False
|
|
111
|
+
|
|
112
|
+
def get_valid_token(self) -> str | None:
|
|
113
|
+
"""Return a valid access token, refreshing if necessary."""
|
|
114
|
+
if self.is_access_token_valid():
|
|
115
|
+
return self.access_token
|
|
116
|
+
elif self.refresh_access_token():
|
|
117
|
+
return self.access_token
|
|
118
|
+
else:
|
|
119
|
+
return None
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def _get_device_auth_url(env_config: dict[str, str]) -> str:
|
|
123
|
+
realm = env_config["KEYCLOAK_REALM"]
|
|
124
|
+
server_url = env_config["KEYCLOAK_SERVER_URL"].rstrip("/")
|
|
125
|
+
return f"{server_url}/realms/{realm}/protocol/openid-connect/auth/device"
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def _get_token_url(env_config: dict[str, str]) -> str:
|
|
129
|
+
realm = env_config["KEYCLOAK_REALM"]
|
|
130
|
+
server_url = env_config["KEYCLOAK_SERVER_URL"].rstrip("/")
|
|
131
|
+
return f"{server_url}/realms/{realm}/protocol/openid-connect/token"
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _request_device_code(env_config: dict[str, str], scope: str = DEFAULT_SCOPE) -> dict[str, Any]:
|
|
135
|
+
payload = {
|
|
136
|
+
"client_id": env_config["KEYCLOAK_DEVICE_CLIENT_ID"],
|
|
137
|
+
"scope": scope,
|
|
138
|
+
}
|
|
139
|
+
response = httpx.post(_get_device_auth_url(env_config), data=payload, timeout=30.0)
|
|
140
|
+
response.raise_for_status()
|
|
141
|
+
return response.json()
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def _poll_for_device_token(
|
|
145
|
+
env_config: dict[str, str], device_code: str, interval: int, expires_in: int
|
|
146
|
+
) -> dict[str, Any]:
|
|
147
|
+
payload = {
|
|
148
|
+
"grant_type": "urn:ietf:params:oauth:grant-type:device_code",
|
|
149
|
+
"client_id": env_config["KEYCLOAK_DEVICE_CLIENT_ID"],
|
|
150
|
+
"device_code": device_code,
|
|
151
|
+
}
|
|
152
|
+
deadline = time.time() + expires_in
|
|
153
|
+
current_interval = interval
|
|
154
|
+
|
|
155
|
+
while time.time() < deadline:
|
|
156
|
+
response = httpx.post(_get_token_url(env_config), data=payload, timeout=30.0)
|
|
157
|
+
try:
|
|
158
|
+
data = response.json()
|
|
159
|
+
except ValueError as exc:
|
|
160
|
+
raise RuntimeError(
|
|
161
|
+
f"Device code token request returned non-JSON response (status={response.status_code}): {response.text}"
|
|
162
|
+
) from exc
|
|
163
|
+
|
|
164
|
+
if response.is_success and "access_token" in data:
|
|
165
|
+
return data
|
|
166
|
+
if data.get("error") == "authorization_pending":
|
|
167
|
+
print("Waiting for user authorization...")
|
|
168
|
+
time.sleep(current_interval)
|
|
169
|
+
continue
|
|
170
|
+
if data.get("error") == "slow_down":
|
|
171
|
+
current_interval += 5
|
|
172
|
+
time.sleep(current_interval)
|
|
173
|
+
continue
|
|
174
|
+
if data.get("error") == "expired_token":
|
|
175
|
+
break
|
|
176
|
+
|
|
177
|
+
raise RuntimeError(f"Device code token request failed: {data}")
|
|
178
|
+
|
|
179
|
+
raise RuntimeError("Device code expired before authorization completed.")
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def authenticate_with_device_code(
|
|
183
|
+
environment: Literal["test", "prod"] = "test",
|
|
184
|
+
scope: str = "openid profile email offline_access",
|
|
185
|
+
token_file: str | None = None,
|
|
186
|
+
open_browser: bool = True,
|
|
187
|
+
) -> AuthenticatedClient:
|
|
188
|
+
"""
|
|
189
|
+
Authenticate with Field Manager using OAuth2 Device Authorization Grant.
|
|
190
|
+
|
|
191
|
+
This flow is intended for interactive scripting, especially for external
|
|
192
|
+
users who need an API token without using the Field Manager Developer Portal.
|
|
193
|
+
|
|
194
|
+
Args:
|
|
195
|
+
environment: Either "test" or "prod" environment
|
|
196
|
+
scope: OAuth2 scope requested for the device-code flow
|
|
197
|
+
token_file: Path to token storage file (default: "token_store.json")
|
|
198
|
+
open_browser: Whether to automatically open the verification URL
|
|
199
|
+
|
|
200
|
+
Returns:
|
|
201
|
+
AuthenticatedClient instance ready to use
|
|
202
|
+
"""
|
|
203
|
+
if environment not in ENVIRONMENTS:
|
|
204
|
+
raise ValueError(f"Environment must be one of: {list(ENVIRONMENTS.keys())}")
|
|
205
|
+
|
|
206
|
+
env_config = ENVIRONMENTS[environment]
|
|
207
|
+
keycloak_openid = KeycloakOpenID(
|
|
208
|
+
server_url=env_config["KEYCLOAK_SERVER_URL"],
|
|
209
|
+
client_id=env_config["KEYCLOAK_DEVICE_CLIENT_ID"],
|
|
210
|
+
realm_name=env_config["KEYCLOAK_REALM"],
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
token_manager = TokenManager(keycloak_openid, token_file=token_file)
|
|
214
|
+
token_manager.load_tokens()
|
|
215
|
+
|
|
216
|
+
valid_token = token_manager.get_valid_token()
|
|
217
|
+
if valid_token:
|
|
218
|
+
print("Using cached tokens.")
|
|
219
|
+
return AuthenticatedClient(base_url=env_config["BASE_URL"], token=valid_token)
|
|
220
|
+
|
|
221
|
+
print("Requesting device authorization...")
|
|
222
|
+
device_data = _request_device_code(env_config, scope=scope)
|
|
223
|
+
verification_uri_complete = device_data.get("verification_uri_complete")
|
|
224
|
+
verification_uri = device_data.get("verification_uri")
|
|
225
|
+
user_code = device_data.get("user_code")
|
|
226
|
+
|
|
227
|
+
print("\n=== ACTION REQUIRED ===")
|
|
228
|
+
if verification_uri_complete:
|
|
229
|
+
print("Open this URL in your browser:")
|
|
230
|
+
print(verification_uri_complete)
|
|
231
|
+
if verification_uri:
|
|
232
|
+
print("\nManual fallback URL:")
|
|
233
|
+
print(verification_uri)
|
|
234
|
+
if user_code:
|
|
235
|
+
print(f"\nUser code: {user_code}")
|
|
236
|
+
print("========================\n")
|
|
237
|
+
|
|
238
|
+
if open_browser and verification_uri_complete:
|
|
239
|
+
webbrowser.open_new(verification_uri_complete)
|
|
240
|
+
|
|
241
|
+
token = _poll_for_device_token(
|
|
242
|
+
env_config=env_config,
|
|
243
|
+
device_code=device_data["device_code"],
|
|
244
|
+
interval=int(device_data.get("interval", 5)),
|
|
245
|
+
expires_in=int(device_data.get("expires_in", 600)),
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
token_manager = TokenManager(keycloak_openid, token, token_file=token_file)
|
|
249
|
+
token_manager.save_tokens()
|
|
250
|
+
print("Authentication successful. Client is ready to use.")
|
|
251
|
+
return AuthenticatedClient(base_url=env_config["BASE_URL"], token=token_manager.get_valid_token())
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
def get_test_device_code_client(**kwargs) -> AuthenticatedClient:
|
|
255
|
+
"""Convenience method to get a device-code authenticated client for the test environment."""
|
|
256
|
+
return authenticate_with_device_code(environment="test", **kwargs)
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def get_prod_device_code_client(**kwargs) -> AuthenticatedClient:
|
|
260
|
+
"""Convenience method to get a device-code authenticated client for the production environment."""
|
|
261
|
+
return authenticate_with_device_code(environment="prod", **kwargs)
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
def get_service_account_client(
|
|
265
|
+
environment: Literal["test", "prod"] = "test",
|
|
266
|
+
client_id: str | None = None,
|
|
267
|
+
client_secret: str | None = None,
|
|
268
|
+
) -> AuthenticatedClient:
|
|
269
|
+
"""
|
|
270
|
+
Authenticate using a dedicated Keycloak service-account client.
|
|
271
|
+
|
|
272
|
+
This flow is intended for server-to-server automation. The client must be a
|
|
273
|
+
dedicated confidential client created for the requesting integration, not
|
|
274
|
+
the shared interactive `fieldmanager-client`.
|
|
275
|
+
|
|
276
|
+
Args:
|
|
277
|
+
environment: Either "test" or "prod" environment
|
|
278
|
+
client_id: Dedicated Keycloak client ID. Falls back to the
|
|
279
|
+
KEYCLOAK_SERVICE_ACCOUNT_CLIENT_ID environment variable.
|
|
280
|
+
client_secret: Dedicated Keycloak client secret. Falls back to the
|
|
281
|
+
KEYCLOAK_CLIENT_SECRET environment variable.
|
|
282
|
+
|
|
283
|
+
Returns:
|
|
284
|
+
AuthenticatedClient for the requested environment
|
|
285
|
+
|
|
286
|
+
Raises:
|
|
287
|
+
ValueError: If environment is invalid or required parameters are missing
|
|
288
|
+
"""
|
|
289
|
+
if environment not in ENVIRONMENTS:
|
|
290
|
+
raise ValueError(f"Environment must be one of: {list(ENVIRONMENTS.keys())}")
|
|
291
|
+
|
|
292
|
+
env_config = ENVIRONMENTS[environment]
|
|
293
|
+
resolved_client_id = client_id or os.getenv("KEYCLOAK_SERVICE_ACCOUNT_CLIENT_ID")
|
|
294
|
+
resolved_client_secret = client_secret or os.getenv("KEYCLOAK_CLIENT_SECRET")
|
|
295
|
+
|
|
296
|
+
if not resolved_client_id:
|
|
297
|
+
raise ValueError(
|
|
298
|
+
"A dedicated service-account client ID is required. Pass client_id or set "
|
|
299
|
+
"KEYCLOAK_SERVICE_ACCOUNT_CLIENT_ID."
|
|
300
|
+
)
|
|
301
|
+
if resolved_client_id == env_config["KEYCLOAK_DEVICE_CLIENT_ID"]:
|
|
302
|
+
raise ValueError(
|
|
303
|
+
"Service-account authentication requires a dedicated client ID, "
|
|
304
|
+
f"not the shared device-code client {env_config['KEYCLOAK_DEVICE_CLIENT_ID']!r}."
|
|
305
|
+
)
|
|
306
|
+
if not resolved_client_secret:
|
|
307
|
+
raise ValueError(
|
|
308
|
+
"A dedicated service-account client secret is required. Pass client_secret or set KEYCLOAK_CLIENT_SECRET."
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
keycloak_openid = KeycloakOpenID(
|
|
312
|
+
server_url=env_config["KEYCLOAK_SERVER_URL"],
|
|
313
|
+
client_id=resolved_client_id,
|
|
314
|
+
realm_name=env_config["KEYCLOAK_REALM"],
|
|
315
|
+
client_secret_key=resolved_client_secret,
|
|
316
|
+
)
|
|
317
|
+
token = keycloak_openid.token(grant_type="client_credentials")
|
|
318
|
+
return AuthenticatedClient(base_url=env_config["BASE_URL"], token=token["access_token"])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "field-manager-python-client"
|
|
3
|
-
version = "4.7.
|
|
3
|
+
version = "4.7.16"
|
|
4
4
|
description = "A client library for accessing Field Manager Data API"
|
|
5
5
|
authors = ["Jiyang Ye <jiyang.ye@ngi.no>"]
|
|
6
6
|
maintainers = ["Jiyang Ye <jiyang.ye@ngi.no>", "Jostein Leira <jostein.leira@ngi.no>"]
|
|
@@ -12,13 +12,20 @@ include = ["CHANGELOG.md", "field_manager_python_client/py.typed"]
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
[tool.poetry.dependencies]
|
|
15
|
-
python = "^3.
|
|
15
|
+
python = "^3.11"
|
|
16
16
|
httpx = ">=0.23.0,<0.29.0"
|
|
17
17
|
attrs = ">=22.2.0"
|
|
18
18
|
python-dateutil = "^2.8.0"
|
|
19
19
|
python-keycloak = "^5.5.0"
|
|
20
20
|
python-dotenv = "^1.0.1"
|
|
21
21
|
|
|
22
|
+
[tool.poetry.group.examples]
|
|
23
|
+
optional = true
|
|
24
|
+
|
|
25
|
+
[tool.poetry.group.examples.dependencies]
|
|
26
|
+
pandas = "^3.0.5"
|
|
27
|
+
openpyxl = "^3.1.5"
|
|
28
|
+
|
|
22
29
|
[build-system]
|
|
23
30
|
requires = ["poetry-core>=1.0.0"]
|
|
24
31
|
build-backend = "poetry.core.masonry.api"
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"""A client library for accessing Field Manager Data API"""
|
|
2
|
-
|
|
3
|
-
from .auth import TokenManager, authenticate, get_prod_client, get_service_account_client, get_test_client
|
|
4
|
-
from .client import AuthenticatedClient, Client
|
|
5
|
-
|
|
6
|
-
__all__ = (
|
|
7
|
-
"AuthenticatedClient",
|
|
8
|
-
"Client",
|
|
9
|
-
"authenticate",
|
|
10
|
-
"get_test_client",
|
|
11
|
-
"get_prod_client",
|
|
12
|
-
"get_service_account_client",
|
|
13
|
-
"TokenManager",
|
|
14
|
-
)
|