field-manager-python-client 4.6.25__tar.gz → 4.6.25.post1__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.6.25 → field_manager_python_client-4.6.25.post1}/PKG-INFO +1 -1
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/__init__.py +5 -0
- field_manager_python_client-4.6.25.post1/field_manager_python_client/auth.py +339 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/pyproject.toml +1 -1
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/README.md +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/comments/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/comments/get_comments_projects_project_id_locations_location_id_comments_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/comments/submit_comment_projects_project_id_locations_location_id_comments_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/cross_sections/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/cross_sections/create_cross_section_projects_project_id_cross_sections_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/cross_sections/delete_cross_sections_projects_project_id_cross_sections_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/export/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/export/export_files_projects_project_id_export_files_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/export/export_projects_project_id_export_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/files/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/files/change_file_metadata_projects_project_id_files_file_id_put.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/files/download_file_projects_project_id_files_file_id_download_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/files/download_file_via_token_download_projects_project_id_file_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/files/download_file_with_temporary_project_token_download_projects_project_id_file_file_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/files/file_token_projects_project_id_files_file_id_token_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/files/parse_project_file_projects_project_id_files_file_id_parse_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/files/project_token_projects_project_id_token_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/gis/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/gis/get_locations_in_project_projects_project_id_gis_onshore_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/location_types/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/location_types/get_location_iogp_types_location_iogp_types_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/locations/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/locations/add_location_to_project_projects_project_id_locations_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/locations/delete_locations_in_project_projects_project_id_locations_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/locations/export_projects_project_id_locations_location_id_export_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/locations/get_locations_in_project_projects_project_id_locations_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/locations/queue_locations_to_project_projects_project_id_locations_queue_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/locations/update_locations_in_project_projects_project_id_locations_put.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/locations/upload_locations_to_project_projects_project_id_locations_upload_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/map_layouts/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/method_types/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/method_types/get_method_type_method_types_method_type_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/method_types/get_method_types_method_types_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/methods/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/add_organization_organizations_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/delete_file_organizations_organization_id_files_file_id_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/download_file_organizations_organization_id_files_file_id_download_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/get_files_in_organization_organizations_organization_id_files_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/get_organization_organizations_organization_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/get_organization_projects_organizations_organization_id_projects_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/get_organization_users_organizations_organization_id_users_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/get_organizations_organizations_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/update_organization_organizations_organization_id_put.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/organizations/upload_file_to_organization_organizations_organization_id_upload_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/piezometers/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/piezometers/create_piezometer_model_projects_project_id_piezometers_models_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/piezometers/get_piezometer_models_projects_project_id_piezometers_models_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/piezometers/get_piezometer_units_piezometers_units_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/piezometers/get_piezometer_vendors_projects_project_id_piezometers_vendors_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/plots/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/plots/get_plot_from_sequence_plots_project_project_id_format_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/add_project_projects_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/delete_file_projects_project_id_files_file_id_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/delete_files_projects_project_id_files_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/delete_project_favorite_projects_project_id_favorite_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/delete_project_projects_project_id_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/delete_projects_projects_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/download_logo_projects_project_id_logo_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/get_files_in_project_projects_project_id_files_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/get_linked_projects_projects_project_id_linked_projects_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/get_project_projects_project_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/get_project_summary_projects_project_id_summary_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/get_project_users_projects_project_id_users_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/get_projects_projects_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/search_projects_projects_search_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/update_project_favorite_projects_project_id_favorite_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/update_project_favorite_projects_project_id_favorite_put.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/update_project_projects_project_id_put.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/projects/upload_file_to_project_projects_project_id_upload_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/public/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/public/get_organization_by_email_address_public_organizations_email_address_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/public/get_organization_information_public_organizations_organization_id_information_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sample_containers/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sample_containers/get_sample_containers_sample_containers_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sample_materials/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sample_materials/get_sample_material_sample_materials_sample_material_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sample_materials/get_sample_materials_sample_materials_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sampler_types/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sampler_types/get_sampler_type_sampler_types_sampler_type_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sampler_types/get_sampler_types_sampler_types_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sampling_techniques/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sampling_techniques/get_sampling_technique_sampling_techniques_sampling_technique_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/sampling_techniques/get_sampling_techniques_sampling_techniques_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/standards/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/standards/get_project_standards_standards_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/standards/get_standard_standards_standard_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/trackers/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/trackers/tracker_upload_trackers_upload_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/users/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/users/add_user_role_users_user_id_roles_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/users/add_user_users_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/users/get_user_users_user_id_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/users/get_users_users_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/users/remove_user_role_users_user_id_roles_delete.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/version/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/version/get_version_version_get.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/api/web_map_services/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/client.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/errors.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/__init__.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/application_class_enum.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/background_map_layer.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/bedrock_info.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/bedrock_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/body_queue_locations_to_project_projects_project_id_locations_queue_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/body_upload_file_to_organization_organizations_organization_id_upload_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/body_upload_file_to_project_projects_project_id_upload_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/body_upload_locations_to_project_projects_project_id_locations_upload_post.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/color_mode.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/comment.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/comment_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/comment_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/cpt_options.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/cross_section.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/cross_section_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/cross_section_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/date_format.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/dp_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/export.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/export_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/file.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/file_extended.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/file_extension.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/file_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/file_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/fm_plot_options.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/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.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/height_reference.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/http_validation_error.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/image_size.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/iogp_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/iogp_type_enum.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/language.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/like.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/linked_project_info.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location_coordinates.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location_gis.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location_info.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location_min.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location_summary.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/location_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/map_layout.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/map_layout_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/map_layout_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/map_layout_version.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/map_layout_version_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/map_layout_version_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/map_scale.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ad.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ad_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ad_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cd.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cd_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cd_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cpt.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cpt_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cpt_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cpt_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cpt_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_cpt_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_def.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_def_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_def_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dp.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dp_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dp_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dp_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dp_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dt.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dt_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dt_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dt_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dt_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_dt_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_esa.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_esa_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_esa_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_export_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_inc.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_inc_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_inc_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_info.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_iw.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_iw_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_iw_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_min.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_other.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_other_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_other_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pt.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pt_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pt_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pz.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pz_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pz_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pz_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pz_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_pz_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rcd.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rcd_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rcd_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rcd_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rcd_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rcd_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ro.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ro_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ro_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rp.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rp_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rp_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rp_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rp_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rp_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rs.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rs_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rs_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rws.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rws_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_rws_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_sa.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_sa_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_sa_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_slb.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_slb_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_slb_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_spt.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_spt_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_spt_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_srs.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_srs_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_srs_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_srs_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_srs_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_srs_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ss.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ss_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ss_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ss_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ss_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_ss_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_status_enum.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_sti.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_sti_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_sti_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_summary.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_svt.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_svt_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_svt_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_svt_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_svt_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_svt_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tot.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tot_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tot_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tot_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tot_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tot_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tp.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tp_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tp_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tr.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tr_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tr_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tr_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tr_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_tr_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_type_enum.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_type_enum_str.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_wst.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_wst_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_wst_data.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_wst_data_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_wst_data_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/method_wst_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/operation.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/options.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/organization.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/organization_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/organization_information.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/organization_min.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/organization_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/orientation.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/page_number_prefix_by_method.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/page_number_start_per_method.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/paper_size.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/pdf_options.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/pdf_options_date_format.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/pdf_options_lang.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/pdf_options_paper_size.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/pdf_options_sort_figures_by.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/pdf_page_info.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/piezometer_model.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/piezometer_model_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/piezometer_model_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/piezometer_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/piezometer_vendor.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/pizeometer_units.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/plot_data_stats.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/plot_data_stats_percentiles.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/plot_format.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/plot_info_object.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/plot_info_object_stats_type_0.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/plot_sequence.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/plot_sequence_options.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/plot_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/project.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/project_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/project_info.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/project_search.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/project_summary.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/project_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/reading_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/role.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/role_entity_enum.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/role_enum.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/sample_container_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/sample_material.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/sampler_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/sampling_technique.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/scales.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/scaling_mode.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/sounding_class.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/standard.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/standard_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/transformation_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/user.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/validation_error.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/web_map_service.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/web_map_service_create.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/web_map_service_level.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/web_map_service_type.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/models/web_map_service_update.py +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/py.typed +0 -0
- {field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/field_manager_python_client/types.py +0 -0
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"""A client library for accessing Field Manager Data API"""
|
|
2
2
|
|
|
3
|
+
from .auth import TokenManager, authenticate, get_prod_client, get_test_client
|
|
3
4
|
from .client import AuthenticatedClient, Client
|
|
4
5
|
|
|
5
6
|
__all__ = (
|
|
6
7
|
"AuthenticatedClient",
|
|
7
8
|
"Client",
|
|
9
|
+
"authenticate",
|
|
10
|
+
"get_test_client",
|
|
11
|
+
"get_prod_client",
|
|
12
|
+
"TokenManager",
|
|
8
13
|
)
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Authentication module for Field Manager Python Client.
|
|
3
|
+
|
|
4
|
+
This module provides easy authentication with Keycloak for both test and production environments.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import os
|
|
9
|
+
import time
|
|
10
|
+
import webbrowser
|
|
11
|
+
from getpass import getpass
|
|
12
|
+
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
13
|
+
from typing import Any, Dict, Literal, Optional
|
|
14
|
+
from urllib.parse import parse_qs, urlparse
|
|
15
|
+
|
|
16
|
+
try:
|
|
17
|
+
from keycloak import KeycloakOpenID
|
|
18
|
+
except ImportError:
|
|
19
|
+
raise ImportError("python-keycloak is required for authentication. " "Install it with: pip install python-keycloak")
|
|
20
|
+
|
|
21
|
+
from .api.public import (
|
|
22
|
+
get_organization_by_email_address_public_organizations_email_address_get,
|
|
23
|
+
get_organization_information_public_organizations_organization_id_information_get,
|
|
24
|
+
)
|
|
25
|
+
from .client import AuthenticatedClient, Client
|
|
26
|
+
|
|
27
|
+
# Environment configurations
|
|
28
|
+
ENVIRONMENTS = {
|
|
29
|
+
"test": {
|
|
30
|
+
"KEYCLOAK_SERVER_URL": "https://keycloak.test.ngiapi.no/auth/",
|
|
31
|
+
"KEYCLOAK_REALM": "tenant-geohub-public",
|
|
32
|
+
"KEYCLOAK_CLIENT_ID": "fieldmanager-client",
|
|
33
|
+
"BASE_URL": "https://app.test.fieldmanager.io/api/location",
|
|
34
|
+
},
|
|
35
|
+
"prod": {
|
|
36
|
+
"KEYCLOAK_SERVER_URL": "https://keycloak.ngiapi.no/auth/",
|
|
37
|
+
"KEYCLOAK_REALM": "tenant-geohub-public",
|
|
38
|
+
"KEYCLOAK_CLIENT_ID": "fieldmanager-client",
|
|
39
|
+
"BASE_URL": "https://app.fieldmanager.io/api/location",
|
|
40
|
+
},
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
DEFAULT_SCOPE = "openid"
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class TokenManager:
|
|
47
|
+
"""Manages OAuth2 tokens with automatic refresh capabilities."""
|
|
48
|
+
|
|
49
|
+
def __init__(
|
|
50
|
+
self,
|
|
51
|
+
keycloak_openid: KeycloakOpenID,
|
|
52
|
+
initial_token: Optional[Dict[str, Any]] = None,
|
|
53
|
+
token_file: Optional[str] = None,
|
|
54
|
+
):
|
|
55
|
+
"""
|
|
56
|
+
Initialize the TokenManager.
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
keycloak_openid: The Keycloak OpenID client
|
|
60
|
+
initial_token: Optional initial token data
|
|
61
|
+
token_file: Optional path to token storage file
|
|
62
|
+
"""
|
|
63
|
+
self.keycloak = keycloak_openid
|
|
64
|
+
self.token_file = token_file or "token_store.json"
|
|
65
|
+
|
|
66
|
+
if initial_token:
|
|
67
|
+
self.access_token = initial_token["access_token"]
|
|
68
|
+
self.refresh_token = initial_token["refresh_token"]
|
|
69
|
+
self.expires_at = time.time() + initial_token["expires_in"]
|
|
70
|
+
else:
|
|
71
|
+
self.access_token = None
|
|
72
|
+
self.refresh_token = None
|
|
73
|
+
self.expires_at = 0
|
|
74
|
+
|
|
75
|
+
def save_tokens(self) -> None:
|
|
76
|
+
"""Save tokens to a file."""
|
|
77
|
+
try:
|
|
78
|
+
with open(self.token_file, "w") as f:
|
|
79
|
+
json.dump(
|
|
80
|
+
{
|
|
81
|
+
"access_token": self.access_token,
|
|
82
|
+
"refresh_token": self.refresh_token,
|
|
83
|
+
"expires_at": self.expires_at,
|
|
84
|
+
},
|
|
85
|
+
f,
|
|
86
|
+
)
|
|
87
|
+
except Exception as e:
|
|
88
|
+
print(f"Unable to save tokens. Error: {e}")
|
|
89
|
+
|
|
90
|
+
def load_tokens(self) -> None:
|
|
91
|
+
"""Load tokens from a file if it exists."""
|
|
92
|
+
if os.path.exists(self.token_file):
|
|
93
|
+
try:
|
|
94
|
+
with open(self.token_file) as f:
|
|
95
|
+
data = json.load(f)
|
|
96
|
+
self.access_token = data.get("access_token")
|
|
97
|
+
self.refresh_token = data.get("refresh_token")
|
|
98
|
+
self.expires_at = data.get("expires_at", 0)
|
|
99
|
+
except Exception as e:
|
|
100
|
+
print(f"Unable to load tokens. Error: {e}")
|
|
101
|
+
|
|
102
|
+
def is_access_token_valid(self) -> bool:
|
|
103
|
+
"""Check if the access token is still valid (with 60-second buffer)."""
|
|
104
|
+
return time.time() < self.expires_at - 60
|
|
105
|
+
|
|
106
|
+
def refresh_access_token(self) -> bool:
|
|
107
|
+
"""Attempt to refresh the token using the refresh token."""
|
|
108
|
+
if not self.refresh_token:
|
|
109
|
+
return False
|
|
110
|
+
try:
|
|
111
|
+
new_token = self.keycloak.refresh_token(self.refresh_token)
|
|
112
|
+
self.access_token = new_token["access_token"]
|
|
113
|
+
self.refresh_token = new_token.get("refresh_token", self.refresh_token)
|
|
114
|
+
self.expires_at = time.time() + new_token["expires_in"]
|
|
115
|
+
self.save_tokens()
|
|
116
|
+
return True
|
|
117
|
+
except Exception as e:
|
|
118
|
+
print(f"Failed to refresh access token. Error: {e}")
|
|
119
|
+
return False
|
|
120
|
+
|
|
121
|
+
def get_valid_token(self) -> Optional[str]:
|
|
122
|
+
"""Return a valid access token, refreshing if necessary."""
|
|
123
|
+
if self.is_access_token_valid():
|
|
124
|
+
return self.access_token
|
|
125
|
+
elif self.refresh_access_token():
|
|
126
|
+
return self.access_token
|
|
127
|
+
else:
|
|
128
|
+
return None
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
class AuthCodeHandler(BaseHTTPRequestHandler):
|
|
132
|
+
"""HTTP request handler for OAuth2 authorization code flow."""
|
|
133
|
+
|
|
134
|
+
def do_GET(self):
|
|
135
|
+
query = parse_qs(urlparse(self.path).query)
|
|
136
|
+
self.server.auth_code = query.get("code", [None])[0]
|
|
137
|
+
self.send_response(200)
|
|
138
|
+
self.end_headers()
|
|
139
|
+
self.wfile.write(b"Authorization code received. You may close this window.")
|
|
140
|
+
|
|
141
|
+
def log_message(self, format, *args):
|
|
142
|
+
# Suppress log messages
|
|
143
|
+
pass
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def _start_local_server() -> Optional[str]:
|
|
147
|
+
"""Start a local server to capture the authorization code."""
|
|
148
|
+
server = HTTPServer(("localhost", 8000), AuthCodeHandler)
|
|
149
|
+
print("Waiting for authorization code...")
|
|
150
|
+
server.handle_request()
|
|
151
|
+
return getattr(server, "auth_code", None)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def _get_auth_method(email: str, base_url: str) -> Dict[str, Any]:
|
|
155
|
+
"""
|
|
156
|
+
Determine if organization uses SSO or password-based auth.
|
|
157
|
+
|
|
158
|
+
Args:
|
|
159
|
+
email: User's email address
|
|
160
|
+
base_url: Base URL for the API
|
|
161
|
+
|
|
162
|
+
Returns:
|
|
163
|
+
Dictionary with auth_method and authentication_alias
|
|
164
|
+
"""
|
|
165
|
+
try:
|
|
166
|
+
public_client = Client(base_url=base_url)
|
|
167
|
+
|
|
168
|
+
organization = get_organization_by_email_address_public_organizations_email_address_get.sync(
|
|
169
|
+
client=public_client, email_address=email
|
|
170
|
+
)
|
|
171
|
+
org_id = organization.organization_id
|
|
172
|
+
|
|
173
|
+
org_info = get_organization_information_public_organizations_organization_id_information_get.sync(
|
|
174
|
+
client=public_client, organization_id=org_id
|
|
175
|
+
)
|
|
176
|
+
authentication_alias = org_info.authentication_alias
|
|
177
|
+
auth_method = "sso" if authentication_alias else "password"
|
|
178
|
+
return {
|
|
179
|
+
"auth_method": auth_method,
|
|
180
|
+
"authentication_alias": authentication_alias,
|
|
181
|
+
}
|
|
182
|
+
except Exception as e:
|
|
183
|
+
print(f"Unable to fetch org info. Defaulting to password. Error: {e}")
|
|
184
|
+
return {"auth_method": "password", "authentication_alias": None}
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def _authenticate_with_sso(
|
|
188
|
+
keycloak_openid: KeycloakOpenID, authentication_alias: Optional[str], scope: str = DEFAULT_SCOPE
|
|
189
|
+
) -> TokenManager:
|
|
190
|
+
"""Authenticate using SSO (Authorization Code Flow)."""
|
|
191
|
+
redirect_uri = "http://localhost:8000"
|
|
192
|
+
auth_url = keycloak_openid.auth_url(
|
|
193
|
+
redirect_uri=redirect_uri,
|
|
194
|
+
scope=scope,
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
# If there's an external IdP alias
|
|
198
|
+
if authentication_alias:
|
|
199
|
+
auth_url += f"&kc_idp_hint={authentication_alias}"
|
|
200
|
+
|
|
201
|
+
print("Please log in through your browser.")
|
|
202
|
+
print(f"Opening browser at: {auth_url}")
|
|
203
|
+
webbrowser.open_new(auth_url)
|
|
204
|
+
|
|
205
|
+
code = _start_local_server()
|
|
206
|
+
if not code:
|
|
207
|
+
raise RuntimeError("Failed to obtain authorization code.")
|
|
208
|
+
|
|
209
|
+
# Exchange the auth code for tokens
|
|
210
|
+
token = keycloak_openid.token(
|
|
211
|
+
grant_type="authorization_code",
|
|
212
|
+
code=code,
|
|
213
|
+
redirect_uri=redirect_uri,
|
|
214
|
+
scope=scope,
|
|
215
|
+
)
|
|
216
|
+
return TokenManager(keycloak_openid, token)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def _authenticate_with_password(
|
|
220
|
+
keycloak_openid: KeycloakOpenID, email: str, scope: str = DEFAULT_SCOPE
|
|
221
|
+
) -> TokenManager:
|
|
222
|
+
"""Authenticate using password (Resource Owner Password Grant)."""
|
|
223
|
+
password = getpass("Enter Password: ")
|
|
224
|
+
|
|
225
|
+
token = keycloak_openid.token(
|
|
226
|
+
username=email,
|
|
227
|
+
password=password,
|
|
228
|
+
scope=scope,
|
|
229
|
+
)
|
|
230
|
+
return TokenManager(keycloak_openid, token)
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def authenticate(
|
|
234
|
+
environment: Literal["test", "prod"] = "test",
|
|
235
|
+
email: Optional[str] = None,
|
|
236
|
+
scope: str = DEFAULT_SCOPE,
|
|
237
|
+
token_file: Optional[str] = None,
|
|
238
|
+
interactive: bool = True,
|
|
239
|
+
) -> AuthenticatedClient:
|
|
240
|
+
"""
|
|
241
|
+
Authenticate with Field Manager and return an AuthenticatedClient.
|
|
242
|
+
|
|
243
|
+
Args:
|
|
244
|
+
environment: Either "test" or "prod" environment
|
|
245
|
+
email: User's email address (will prompt if not provided and interactive=True)
|
|
246
|
+
scope: OAuth2 scope (default: "openid")
|
|
247
|
+
token_file: Path to token storage file (default: "token_store.json")
|
|
248
|
+
interactive: Whether to allow interactive prompts (default: True)
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
AuthenticatedClient instance ready to use
|
|
252
|
+
|
|
253
|
+
Raises:
|
|
254
|
+
ValueError: If environment is invalid or required parameters are missing
|
|
255
|
+
RuntimeError: If authentication fails
|
|
256
|
+
|
|
257
|
+
Example:
|
|
258
|
+
>>> client = authenticate(environment="test", email="user@example.com")
|
|
259
|
+
>>> # Use client for API calls
|
|
260
|
+
"""
|
|
261
|
+
if environment not in ENVIRONMENTS:
|
|
262
|
+
raise ValueError(f"Environment must be one of: {list(ENVIRONMENTS.keys())}")
|
|
263
|
+
|
|
264
|
+
env_config = ENVIRONMENTS[environment]
|
|
265
|
+
|
|
266
|
+
# Initialize Keycloak client
|
|
267
|
+
keycloak_openid = KeycloakOpenID(
|
|
268
|
+
server_url=env_config["KEYCLOAK_SERVER_URL"],
|
|
269
|
+
client_id=env_config["KEYCLOAK_CLIENT_ID"],
|
|
270
|
+
realm_name=env_config["KEYCLOAK_REALM"],
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
# Initialize TokenManager
|
|
274
|
+
token_manager = TokenManager(keycloak_openid, token_file=token_file)
|
|
275
|
+
token_manager.load_tokens()
|
|
276
|
+
|
|
277
|
+
# Check if cached tokens are still valid
|
|
278
|
+
valid_token = token_manager.get_valid_token()
|
|
279
|
+
if valid_token:
|
|
280
|
+
print("Using cached tokens.")
|
|
281
|
+
return AuthenticatedClient(base_url=env_config["BASE_URL"], token=valid_token)
|
|
282
|
+
|
|
283
|
+
# No valid cached token, proceed with authentication
|
|
284
|
+
if not email:
|
|
285
|
+
if not interactive:
|
|
286
|
+
raise ValueError("Email is required when interactive=False")
|
|
287
|
+
email = input("Enter your email address: ").strip()
|
|
288
|
+
|
|
289
|
+
if not email:
|
|
290
|
+
raise ValueError("Email address is required")
|
|
291
|
+
|
|
292
|
+
print(f"Using email: {email}")
|
|
293
|
+
|
|
294
|
+
# Determine organization auth method
|
|
295
|
+
auth_info = _get_auth_method(email, env_config["BASE_URL"])
|
|
296
|
+
auth_method = auth_info["auth_method"]
|
|
297
|
+
authentication_alias = auth_info.get("authentication_alias")
|
|
298
|
+
|
|
299
|
+
# Run the appropriate authentication flow
|
|
300
|
+
if auth_method == "sso":
|
|
301
|
+
token_manager = _authenticate_with_sso(keycloak_openid, authentication_alias, scope)
|
|
302
|
+
elif auth_method == "password":
|
|
303
|
+
token_manager = _authenticate_with_password(keycloak_openid, email, scope)
|
|
304
|
+
else:
|
|
305
|
+
raise ValueError("Cannot determine auth method for this organization.")
|
|
306
|
+
|
|
307
|
+
# Save tokens & return an AuthenticatedClient
|
|
308
|
+
token_manager.save_tokens()
|
|
309
|
+
client = AuthenticatedClient(base_url=env_config["BASE_URL"], token=token_manager.get_valid_token())
|
|
310
|
+
print("Authentication successful. Client is ready to use.")
|
|
311
|
+
return client
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
def get_test_client(email: Optional[str] = None, **kwargs) -> AuthenticatedClient:
|
|
315
|
+
"""
|
|
316
|
+
Convenient method to get an authenticated client for the test environment.
|
|
317
|
+
|
|
318
|
+
Args:
|
|
319
|
+
email: User's email address
|
|
320
|
+
**kwargs: Additional arguments passed to authenticate()
|
|
321
|
+
|
|
322
|
+
Returns:
|
|
323
|
+
AuthenticatedClient for test environment
|
|
324
|
+
"""
|
|
325
|
+
return authenticate(environment="test", email=email, **kwargs)
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
def get_prod_client(email: Optional[str] = None, **kwargs) -> AuthenticatedClient:
|
|
329
|
+
"""
|
|
330
|
+
Convenient method to get an authenticated client for the production environment.
|
|
331
|
+
|
|
332
|
+
Args:
|
|
333
|
+
email: User's email address
|
|
334
|
+
**kwargs: Additional arguments passed to authenticate()
|
|
335
|
+
|
|
336
|
+
Returns:
|
|
337
|
+
AuthenticatedClient for production environment
|
|
338
|
+
"""
|
|
339
|
+
return authenticate(environment="prod", email=email, **kwargs)
|
{field_manager_python_client-4.6.25 → field_manager_python_client-4.6.25.post1}/pyproject.toml
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "field-manager-python-client"
|
|
3
|
-
version = "4.6.25"
|
|
3
|
+
version = "4.6.25.post1"
|
|
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>"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|