Files.com 1.6.504__tar.gz → 1.6.506__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.
- {files_com-1.6.504/files_com.egg-info → files_com-1.6.506}/PKG-INFO +76 -4
- {files_com-1.6.504 → files_com-1.6.506}/README.md +75 -3
- files_com-1.6.506/_VERSION +1 -0
- {files_com-1.6.504 → files_com-1.6.506/files_com.egg-info}/PKG-INFO +76 -4
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/__init__.py +1 -1
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/user_lifecycle_rule.py +12 -12
- {files_com-1.6.504 → files_com-1.6.506}/pyproject.toml +1 -1
- files_com-1.6.504/_VERSION +0 -1
- {files_com-1.6.504 → files_com-1.6.506}/LICENSE +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_com.egg-info/SOURCES.txt +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_com.egg-info/dependency_links.txt +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_com.egg-info/requires.txt +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_com.egg-info/top_level.txt +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/api.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/api_client.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/error.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/list_obj.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/__init__.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/account_line_item.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/action.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/action_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/action_notification_export.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/action_notification_export_result.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/agent_node.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/agent_node_connection.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/agent_node_instance.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/agent_push_update.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/ai_assistant_personality.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/ai_task.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/api_key.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/api_request_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/app.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/as2_incoming_message.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/as2_outgoing_message.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/as2_partner.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/as2_station.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/auto.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/automation.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/automation_authoring_schema.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/automation_execution_node.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/automation_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/automation_run.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/bandwidth_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/behavior.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/bundle.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/bundle_action.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/bundle_download.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/bundle_notification.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/bundle_path.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/bundle_recipient.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/bundle_registration.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/chat_message.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/chat_session.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/child_site_management_policy.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/clickwrap.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/custom_domain.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/desktop_configuration_profile.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/direct_connection_info.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/dns_record.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/email_incoming_message.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/email_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/errors.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/event_channel.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/event_delivery_attempt.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/event_record.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/event_subscription.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/event_target.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/exavault_api_request_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/expectation.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/expectation_evaluation.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/expectation_incident.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/external_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/file.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/file_action.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/file_comment.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/file_comment_reaction.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/file_migration.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/file_migration_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/file_upload_part.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/folder.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/form_field.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/form_field_set.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/ftp_action_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/gpg_key.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/group.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/group_user.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/history.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/history_export.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/history_export_result.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/holiday_calendar.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/holiday_region.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/image.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/inbound_s3_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/inbox_recipient.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/inbox_registration.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/inbox_upload.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/integration_centric_profile.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/invoice.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/invoice_line_item.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/ip_address.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/key_lifecycle_rule.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/lock.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/metadata_category.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/notification.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/outbound_connection_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/partner.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/partner_channel.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/partner_channel_template.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/partner_connection.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/partner_site.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/partner_site_request.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/payment.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/payment_line_item.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/pending_work_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/permission.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/preview.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/public_hosting_request_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/public_ip_address.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/public_key.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/remote_bandwidth_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/remote_mount_backend.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/remote_server.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/remote_server_configuration_file.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/remote_server_credential.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/request.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/restore.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/schedule.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/scheduled_export.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/scim_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/secret.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/session.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/settings_change.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/sftp_action_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/sftp_host_key.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/share_group.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/share_group_member.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/siem_http_destination.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/siem_http_destination_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/site.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/site_subdomain_redirect.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/sso_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/sso_strategy.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/status.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/style.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/sync.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/sync_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/sync_run.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/sync_run_live_transfer.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/usage_by_top_level_dir.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/usage_daily_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/usage_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/user.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/user_additional_email_recipient.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/user_cipher_use.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/user_request.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/user_security_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/user_sftp_client_use.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/web_dav_action_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/webhook_test.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/workspace.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/zip_list_entry.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/path_comparison.json +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/path_util.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/files_sdk/util.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/setup.cfg +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_account_line_item.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_action.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_action_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_action_notification_export.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_action_notification_export_result.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_agent_node.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_agent_node_connection.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_agent_node_instance.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_agent_push_update.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_ai_assistant_personality.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_ai_task.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_api_errors.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_api_key.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_api_request_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_app.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_as2_incoming_message.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_as2_outgoing_message.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_as2_partner.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_as2_station.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_auto.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_automation.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_automation_authoring_schema.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_automation_execution_node.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_automation_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_automation_run.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_bandwidth_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_behavior.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_bundle.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_bundle_action.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_bundle_download.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_bundle_notification.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_bundle_path.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_bundle_recipient.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_bundle_registration.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_chat_message.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_chat_session.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_child_site_management_policy.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_clickwrap.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_connection_adapter.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_custom_domain.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_decimal_contract.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_desktop_configuration_profile.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_direct_connection_info.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_dns_record.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_email_incoming_message.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_email_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_errors.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_event_channel.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_event_delivery_attempt.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_event_record.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_event_subscription.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_event_target.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_exavault_api_request_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_expectation.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_expectation_evaluation.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_expectation_incident.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_external_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_action.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_comment.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_comment_reaction.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_download_default_path.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_migration.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_migration_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_underscore_destinations.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_upload.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_file_upload_part.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_folder.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_form_field.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_form_field_set.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_ftp_action_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_gpg_key.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_group.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_group_user.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_history.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_history_export.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_history_export_result.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_holiday_calendar.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_holiday_region.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_image.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_inbound_s3_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_inbox_recipient.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_inbox_registration.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_inbox_upload.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_integration_centric_profile.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_invoice.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_invoice_line_item.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_ip_address.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_key_lifecycle_rule.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_lock.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_metadata_category.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_notification.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_outbound_connection_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_partner.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_partner_channel.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_partner_channel_template.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_partner_connection.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_partner_site.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_partner_site_request.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_path_parameter_encoding.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_path_util.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_payment.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_payment_line_item.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_pending_work_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_permission.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_preview.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_public_hosting_request_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_public_ip_address.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_public_key.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_redirect_auth.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_remote_bandwidth_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_remote_mount_backend.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_remote_server.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_remote_server_configuration_file.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_remote_server_credential.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_request.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_restore.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_schedule.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_scheduled_export.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_scim_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_secret.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_session.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_settings_change.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_sftp_action_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_sftp_host_key.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_share_group.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_share_group_member.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_siem_http_destination.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_siem_http_destination_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_site.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_site_subdomain_redirect.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_sso_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_sso_strategy.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_status.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_stream_download.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_style.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_sync.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_sync_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_sync_run.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_sync_run_live_transfer.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_transfer_privacy.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_usage_by_top_level_dir.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_usage_daily_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_usage_snapshot.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_user.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_user_additional_email_recipient.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_user_cipher_use.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_user_lifecycle_rule.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_user_request.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_user_security_event.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_user_sftp_client_use.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_web_dav_action_log.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_webhook_test.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_workspace.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_workspace_id.py +0 -0
- {files_com-1.6.504 → files_com-1.6.506}/tests/test_zip_list_entry.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: files_com
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.506
|
|
4
4
|
Summary: Python bindings for the Files.com API
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.5
|
|
@@ -446,13 +446,40 @@ Trailing whitespace is significant for comparison. `report.txt` and `report.txt
|
|
|
446
446
|
|
|
447
447
|
## Workspaces
|
|
448
448
|
|
|
449
|
-
A Workspace
|
|
449
|
+
A Workspace groups files, users, groups, Partners, integrations, and workflows within a Files.com Site. An integration can provision a Workspace for a department or project and delegate its operation to a team without making that team Site Administrators. Every Site has a Default Workspace, with ID `0`; additional Workspaces have their own IDs and root folders.
|
|
450
450
|
|
|
451
|
-
|
|
451
|
+
Account membership, request context, and permission grants serve different purposes. Creating an account in a Workspace determines where it belongs. Selecting a Workspace determines which resources a request operates on. A permission grant determines what the caller can do there. Selecting a Workspace never grants access to it.
|
|
452
452
|
|
|
453
|
-
|
|
453
|
+
### Accounts and Administrative Access
|
|
454
|
+
|
|
455
|
+
A user's or group's `workspace_id` identifies the Workspace the account belongs to. Accounts belonging to a Custom Workspace stay within it. Default Workspace users and groups can receive permissions in one or more Custom Workspaces while keeping their existing accounts in Workspace `0`.
|
|
456
|
+
|
|
457
|
+
| Account | Workspace Administrator assignment | Scope |
|
|
458
|
+
| --- | --- | --- |
|
|
459
|
+
| User belonging to a Custom Workspace | Set the user's `workspace_admin` to `true`. | That user's own Custom Workspace. |
|
|
460
|
+
| Default Workspace user | Create an `admin` Permission for the user on a Custom Workspace's root folder. | Each Custom Workspace with a root grant. |
|
|
461
|
+
| Default Workspace group | Create an `admin` Permission for the group on a Custom Workspace's root folder. | Every member inherits administration of each Workspace with a root grant. |
|
|
462
|
+
|
|
463
|
+
`workspace_admin` is not a summary of a user's effective administrative access. A Default Workspace user can administer a Custom Workspace through a direct or group root grant while their `workspace_admin` remains `false`. Groups have no `workspace_admin` field. See [Users](/python/resources/user-accounts/users) and [Groups](/python/resources/user-accounts/groups) for account fields.
|
|
464
|
+
|
|
465
|
+
An `admin` grant on the **Custom Workspace root** provides full Workspace Administrator authority over its files, users, groups, Partners, workflows, and integrations. An `admin` grant on a subfolder provides Folder Admin authority over that folder and its descendants; it does not provide Workspace administration. Other permission levels provide their corresponding folder access without Workspace administration. [Permissions](/python/resources/user-accounts/permissions) defines the levels.
|
|
466
|
+
|
|
467
|
+
Site Administrators manage cross-Workspace assignments to Default Workspace accounts. Workspace Administrators manage accounts and permissions within their own scope. Site Administrators retain access to every Workspace; adding a Workspace grant does not narrow Site Administrator authority. The [product documentation](https://www.files.com/docs/workspaces/workspace-administrators) explains the role's operational scope and site-wide controls.
|
|
468
|
+
|
|
469
|
+
### Request Context and API Keys
|
|
470
|
+
|
|
471
|
+
The REST header `X-Files-Workspace-Id` selects a Workspace for a request. SDK request options and CLI configuration send that same selection. Workspace-scoped resources are listed, created, and changed within the selected context, and ordinary paths are relative to its root.
|
|
472
|
+
|
|
473
|
+
A resource's `workspace_id` request field describes the resource's Workspace membership. It is separate from the SDK's Workspace request option or REST header. Creating a Workspace-scoped resource in a Custom Workspace defaults its `workspace_id` to the selected Workspace; a mismatching membership value is rejected with `not-authorized/insufficient-permission-for-params`.
|
|
474
|
+
|
|
475
|
+
Selecting another Workspace with an API key requires a **Full Access key created in the Default Workspace**. A user key follows that user's current access, including group permissions. A site-wide Full Access key created in the Default Workspace has Site Administrator authority in every Workspace. A Files Only key stays in its creation Workspace, even if its user has cross-Workspace access. Any key created in a Custom Workspace stays within that Workspace. Selecting another context with these confined keys is rejected with `bad-request/invalid-workspace-id-header`.
|
|
476
|
+
|
|
477
|
+
An account belonging to a Custom Workspace is scoped there when it authenticates normally. For a Default Workspace user, explicitly select the intended Workspace for an integration rather than relying on an interactive login preference. [API Keys](/python/resources/developers/api-keys) and [Authentication](/python/overview/authentication) cover credentials.
|
|
454
478
|
|
|
455
479
|
The Files.com Python SDK supports workspace scoping by using the `files_sdk.set_workspace_id` configuration method. Scope a single request by passing `workspace_id` in the request options.
|
|
480
|
+
|
|
481
|
+
The adjacent scoping example uses a credential authorized for the selected Workspace. A group member uses their own Full Access user key from the Default Workspace; the Site Administrator credential used to assign the grant is not needed for their day-to-day work.
|
|
482
|
+
|
|
456
483
|
```python title="Example Request"
|
|
457
484
|
import files_sdk
|
|
458
485
|
|
|
@@ -461,6 +488,51 @@ files_sdk.set_workspace_id(123)
|
|
|
461
488
|
files_sdk.folder.list_for("", {}, {"workspace_id": 456})
|
|
462
489
|
```
|
|
463
490
|
|
|
491
|
+
### Delegating a Workspace to an Existing Group
|
|
492
|
+
|
|
493
|
+
An operations team already represented by a Default Workspace group can administer a Custom Workspace through one root Permission. The group and its members stay in the Default Workspace, so the same team can receive different access in other Workspaces.
|
|
494
|
+
|
|
495
|
+
First retrieve the target [Workspace](/python/resources/settings/workspaces) and [Group](/python/resources/user-accounts/groups) IDs as a Site Administrator in Workspace `0`. The examples use Workspace `123`, group `456`, and member user `789`; replace them with your own IDs. Confirm that the group belongs to Workspace `0` and that the intended user is a member.
|
|
496
|
+
|
|
497
|
+
Create the Permission using a Default Workspace Full Access site-wide key or a Full Access user key belonging to a Site Administrator. Keep the request context at `0` and use the qualified root path `_/Workspaces/123`. Set `group_id` to the group's ID, `permission` to `admin`, and `recursive` to `true`. Save the returned Permission `id` for later removal. For an individual Default Workspace user, use `user_id` instead of `group_id`.
|
|
498
|
+
|
|
499
|
+
For a Default Workspace group, a Site Administrator can also select Workspace `123` and use an empty `path` to grant access to its root. The qualified path in Workspace `0` works for both Default Workspace users and groups and keeps the account scope and target Workspace explicit. Appending a subfolder to the path would grant Folder Admin access instead of Workspace Administrator authority.
|
|
500
|
+
|
|
501
|
+
After the grant, run the request-context example above with the member's own credential and Workspace `123` selected. That member can work with the Workspace's files and perform Workspace Administrator operations, such as managing its users, Partners, and integrations. A Site Administrator's successful request does not establish that the member has the intended access.
|
|
502
|
+
|
|
503
|
+
```python title="Grant group administration"
|
|
504
|
+
import files_sdk
|
|
505
|
+
|
|
506
|
+
files_sdk.set_workspace_id(0)
|
|
507
|
+
grant = files_sdk.permission.create({
|
|
508
|
+
"path": "_/Workspaces/123",
|
|
509
|
+
"group_id": 456,
|
|
510
|
+
"permission": "admin",
|
|
511
|
+
"recursive": True,
|
|
512
|
+
}, {"workspace_id": 0})
|
|
513
|
+
print(grant.id)
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Permission Inspection and Removal
|
|
517
|
+
|
|
518
|
+
List the member's Permissions with `user_id` and `include_groups=true` to include grants inherited through group membership. Listing only direct user grants can miss the Permission that provides Workspace administration. In Workspace `0`, the Custom Workspace root appears as `_/Workspaces/123`; in Workspace `123`, paths are relative to that root. Inspect the root path and `permission=admin`, rather than treating the user's `workspace_admin` field as their effective role.
|
|
519
|
+
|
|
520
|
+
Permission lists show grants, rather than a single effective-role boolean. Membership in several groups combines their access. A Permission using `group_ids` instead of `group_id` requires membership in all the specified groups; it is not a shorthand for assigning the same grant to several independent groups.
|
|
521
|
+
|
|
522
|
+
Removing a member ends access received through that group. Deleting the root Permission ends the group's Workspace Administrator grant for every member. These changes leave independent direct and other group grants in place, so review all applicable grants when withdrawing access. Default Workspace user API keys follow those permission changes without being recreated.
|
|
523
|
+
|
|
524
|
+
Group membership maintained through SCIM follows the same rule. A Group Admin allowed to add members can give those users the group's existing Workspace Administrator access. Choose who manages the group with that authority in mind.
|
|
525
|
+
|
|
526
|
+
Delete the Permission by its returned `id` as the Site Administrator in Workspace `0`. The removal examples use Permission ID `9001`; replace it with the ID returned by your create request. Permissions are created and deleted, rather than updated in place. If narrower folder access is still needed, assign it explicitly; deleting a broad grant does not restore narrower grants it previously replaced.
|
|
527
|
+
|
|
528
|
+
```python title="Inspect member grants and remove the group grant"
|
|
529
|
+
for item in files_sdk.permission.list(
|
|
530
|
+
{"user_id": "789", "include_groups": True}, {"workspace_id": 0}
|
|
531
|
+
):
|
|
532
|
+
print(item.path, item.permission, item.group_id)
|
|
533
|
+
files_sdk.permission.delete(9001, {}, {"workspace_id": 0})
|
|
534
|
+
```
|
|
535
|
+
|
|
464
536
|
## Foreign Language Support
|
|
465
537
|
|
|
466
538
|
The Files.com Python SDK supports localized responses by using the `files_sdk.set_language` configuration method.
|
|
@@ -434,13 +434,40 @@ Trailing whitespace is significant for comparison. `report.txt` and `report.txt
|
|
|
434
434
|
|
|
435
435
|
## Workspaces
|
|
436
436
|
|
|
437
|
-
A Workspace
|
|
437
|
+
A Workspace groups files, users, groups, Partners, integrations, and workflows within a Files.com Site. An integration can provision a Workspace for a department or project and delegate its operation to a team without making that team Site Administrators. Every Site has a Default Workspace, with ID `0`; additional Workspaces have their own IDs and root folders.
|
|
438
438
|
|
|
439
|
-
|
|
439
|
+
Account membership, request context, and permission grants serve different purposes. Creating an account in a Workspace determines where it belongs. Selecting a Workspace determines which resources a request operates on. A permission grant determines what the caller can do there. Selecting a Workspace never grants access to it.
|
|
440
440
|
|
|
441
|
-
|
|
441
|
+
### Accounts and Administrative Access
|
|
442
|
+
|
|
443
|
+
A user's or group's `workspace_id` identifies the Workspace the account belongs to. Accounts belonging to a Custom Workspace stay within it. Default Workspace users and groups can receive permissions in one or more Custom Workspaces while keeping their existing accounts in Workspace `0`.
|
|
444
|
+
|
|
445
|
+
| Account | Workspace Administrator assignment | Scope |
|
|
446
|
+
| --- | --- | --- |
|
|
447
|
+
| User belonging to a Custom Workspace | Set the user's `workspace_admin` to `true`. | That user's own Custom Workspace. |
|
|
448
|
+
| Default Workspace user | Create an `admin` Permission for the user on a Custom Workspace's root folder. | Each Custom Workspace with a root grant. |
|
|
449
|
+
| Default Workspace group | Create an `admin` Permission for the group on a Custom Workspace's root folder. | Every member inherits administration of each Workspace with a root grant. |
|
|
450
|
+
|
|
451
|
+
`workspace_admin` is not a summary of a user's effective administrative access. A Default Workspace user can administer a Custom Workspace through a direct or group root grant while their `workspace_admin` remains `false`. Groups have no `workspace_admin` field. See [Users](/python/resources/user-accounts/users) and [Groups](/python/resources/user-accounts/groups) for account fields.
|
|
452
|
+
|
|
453
|
+
An `admin` grant on the **Custom Workspace root** provides full Workspace Administrator authority over its files, users, groups, Partners, workflows, and integrations. An `admin` grant on a subfolder provides Folder Admin authority over that folder and its descendants; it does not provide Workspace administration. Other permission levels provide their corresponding folder access without Workspace administration. [Permissions](/python/resources/user-accounts/permissions) defines the levels.
|
|
454
|
+
|
|
455
|
+
Site Administrators manage cross-Workspace assignments to Default Workspace accounts. Workspace Administrators manage accounts and permissions within their own scope. Site Administrators retain access to every Workspace; adding a Workspace grant does not narrow Site Administrator authority. The [product documentation](https://www.files.com/docs/workspaces/workspace-administrators) explains the role's operational scope and site-wide controls.
|
|
456
|
+
|
|
457
|
+
### Request Context and API Keys
|
|
458
|
+
|
|
459
|
+
The REST header `X-Files-Workspace-Id` selects a Workspace for a request. SDK request options and CLI configuration send that same selection. Workspace-scoped resources are listed, created, and changed within the selected context, and ordinary paths are relative to its root.
|
|
460
|
+
|
|
461
|
+
A resource's `workspace_id` request field describes the resource's Workspace membership. It is separate from the SDK's Workspace request option or REST header. Creating a Workspace-scoped resource in a Custom Workspace defaults its `workspace_id` to the selected Workspace; a mismatching membership value is rejected with `not-authorized/insufficient-permission-for-params`.
|
|
462
|
+
|
|
463
|
+
Selecting another Workspace with an API key requires a **Full Access key created in the Default Workspace**. A user key follows that user's current access, including group permissions. A site-wide Full Access key created in the Default Workspace has Site Administrator authority in every Workspace. A Files Only key stays in its creation Workspace, even if its user has cross-Workspace access. Any key created in a Custom Workspace stays within that Workspace. Selecting another context with these confined keys is rejected with `bad-request/invalid-workspace-id-header`.
|
|
464
|
+
|
|
465
|
+
An account belonging to a Custom Workspace is scoped there when it authenticates normally. For a Default Workspace user, explicitly select the intended Workspace for an integration rather than relying on an interactive login preference. [API Keys](/python/resources/developers/api-keys) and [Authentication](/python/overview/authentication) cover credentials.
|
|
442
466
|
|
|
443
467
|
The Files.com Python SDK supports workspace scoping by using the `files_sdk.set_workspace_id` configuration method. Scope a single request by passing `workspace_id` in the request options.
|
|
468
|
+
|
|
469
|
+
The adjacent scoping example uses a credential authorized for the selected Workspace. A group member uses their own Full Access user key from the Default Workspace; the Site Administrator credential used to assign the grant is not needed for their day-to-day work.
|
|
470
|
+
|
|
444
471
|
```python title="Example Request"
|
|
445
472
|
import files_sdk
|
|
446
473
|
|
|
@@ -449,6 +476,51 @@ files_sdk.set_workspace_id(123)
|
|
|
449
476
|
files_sdk.folder.list_for("", {}, {"workspace_id": 456})
|
|
450
477
|
```
|
|
451
478
|
|
|
479
|
+
### Delegating a Workspace to an Existing Group
|
|
480
|
+
|
|
481
|
+
An operations team already represented by a Default Workspace group can administer a Custom Workspace through one root Permission. The group and its members stay in the Default Workspace, so the same team can receive different access in other Workspaces.
|
|
482
|
+
|
|
483
|
+
First retrieve the target [Workspace](/python/resources/settings/workspaces) and [Group](/python/resources/user-accounts/groups) IDs as a Site Administrator in Workspace `0`. The examples use Workspace `123`, group `456`, and member user `789`; replace them with your own IDs. Confirm that the group belongs to Workspace `0` and that the intended user is a member.
|
|
484
|
+
|
|
485
|
+
Create the Permission using a Default Workspace Full Access site-wide key or a Full Access user key belonging to a Site Administrator. Keep the request context at `0` and use the qualified root path `_/Workspaces/123`. Set `group_id` to the group's ID, `permission` to `admin`, and `recursive` to `true`. Save the returned Permission `id` for later removal. For an individual Default Workspace user, use `user_id` instead of `group_id`.
|
|
486
|
+
|
|
487
|
+
For a Default Workspace group, a Site Administrator can also select Workspace `123` and use an empty `path` to grant access to its root. The qualified path in Workspace `0` works for both Default Workspace users and groups and keeps the account scope and target Workspace explicit. Appending a subfolder to the path would grant Folder Admin access instead of Workspace Administrator authority.
|
|
488
|
+
|
|
489
|
+
After the grant, run the request-context example above with the member's own credential and Workspace `123` selected. That member can work with the Workspace's files and perform Workspace Administrator operations, such as managing its users, Partners, and integrations. A Site Administrator's successful request does not establish that the member has the intended access.
|
|
490
|
+
|
|
491
|
+
```python title="Grant group administration"
|
|
492
|
+
import files_sdk
|
|
493
|
+
|
|
494
|
+
files_sdk.set_workspace_id(0)
|
|
495
|
+
grant = files_sdk.permission.create({
|
|
496
|
+
"path": "_/Workspaces/123",
|
|
497
|
+
"group_id": 456,
|
|
498
|
+
"permission": "admin",
|
|
499
|
+
"recursive": True,
|
|
500
|
+
}, {"workspace_id": 0})
|
|
501
|
+
print(grant.id)
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
### Permission Inspection and Removal
|
|
505
|
+
|
|
506
|
+
List the member's Permissions with `user_id` and `include_groups=true` to include grants inherited through group membership. Listing only direct user grants can miss the Permission that provides Workspace administration. In Workspace `0`, the Custom Workspace root appears as `_/Workspaces/123`; in Workspace `123`, paths are relative to that root. Inspect the root path and `permission=admin`, rather than treating the user's `workspace_admin` field as their effective role.
|
|
507
|
+
|
|
508
|
+
Permission lists show grants, rather than a single effective-role boolean. Membership in several groups combines their access. A Permission using `group_ids` instead of `group_id` requires membership in all the specified groups; it is not a shorthand for assigning the same grant to several independent groups.
|
|
509
|
+
|
|
510
|
+
Removing a member ends access received through that group. Deleting the root Permission ends the group's Workspace Administrator grant for every member. These changes leave independent direct and other group grants in place, so review all applicable grants when withdrawing access. Default Workspace user API keys follow those permission changes without being recreated.
|
|
511
|
+
|
|
512
|
+
Group membership maintained through SCIM follows the same rule. A Group Admin allowed to add members can give those users the group's existing Workspace Administrator access. Choose who manages the group with that authority in mind.
|
|
513
|
+
|
|
514
|
+
Delete the Permission by its returned `id` as the Site Administrator in Workspace `0`. The removal examples use Permission ID `9001`; replace it with the ID returned by your create request. Permissions are created and deleted, rather than updated in place. If narrower folder access is still needed, assign it explicitly; deleting a broad grant does not restore narrower grants it previously replaced.
|
|
515
|
+
|
|
516
|
+
```python title="Inspect member grants and remove the group grant"
|
|
517
|
+
for item in files_sdk.permission.list(
|
|
518
|
+
{"user_id": "789", "include_groups": True}, {"workspace_id": 0}
|
|
519
|
+
):
|
|
520
|
+
print(item.path, item.permission, item.group_id)
|
|
521
|
+
files_sdk.permission.delete(9001, {}, {"workspace_id": 0})
|
|
522
|
+
```
|
|
523
|
+
|
|
452
524
|
## Foreign Language Support
|
|
453
525
|
|
|
454
526
|
The Files.com Python SDK supports localized responses by using the `files_sdk.set_language` configuration method.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.6.506
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: files_com
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.506
|
|
4
4
|
Summary: Python bindings for the Files.com API
|
|
5
5
|
License: MIT
|
|
6
6
|
Requires-Python: >=3.5
|
|
@@ -446,13 +446,40 @@ Trailing whitespace is significant for comparison. `report.txt` and `report.txt
|
|
|
446
446
|
|
|
447
447
|
## Workspaces
|
|
448
448
|
|
|
449
|
-
A Workspace
|
|
449
|
+
A Workspace groups files, users, groups, Partners, integrations, and workflows within a Files.com Site. An integration can provision a Workspace for a department or project and delegate its operation to a team without making that team Site Administrators. Every Site has a Default Workspace, with ID `0`; additional Workspaces have their own IDs and root folders.
|
|
450
450
|
|
|
451
|
-
|
|
451
|
+
Account membership, request context, and permission grants serve different purposes. Creating an account in a Workspace determines where it belongs. Selecting a Workspace determines which resources a request operates on. A permission grant determines what the caller can do there. Selecting a Workspace never grants access to it.
|
|
452
452
|
|
|
453
|
-
|
|
453
|
+
### Accounts and Administrative Access
|
|
454
|
+
|
|
455
|
+
A user's or group's `workspace_id` identifies the Workspace the account belongs to. Accounts belonging to a Custom Workspace stay within it. Default Workspace users and groups can receive permissions in one or more Custom Workspaces while keeping their existing accounts in Workspace `0`.
|
|
456
|
+
|
|
457
|
+
| Account | Workspace Administrator assignment | Scope |
|
|
458
|
+
| --- | --- | --- |
|
|
459
|
+
| User belonging to a Custom Workspace | Set the user's `workspace_admin` to `true`. | That user's own Custom Workspace. |
|
|
460
|
+
| Default Workspace user | Create an `admin` Permission for the user on a Custom Workspace's root folder. | Each Custom Workspace with a root grant. |
|
|
461
|
+
| Default Workspace group | Create an `admin` Permission for the group on a Custom Workspace's root folder. | Every member inherits administration of each Workspace with a root grant. |
|
|
462
|
+
|
|
463
|
+
`workspace_admin` is not a summary of a user's effective administrative access. A Default Workspace user can administer a Custom Workspace through a direct or group root grant while their `workspace_admin` remains `false`. Groups have no `workspace_admin` field. See [Users](/python/resources/user-accounts/users) and [Groups](/python/resources/user-accounts/groups) for account fields.
|
|
464
|
+
|
|
465
|
+
An `admin` grant on the **Custom Workspace root** provides full Workspace Administrator authority over its files, users, groups, Partners, workflows, and integrations. An `admin` grant on a subfolder provides Folder Admin authority over that folder and its descendants; it does not provide Workspace administration. Other permission levels provide their corresponding folder access without Workspace administration. [Permissions](/python/resources/user-accounts/permissions) defines the levels.
|
|
466
|
+
|
|
467
|
+
Site Administrators manage cross-Workspace assignments to Default Workspace accounts. Workspace Administrators manage accounts and permissions within their own scope. Site Administrators retain access to every Workspace; adding a Workspace grant does not narrow Site Administrator authority. The [product documentation](https://www.files.com/docs/workspaces/workspace-administrators) explains the role's operational scope and site-wide controls.
|
|
468
|
+
|
|
469
|
+
### Request Context and API Keys
|
|
470
|
+
|
|
471
|
+
The REST header `X-Files-Workspace-Id` selects a Workspace for a request. SDK request options and CLI configuration send that same selection. Workspace-scoped resources are listed, created, and changed within the selected context, and ordinary paths are relative to its root.
|
|
472
|
+
|
|
473
|
+
A resource's `workspace_id` request field describes the resource's Workspace membership. It is separate from the SDK's Workspace request option or REST header. Creating a Workspace-scoped resource in a Custom Workspace defaults its `workspace_id` to the selected Workspace; a mismatching membership value is rejected with `not-authorized/insufficient-permission-for-params`.
|
|
474
|
+
|
|
475
|
+
Selecting another Workspace with an API key requires a **Full Access key created in the Default Workspace**. A user key follows that user's current access, including group permissions. A site-wide Full Access key created in the Default Workspace has Site Administrator authority in every Workspace. A Files Only key stays in its creation Workspace, even if its user has cross-Workspace access. Any key created in a Custom Workspace stays within that Workspace. Selecting another context with these confined keys is rejected with `bad-request/invalid-workspace-id-header`.
|
|
476
|
+
|
|
477
|
+
An account belonging to a Custom Workspace is scoped there when it authenticates normally. For a Default Workspace user, explicitly select the intended Workspace for an integration rather than relying on an interactive login preference. [API Keys](/python/resources/developers/api-keys) and [Authentication](/python/overview/authentication) cover credentials.
|
|
454
478
|
|
|
455
479
|
The Files.com Python SDK supports workspace scoping by using the `files_sdk.set_workspace_id` configuration method. Scope a single request by passing `workspace_id` in the request options.
|
|
480
|
+
|
|
481
|
+
The adjacent scoping example uses a credential authorized for the selected Workspace. A group member uses their own Full Access user key from the Default Workspace; the Site Administrator credential used to assign the grant is not needed for their day-to-day work.
|
|
482
|
+
|
|
456
483
|
```python title="Example Request"
|
|
457
484
|
import files_sdk
|
|
458
485
|
|
|
@@ -461,6 +488,51 @@ files_sdk.set_workspace_id(123)
|
|
|
461
488
|
files_sdk.folder.list_for("", {}, {"workspace_id": 456})
|
|
462
489
|
```
|
|
463
490
|
|
|
491
|
+
### Delegating a Workspace to an Existing Group
|
|
492
|
+
|
|
493
|
+
An operations team already represented by a Default Workspace group can administer a Custom Workspace through one root Permission. The group and its members stay in the Default Workspace, so the same team can receive different access in other Workspaces.
|
|
494
|
+
|
|
495
|
+
First retrieve the target [Workspace](/python/resources/settings/workspaces) and [Group](/python/resources/user-accounts/groups) IDs as a Site Administrator in Workspace `0`. The examples use Workspace `123`, group `456`, and member user `789`; replace them with your own IDs. Confirm that the group belongs to Workspace `0` and that the intended user is a member.
|
|
496
|
+
|
|
497
|
+
Create the Permission using a Default Workspace Full Access site-wide key or a Full Access user key belonging to a Site Administrator. Keep the request context at `0` and use the qualified root path `_/Workspaces/123`. Set `group_id` to the group's ID, `permission` to `admin`, and `recursive` to `true`. Save the returned Permission `id` for later removal. For an individual Default Workspace user, use `user_id` instead of `group_id`.
|
|
498
|
+
|
|
499
|
+
For a Default Workspace group, a Site Administrator can also select Workspace `123` and use an empty `path` to grant access to its root. The qualified path in Workspace `0` works for both Default Workspace users and groups and keeps the account scope and target Workspace explicit. Appending a subfolder to the path would grant Folder Admin access instead of Workspace Administrator authority.
|
|
500
|
+
|
|
501
|
+
After the grant, run the request-context example above with the member's own credential and Workspace `123` selected. That member can work with the Workspace's files and perform Workspace Administrator operations, such as managing its users, Partners, and integrations. A Site Administrator's successful request does not establish that the member has the intended access.
|
|
502
|
+
|
|
503
|
+
```python title="Grant group administration"
|
|
504
|
+
import files_sdk
|
|
505
|
+
|
|
506
|
+
files_sdk.set_workspace_id(0)
|
|
507
|
+
grant = files_sdk.permission.create({
|
|
508
|
+
"path": "_/Workspaces/123",
|
|
509
|
+
"group_id": 456,
|
|
510
|
+
"permission": "admin",
|
|
511
|
+
"recursive": True,
|
|
512
|
+
}, {"workspace_id": 0})
|
|
513
|
+
print(grant.id)
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Permission Inspection and Removal
|
|
517
|
+
|
|
518
|
+
List the member's Permissions with `user_id` and `include_groups=true` to include grants inherited through group membership. Listing only direct user grants can miss the Permission that provides Workspace administration. In Workspace `0`, the Custom Workspace root appears as `_/Workspaces/123`; in Workspace `123`, paths are relative to that root. Inspect the root path and `permission=admin`, rather than treating the user's `workspace_admin` field as their effective role.
|
|
519
|
+
|
|
520
|
+
Permission lists show grants, rather than a single effective-role boolean. Membership in several groups combines their access. A Permission using `group_ids` instead of `group_id` requires membership in all the specified groups; it is not a shorthand for assigning the same grant to several independent groups.
|
|
521
|
+
|
|
522
|
+
Removing a member ends access received through that group. Deleting the root Permission ends the group's Workspace Administrator grant for every member. These changes leave independent direct and other group grants in place, so review all applicable grants when withdrawing access. Default Workspace user API keys follow those permission changes without being recreated.
|
|
523
|
+
|
|
524
|
+
Group membership maintained through SCIM follows the same rule. A Group Admin allowed to add members can give those users the group's existing Workspace Administrator access. Choose who manages the group with that authority in mind.
|
|
525
|
+
|
|
526
|
+
Delete the Permission by its returned `id` as the Site Administrator in Workspace `0`. The removal examples use Permission ID `9001`; replace it with the ID returned by your create request. Permissions are created and deleted, rather than updated in place. If narrower folder access is still needed, assign it explicitly; deleting a broad grant does not restore narrower grants it previously replaced.
|
|
527
|
+
|
|
528
|
+
```python title="Inspect member grants and remove the group grant"
|
|
529
|
+
for item in files_sdk.permission.list(
|
|
530
|
+
{"user_id": "789", "include_groups": True}, {"workspace_id": 0}
|
|
531
|
+
):
|
|
532
|
+
print(item.path, item.permission, item.group_id)
|
|
533
|
+
files_sdk.permission.delete(9001, {}, {"workspace_id": 0})
|
|
534
|
+
```
|
|
535
|
+
|
|
464
536
|
## Foreign Language Support
|
|
465
537
|
|
|
466
538
|
The Files.com Python SDK supports localized responses by using the `files_sdk.set_language` configuration method.
|
|
@@ -17,13 +17,13 @@ class UserLifecycleRule:
|
|
|
17
17
|
"action": None, # string - Action to take on inactive users (disable or delete)
|
|
18
18
|
"inactivity_days": None, # int64 - Number of days of inactivity before the rule applies
|
|
19
19
|
"include_folder_admins": None, # boolean - If true, the rule will apply to folder admins.
|
|
20
|
-
"include_site_admins": None, # boolean - If true, the rule
|
|
21
|
-
"apply_to_all_workspaces": None, # boolean - If true, a
|
|
20
|
+
"include_site_admins": None, # boolean - If true, the rule includes Site Administrators, who always belong to the Default Workspace. Can only be enabled when `workspace_id` is `0`.
|
|
21
|
+
"apply_to_all_workspaces": None, # boolean - If true, a Default Workspace rule also applies to users in all Custom Workspaces. Can only be enabled when `workspace_id` is `0`.
|
|
22
22
|
"name": None, # string - User Lifecycle Rule name
|
|
23
23
|
"notify_users": None, # boolean - If true, users will be emailed before the rule disables or deletes them.
|
|
24
24
|
"partner_tag": None, # string - If provided, only users belonging to Partners with this tag at the Partner level will be affected by the rule. Tags must only contain lowercase letters, numbers, and hyphens.
|
|
25
25
|
"site_id": None, # int64 - Site ID
|
|
26
|
-
"workspace_id": None, # int64 - Workspace
|
|
26
|
+
"workspace_id": None, # int64 - Workspace whose users the rule applies to. `0` means the Default Workspace. A Custom Workspace rule applies only to users who belong to that Workspace, regardless of access granted to other users.
|
|
27
27
|
"user_state": None, # string - State of the users to apply the rule to (inactive or disabled)
|
|
28
28
|
"user_tag": None, # string - If provided, only users with this tag will be affected by the rule. Tags must only contain lowercase letters, numbers, and hyphens.
|
|
29
29
|
}
|
|
@@ -54,18 +54,18 @@ class UserLifecycleRule:
|
|
|
54
54
|
|
|
55
55
|
# Parameters:
|
|
56
56
|
# action - string - Action to take on inactive users (disable or delete)
|
|
57
|
-
# apply_to_all_workspaces - boolean - If true, a
|
|
57
|
+
# apply_to_all_workspaces - boolean - If true, a Default Workspace rule also applies to users in all Custom Workspaces. Can only be enabled when `workspace_id` is `0`.
|
|
58
58
|
# authentication_method - string - User authentication method for which the rule will apply. Use `all_non_sso` to target every non-SSO authentication method with one rule.
|
|
59
59
|
# group_ids - array(int64) - Array of Group IDs to which the rule applies. If empty or not set, the rule applies to all users.
|
|
60
60
|
# inactivity_days - int64 - Number of days of inactivity before the rule applies
|
|
61
|
-
# include_site_admins - boolean - If true, the rule
|
|
61
|
+
# include_site_admins - boolean - If true, the rule includes Site Administrators, who always belong to the Default Workspace. Can only be enabled when `workspace_id` is `0`.
|
|
62
62
|
# include_folder_admins - boolean - If true, the rule will apply to folder admins.
|
|
63
63
|
# name - string - User Lifecycle Rule name
|
|
64
64
|
# notify_users - boolean - If true, users will be emailed before the rule disables or deletes them.
|
|
65
65
|
# partner_tag - string - If provided, only users belonging to Partners with this tag at the Partner level will be affected by the rule. Tags must only contain lowercase letters, numbers, and hyphens.
|
|
66
66
|
# user_state - string - State of the users to apply the rule to (inactive or disabled)
|
|
67
67
|
# user_tag - string - If provided, only users with this tag will be affected by the rule. Tags must only contain lowercase letters, numbers, and hyphens.
|
|
68
|
-
# workspace_id - int64 - Workspace
|
|
68
|
+
# workspace_id - int64 - Workspace whose users the rule applies to. `0` means the Default Workspace. A Custom Workspace rule applies only to users who belong to that Workspace, regardless of access granted to other users.
|
|
69
69
|
def update(self, params=None):
|
|
70
70
|
if not isinstance(params, dict):
|
|
71
71
|
params = {}
|
|
@@ -223,18 +223,18 @@ def get(id, params=None, options=None):
|
|
|
223
223
|
|
|
224
224
|
# Parameters:
|
|
225
225
|
# action - string - Action to take on inactive users (disable or delete)
|
|
226
|
-
# apply_to_all_workspaces - boolean - If true, a
|
|
226
|
+
# apply_to_all_workspaces - boolean - If true, a Default Workspace rule also applies to users in all Custom Workspaces. Can only be enabled when `workspace_id` is `0`.
|
|
227
227
|
# authentication_method - string - User authentication method for which the rule will apply. Use `all_non_sso` to target every non-SSO authentication method with one rule.
|
|
228
228
|
# group_ids - array(int64) - Array of Group IDs to which the rule applies. If empty or not set, the rule applies to all users.
|
|
229
229
|
# inactivity_days - int64 - Number of days of inactivity before the rule applies
|
|
230
|
-
# include_site_admins - boolean - If true, the rule
|
|
230
|
+
# include_site_admins - boolean - If true, the rule includes Site Administrators, who always belong to the Default Workspace. Can only be enabled when `workspace_id` is `0`.
|
|
231
231
|
# include_folder_admins - boolean - If true, the rule will apply to folder admins.
|
|
232
232
|
# name - string - User Lifecycle Rule name
|
|
233
233
|
# notify_users - boolean - If true, users will be emailed before the rule disables or deletes them.
|
|
234
234
|
# partner_tag - string - If provided, only users belonging to Partners with this tag at the Partner level will be affected by the rule. Tags must only contain lowercase letters, numbers, and hyphens.
|
|
235
235
|
# user_state - string - State of the users to apply the rule to (inactive or disabled)
|
|
236
236
|
# user_tag - string - If provided, only users with this tag will be affected by the rule. Tags must only contain lowercase letters, numbers, and hyphens.
|
|
237
|
-
# workspace_id - int64 - Workspace
|
|
237
|
+
# workspace_id - int64 - Workspace whose users the rule applies to. `0` means the Default Workspace. A Custom Workspace rule applies only to users who belong to that Workspace, regardless of access granted to other users.
|
|
238
238
|
def create(params=None, options=None):
|
|
239
239
|
if not isinstance(params, dict):
|
|
240
240
|
params = {}
|
|
@@ -306,18 +306,18 @@ def create(params=None, options=None):
|
|
|
306
306
|
|
|
307
307
|
# Parameters:
|
|
308
308
|
# action - string - Action to take on inactive users (disable or delete)
|
|
309
|
-
# apply_to_all_workspaces - boolean - If true, a
|
|
309
|
+
# apply_to_all_workspaces - boolean - If true, a Default Workspace rule also applies to users in all Custom Workspaces. Can only be enabled when `workspace_id` is `0`.
|
|
310
310
|
# authentication_method - string - User authentication method for which the rule will apply. Use `all_non_sso` to target every non-SSO authentication method with one rule.
|
|
311
311
|
# group_ids - array(int64) - Array of Group IDs to which the rule applies. If empty or not set, the rule applies to all users.
|
|
312
312
|
# inactivity_days - int64 - Number of days of inactivity before the rule applies
|
|
313
|
-
# include_site_admins - boolean - If true, the rule
|
|
313
|
+
# include_site_admins - boolean - If true, the rule includes Site Administrators, who always belong to the Default Workspace. Can only be enabled when `workspace_id` is `0`.
|
|
314
314
|
# include_folder_admins - boolean - If true, the rule will apply to folder admins.
|
|
315
315
|
# name - string - User Lifecycle Rule name
|
|
316
316
|
# notify_users - boolean - If true, users will be emailed before the rule disables or deletes them.
|
|
317
317
|
# partner_tag - string - If provided, only users belonging to Partners with this tag at the Partner level will be affected by the rule. Tags must only contain lowercase letters, numbers, and hyphens.
|
|
318
318
|
# user_state - string - State of the users to apply the rule to (inactive or disabled)
|
|
319
319
|
# user_tag - string - If provided, only users with this tag will be affected by the rule. Tags must only contain lowercase letters, numbers, and hyphens.
|
|
320
|
-
# workspace_id - int64 - Workspace
|
|
320
|
+
# workspace_id - int64 - Workspace whose users the rule applies to. `0` means the Default Workspace. A Custom Workspace rule applies only to users who belong to that Workspace, regardless of access granted to other users.
|
|
321
321
|
def update(id, params=None, options=None):
|
|
322
322
|
if not isinstance(params, dict):
|
|
323
323
|
params = {}
|
files_com-1.6.504/_VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.6.504
|
|
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
|
{files_com-1.6.504 → files_com-1.6.506}/files_sdk/models/action_notification_export_result.py
RENAMED
|
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
|