skyflow-flowvault-python 1.0.0__tar.gz → 1.1.0__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 changed (357) hide show
  1. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/PKG-INFO +601 -11
  2. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/README.md +599 -10
  3. skyflow_flowvault_python-1.1.0/common/generated/rest/__init__.py +240 -0
  4. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/rest/authentication/client.py +23 -23
  5. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/rest/authentication/raw_client.py +65 -31
  6. skyflow_flowvault_python-1.1.0/common/generated/rest/client.py +423 -0
  7. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/client_wrapper.py +1 -1
  8. skyflow_flowvault_python-1.1.0/common/generated/rest/errors/__init__.py +42 -0
  9. skyflow_flowvault_python-1.1.0/common/generated/rest/files_v2/__init__.py +49 -0
  10. skyflow_flowvault_python-1.1.0/common/generated/rest/files_v2/client.py +515 -0
  11. skyflow_flowvault_python-1.1.0/common/generated/rest/files_v2/raw_client.py +634 -0
  12. skyflow_flowvault_python-1.1.0/common/generated/rest/files_v2/types/__init__.py +47 -0
  13. skyflow_flowvault_python-1.1.0/common/generated/rest/files_v2/types/deidentify_file_request_v2data_format.py +32 -0
  14. skyflow_flowvault_python-1.1.0/common/generated/rest/files_v2/types/deidentify_file_request_v2data_source.py +5 -0
  15. skyflow_flowvault_python-1.1.0/common/generated/rest/files_v2/types/reidentify_file_request_v2data_format.py +7 -0
  16. skyflow_flowvault_python-1.1.0/common/generated/rest/files_v2/types/reidentify_file_request_v2data_source.py +5 -0
  17. skyflow_flowvault_python-1.1.0/common/generated/rest/guardrails_v2/client.py +165 -0
  18. skyflow_flowvault_python-1.1.0/common/generated/rest/guardrails_v2/raw_client.py +232 -0
  19. skyflow_flowvault_python-1.1.0/common/generated/rest/strings_v2/client.py +344 -0
  20. skyflow_flowvault_python-1.1.0/common/generated/rest/strings_v2/raw_client.py +424 -0
  21. skyflow_flowvault_python-1.1.0/common/generated/rest/token_exchange/__init__.py +4 -0
  22. skyflow_flowvault_python-1.1.0/common/generated/rest/token_exchange/client.py +161 -0
  23. skyflow_flowvault_python-1.1.0/common/generated/rest/token_exchange/raw_client.py +251 -0
  24. skyflow_flowvault_python-1.1.0/common/generated/rest/types/__init__.py +188 -0
  25. skyflow_flowvault_python-1.1.0/common/generated/rest/types/audio_v2.py +51 -0
  26. skyflow_flowvault_python-1.1.0/common/generated/rest/types/audio_v2bleep.py +57 -0
  27. skyflow_flowvault_python-1.1.0/common/generated/rest/types/audio_v2output_transcription.py +10 -0
  28. skyflow_flowvault_python-1.0.0/common/generated/rest/types/v_1_get_auth_token_response.py → skyflow_flowvault_python-1.1.0/common/generated/rest/types/deidentify_file_response_v2.py +8 -9
  29. skyflow_flowvault_python-1.1.0/common/generated/rest/types/deidentify_string_response_v2.py +41 -0
  30. skyflow_flowvault_python-1.1.0/common/generated/rest/types/deidentify_string_response_v2detected_entity.py +53 -0
  31. skyflow_flowvault_python-1.1.0/common/generated/rest/types/deidentify_string_response_v2entity_location.py +65 -0
  32. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect.py +72 -0
  33. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_config_v2.py +79 -0
  34. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_config_v2vault_type.py +5 -0
  35. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_custom_types.py +76 -0
  36. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_custom_types_deidentification_type.py +7 -0
  37. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_custom_types_include_prefix.py +5 -0
  38. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_entity.py +78 -0
  39. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_entity_deidentification_type.py +7 -0
  40. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_entity_entity_type.py +80 -0
  41. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_entity_include_prefix.py +5 -0
  42. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_guardrails_response_v2.py +48 -0
  43. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_guardrails_response_v2validation.py +5 -0
  44. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_object_entity.py +43 -0
  45. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_object_entity_deidentification_type.py +5 -0
  46. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_object_entity_entity_type.py +7 -0
  47. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_return_entities.py +5 -0
  48. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_runs_response_v2.py +56 -0
  49. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_runs_response_v2output_type.py +5 -0
  50. skyflow_flowvault_python-1.1.0/common/generated/rest/types/detect_runs_response_v2status.py +7 -0
  51. skyflow_flowvault_python-1.1.0/common/generated/rest/types/document_v2.py +24 -0
  52. skyflow_flowvault_python-1.1.0/common/generated/rest/types/document_v2pdf.py +53 -0
  53. skyflow_flowvault_python-1.1.0/common/generated/rest/types/document_v2pdf_processing_mode.py +5 -0
  54. skyflow_flowvault_python-1.1.0/common/generated/rest/types/entity_transformation.py +28 -0
  55. skyflow_flowvault_python-1.1.0/common/generated/rest/types/file_mapping.py +69 -0
  56. skyflow_flowvault_python-1.1.0/common/generated/rest/types/file_output.py +52 -0
  57. skyflow_flowvault_python-1.1.0/common/generated/rest/types/file_output_processed_file_extension.py +32 -0
  58. skyflow_flowvault_python-1.1.0/common/generated/rest/types/file_output_processed_file_type.py +17 -0
  59. skyflow_flowvault_python-1.1.0/common/generated/rest/types/get_auth_token_response.py +37 -0
  60. skyflow_flowvault_python-1.1.0/common/generated/rest/types/get_sts_token_response.py +46 -0
  61. skyflow_flowvault_python-1.1.0/common/generated/rest/types/image_v2.py +54 -0
  62. skyflow_flowvault_python-1.1.0/common/generated/rest/types/image_v2masking_method.py +5 -0
  63. skyflow_flowvault_python-1.1.0/common/generated/rest/types/media.py +28 -0
  64. skyflow_flowvault_python-1.1.0/common/generated/rest/types/metrics.py +61 -0
  65. skyflow_flowvault_python-1.1.0/common/generated/rest/types/redaction_level.py +73 -0
  66. skyflow_flowvault_python-1.1.0/common/generated/rest/types/redaction_level_entity_name.py +80 -0
  67. skyflow_flowvault_python-1.1.0/common/generated/rest/types/redaction_level_redaction_type.py +5 -0
  68. skyflow_flowvault_python-1.1.0/common/generated/rest/types/reidentify_file_response_v2.py +51 -0
  69. skyflow_flowvault_python-1.1.0/common/generated/rest/types/reidentify_file_response_v2output_type.py +5 -0
  70. skyflow_flowvault_python-1.1.0/common/generated/rest/types/reidentify_file_response_v2status.py +7 -0
  71. skyflow_flowvault_python-1.1.0/common/generated/rest/types/reidentify_string_response_v2.py +35 -0
  72. skyflow_flowvault_python-1.1.0/common/generated/rest/types/transformation_shift_dates.py +41 -0
  73. skyflow_flowvault_python-1.1.0/common/generated/rest/version.py +6 -0
  74. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/service_account/_utils.py +2 -2
  75. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/_skyflow_messages.py +80 -5
  76. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/_utils.py +1 -1
  77. skyflow_flowvault_python-1.1.0/common/utils/enums/detect.py +180 -0
  78. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/logger/_logger.py +11 -12
  79. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/validations/_validations.py +2 -2
  80. skyflow_flowvault_python-1.1.0/common/vault/data/__init__.py +10 -0
  81. skyflow_flowvault_python-1.1.0/common/vault/data/_base_delete_files_request.py +3 -0
  82. skyflow_flowvault_python-1.1.0/common/vault/data/_base_delete_files_response.py +9 -0
  83. skyflow_flowvault_python-1.1.0/common/vault/data/_base_get_tokens_request.py +3 -0
  84. skyflow_flowvault_python-1.1.0/common/vault/data/_base_get_tokens_response.py +9 -0
  85. skyflow_flowvault_python-1.1.0/common/vault/data/_base_query_request.py +3 -0
  86. skyflow_flowvault_python-1.1.0/common/vault/data/_base_query_response.py +9 -0
  87. skyflow_flowvault_python-1.1.0/common/vault/data/_base_upload_files_request.py +3 -0
  88. skyflow_flowvault_python-1.1.0/common/vault/data/_base_upload_files_response.py +9 -0
  89. skyflow_flowvault_python-1.1.0/common/vault/detect/__init__.py +73 -0
  90. skyflow_flowvault_python-1.1.0/common/vault/detect/_constants.py +36 -0
  91. skyflow_flowvault_python-1.1.0/common/vault/detect/_controller.py +228 -0
  92. skyflow_flowvault_python-1.1.0/common/vault/detect/_errors.py +61 -0
  93. skyflow_flowvault_python-1.1.0/common/vault/detect/_file_flow.py +21 -0
  94. skyflow_flowvault_python-1.1.0/common/vault/detect/_file_output_writer.py +89 -0
  95. skyflow_flowvault_python-1.1.0/common/vault/detect/_mappers.py +331 -0
  96. skyflow_flowvault_python-1.1.0/common/vault/detect/_models.py +336 -0
  97. skyflow_flowvault_python-1.1.0/common/vault/detect/_polling.py +56 -0
  98. skyflow_flowvault_python-1.1.0/common/vault/detect/_validations.py +91 -0
  99. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/setup.py +2 -1
  100. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/client/skyflow.py +2 -0
  101. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/__init__.py +24 -1
  102. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/_default_clients.py +32 -0
  103. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/client.py +19 -0
  104. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/__init__.py +127 -0
  105. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/client_wrapper.py +148 -0
  106. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/datetime_utils.py +70 -0
  107. {skyflow_flowvault_python-1.0.0/common → skyflow_flowvault_python-1.1.0/skyflow}/generated/rest/core/force_multipart.py +4 -2
  108. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/http_client.py +940 -0
  109. {skyflow_flowvault_python-1.0.0/common → skyflow_flowvault_python-1.1.0/skyflow}/generated/rest/core/http_response.py +10 -2
  110. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/http_sse/__init__.py +42 -0
  111. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/http_sse/_api.py +455 -0
  112. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/http_sse/_decoders.py +74 -0
  113. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/http_sse/_exceptions.py +7 -0
  114. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/http_sse/_models.py +17 -0
  115. {skyflow_flowvault_python-1.0.0/common → skyflow_flowvault_python-1.1.0/skyflow}/generated/rest/core/jsonable_encoder.py +33 -0
  116. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/logging.py +107 -0
  117. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/core/parse_error.py +36 -0
  118. {skyflow_flowvault_python-1.0.0/common → skyflow_flowvault_python-1.1.0/skyflow}/generated/rest/core/pydantic_utilities.py +249 -18
  119. {skyflow_flowvault_python-1.0.0/common → skyflow_flowvault_python-1.1.0/skyflow}/generated/rest/core/request_options.py +6 -1
  120. {skyflow_flowvault_python-1.0.0/common → skyflow_flowvault_python-1.1.0/skyflow}/generated/rest/core/serialization.py +79 -8
  121. {skyflow_flowvault_python-1.0.0/common → skyflow_flowvault_python-1.1.0/skyflow}/generated/rest/environment.py +2 -2
  122. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/errors/bad_request_error.py +11 -0
  123. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/errors/internal_server_error.py +11 -0
  124. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/errors/not_found_error.py +11 -0
  125. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/errors/unauthorized_error.py +11 -0
  126. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/files/__init__.py +4 -0
  127. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/files/client.py +270 -0
  128. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/files/raw_client.py +541 -0
  129. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/query/__init__.py +4 -0
  130. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/raw_client.py +86 -0
  131. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/tokens/__init__.py +4 -0
  132. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/__init__.py +21 -0
  133. skyflow_flowvault_python-1.0.0/common/generated/rest/types/protobuf_any.py → skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/error_response.py +3 -4
  134. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/error_response_error.py +28 -0
  135. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/file_delete_record.py +56 -0
  136. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/file_delete_response.py +23 -0
  137. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/file_delete_response_object.py +59 -0
  138. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/file_upload_column.py +36 -0
  139. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/file_upload_record.py +44 -0
  140. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/file_upload_response.py +23 -0
  141. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/file_upload_response_object.py +59 -0
  142. skyflow_flowvault_python-1.1.0/skyflow/generated/rest/types/http_code.py +6 -0
  143. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/_skyflow_messages.py +47 -0
  144. skyflow_flowvault_python-1.1.0/skyflow/utils/_version.py +1 -0
  145. skyflow_flowvault_python-1.1.0/skyflow/utils/enums/__init__.py +22 -0
  146. skyflow_flowvault_python-1.1.0/skyflow/utils/enums/_deidentify_source_type.py +6 -0
  147. skyflow_flowvault_python-1.1.0/skyflow/utils/enums/_file_upload_status.py +7 -0
  148. skyflow_flowvault_python-1.1.0/skyflow/utils/enums/_reidentify_source_type.py +6 -0
  149. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/validations/__init__.py +4 -0
  150. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/validations/_validations.py +78 -1
  151. skyflow_flowvault_python-1.1.0/skyflow/vault/client/client.py +163 -0
  152. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/controller/_vault.py +385 -21
  153. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/__init__.py +23 -0
  154. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_delete_files_column_result.py +10 -0
  155. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_delete_files_options.py +8 -0
  156. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_delete_files_request.py +9 -0
  157. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_delete_files_request_record.py +9 -0
  158. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_delete_files_response.py +6 -0
  159. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_delete_files_response_record.py +15 -0
  160. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_get_tokens_options.py +8 -0
  161. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_get_tokens_request.py +9 -0
  162. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_get_tokens_request_record.py +4 -0
  163. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_get_tokens_response.py +6 -0
  164. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_get_tokens_response_record.py +15 -0
  165. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_query_options.py +8 -0
  166. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_query_request.py +6 -0
  167. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_query_response.py +14 -0
  168. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_query_response_metadata.py +9 -0
  169. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_query_response_record.py +9 -0
  170. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_upload_files_column_result.py +11 -0
  171. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_upload_files_options.py +8 -0
  172. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_upload_files_request.py +9 -0
  173. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_upload_files_request_column.py +11 -0
  174. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_upload_files_request_record.py +10 -0
  175. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_upload_files_response.py +6 -0
  176. skyflow_flowvault_python-1.1.0/skyflow/vault/data/_upload_files_response_record.py +15 -0
  177. skyflow_flowvault_python-1.1.0/skyflow/vault/detect/__init__.py +37 -0
  178. skyflow_flowvault_python-1.1.0/skyflow/vault/detect/_redaction_level.py +14 -0
  179. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow_flowvault_python.egg-info/PKG-INFO +601 -11
  180. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow_flowvault_python.egg-info/SOURCES.txt +135 -3
  181. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow_flowvault_python.egg-info/requires.txt +1 -0
  182. skyflow_flowvault_python-1.0.0/common/generated/rest/__init__.py +0 -24
  183. skyflow_flowvault_python-1.0.0/common/generated/rest/client.py +0 -153
  184. skyflow_flowvault_python-1.0.0/common/generated/rest/core/__init__.py +0 -52
  185. skyflow_flowvault_python-1.0.0/common/generated/rest/core/client_wrapper.py +0 -86
  186. skyflow_flowvault_python-1.0.0/common/generated/rest/core/datetime_utils.py +0 -28
  187. skyflow_flowvault_python-1.0.0/common/generated/rest/core/http_client.py +0 -543
  188. skyflow_flowvault_python-1.0.0/common/generated/rest/errors/__init__.py +0 -9
  189. skyflow_flowvault_python-1.0.0/common/generated/rest/errors/bad_request_error.py +0 -14
  190. skyflow_flowvault_python-1.0.0/common/generated/rest/errors/not_found_error.py +0 -14
  191. skyflow_flowvault_python-1.0.0/common/generated/rest/errors/unauthorized_error.py +0 -14
  192. skyflow_flowvault_python-1.0.0/common/generated/rest/types/__init__.py +0 -9
  193. skyflow_flowvault_python-1.0.0/common/generated/rest/types/googlerpc_status.py +0 -22
  194. skyflow_flowvault_python-1.0.0/common/generated/rest/version.py +0 -6
  195. skyflow_flowvault_python-1.0.0/common/vault/data/__init__.py +0 -2
  196. skyflow_flowvault_python-1.0.0/skyflow/utils/_version.py +0 -1
  197. skyflow_flowvault_python-1.0.0/skyflow/utils/enums/__init__.py +0 -3
  198. skyflow_flowvault_python-1.0.0/skyflow/vault/client/client.py +0 -102
  199. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/MANIFEST.in +0 -0
  200. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/.coveragerc +0 -0
  201. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/__init__.py +0 -0
  202. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/client/__init__.py +0 -0
  203. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/client/base_skyflow.py +0 -0
  204. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/client/utils/__init__.py +0 -0
  205. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/client/utils/_utils.py +0 -0
  206. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/errors/__init__.py +0 -0
  207. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/errors/_skyflow_error.py +0 -0
  208. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/__init__.py +0 -0
  209. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/_default_clients.py +0 -0
  210. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/rest/authentication/__init__.py +0 -0
  211. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/__init__.py +0 -0
  212. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/rest/core/api_error.py +0 -0
  213. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/datetime_utils.py +0 -0
  214. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/rest/core/file.py +0 -0
  215. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/force_multipart.py +0 -0
  216. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/http_client.py +0 -0
  217. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/http_response.py +0 -0
  218. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/http_sse/__init__.py +0 -0
  219. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/http_sse/_api.py +0 -0
  220. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/http_sse/_decoders.py +0 -0
  221. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/http_sse/_exceptions.py +0 -0
  222. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/http_sse/_models.py +0 -0
  223. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/jsonable_encoder.py +0 -0
  224. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/logging.py +0 -0
  225. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/parse_error.py +0 -0
  226. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/pydantic_utilities.py +0 -0
  227. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/rest/core/query_encoder.py +0 -0
  228. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/rest/core/remove_none_from_dict.py +0 -0
  229. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/request_options.py +0 -0
  230. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/core/serialization.py +0 -0
  231. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/environment.py +0 -0
  232. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/errors/bad_request_error.py +0 -0
  233. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/errors/internal_server_error.py +0 -0
  234. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/errors/not_found_error.py +0 -0
  235. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/errors/unauthorized_error.py +0 -0
  236. {skyflow_flowvault_python-1.0.0/skyflow/generated/rest/query → skyflow_flowvault_python-1.1.0/common/generated/rest/guardrails_v2}/__init__.py +0 -0
  237. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/generated/rest/py.typed +0 -0
  238. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/raw_client.py +0 -0
  239. {skyflow_flowvault_python-1.0.0/skyflow/generated/rest/tokens → skyflow_flowvault_python-1.1.0/common/generated/rest/strings_v2}/__init__.py +0 -0
  240. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/types/error_response.py +0 -0
  241. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/types/error_response_error.py +0 -0
  242. {skyflow_flowvault_python-1.0.0/skyflow → skyflow_flowvault_python-1.1.0/common}/generated/rest/types/http_code.py +0 -0
  243. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/service_account/__init__.py +0 -0
  244. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/service_account/client/__init__.py +0 -0
  245. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/service_account/client/auth_client.py +0 -0
  246. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/__init__.py +0 -0
  247. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/_helpers.py +0 -0
  248. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/constants.py +0 -0
  249. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/__init__.py +0 -0
  250. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/content_types.py +0 -0
  251. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/detect_entities.py +0 -0
  252. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/detect_output_transcriptions.py +0 -0
  253. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/env.py +0 -0
  254. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/log_level.py +0 -0
  255. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/masking_method.py +0 -0
  256. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/redaction_type.py +0 -0
  257. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/request_method.py +0 -0
  258. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/token_mode.py +0 -0
  259. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/enums/token_type.py +0 -0
  260. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/logger/__init__.py +0 -0
  261. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/logger/_log_helpers.py +0 -0
  262. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/utils/validations/__init__.py +0 -0
  263. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/vault/base_vault_client.py +0 -0
  264. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/vault/base_vault_controller.py +0 -0
  265. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/vault/data/_base_insert_request.py +0 -0
  266. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/common/vault/data/_base_insert_response.py +0 -0
  267. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/setup.cfg +0 -0
  268. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/__init__.py +0 -0
  269. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/client/__init__.py +0 -0
  270. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/client/_http_config_builder.py +0 -0
  271. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/error/__init__.py +0 -0
  272. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/__init__.py +0 -0
  273. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/core/api_error.py +0 -0
  274. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/core/file.py +0 -0
  275. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/core/query_encoder.py +0 -0
  276. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/core/remove_none_from_dict.py +0 -0
  277. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/errors/__init__.py +0 -0
  278. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/errors/forbidden_error.py +0 -0
  279. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/errors/too_many_requests_error.py +0 -0
  280. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/py.typed +0 -0
  281. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/query/client.py +0 -0
  282. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/query/raw_client.py +0 -0
  283. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/records/__init__.py +0 -0
  284. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/records/client.py +0 -0
  285. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/records/raw_client.py +0 -0
  286. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/records/types/__init__.py +0 -0
  287. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/records/types/update_request_update_type.py +0 -0
  288. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/tokens/client.py +0 -0
  289. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/tokens/raw_client.py +0 -0
  290. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/column_redactions.py +0 -0
  291. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/delete_response.py +0 -0
  292. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/delete_response_object.py +0 -0
  293. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/detokenize_response.py +0 -0
  294. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/detokenize_response_object.py +0 -0
  295. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/execute_query_record_response.py +0 -0
  296. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/execute_query_response.py +0 -0
  297. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/execute_query_response_metadata.py +0 -0
  298. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/get_request_data.py +0 -0
  299. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/get_response.py +0 -0
  300. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/get_tokens_from_values_request_object.py +0 -0
  301. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/get_tokens_from_values_response.py +0 -0
  302. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/google_protobuf_value.py +0 -0
  303. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/insert_record_data.py +0 -0
  304. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/insert_response.py +0 -0
  305. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/record_response_object.py +0 -0
  306. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/token_group_redactions.py +0 -0
  307. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/tokenize_response_object.py +0 -0
  308. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/unique_value.py +0 -0
  309. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/update_record_data.py +0 -0
  310. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/update_record_data_update_type.py +0 -0
  311. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/update_response.py +0 -0
  312. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/upsert.py +0 -0
  313. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/types/upsert_update_type.py +0 -0
  314. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/generated/rest/version.py +0 -0
  315. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/service_account/__init__.py +0 -0
  316. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/__init__.py +0 -0
  317. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/_http_config.py +0 -0
  318. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/_response_parsing.py +0 -0
  319. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/_retry.py +0 -0
  320. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/_utils.py +0 -0
  321. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/enums/_custom_header_key.py +0 -0
  322. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/enums/_env_urls.py +0 -0
  323. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/utils/enums/_upsert_type.py +0 -0
  324. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/__init__.py +0 -0
  325. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/client/__init__.py +0 -0
  326. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/controller/__init__.py +0 -0
  327. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_column_redactions.py +0 -0
  328. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_delete_options.py +0 -0
  329. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_delete_request.py +0 -0
  330. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_delete_response.py +0 -0
  331. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_delete_response_record.py +0 -0
  332. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_detokenize_options.py +0 -0
  333. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_detokenize_request.py +0 -0
  334. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_detokenize_response.py +0 -0
  335. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_detokenize_response_record.py +0 -0
  336. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_detokenize_response_record_metadata.py +0 -0
  337. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_get_options.py +0 -0
  338. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_get_request.py +0 -0
  339. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_get_request_record.py +0 -0
  340. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_get_response.py +0 -0
  341. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_get_response_record.py +0 -0
  342. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_insert_options.py +0 -0
  343. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_insert_request.py +0 -0
  344. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_insert_request_record.py +0 -0
  345. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_insert_response.py +0 -0
  346. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_insert_response_record.py +0 -0
  347. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_request_context.py +0 -0
  348. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_token.py +0 -0
  349. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_token_group_redactions.py +0 -0
  350. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_update_options.py +0 -0
  351. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_update_request.py +0 -0
  352. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_update_request_record.py +0 -0
  353. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_update_response.py +0 -0
  354. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_update_response_record.py +0 -0
  355. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow/vault/data/_upsert_options.py +0 -0
  356. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow_flowvault_python.egg-info/dependency_links.txt +0 -0
  357. {skyflow_flowvault_python-1.0.0 → skyflow_flowvault_python-1.1.0}/skyflow_flowvault_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skyflow-flowvault-python
3
- Version: 1.0.0
3
+ Version: 1.1.0
4
4
  Summary: Skyflow SDK for the Python programming language (v3 / flowservice API)
5
5
  Home-page: https://github.com/skyflowapi/skyflow-python/
6
6
  Author: Skyflow
@@ -13,6 +13,7 @@ Requires-Dist: typing-extensions>=4.0.0
13
13
  Requires-Dist: PyJWT<3,>=2.12
14
14
  Requires-Dist: cryptography>=44.0.2
15
15
  Requires-Dist: httpx>=0.21.2
16
+ Requires-Dist: python-dotenv<2,>=1.1.0
16
17
  Provides-Extra: dev
17
18
  Requires-Dist: codespell>=2.4.1; extra == "dev"
18
19
  Requires-Dist: ruff>=0.9.0; extra == "dev"
@@ -31,7 +32,7 @@ Dynamic: summary
31
32
 
32
33
  # Skyflow FlowVault Python SDK
33
34
 
34
- The `flowvault` module is a Skyflow Python SDK for vault operations. It shares its client, credentials, and configuration with the [skyvault SDK](../skyvault/README.md) (both depend on the `common` module) but exposes a different, narrower surface: **unary** vault operations — insert, get, update, delete, and detokenize.
35
+ The `flowvault` module is a Skyflow Python SDK for vault operations. It shares its client, credentials, and configuration with the [skyvault SDK](../skyvault/README.md) (both depend on the `common` module) but exposes a different, narrower surface: **unary** vault operations — insert, get, update, delete, detokenize, query, get tokens, upload files, and delete files — plus **[Detect](#detect)** (de-identify and re-identify text and files, and guardrails).
35
36
 
36
37
  > Meant for **FlowVault** vaults.
37
38
 
@@ -69,7 +70,20 @@ The `flowvault` module is a Skyflow Python SDK for vault operations. It shares i
69
70
  - [Get](#get)
70
71
  - [Update](#update)
71
72
  - [Delete](#delete)
73
+ - [Query](#query)
74
+ - [Get Tokens](#get-tokens)
75
+ - [Upload Files](#upload-files)
76
+ - [Delete Files](#delete-files)
72
77
  - [Custom Request Headers](#custom-request-headers)
78
+ - [Detect](#detect)
79
+ - [Before you start](#before-you-start)
80
+ - [deidentify_string](#deidentify_string)
81
+ - [Detect configuration](#detect-configuration)
82
+ - [deidentify_file](#deidentify_file)
83
+ - [get_run](#get_run)
84
+ - [reidentify_string](#reidentify_string)
85
+ - [reidentify_file](#reidentify_file)
86
+ - [check_guardrails](#check_guardrails)
73
87
  - [Error Handling](#error-handling)
74
88
  - [Two layers of errors](#two-layers-of-errors)
75
89
  - [Per-record success and failure](#per-record-success-and-failure)
@@ -81,7 +95,7 @@ The `flowvault` module is a Skyflow Python SDK for vault operations. It shares i
81
95
  # Overview
82
96
 
83
97
  - Authenticate using a Skyflow service account, an API key, or a bearer token — see [Authenticate](#authenticate).
84
- - Perform unary Vault API operations — insert, get, update, delete, and detokenize — a single API call each. See [VaultController — Unary operations](#vaultcontroller--unary-operations).
98
+ - Perform Vault API operations — insert, get, update, delete, detokenize, query, get tokens, upload files, and delete files. See [VaultController — Unary operations](#vaultcontroller--unary-operations).
85
99
  - **Per-record reporting, not all-or-nothing.** A call succeeds as a call even when individual records fail; every response reports the outcome of each individual record or token. See [Error Handling](#error-handling).
86
100
 
87
101
  # Install
@@ -389,11 +403,11 @@ The SDK logs at `LogLevel.ERROR` by default. Levels rank `DEBUG` < `INFO` < `WAR
389
403
 
390
404
  ## Schema vs. schemaless vaults
391
405
 
392
- Which operations make sense depends on whether the vault is **structured** (has a schema — tables and columns) or **schemaless** (stores standalone tokens with no table structure): the record operations (`insert`, `get`, `update`, `delete`) address a table's columns and so need a structured vault, while `detokenize` needs only the token itself and works against either kind. See [Vault type support](#vault-type-support) for the per-operation breakdown.
406
+ Which operations make sense depends on whether the vault is **structured** (has a schema — tables and columns) or **schemaless** (stores standalone tokens with no table structure): the record and file operations (`insert`, `get`, `update`, `delete`, `query`, `upload_files`, `delete_files`) address a table's columns and so need a structured vault, while the token operations (`detokenize`, `get_tokens`) need only the token and work against either kind. See [Vault type support](#vault-type-support) for the per-operation breakdown.
393
407
 
394
408
  # VaultController — Unary operations
395
409
 
396
- `VaultController` is returned by `skyflow_client.vault(...)` and exposes these vault operations. Each sends exactly one API call and hands the result straight back:
410
+ `VaultController` is returned by `skyflow_client.vault(...)` and exposes these vault operations. Each is a single method call that hands the result straight back (`upload_files` orchestrates the signed-URL upload across a couple of calls internally):
397
411
 
398
412
  | Method | Parameters | Returns | Description |
399
413
  |--------|-----------|---------|-------------|
@@ -402,12 +416,16 @@ Which operations make sense depends on whether the vault is **structured** (has
402
416
  | `get(request)` | `GetRequest`, optional `GetOptions` | `GetResponse` | Read records by skyflow ID or unique value, optionally with a redaction override per column |
403
417
  | `update(request)` | `UpdateRequest`, optional `UpdateOptions` | `UpdateResponse` | Update records by skyflow ID |
404
418
  | `delete(request)` | `DeleteRequest`, optional `DeleteOptions` | `DeleteResponse` | Delete records by skyflow ID or unique value |
419
+ | `query(request)` | `QueryRequest`, optional `QueryOptions` | `QueryResponse` | Run a read-only SQL `SELECT`; returns up to 25 rows |
420
+ | `get_tokens(request)` | `GetTokensRequest`, optional `GetTokensOptions` | `GetTokensResponse` | Look up existing tokens for values (deterministic token groups) |
421
+ | `upload_files(request)` | `UploadFilesRequest`, optional `UploadFilesOptions` | `UploadFilesResponse` | Upload files to file columns (the SDK fetches signed URLs and uploads the bytes) |
422
+ | `delete_files(request)` | `DeleteFilesRequest`, optional `DeleteFilesOptions` | `DeleteFilesResponse` | Delete files from file columns by skyflow ID or unique value |
405
423
 
406
- Each method also accepts an optional options object (`InsertOptions`, `DetokenizeOptions`, `GetOptions`, `UpdateOptions`, `DeleteOptions`) — see [Custom Request Headers](#custom-request-headers).
424
+ Each method also accepts an optional options object (`InsertOptions`, `DetokenizeOptions`, `GetOptions`, `UpdateOptions`, `DeleteOptions`, `QueryOptions`, `GetTokensOptions`, `UploadFilesOptions`, `DeleteFilesOptions`) — see [Custom Request Headers](#custom-request-headers).
407
425
 
408
426
  ## Vault type support
409
427
 
410
- The same distinction as [Schema vs. schemaless vaults](#schema-vs-schemaless-vaults) applies. Four of the five unary operations address records inside a table, so they only make sense against a structured vault:
428
+ The same distinction as [Schema vs. schemaless vaults](#schema-vs-schemaless-vaults) applies. Most operations address records inside a table, so they only make sense against a structured vault; the token-centric ones work against either kind:
411
429
 
412
430
  | Operation | Supported on |
413
431
  |---|---|
@@ -416,6 +434,10 @@ The same distinction as [Schema vs. schemaless vaults](#schema-vs-schemaless-vau
416
434
  | `update` | Structured vaults — updates a table's records by skyflow ID. |
417
435
  | `delete` | Structured vaults — deletes a table's records. |
418
436
  | `detokenize` | Both — detokenizing only needs the token itself, not a table, so it works regardless of which kind of vault the token came from. |
437
+ | `query` | Structured vaults — runs a SQL `SELECT` over a table. |
438
+ | `get_tokens` | Both — looks up a token for a value within a token group, not a table. |
439
+ | `upload_files` | Structured vaults — uploads into a table's file columns. |
440
+ | `delete_files` | Structured vaults — deletes files from a table's file columns. |
419
441
 
420
442
  # Insert
421
443
 
@@ -524,7 +546,7 @@ from skyflow.vault.data import DetokenizeRequest, TokenGroupRedactions
524
546
  vault = skyflow_client.vault('<VAULT_ID>') # skyflow_client from Quickstart
525
547
 
526
548
  request = DetokenizeRequest(
527
- tokens=['5479-4229-4622-1393', 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'],
549
+ tokens=['5479-4229-4622-1393', '<TOKEN_1>'],
528
550
  token_group_redactions=[TokenGroupRedactions(token_group_name='card_number_cg', redaction='MASKED')],
529
551
  )
530
552
  response = vault.detokenize(request)
@@ -547,7 +569,7 @@ Sample response:
547
569
  "request_id": null
548
570
  },
549
571
  {
550
- "token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
572
+ "token": "<TOKEN_1>",
551
573
  "value": null,
552
574
  "token_group_name": null,
553
575
  "metadata": null,
@@ -681,7 +703,7 @@ Sample response:
681
703
  "table_name": "table1",
682
704
  "skyflow_id": "9fac9201-7b8a-4446-93f8-5244e1213bd1",
683
705
  "tokens": {
684
- "cardholder_name": [ { "token": "f1a2b3c4-d5e6-7890-abcd-ef1234567890", "token_group_name": "deterministic_string", "path": null } ]
706
+ "cardholder_name": [ { "token": "<TOKEN_2>", "token_group_name": "deterministic_string", "path": null } ]
685
707
  },
686
708
  "data": { "cardholder_name": "Jane Doe" },
687
709
  "hashed_data": null,
@@ -749,6 +771,213 @@ for record in response.records:
749
771
  print(record.skyflow_id, 'failed', record.http_code, record.error)
750
772
  ```
751
773
 
774
+ # Query
775
+
776
+ Run a read-only SQL `SELECT` against the vault in a single API call.
777
+
778
+ > **Vault type supported:** structured (schema) vaults. See [Vault type support](#vault-type-support).
779
+
780
+ **Note:**
781
+
782
+ - `query` is required and must be a non-empty string. Only `SELECT` is supported.
783
+ - A call returns at most 25 records; page through more with the SQL `OFFSET` keyword.
784
+ - Returned values may be masked per your vault's policies; they are never tokens or file URLs.
785
+ - Unlike the other operations, `query` has **no per-record results** — any failure is thrown as a `SkyflowError`, and `request_id` is always populated.
786
+
787
+ ```python
788
+ from skyflow.vault.data import QueryRequest
789
+
790
+ vault = skyflow_client.vault('<VAULT_ID>') # skyflow_client from Quickstart
791
+
792
+ request = QueryRequest(query="SELECT name, email FROM table1 WHERE name = 'john doe' LIMIT 25")
793
+ response = vault.query(request)
794
+ ```
795
+
796
+ There is no async variant: `query` returns its `QueryResponse` directly.
797
+
798
+ Sample response:
799
+
800
+ ```json
801
+ {
802
+ "records": [
803
+ { "data": { "skyflow_id": "9fac9201-7b8a-4446-93f8-5244e1213bd1", "name": "john doe", "email": "john@example.com" } }
804
+ ],
805
+ "metadata": { "columns": ["skyflow_id", "name", "email"] },
806
+ "request_id": "a1b2c3d4-..."
807
+ }
808
+ ```
809
+
810
+ `QueryResponse` carries `.records` (a list of `QueryResponseRecord`, each with `.data` — a dict of column to value), `.metadata` (`QueryResponseMetadata` with `.columns`), and `.request_id` (always populated).
811
+
812
+ ```python
813
+ for record in response.records:
814
+ print(record.data)
815
+ ```
816
+
817
+ # Get Tokens
818
+
819
+ Look up the existing token for one or more values — one result per value — in a single API call.
820
+
821
+ > **Vault type supported:** both. See [Vault type support](#vault-type-support).
822
+
823
+ **Note:**
824
+
825
+ - `records` is required and must be a non-empty list of `GetTokensRequestRecord`.
826
+ - Each record needs a non-null `value` and a non-blank `token_group_name`. Only **deterministic** token groups are supported.
827
+ - One result is returned per input value, in request order; duplicate inputs are not collapsed.
828
+
829
+ ```python
830
+ from skyflow.vault.data import GetTokensRequest, GetTokensRequestRecord
831
+
832
+ vault = skyflow_client.vault('<VAULT_ID>') # skyflow_client from Quickstart
833
+
834
+ request = GetTokensRequest(records=[
835
+ GetTokensRequestRecord(value='john@example.com', token_group_name='email_cg'),
836
+ GetTokensRequestRecord(value='jane@example.com', token_group_name='email_cg'),
837
+ ])
838
+ response = vault.get_tokens(request)
839
+ ```
840
+
841
+ There is no async variant: `get_tokens` returns its `GetTokensResponse` directly.
842
+
843
+ Sample response:
844
+
845
+ ```json
846
+ {
847
+ "records": [
848
+ { "value": "john@example.com", "token_group_name": "email_cg", "token": "1R9kNnLOPM", "http_code": 200, "error": null, "request_id": null },
849
+ { "value": "unknown@example.com", "token_group_name": "email_cg", "token": null, "http_code": 404, "error": "Token not found.", "request_id": "a1b2c3d4-..." }
850
+ ]
851
+ }
852
+ ```
853
+
854
+ Accessors on each `GetTokensResponseRecord`: `.value`, `.token_group_name`, `.token`, `.http_code`, `.error`, `.request_id`.
855
+
856
+ ```python
857
+ for record in response.records:
858
+ if record.error is None:
859
+ print(record.value, '->', record.token)
860
+ else:
861
+ print(record.value, 'failed', record.http_code, record.error)
862
+ ```
863
+
864
+ # Upload Files
865
+
866
+ Upload one or more files to file columns. The SDK **orchestrates** this in two steps: it requests a signed upload URL per column, then uploads each file's bytes to its URL — you just supply the files.
867
+
868
+ > **Vault type supported:** structured (schema) vaults. See [Vault type support](#vault-type-support).
869
+
870
+ **Note:**
871
+
872
+ - `records` is required and must be a non-empty list of `UploadFilesRequestRecord`; each needs a `table_name` and a non-empty `columns` list.
873
+ - Each `UploadFilesRequestColumn` needs a `column` name and **exactly one** file source — `file_path`, `base64`, or `file_object`. `base64` additionally requires `file_name`. The upload's content type is inferred from the file name.
874
+ - Omit `skyflow_id` to create a new record (CREATE permission); set it to upload into an existing record (UPDATE permission).
875
+ - `file_name` is derived from `file_path`/`file_object` when omitted; if still unset, the server generates one.
876
+ - Within a call, files are uploaded **concurrently** (a small bounded thread pool) and each file is **streamed** from disk, so large or many-file records stay within the signed-URL window with flat memory. The final virus-scan status (`fileStatus`) is asynchronous — read it later with `get()`.
877
+
878
+ ```python
879
+ from skyflow.vault.data import UploadFilesRequest, UploadFilesRequestRecord, UploadFilesRequestColumn
880
+
881
+ vault = skyflow_client.vault('<VAULT_ID>') # skyflow_client from Quickstart
882
+
883
+ request = UploadFilesRequest(records=[
884
+ UploadFilesRequestRecord(table_name='onboarding', columns=[
885
+ UploadFilesRequestColumn(column='resumePDF', file_path='/path/to/resume.pdf'),
886
+ UploadFilesRequestColumn(column='photoID', base64='<BASE64_CONTENT>', file_name='photo.jpg'),
887
+ ]),
888
+ ])
889
+ response = vault.upload_files(request)
890
+ ```
891
+
892
+ Sample response (partial success):
893
+
894
+ ```json
895
+ {
896
+ "records": [
897
+ {
898
+ "skyflow_id": "2a62a1fd-...",
899
+ "table_name": "onboarding",
900
+ "columns": [
901
+ { "column": "resumePDF", "file_name": "resume.pdf", "upload_status": "UPLOADED", "error": null },
902
+ { "column": "photoID", "file_name": "photo.jpg", "upload_status": "FAILED", "error": "PUT failed: 403" }
903
+ ],
904
+ "http_code": 200,
905
+ "error": null,
906
+ "request_id": null
907
+ }
908
+ ]
909
+ }
910
+ ```
911
+
912
+ Accessors on each `UploadFilesResponseRecord`: `.skyflow_id`, `.table_name`, `.columns`, `.http_code`, `.error`, `.request_id`. Each entry in `.columns` is an `UploadFilesColumnResult` with `.column`, `.file_name`, `.upload_status` (`"UPLOADED"`, `"FAILED"`, or `"SKIPPED"`), and `.error`.
913
+
914
+ ```python
915
+ for record in response.records:
916
+ for column in (record.columns or []):
917
+ print(column.column, column.upload_status, column.error)
918
+ ```
919
+
920
+ # Delete Files
921
+
922
+ Delete files from file columns of existing records — and remove the stored objects — in a single API call.
923
+
924
+ > **Vault type supported:** structured (schema) vaults. See [Vault type support](#vault-type-support).
925
+
926
+ **Note:**
927
+
928
+ - `records` is required and must be a non-empty list of `DeleteFilesRequestRecord`; each needs a `table_name` and a non-empty `columns` list of file-column names.
929
+ - Each record sets **exactly one** of `skyflow_id` or `unique_values` — both, or neither, fails validation.
930
+ - `unique_values` takes the same shape as in [Get](#get): a list of dicts, each holding the unique column-name/value pairs that identify a record; each may resolve to more than one record.
931
+
932
+ ```python
933
+ from skyflow.vault.data import DeleteFilesRequest, DeleteFilesRequestRecord
934
+
935
+ vault = skyflow_client.vault('<VAULT_ID>') # skyflow_client from Quickstart
936
+
937
+ request = DeleteFilesRequest(records=[
938
+ DeleteFilesRequestRecord(table_name='onboarding', columns=['resumePDF'], skyflow_id='9fac9201-...'),
939
+ DeleteFilesRequestRecord(table_name='onboarding', columns=['photoID'], unique_values=[{'email': 'jane.doe@example.com'}]),
940
+ ])
941
+ response = vault.delete_files(request)
942
+ ```
943
+
944
+ There is no async variant: `delete_files` returns its `DeleteFilesResponse` directly.
945
+
946
+ Sample response (partial success):
947
+
948
+ ```json
949
+ {
950
+ "records": [
951
+ {
952
+ "skyflow_id": "9fac9201-...",
953
+ "table_name": "onboarding",
954
+ "columns": [ { "column": "resumePDF", "status": "DELETED" } ],
955
+ "http_code": 200,
956
+ "error": null,
957
+ "request_id": null
958
+ },
959
+ {
960
+ "skyflow_id": "invalid-id",
961
+ "table_name": "onboarding",
962
+ "columns": null,
963
+ "http_code": 404,
964
+ "error": "Invalid request. skyflowID invalid-id is invalid.",
965
+ "request_id": "a1b2c3d4-..."
966
+ }
967
+ ]
968
+ }
969
+ ```
970
+
971
+ Accessors on each `DeleteFilesResponseRecord`: `.skyflow_id`, `.table_name`, `.columns`, `.http_code`, `.error`, `.request_id`. On a successful record `.columns` is a list of `DeleteFilesColumnResult` (`.column`, `.status` — `"DELETED"`); on a failed record `.columns` is `None`.
972
+
973
+ ```python
974
+ for record in response.records:
975
+ if record.error is None:
976
+ print(record.skyflow_id, 'deleted', [c.column for c in record.columns])
977
+ else:
978
+ print(record.skyflow_id, 'failed', record.http_code, record.error)
979
+ ```
980
+
752
981
  # Custom Request Headers
753
982
 
754
983
  To include custom HTTP headers on an outgoing request, pass an **interceptor** via that operation's options object. The interceptor is a callable that receives a `RequestContext` and can add headers to it. The headers available are defined by the `CustomHeaderKey` enum:
@@ -779,6 +1008,367 @@ The same pattern applies to every operation, via its corresponding options class
779
1008
  | `get` | `GetOptions` |
780
1009
  | `update` | `UpdateOptions` |
781
1010
  | `delete` | `DeleteOptions` |
1011
+ | `query` | `QueryOptions` |
1012
+ | `get_tokens` | `GetTokensOptions` |
1013
+ | `upload_files` | `UploadFilesOptions` |
1014
+ | `delete_files` | `DeleteFilesOptions` |
1015
+
1016
+ # Detect
1017
+
1018
+ Skyflow Detect finds and de-identifies sensitive data in strings and files, re-identifies tokens on demand, and screens text against guardrails. The flowvault SDK exposes the Detect API through `DetectController`, returned by `skyflow_client.detect()` and `skyflow_client.detect('<VAULT_ID>')`. Every request is scoped to that vault, and the controller shares the same credentials, timeouts and retries as `vault()`; the `vault_id` is filled in from the vault config for every method.
1019
+
1020
+ Detect configurations are created in Studio or through the management API — the SDK does not create, update or delete them. Import request/response models from `skyflow.vault.detect` and enums from `skyflow.utils.enums`.
1021
+
1022
+ | Method | Request | Response | Description |
1023
+ |--------|---------|----------|-------------|
1024
+ | `deidentify_string(request)` | `DeidentifyStringRequest` | `DeidentifyStringResponse` | Detect and replace sensitive data in a string |
1025
+ | `deidentify_file(request)` | `DeidentifyFileRequest` | `DeidentifyFileResponse` | Submit a file for de-identification, optionally polling the run to completion |
1026
+ | `reidentify_string(request)` | `ReidentifyStringRequest` | `ReidentifyStringResponse` | Replace tokens in a string with their original or redacted values |
1027
+ | `reidentify_file(request)` | `ReidentifyFileRequest` | `ReidentifyFileResponse` | Replace tokens in a file with their original or redacted values |
1028
+ | `get_run(request)` | `GetRunRequest` | `GetRunResponse` | Retrieve the status and outputs of a Detect file run |
1029
+ | `check_guardrails(request)` | `CheckGuardrailsRequest` | `CheckGuardrailsResponse` | Screen text for toxicity and denied topics |
1030
+
1031
+ ```python
1032
+ detect = skyflow_client.detect()
1033
+ ```
1034
+
1035
+ ## Before you start
1036
+
1037
+ - **Role.** The service account needs the Detect Invoker, Detect Manager or Vault Owner role on the vault. Detect Invoker can de-identify data and write vault tokens into the vault; Detect Manager adds the ability to create, update and delete Detect configurations. Re-identifying values stored as `VAULT_TOKEN` is governed like detokenization: the caller also needs a policy granting the Detokenization action on the destination, unless it is a Vault Owner.
1038
+ - **Configuration.** Pass `configuration_id` (the id of a stored Detect configuration) or an inline `configuration` (a `DetectConfiguration`). Both are optional: with neither set the SDK sends only the vault id and the run uses the vault's default Detect settings; sending both is rejected by the API with HTTP 400. Create and manage stored configurations — and copy their ids — in Studio (vault → **Detect**) or through the management API; the SDK does not create them.
1039
+ - **Destination for vault tokens.** An entity de-identified with `VAULT_TOKEN` stores its value in the token group named by `destination`. That token group must already exist in the vault; Detect writes into it but does not create it. Create token groups, and the named redaction patterns that re-identification applies, in the vault schema in Studio.
1040
+ - **API reference.** Every Detect request, response and configuration class is listed in the [API Reference](../docs/api_reference.md).
1041
+
1042
+ ## deidentify_string
1043
+
1044
+ Synchronous. Detects and de-identifies sensitive data in a string. Build the request with `DeidentifyStringRequest`, passing the text and, optionally, one configuration source.
1045
+
1046
+ ```python
1047
+ from skyflow.vault.detect import DeidentifyStringRequest
1048
+
1049
+ response = skyflow_client.detect().deidentify_string(
1050
+ DeidentifyStringRequest(
1051
+ text='My name is John Doe, and my email is johndoe@acme.com.',
1052
+ configuration_id='<CONFIGURATION_ID>',
1053
+ )
1054
+ )
1055
+
1056
+ print(response.processed_text)
1057
+ # My name is [NAME_1], and my email is [EMAIL_ADDRESS_1].
1058
+ for entity in response.entities:
1059
+ print(entity.entity_type, entity.token, entity.location.start_index, entity.entity_scores)
1060
+ print(response.metrics.word_count)
1061
+ ```
1062
+
1063
+ An inline configuration is built from `DetectConfiguration` / `Detect` / `Entity` (see [Detect configuration](#detect-configuration)):
1064
+
1065
+ ```python
1066
+ from skyflow.vault.detect import DeidentifyStringRequest, DetectConfiguration, Detect, Entity
1067
+ from skyflow.utils.enums import EntityType, DeidentificationType, ReturnEntitiesType
1068
+
1069
+ response = skyflow_client.detect().deidentify_string(
1070
+ DeidentifyStringRequest(
1071
+ text='My name is John Doe, and my email is johndoe@acme.com.',
1072
+ configuration=DetectConfiguration(
1073
+ detect=Detect(
1074
+ entities=[
1075
+ Entity(entity_type=EntityType.NAME, deidentification_type=DeidentificationType.VAULT_TOKEN, destination='<TOKEN_GROUP_NAME>'),
1076
+ Entity(entity_type=EntityType.ALL, deidentification_type=DeidentificationType.ENTITY_UNIQUE_COUNTER),
1077
+ ],
1078
+ skip=['Skyflow'],
1079
+ return_entities=ReturnEntitiesType.EXCLUDE_SENSITIVE_DATA,
1080
+ ),
1081
+ ),
1082
+ )
1083
+ )
1084
+ ```
1085
+
1086
+ Returns a `DeidentifyStringResponse` with `processed_text`, `entities` (each a `DetectedEntity` with `token`, `value`, `location`, `entity_type`, `entity_scores`; never `None`) and `metrics`. `value` is populated only when the configuration sets `return_entities` to `ReturnEntitiesType.ALL`; the default `EXCLUDE_SENSITIVE_DATA` returns an empty `value`, so raw sensitive data does not come back unless you ask for it.
1087
+
1088
+ ## Detect configuration
1089
+
1090
+ `DetectConfiguration` is the inline form of a stored configuration and accepts the same options. `detect` applies to string and file inputs; `file_mapping` and `media` apply to file inputs only.
1091
+
1092
+ | Class | Fields | Notes |
1093
+ |-------|--------|-------|
1094
+ | `Detect` | `entities`, `object_entities`, `restrict`, `skip`, `custom_types`, `return_entities` | `restrict` / `skip` are regexes always / never treated as sensitive. `return_entities` is `EXCLUDE_SENSITIVE_DATA` (server default), `ALL` or `NONE`. |
1095
+ | `Entity` | `entity_type`, `deidentification_type`, `destination`, `transformation`, `include_prefix`, `prefix_override` | `entity_type` defaults to `ALL`. `deidentification_type` is `ENTITY_UNIQUE_COUNTER` (server default), `ENTITY_ONLY`, `MASK` or `VAULT_TOKEN`. `destination` (a token group name) is used only with `VAULT_TOKEN`. `include_prefix` (`IncludePrefix.YES` / `IncludePrefix.NO`) and `prefix_override` also apply only to `VAULT_TOKEN`: `include_prefix=IncludePrefix.NO` stores a raw token that **cannot be re-identified** (a data-loss trap), and `prefix_override` replaces the entity-type label in the token with a custom one. |
1096
+ | `Transformation` / `ShiftDates` | `shift_dates`; `min_days`, `max_days` | Shifts detected dates by a random number of days within the range. |
1097
+ | `CustomType` | `label`, `match`, `deidentification_type`, `destination`, `include_prefix`, `prefix_override` | A regex-defined entity type; `label` is reported as the entity type of its matches. `deidentification_type`, `destination`, `include_prefix` and `prefix_override` behave exactly as on `Entity`. |
1098
+ | `ObjectEntity` | `entity_type`, `deidentification_type` | Visual objects in images: `FACE`, `LICENSE_PLATE`, `LOGO`, `SIGNATURE` or `ALL`, handled with `REDACT` or `UNREDACT`. File inputs only. |
1099
+ | `FileMapping` | `source`, `destination`, `output_file_name_suffix`, `entities_destination`, `object_entities_destination` | Where the processed file and entity files are written. File inputs only. |
1100
+ | `Media` | `audio`, `document`, `image` | Media-type options. File inputs only. |
1101
+ | `Audio` / `Bleep` | `output_processed_audio`, `output_transcription`, `bleep`; `start_padding`, `stop_padding`, `frequency`, `gain` | `output_transcription` is `NONE`, `TRANSCRIPTION`, `MEDICAL_TRANSCRIPTION`, `DIARIZED_TRANSCRIPTION` or `MEDICAL_DIARIZED_TRANSCRIPTION`. `Bleep` paddings are in seconds, frequency in Hz. |
1102
+ | `Document` / `Pdf` | `pdf`; `processing_mode`, `density`, `max_resolution` | `processing_mode` is `NONE`, `OCR` or `TEXT_LAYER`. `density` is the rendering DPI. |
1103
+ | `Image` | `output_processed_image`, `output_ocr_text`, `masking_method` | `masking_method` is `NONE`, `BLUR` or `BLACKBOX`. |
1104
+
1105
+ ```python
1106
+ from skyflow.vault.detect import (
1107
+ DetectConfiguration, Detect, Entity, Transformation, ShiftDates,
1108
+ CustomType, ObjectEntity, Media, Image, Document, Pdf, Audio, Bleep,
1109
+ )
1110
+ from skyflow.utils.enums import (
1111
+ EntityType, DeidentificationType, ObjectEntityType, ObjectDeidentificationType,
1112
+ MaskingMethod, PdfProcessingMode, OutputTranscriptionType,
1113
+ )
1114
+
1115
+ configuration = DetectConfiguration(
1116
+ detect=Detect(
1117
+ entities=[
1118
+ Entity(
1119
+ entity_type=EntityType.DOB,
1120
+ deidentification_type=DeidentificationType.ENTITY_UNIQUE_COUNTER,
1121
+ transformation=Transformation(shift_dates=ShiftDates(min_days=10, max_days=30)),
1122
+ ),
1123
+ Entity(entity_type=EntityType.ALL),
1124
+ ],
1125
+ object_entities=[
1126
+ ObjectEntity(entity_type=ObjectEntityType.FACE, deidentification_type=ObjectDeidentificationType.REDACT),
1127
+ ],
1128
+ custom_types=[CustomType(label='EMPLOYEE_ID', match=['EMP-[0-9]{6}'])],
1129
+ restrict=['[0-9]{3}-[0-9]{2}-[0-9]{4}'],
1130
+ ),
1131
+ media=Media(
1132
+ image=Image(masking_method=MaskingMethod.BLUR, output_ocr_text=True),
1133
+ document=Document(pdf=Pdf(processing_mode=PdfProcessingMode.OCR)),
1134
+ audio=Audio(output_transcription=OutputTranscriptionType.TRANSCRIPTION, bleep=Bleep(start_padding=0.5, stop_padding=0.5)),
1135
+ ),
1136
+ )
1137
+ ```
1138
+
1139
+ ## deidentify_file
1140
+
1141
+ De-identifies a file. The API is asynchronous: the submit call returns a run id and the result is retrieved from the run. Build the request with `DeidentifyFileRequest`.
1142
+
1143
+ Supply the file in exactly one of three ways: `file_path`, `file`, or `value` plus a `DeidentifySourceType` `data_source` (`BASE64` or `PRESIGNED_URL`). flowvault does **not** support a Skyflow ID as a file source — its `DeidentifySourceType` has only `BASE64` and `PRESIGNED_URL`. A local `file` / `file_path` is read when the request is sent, base64-encoded, and its `data_format` inferred from the extension. Passing more than one of them, or none, fails client-side validation before any network call. `configuration_id` / `configuration` follow the same rules as for strings (see [Before you start](#before-you-start)).
1144
+
1145
+ - **Submit only** (default): one call, returns `run_id`. `status` is `None` and nothing is written to disk — retrieve the result later with [`get_run`](#get_run).
1146
+ - **Submit and poll**: pass `poll_options`. The SDK polls with exponential backoff (1, 2, 4, 8, 16, then 32 seconds) until the run is `SUCCESS`, `FAILED` or `UNKNOWN`, or until `wait_time` (default 60 s, max 300) or `max_attempts` (default and max 23) is used up. If the budget runs out the response carries the run id with `IN_PROGRESS` or `QUEUED`, so you can resume with `get_run`. `output_directory` is valid only with `poll_options`; setting it without them fails client-side validation.
1147
+
1148
+ ```python
1149
+ from skyflow.vault.detect import DeidentifyFileRequest, PollOptions
1150
+ from skyflow.utils.enums import DetectRunStatus
1151
+
1152
+ # Submit only
1153
+ submitted = skyflow_client.detect().deidentify_file(
1154
+ DeidentifyFileRequest(file_path='/data/intake/patient-notes.pdf', configuration_id='<CONFIGURATION_ID>')
1155
+ )
1156
+ run_id = submitted.run_id # status is None; nothing written to disk
1157
+
1158
+ # Submit and poll
1159
+ response = skyflow_client.detect().deidentify_file(
1160
+ DeidentifyFileRequest(
1161
+ file_path='/data/intake/patient-notes.pdf',
1162
+ configuration_id='<CONFIGURATION_ID>',
1163
+ poll_options=PollOptions(wait_time=120),
1164
+ output_directory='/data/processed',
1165
+ )
1166
+ )
1167
+
1168
+ if response.status == DetectRunStatus.SUCCESS:
1169
+ for output in response.output:
1170
+ print(output.processed_file_type, output.processed_file_extension)
1171
+ print(response.metrics.pages)
1172
+ elif response.status == DetectRunStatus.FAILED:
1173
+ print(response.message)
1174
+ else: # IN_PROGRESS or QUEUED: budget ran out, resume with get_run(run_id)
1175
+ print(response.run_id)
1176
+ ```
1177
+
1178
+ **Where the outputs go.** On `SUCCESS`, when the request was built from a local `file` / `file_path` and the run returned base64 outputs, the SDK writes them to disk. With `output_directory='/data/processed'` the example above writes:
1179
+
1180
+ - `/data/processed/processed-patient-notes.pdf` — the redacted file
1181
+ - `/data/processed/processed-entities-patient-notes.json` — the detected entities
1182
+ - `/data/processed/processed-object-entities-patient-notes.json` — object entities, when the run produced them
1183
+
1184
+ `output_directory` is created if it does not exist. **If you poll a local file and omit `output_directory`, these files are written to the current working directory** — often your project root or a server's working directory — so set `output_directory` explicitly. A request built from a `PRESIGNED_URL` value has no local name to derive from, and presigned-URL outputs are not fetched, so in that case read `response.output` and write the files yourself.
1185
+
1186
+ **Supported formats and limits.** `data_format` accepts every `DeidentifyFileDataFormat`: `bmp`, `csv`, `dcm`, `doc`, `docx`, `gif`, `jpeg`, `jpg`, `json`, `jsonl`, `mp3`, `pdf`, `png`, `ppt`, `pptx`, `tif`, `tiff`, `txt`, `wav`, `xls`, `xlsx`, `xml`, `zip`. The `VAULT_TOKEN` de-identification type is supported only for `txt`, `csv`, `json`, `jsonl`, `xml`, `docx`, `xlsx` and `pptx`.
1187
+
1188
+ **Polling blocks the calling thread** — each lookup is a synchronous `get_run` followed by a sleep. For concurrency, submit without `poll_options` and poll `get_run` yourself on a scheduler, or run the blocking call on a worker thread you own.
1189
+
1190
+ A file at a presigned URL is referenced through `data_source` + `value`:
1191
+
1192
+ ```python
1193
+ from skyflow.vault.detect import DeidentifyFileRequest
1194
+ from skyflow.utils.enums import DeidentifySourceType, DeidentifyFileDataFormat
1195
+
1196
+ skyflow_client.detect().deidentify_file(
1197
+ DeidentifyFileRequest(
1198
+ data_source=DeidentifySourceType.PRESIGNED_URL,
1199
+ value='<PRESIGNED_URL>',
1200
+ data_format=DeidentifyFileDataFormat.PDF,
1201
+ configuration_id='<CONFIGURATION_ID>',
1202
+ )
1203
+ )
1204
+ ```
1205
+
1206
+ Returns a `DeidentifyFileResponse` with `run_id`, `status` (a `DetectRunStatus`, `None` when not polled), `output_type`, `output` (a list of `FileOutput` with `processed_file`, `processed_file_type`, `processed_file_extension`), `metrics` and `message`.
1207
+
1208
+ ## get_run
1209
+
1210
+ Retrieves the status and, once complete, the outputs of a Detect file run. Build the request with `GetRunRequest`, initialized with the `run_id` returned from a prior `deidentify_file` call. `output` is empty and `output_type` / `metrics` are `None` until the run completes.
1211
+
1212
+ ```python
1213
+ from skyflow.vault.detect import GetRunRequest
1214
+ from skyflow.utils.enums import DetectRunStatus
1215
+
1216
+ run = skyflow_client.detect().get_run(GetRunRequest(run_id='<RUN_ID>'))
1217
+
1218
+ if run.status == DetectRunStatus.SUCCESS:
1219
+ for output in run.output:
1220
+ print(output.processed_file_type, output.processed_file_extension)
1221
+ elif run.status == DetectRunStatus.FAILED:
1222
+ print(run.message)
1223
+ else: # QUEUED, IN_PROGRESS, UNKNOWN: poll again later
1224
+ print(run.status)
1225
+ ```
1226
+
1227
+ Returns a `GetRunResponse` with the same fields as `DeidentifyFileResponse`.
1228
+
1229
+ ## reidentify_string
1230
+
1231
+ Synchronous. Re-identification looks tokens up in the vault, so it applies only to values de-identified with `VAULT_TOKEN`. Placeholders produced by `ENTITY_UNIQUE_COUNTER`, `ENTITY_ONLY` or `MASK` are not stored and cannot be re-identified.
1232
+
1233
+ Build the request with `ReidentifyStringRequest`: the tokenized text and an optional list of `RedactionLevel` rules. On flowvault vaults each rule targets a `token_group_name` and applies a named `redaction_pattern` configured in the vault. Without rules every token is replaced by its original value.
1234
+
1235
+ Only text that actually contains vault tokens can be re-identified, so the example below is a round trip: first de-identify with `VAULT_TOKEN` to mint tokens, then re-identify the `processed_text` that comes back. A vault token is an opaque value like `a1b2c3d4-...` (optionally prefixed, e.g. `[NAME_a1b2c3d4-...]`), not the `[NAME_1]` counter placeholder produced by `ENTITY_UNIQUE_COUNTER`.
1236
+
1237
+ ```python
1238
+ from skyflow.vault.detect import (
1239
+ DeidentifyStringRequest, DetectConfiguration, Detect, Entity,
1240
+ ReidentifyStringRequest, RedactionLevel,
1241
+ )
1242
+ from skyflow.utils.enums import EntityType, DeidentificationType
1243
+
1244
+ # 1. De-identify with VAULT_TOKEN so the value is stored and can be re-identified later.
1245
+ deidentified = skyflow_client.detect().deidentify_string(
1246
+ DeidentifyStringRequest(
1247
+ text='My name is John Doe.',
1248
+ configuration=DetectConfiguration(detect=Detect(entities=[
1249
+ Entity(entity_type=EntityType.NAME, deidentification_type=DeidentificationType.VAULT_TOKEN, destination='<TOKEN_GROUP_NAME>'),
1250
+ ])),
1251
+ )
1252
+ )
1253
+ # deidentified.processed_text now holds a vault token, e.g. 'My name is a1b2c3d4-...'
1254
+
1255
+ # 2. Re-identify those tokens.
1256
+ response = skyflow_client.detect().reidentify_string(
1257
+ ReidentifyStringRequest(
1258
+ text=deidentified.processed_text,
1259
+ redaction_level=[
1260
+ RedactionLevel(token_group_name='<TOKEN_GROUP_NAME>', redaction_pattern='<REDACTION_PATTERN>'),
1261
+ ],
1262
+ )
1263
+ )
1264
+ print(response.processed_text)
1265
+ # My name is John Doe.
1266
+ ```
1267
+
1268
+ > The flowvault `RedactionLevel` has only `token_group_name` and `redaction_pattern`; the skyvault SDK's has `entity_name` and `redaction_type` instead. Token groups and redaction patterns are configured in the vault.
1269
+
1270
+ Returns a `ReidentifyStringResponse` with `processed_text` and `metrics`.
1271
+
1272
+ ## reidentify_file
1273
+
1274
+ Synchronous — the re-identified file comes back in the response, not through a run id. Build the request with `ReidentifyFileRequest`: a `data_source` (`ReidentifySourceType.BASE64` or `PRESIGNED_URL`; re-identification does not accept a skyflow id as the source), the matching `value`, an optional `data_format` (a `ReidentifyFileDataFormat`), and the same `RedactionLevel` rules as `reidentify_string`. `data_format` is limited to the formats that support `VAULT_TOKEN`: `txt`, `csv`, `json`, `jsonl`, `xml`, `docx`, `xlsx` and `pptx`.
1275
+
1276
+ ```python
1277
+ import base64
1278
+ from skyflow.vault.detect import ReidentifyFileRequest, RedactionLevel
1279
+ from skyflow.utils.enums import ReidentifySourceType, ReidentifyFileDataFormat, DetectRunStatus
1280
+
1281
+ data_format = ReidentifyFileDataFormat.TXT
1282
+ with open('/data/redacted/notes.txt', 'rb') as handle:
1283
+ encoded = base64.b64encode(handle.read()).decode('utf-8')
1284
+
1285
+ response = skyflow_client.detect().reidentify_file(
1286
+ ReidentifyFileRequest(
1287
+ data_source=ReidentifySourceType.BASE64,
1288
+ value=encoded,
1289
+ data_format=data_format,
1290
+ redaction_level=[RedactionLevel(token_group_name='<TOKEN_GROUP_NAME>', redaction_pattern='<REDACTION_PATTERN>')],
1291
+ )
1292
+ )
1293
+
1294
+ if response.status == DetectRunStatus.SUCCESS:
1295
+ for index, output in enumerate(response.output):
1296
+ # Branch on output_type: base64 bytes are decoded, a presigned URL is downloaded.
1297
+ if response.output_type == ReidentifySourceType.BASE64:
1298
+ with open(f'reidentified-{index}.{data_format.value}', 'wb') as out:
1299
+ out.write(base64.b64decode(output.processed_file))
1300
+ else: # ReidentifySourceType.PRESIGNED_URL — processed_file is a URL to fetch
1301
+ print('download re-identified file from', output.processed_file)
1302
+ ```
1303
+
1304
+ Returns a `ReidentifyFileResponse` with `status`, `output_type` (a `ReidentifySourceType`), `output` (a list of `ReidentifyFileOutput`) and `metrics`.
1305
+
1306
+ ## check_guardrails
1307
+
1308
+ Synchronous. Screens text for toxicity and a list of denied topics — a natural pre-LLM check. Build the request with `CheckGuardrailsRequest`. `check_toxicity` and `deny_topics` are optional; the SDK sends each only when set and fills in no default. **When `check_toxicity` is omitted, the server still checks toxicity by default.** The response is passed through as the API returns it.
1309
+
1310
+ ```python
1311
+ from skyflow.vault.detect import CheckGuardrailsRequest
1312
+ from skyflow.utils.enums import GuardrailsValidation
1313
+
1314
+ response = skyflow_client.detect().check_guardrails(
1315
+ CheckGuardrailsRequest(text='<USER_PROMPT>', check_toxicity=True, deny_topics=['politics', 'medical advice'])
1316
+ )
1317
+
1318
+ if response.validation == GuardrailsValidation.FAILED:
1319
+ print('blocked', response.toxic, response.denied_topic)
1320
+ ```
1321
+
1322
+ Returns a `CheckGuardrailsResponse` with `text`, `validation` (`GuardrailsValidation.PASSED` or `FAILED`), `toxic` and `denied_topic`.
1323
+
1324
+ All Detect methods raise `skyflow.error.SkyflowError` on validation failure, credential failure, or an API error — see [Error Handling](#error-handling). Client-side validation fails before any network call.
1325
+
1326
+ ## Response examples and common errors
1327
+
1328
+ Enum-typed fields (`status`, `output_type`, `validation`, …) are shown below by their string values.
1329
+
1330
+ `deidentify_string`:
1331
+
1332
+ ```json
1333
+ {
1334
+ "processed_text": "My name is [NAME_1], and my email is [EMAIL_ADDRESS_1].",
1335
+ "entities": [
1336
+ { "token": "[NAME_1]", "value": "", "location": { "start_index": 11, "end_index": 19, "start_index_processed": 11, "end_index_processed": 19 }, "entity_type": "NAME", "entity_scores": { "NAME": 0.99 } }
1337
+ ],
1338
+ "metrics": { "word_count": 10, "character_count": 54 }
1339
+ }
1340
+ ```
1341
+
1342
+ `deidentify_file` (polled) / `get_run`:
1343
+
1344
+ ```json
1345
+ {
1346
+ "run_id": "run_a1b2c3d4",
1347
+ "status": "SUCCESS",
1348
+ "output_type": "BASE64",
1349
+ "output": [ { "processed_file": "<base64>", "processed_file_type": "application/pdf", "processed_file_extension": "pdf" } ],
1350
+ "metrics": { "pages": 3 },
1351
+ "message": null
1352
+ }
1353
+ ```
1354
+
1355
+ `reidentify_string`:
1356
+
1357
+ ```json
1358
+ { "processed_text": "My name is John Doe.", "metrics": { "word_count": 5 } }
1359
+ ```
1360
+
1361
+ `check_guardrails`:
1362
+
1363
+ ```json
1364
+ { "text": "<input text>", "validation": "FAILED", "toxic": true, "denied_topic": false }
1365
+ ```
1366
+
1367
+ Common Detect errors (all raised as `SkyflowError`):
1368
+
1369
+ - **HTTP 400 — both configuration sources set.** Passing `configuration_id` and `configuration` in the same request is rejected; pass at most one.
1370
+ - **Missing token group.** A `VAULT_TOKEN` entity whose `destination` token group does not exist in the vault fails — create the token group first.
1371
+ - **Unsupported format with `VAULT_TOKEN`.** `VAULT_TOKEN` is only valid for `txt`, `csv`, `json`, `jsonl`, `xml`, `docx`, `xlsx` and `pptx`; other `data_format` values are rejected.
782
1372
 
783
1373
  # Error Handling
784
1374
 
@@ -805,7 +1395,7 @@ Every response exposes `.records`. The records list has one entry per submitted
805
1395
  | `.error` | always | Error message for this item, populated only on failure — `None` means this item succeeded. |
806
1396
  | `.request_id` | always | The `x-request-id` of the call this item was part of, populated only on failure (`None` on success) — quote it in support escalations. |
807
1397
 
808
- The success payload sits alongside those attributes on the same object: `.skyflow_id`/`.tokens`/`.data`/`.hashed_data` for record-shaped operations (`insert`, `get`, `update`), `.value`/`.token_group_name`/`.metadata` for detokenize, `.skyflow_id` alone for delete.
1398
+ The success payload sits alongside those attributes on the same object: `.skyflow_id`/`.tokens`/`.data`/`.hashed_data` for record-shaped operations (`insert`, `get`, `update`), `.value`/`.token_group_name`/`.metadata` for detokenize, `.value`/`.token_group_name`/`.token` for `get_tokens`, `.skyflow_id`/`.table_name`/`.columns` for `upload_files` and `delete_files`, and `.skyflow_id` alone for delete. (`query` is the exception — it has no per-record results; any failure is raised as a `SkyflowError`.)
809
1399
 
810
1400
  A response has just `.records`, in submitted order, with `.http_code`, `.error`, and `.request_id` on each entry alongside that operation's payload.
811
1401