spatialflow 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. spatialflow/__init__.py +91 -0
  2. spatialflow/_generated/.github/workflows/python.yml +31 -0
  3. spatialflow/_generated/.gitignore +66 -0
  4. spatialflow/_generated/.gitlab-ci.yml +31 -0
  5. spatialflow/_generated/.openapi-generator/FILES +390 -0
  6. spatialflow/_generated/.openapi-generator/VERSION +1 -0
  7. spatialflow/_generated/.openapi-generator-ignore +23 -0
  8. spatialflow/_generated/.spec-hash +1 -0
  9. spatialflow/_generated/.travis.yml +17 -0
  10. spatialflow/_generated/README.md +537 -0
  11. spatialflow/_generated/__init__.py +1 -0
  12. spatialflow/_generated/docs/APIUsageStats.md +32 -0
  13. spatialflow/_generated/docs/AccountApi.md +1751 -0
  14. spatialflow/_generated/docs/ActionDeliverySuccessMetrics.md +32 -0
  15. spatialflow/_generated/docs/ActionResponse.md +32 -0
  16. spatialflow/_generated/docs/ActionRetryConfigSchema.md +32 -0
  17. spatialflow/_generated/docs/ActivitySummary.md +30 -0
  18. spatialflow/_generated/docs/AdminApi.md +1787 -0
  19. spatialflow/_generated/docs/ApiKeyCreateRequest.md +31 -0
  20. spatialflow/_generated/docs/ApiKeyCreateResponse.md +31 -0
  21. spatialflow/_generated/docs/ApiKeyResponse.md +38 -0
  22. spatialflow/_generated/docs/ApiKeyUpdateRequest.md +33 -0
  23. spatialflow/_generated/docs/AsyncUploadGeofencesResponse.md +33 -0
  24. spatialflow/_generated/docs/AuthTypeEnum.md +17 -0
  25. spatialflow/_generated/docs/AuthenticationApi.md +1289 -0
  26. spatialflow/_generated/docs/BatchLocationUpdateIn.md +30 -0
  27. spatialflow/_generated/docs/BillingApi.md +925 -0
  28. spatialflow/_generated/docs/BulkGeofenceRequest.md +29 -0
  29. spatialflow/_generated/docs/ChangePasswordSchema.md +30 -0
  30. spatialflow/_generated/docs/CheckoutSessionRequest.md +32 -0
  31. spatialflow/_generated/docs/CheckoutSessionResponse.md +31 -0
  32. spatialflow/_generated/docs/CircuitBreakerSchema.md +33 -0
  33. spatialflow/_generated/docs/ConfigFieldDefinitionRequest.md +41 -0
  34. spatialflow/_generated/docs/ConfigFieldDefinitionResponse.md +43 -0
  35. spatialflow/_generated/docs/ConfirmPasswordResetSchema.md +31 -0
  36. spatialflow/_generated/docs/CreateFromTemplateIn.md +30 -0
  37. spatialflow/_generated/docs/CreateGeofenceRequest.md +36 -0
  38. spatialflow/_generated/docs/CreateIntegrationSchema.md +33 -0
  39. spatialflow/_generated/docs/CreateUserSchema.md +35 -0
  40. spatialflow/_generated/docs/CreateWebhookRequest.md +43 -0
  41. spatialflow/_generated/docs/DashboardComparisonMetrics.md +32 -0
  42. spatialflow/_generated/docs/DashboardMetricsResponse.md +36 -0
  43. spatialflow/_generated/docs/DefaultApi.md +585 -0
  44. spatialflow/_generated/docs/DeleteFileResponse.md +30 -0
  45. spatialflow/_generated/docs/DeliveryStatusEnum.md +15 -0
  46. spatialflow/_generated/docs/DeviceIn.md +32 -0
  47. spatialflow/_generated/docs/DeviceOut.md +37 -0
  48. spatialflow/_generated/docs/DevicesApi.md +1213 -0
  49. spatialflow/_generated/docs/E2ETestApi.md +271 -0
  50. spatialflow/_generated/docs/EmailApi.md +541 -0
  51. spatialflow/_generated/docs/EmailHealthResponse.md +31 -0
  52. spatialflow/_generated/docs/EmailQueueStats.md +34 -0
  53. spatialflow/_generated/docs/EmailStats.md +31 -0
  54. spatialflow/_generated/docs/EmailStatusResponse.md +36 -0
  55. spatialflow/_generated/docs/ErrorResponse.md +32 -0
  56. spatialflow/_generated/docs/ExecutionOut.md +38 -0
  57. spatialflow/_generated/docs/ExportIntegrationSchema.md +35 -0
  58. spatialflow/_generated/docs/FileListResponse.md +31 -0
  59. spatialflow/_generated/docs/ForgotPasswordSchema.md +29 -0
  60. spatialflow/_generated/docs/GPXPlaybackOut.md +42 -0
  61. spatialflow/_generated/docs/GPXRouteOut.md +40 -0
  62. spatialflow/_generated/docs/GPXSimulatorApi.md +883 -0
  63. spatialflow/_generated/docs/GeoJSONPoint.md +31 -0
  64. spatialflow/_generated/docs/GeofenceListResponse.md +31 -0
  65. spatialflow/_generated/docs/GeofenceResponse.md +43 -0
  66. spatialflow/_generated/docs/GeofenceStats.md +30 -0
  67. spatialflow/_generated/docs/GeofenceTestResult.md +33 -0
  68. spatialflow/_generated/docs/GeofencesApi.md +1524 -0
  69. spatialflow/_generated/docs/HealthCheckResponse.md +31 -0
  70. spatialflow/_generated/docs/HealthResponse.md +32 -0
  71. spatialflow/_generated/docs/ImportIntegrationSchema.md +32 -0
  72. spatialflow/_generated/docs/ImportResultSchema.md +33 -0
  73. spatialflow/_generated/docs/IntegrationDetailSchema.md +44 -0
  74. spatialflow/_generated/docs/IntegrationResponseSchema.md +42 -0
  75. spatialflow/_generated/docs/IntegrationStatsSchema.md +36 -0
  76. spatialflow/_generated/docs/IntegrationTypeListResponse.md +34 -0
  77. spatialflow/_generated/docs/IntegrationTypeRequest.md +40 -0
  78. spatialflow/_generated/docs/IntegrationTypeResponse.md +45 -0
  79. spatialflow/_generated/docs/IntegrationsApi.md +2008 -0
  80. spatialflow/_generated/docs/InvoiceLineItem.md +33 -0
  81. spatialflow/_generated/docs/InvoiceListResponse.md +31 -0
  82. spatialflow/_generated/docs/InvoiceResponse.md +40 -0
  83. spatialflow/_generated/docs/LocationBatchIn.md +31 -0
  84. spatialflow/_generated/docs/LocationImportResponse.md +41 -0
  85. spatialflow/_generated/docs/LocationIngestResponse.md +35 -0
  86. spatialflow/_generated/docs/LocationPointIn.md +38 -0
  87. spatialflow/_generated/docs/LocationUpdateIn.md +36 -0
  88. spatialflow/_generated/docs/LocationUpdateOut.md +32 -0
  89. spatialflow/_generated/docs/LoginResponse.md +33 -0
  90. spatialflow/_generated/docs/LoginSchema.md +30 -0
  91. spatialflow/_generated/docs/MemberActionResponse.md +33 -0
  92. spatialflow/_generated/docs/MemberSummary.md +36 -0
  93. spatialflow/_generated/docs/MethodEnum.md +17 -0
  94. spatialflow/_generated/docs/OAuthAuthorizeResponse.md +29 -0
  95. spatialflow/_generated/docs/OAuthCallbackQuery.md +32 -0
  96. spatialflow/_generated/docs/OAuthLinkResponse.md +31 -0
  97. spatialflow/_generated/docs/OAuthProvidersResponse.md +29 -0
  98. spatialflow/_generated/docs/OnboardingProgressResponse.md +37 -0
  99. spatialflow/_generated/docs/PaymentMethodResponse.md +37 -0
  100. spatialflow/_generated/docs/PingResponse.md +31 -0
  101. spatialflow/_generated/docs/PlanChangePreviewResponse.md +35 -0
  102. spatialflow/_generated/docs/PlanFeatures.md +36 -0
  103. spatialflow/_generated/docs/PlanLimits.md +34 -0
  104. spatialflow/_generated/docs/PlanResponse.md +37 -0
  105. spatialflow/_generated/docs/PortalSessionRequest.md +30 -0
  106. spatialflow/_generated/docs/PortalSessionResponse.md +30 -0
  107. spatialflow/_generated/docs/PresignedUrlRequest.md +31 -0
  108. spatialflow/_generated/docs/PresignedUrlResponse.md +35 -0
  109. spatialflow/_generated/docs/PrivacyErasureRequest.md +35 -0
  110. spatialflow/_generated/docs/PrivacyErasureResponse.md +36 -0
  111. spatialflow/_generated/docs/PublicApi.md +389 -0
  112. spatialflow/_generated/docs/PublicLocationIngestApi.md +249 -0
  113. spatialflow/_generated/docs/RateLimitResponse.md +32 -0
  114. spatialflow/_generated/docs/RecentActivity.md +31 -0
  115. spatialflow/_generated/docs/RefreshTokenSchema.md +29 -0
  116. spatialflow/_generated/docs/RegisterSchema.md +37 -0
  117. spatialflow/_generated/docs/ResendVerificationSchema.md +29 -0
  118. spatialflow/_generated/docs/ResetPasswordSchema.md +31 -0
  119. spatialflow/_generated/docs/RetryPolicyResponseSchema.md +32 -0
  120. spatialflow/_generated/docs/RetryPolicySchema.md +35 -0
  121. spatialflow/_generated/docs/RetryStrategyEnum.md +14 -0
  122. spatialflow/_generated/docs/SeedDataResponseSchema.md +31 -0
  123. spatialflow/_generated/docs/SendEmailRequest.md +33 -0
  124. spatialflow/_generated/docs/SetupIntentResponse.md +30 -0
  125. spatialflow/_generated/docs/SignupRequest.md +40 -0
  126. spatialflow/_generated/docs/StartPlaybackRequest.md +30 -0
  127. spatialflow/_generated/docs/StorageApi.md +494 -0
  128. spatialflow/_generated/docs/SubscriptionActionResponse.md +32 -0
  129. spatialflow/_generated/docs/SubscriptionResponse.md +36 -0
  130. spatialflow/_generated/docs/SubscriptionsApi.md +677 -0
  131. spatialflow/_generated/docs/SuccessResponse.md +31 -0
  132. spatialflow/_generated/docs/SystemApi.md +137 -0
  133. spatialflow/_generated/docs/TemplateOut.md +35 -0
  134. spatialflow/_generated/docs/TestEventRequest.md +29 -0
  135. spatialflow/_generated/docs/TestIntegrationResponseSchema.md +31 -0
  136. spatialflow/_generated/docs/TestPointRequest.md +34 -0
  137. spatialflow/_generated/docs/TestPointResponse.md +33 -0
  138. spatialflow/_generated/docs/TestWebhookRequest.md +32 -0
  139. spatialflow/_generated/docs/TestWorkflowIn.md +29 -0
  140. spatialflow/_generated/docs/TileMetadata.md +36 -0
  141. spatialflow/_generated/docs/TilesApi.md +462 -0
  142. spatialflow/_generated/docs/UnsubscribeRequest.md +29 -0
  143. spatialflow/_generated/docs/UnsubscribeResponse.md +31 -0
  144. spatialflow/_generated/docs/UpdateGeofenceRequest.md +37 -0
  145. spatialflow/_generated/docs/UpdateIntegrationSchema.md +33 -0
  146. spatialflow/_generated/docs/UpdateMemberRoleRequest.md +30 -0
  147. spatialflow/_generated/docs/UpdateOnboardingProgressRequest.md +30 -0
  148. spatialflow/_generated/docs/UpdateProfileRequest.md +45 -0
  149. spatialflow/_generated/docs/UpdateUserWorkspaceRequest.md +31 -0
  150. spatialflow/_generated/docs/UpdateWebhookRequest.md +43 -0
  151. spatialflow/_generated/docs/UploadGeofencesRequest.md +31 -0
  152. spatialflow/_generated/docs/UploadJobStatus.md +42 -0
  153. spatialflow/_generated/docs/UsageMetrics.md +33 -0
  154. spatialflow/_generated/docs/UsageResponse.md +36 -0
  155. spatialflow/_generated/docs/UsageStats.md +32 -0
  156. spatialflow/_generated/docs/UserActionResponse.md +35 -0
  157. spatialflow/_generated/docs/UserApprovalRequest.md +30 -0
  158. spatialflow/_generated/docs/UserInviteRequest.md +33 -0
  159. spatialflow/_generated/docs/UserInviteResponse.md +36 -0
  160. spatialflow/_generated/docs/UserListResponse.md +34 -0
  161. spatialflow/_generated/docs/UserProfileResponse.md +55 -0
  162. spatialflow/_generated/docs/UserRejectionRequest.md +30 -0
  163. spatialflow/_generated/docs/UserResponse.md +44 -0
  164. spatialflow/_generated/docs/UserSummary.md +41 -0
  165. spatialflow/_generated/docs/UserUsageResponse.md +38 -0
  166. spatialflow/_generated/docs/UserWorkspaceResponse.md +34 -0
  167. spatialflow/_generated/docs/WebhookDeliveryDetailResponse.md +49 -0
  168. spatialflow/_generated/docs/WebhookDeliveryListResponse.md +31 -0
  169. spatialflow/_generated/docs/WebhookDeliveryResponse.md +46 -0
  170. spatialflow/_generated/docs/WebhookListResponse.md +31 -0
  171. spatialflow/_generated/docs/WebhookMetricsResponse.md +31 -0
  172. spatialflow/_generated/docs/WebhookResponse.md +50 -0
  173. spatialflow/_generated/docs/WebhookTestResponse.md +36 -0
  174. spatialflow/_generated/docs/WebhooksApi.md +1384 -0
  175. spatialflow/_generated/docs/WorkflowImportSchema.md +30 -0
  176. spatialflow/_generated/docs/WorkflowIn.md +32 -0
  177. spatialflow/_generated/docs/WorkflowListOut.md +39 -0
  178. spatialflow/_generated/docs/WorkflowListResponse.md +32 -0
  179. spatialflow/_generated/docs/WorkflowOut.md +42 -0
  180. spatialflow/_generated/docs/WorkflowRetryPolicyUpdateSchema.md +32 -0
  181. spatialflow/_generated/docs/WorkflowStepRetrySchema.md +33 -0
  182. spatialflow/_generated/docs/WorkflowUpdate.md +33 -0
  183. spatialflow/_generated/docs/WorkflowsApi.md +2599 -0
  184. spatialflow/_generated/docs/WorkspaceDeleteResponse.md +33 -0
  185. spatialflow/_generated/docs/WorkspaceDetail.md +37 -0
  186. spatialflow/_generated/docs/WorkspaceDetailResponse.md +41 -0
  187. spatialflow/_generated/docs/WorkspaceIn.md +34 -0
  188. spatialflow/_generated/docs/WorkspaceListItem.md +39 -0
  189. spatialflow/_generated/docs/WorkspaceListResponse.md +34 -0
  190. spatialflow/_generated/docs/WorkspaceMembersResponse.md +35 -0
  191. spatialflow/_generated/docs/WorkspaceOut.md +38 -0
  192. spatialflow/_generated/docs/WorkspaceSummary.md +32 -0
  193. spatialflow/_generated/docs/WorkspaceUpdateRequest.md +34 -0
  194. spatialflow/_generated/docs/WorkspaceUpdateResponse.md +33 -0
  195. spatialflow/_generated/docs/WorkspacesApi.md +241 -0
  196. spatialflow/_generated/git_push.sh +57 -0
  197. spatialflow/_generated/pyproject.toml +91 -0
  198. spatialflow/_generated/requirements.txt +6 -0
  199. spatialflow/_generated/setup.cfg +2 -0
  200. spatialflow/_generated/setup.py +51 -0
  201. spatialflow/_generated/spatialflow_generated/__init__.py +216 -0
  202. spatialflow/_generated/spatialflow_generated/api/__init__.py +24 -0
  203. spatialflow/_generated/spatialflow_generated/api/account_api.py +5675 -0
  204. spatialflow/_generated/spatialflow_generated/api/admin_api.py +6173 -0
  205. spatialflow/_generated/spatialflow_generated/api/authentication_api.py +4753 -0
  206. spatialflow/_generated/spatialflow_generated/api/billing_api.py +3151 -0
  207. spatialflow/_generated/spatialflow_generated/api/default_api.py +2157 -0
  208. spatialflow/_generated/spatialflow_generated/api/devices_api.py +3965 -0
  209. spatialflow/_generated/spatialflow_generated/api/e2_e_test_api.py +1049 -0
  210. spatialflow/_generated/spatialflow_generated/api/email_api.py +1879 -0
  211. spatialflow/_generated/spatialflow_generated/api/geofences_api.py +4899 -0
  212. spatialflow/_generated/spatialflow_generated/api/gpx_simulator_api.py +2824 -0
  213. spatialflow/_generated/spatialflow_generated/api/integrations_api.py +6952 -0
  214. spatialflow/_generated/spatialflow_generated/api/public_api.py +1506 -0
  215. spatialflow/_generated/spatialflow_generated/api/public_location_ingest_api.py +845 -0
  216. spatialflow/_generated/spatialflow_generated/api/storage_api.py +1642 -0
  217. spatialflow/_generated/spatialflow_generated/api/subscriptions_api.py +2356 -0
  218. spatialflow/_generated/spatialflow_generated/api/system_api.py +529 -0
  219. spatialflow/_generated/spatialflow_generated/api/tiles_api.py +1626 -0
  220. spatialflow/_generated/spatialflow_generated/api/webhooks_api.py +4579 -0
  221. spatialflow/_generated/spatialflow_generated/api/workflows_api.py +8334 -0
  222. spatialflow/_generated/spatialflow_generated/api/workspaces_api.py +813 -0
  223. spatialflow/_generated/spatialflow_generated/api_client.py +800 -0
  224. spatialflow/_generated/spatialflow_generated/api_response.py +21 -0
  225. spatialflow/_generated/spatialflow_generated/configuration.py +599 -0
  226. spatialflow/_generated/spatialflow_generated/exceptions.py +199 -0
  227. spatialflow/_generated/spatialflow_generated/models/__init__.py +180 -0
  228. spatialflow/_generated/spatialflow_generated/models/action_delivery_success_metrics.py +96 -0
  229. spatialflow/_generated/spatialflow_generated/models/action_response.py +96 -0
  230. spatialflow/_generated/spatialflow_generated/models/action_retry_config_schema.py +114 -0
  231. spatialflow/_generated/spatialflow_generated/models/activity_summary.py +89 -0
  232. spatialflow/_generated/spatialflow_generated/models/api_key_create_request.py +95 -0
  233. spatialflow/_generated/spatialflow_generated/models/api_key_create_response.py +89 -0
  234. spatialflow/_generated/spatialflow_generated/models/api_key_response.py +109 -0
  235. spatialflow/_generated/spatialflow_generated/models/api_key_update_request.py +114 -0
  236. spatialflow/_generated/spatialflow_generated/models/api_usage_stats.py +98 -0
  237. spatialflow/_generated/spatialflow_generated/models/async_upload_geofences_response.py +93 -0
  238. spatialflow/_generated/spatialflow_generated/models/auth_type_enum.py +39 -0
  239. spatialflow/_generated/spatialflow_generated/models/batch_location_update_in.py +97 -0
  240. spatialflow/_generated/spatialflow_generated/models/bulk_geofence_request.py +95 -0
  241. spatialflow/_generated/spatialflow_generated/models/change_password_schema.py +89 -0
  242. spatialflow/_generated/spatialflow_generated/models/checkout_session_request.py +91 -0
  243. spatialflow/_generated/spatialflow_generated/models/checkout_session_response.py +89 -0
  244. spatialflow/_generated/spatialflow_generated/models/circuit_breaker_schema.py +94 -0
  245. spatialflow/_generated/spatialflow_generated/models/config_field_definition_request.py +134 -0
  246. spatialflow/_generated/spatialflow_generated/models/config_field_definition_response.py +138 -0
  247. spatialflow/_generated/spatialflow_generated/models/confirm_password_reset_schema.py +89 -0
  248. spatialflow/_generated/spatialflow_generated/models/create_from_template_in.py +94 -0
  249. spatialflow/_generated/spatialflow_generated/models/create_geofence_request.py +125 -0
  250. spatialflow/_generated/spatialflow_generated/models/create_integration_schema.py +106 -0
  251. spatialflow/_generated/spatialflow_generated/models/create_user_schema.py +99 -0
  252. spatialflow/_generated/spatialflow_generated/models/create_webhook_request.py +136 -0
  253. spatialflow/_generated/spatialflow_generated/models/dashboard_comparison_metrics.py +96 -0
  254. spatialflow/_generated/spatialflow_generated/models/dashboard_metrics_response.py +108 -0
  255. spatialflow/_generated/spatialflow_generated/models/delete_file_response.py +89 -0
  256. spatialflow/_generated/spatialflow_generated/models/delivery_status_enum.py +38 -0
  257. spatialflow/_generated/spatialflow_generated/models/device_in.py +98 -0
  258. spatialflow/_generated/spatialflow_generated/models/device_out.py +114 -0
  259. spatialflow/_generated/spatialflow_generated/models/email_health_response.py +92 -0
  260. spatialflow/_generated/spatialflow_generated/models/email_queue_stats.py +97 -0
  261. spatialflow/_generated/spatialflow_generated/models/email_stats.py +91 -0
  262. spatialflow/_generated/spatialflow_generated/models/email_status_response.py +112 -0
  263. spatialflow/_generated/spatialflow_generated/models/error_response.py +101 -0
  264. spatialflow/_generated/spatialflow_generated/models/execution_out.py +126 -0
  265. spatialflow/_generated/spatialflow_generated/models/export_integration_schema.py +97 -0
  266. spatialflow/_generated/spatialflow_generated/models/file_list_response.py +91 -0
  267. spatialflow/_generated/spatialflow_generated/models/forgot_password_schema.py +87 -0
  268. spatialflow/_generated/spatialflow_generated/models/geo_json_point.py +97 -0
  269. spatialflow/_generated/spatialflow_generated/models/geofence_list_response.py +97 -0
  270. spatialflow/_generated/spatialflow_generated/models/geofence_response.py +139 -0
  271. spatialflow/_generated/spatialflow_generated/models/geofence_stats.py +89 -0
  272. spatialflow/_generated/spatialflow_generated/models/geofence_test_result.py +98 -0
  273. spatialflow/_generated/spatialflow_generated/models/gpx_playback_out.py +128 -0
  274. spatialflow/_generated/spatialflow_generated/models/gpx_route_out.py +119 -0
  275. spatialflow/_generated/spatialflow_generated/models/health_check_response.py +91 -0
  276. spatialflow/_generated/spatialflow_generated/models/health_response.py +91 -0
  277. spatialflow/_generated/spatialflow_generated/models/import_integration_schema.py +100 -0
  278. spatialflow/_generated/spatialflow_generated/models/import_result_schema.py +103 -0
  279. spatialflow/_generated/spatialflow_generated/models/integration_detail_schema.py +125 -0
  280. spatialflow/_generated/spatialflow_generated/models/integration_response_schema.py +123 -0
  281. spatialflow/_generated/spatialflow_generated/models/integration_stats_schema.py +116 -0
  282. spatialflow/_generated/spatialflow_generated/models/integration_type_list_response.py +103 -0
  283. spatialflow/_generated/spatialflow_generated/models/integration_type_request.py +117 -0
  284. spatialflow/_generated/spatialflow_generated/models/integration_type_response.py +128 -0
  285. spatialflow/_generated/spatialflow_generated/models/invoice_line_item.py +93 -0
  286. spatialflow/_generated/spatialflow_generated/models/invoice_list_response.py +97 -0
  287. spatialflow/_generated/spatialflow_generated/models/invoice_response.py +120 -0
  288. spatialflow/_generated/spatialflow_generated/models/location_batch_in.py +102 -0
  289. spatialflow/_generated/spatialflow_generated/models/location_import_response.py +120 -0
  290. spatialflow/_generated/spatialflow_generated/models/location_ingest_response.py +117 -0
  291. spatialflow/_generated/spatialflow_generated/models/location_point_in.py +129 -0
  292. spatialflow/_generated/spatialflow_generated/models/location_update_in.py +132 -0
  293. spatialflow/_generated/spatialflow_generated/models/location_update_out.py +93 -0
  294. spatialflow/_generated/spatialflow_generated/models/login_response.py +95 -0
  295. spatialflow/_generated/spatialflow_generated/models/login_schema.py +89 -0
  296. spatialflow/_generated/spatialflow_generated/models/member_action_response.py +98 -0
  297. spatialflow/_generated/spatialflow_generated/models/member_summary.py +114 -0
  298. spatialflow/_generated/spatialflow_generated/models/method_enum.py +39 -0
  299. spatialflow/_generated/spatialflow_generated/models/o_auth_authorize_response.py +87 -0
  300. spatialflow/_generated/spatialflow_generated/models/o_auth_callback_query.py +103 -0
  301. spatialflow/_generated/spatialflow_generated/models/o_auth_link_response.py +91 -0
  302. spatialflow/_generated/spatialflow_generated/models/o_auth_providers_response.py +87 -0
  303. spatialflow/_generated/spatialflow_generated/models/onboarding_progress_response.py +112 -0
  304. spatialflow/_generated/spatialflow_generated/models/payment_method_response.py +116 -0
  305. spatialflow/_generated/spatialflow_generated/models/ping_response.py +91 -0
  306. spatialflow/_generated/spatialflow_generated/models/plan_change_preview_response.py +104 -0
  307. spatialflow/_generated/spatialflow_generated/models/plan_features.py +109 -0
  308. spatialflow/_generated/spatialflow_generated/models/plan_limits.py +95 -0
  309. spatialflow/_generated/spatialflow_generated/models/plan_response.py +114 -0
  310. spatialflow/_generated/spatialflow_generated/models/portal_session_request.py +87 -0
  311. spatialflow/_generated/spatialflow_generated/models/portal_session_response.py +87 -0
  312. spatialflow/_generated/spatialflow_generated/models/presigned_url_request.py +91 -0
  313. spatialflow/_generated/spatialflow_generated/models/presigned_url_response.py +99 -0
  314. spatialflow/_generated/spatialflow_generated/models/privacy_erasure_request.py +118 -0
  315. spatialflow/_generated/spatialflow_generated/models/privacy_erasure_response.py +110 -0
  316. spatialflow/_generated/spatialflow_generated/models/rate_limit_response.py +91 -0
  317. spatialflow/_generated/spatialflow_generated/models/recent_activity.py +91 -0
  318. spatialflow/_generated/spatialflow_generated/models/refresh_token_schema.py +87 -0
  319. spatialflow/_generated/spatialflow_generated/models/register_schema.py +133 -0
  320. spatialflow/_generated/spatialflow_generated/models/resend_verification_schema.py +87 -0
  321. spatialflow/_generated/spatialflow_generated/models/reset_password_schema.py +91 -0
  322. spatialflow/_generated/spatialflow_generated/models/retry_policy_response_schema.py +95 -0
  323. spatialflow/_generated/spatialflow_generated/models/retry_policy_schema.py +99 -0
  324. spatialflow/_generated/spatialflow_generated/models/retry_strategy_enum.py +38 -0
  325. spatialflow/_generated/spatialflow_generated/models/seed_data_response_schema.py +91 -0
  326. spatialflow/_generated/spatialflow_generated/models/send_email_request.py +100 -0
  327. spatialflow/_generated/spatialflow_generated/models/setup_intent_response.py +87 -0
  328. spatialflow/_generated/spatialflow_generated/models/signup_request.py +164 -0
  329. spatialflow/_generated/spatialflow_generated/models/start_playback_request.py +89 -0
  330. spatialflow/_generated/spatialflow_generated/models/subscription_action_response.py +100 -0
  331. spatialflow/_generated/spatialflow_generated/models/subscription_response.py +113 -0
  332. spatialflow/_generated/spatialflow_generated/models/success_response.py +94 -0
  333. spatialflow/_generated/spatialflow_generated/models/template_out.py +104 -0
  334. spatialflow/_generated/spatialflow_generated/models/test_event_request.py +92 -0
  335. spatialflow/_generated/spatialflow_generated/models/test_integration_response_schema.py +91 -0
  336. spatialflow/_generated/spatialflow_generated/models/test_point_request.py +125 -0
  337. spatialflow/_generated/spatialflow_generated/models/test_point_response.py +101 -0
  338. spatialflow/_generated/spatialflow_generated/models/test_webhook_request.py +106 -0
  339. spatialflow/_generated/spatialflow_generated/models/test_workflow_in.py +87 -0
  340. spatialflow/_generated/spatialflow_generated/models/tile_metadata.py +99 -0
  341. spatialflow/_generated/spatialflow_generated/models/unsubscribe_request.py +87 -0
  342. spatialflow/_generated/spatialflow_generated/models/unsubscribe_response.py +91 -0
  343. spatialflow/_generated/spatialflow_generated/models/update_geofence_request.py +142 -0
  344. spatialflow/_generated/spatialflow_generated/models/update_integration_schema.py +121 -0
  345. spatialflow/_generated/spatialflow_generated/models/update_member_role_request.py +87 -0
  346. spatialflow/_generated/spatialflow_generated/models/update_onboarding_progress_request.py +87 -0
  347. spatialflow/_generated/spatialflow_generated/models/update_profile_request.py +208 -0
  348. spatialflow/_generated/spatialflow_generated/models/update_user_workspace_request.py +89 -0
  349. spatialflow/_generated/spatialflow_generated/models/update_webhook_request.py +186 -0
  350. spatialflow/_generated/spatialflow_generated/models/upload_geofences_request.py +95 -0
  351. spatialflow/_generated/spatialflow_generated/models/upload_job_status.py +137 -0
  352. spatialflow/_generated/spatialflow_generated/models/usage_metrics.py +93 -0
  353. spatialflow/_generated/spatialflow_generated/models/usage_response.py +105 -0
  354. spatialflow/_generated/spatialflow_generated/models/usage_stats.py +91 -0
  355. spatialflow/_generated/spatialflow_generated/models/user_action_response.py +119 -0
  356. spatialflow/_generated/spatialflow_generated/models/user_approval_request.py +92 -0
  357. spatialflow/_generated/spatialflow_generated/models/user_invite_request.py +110 -0
  358. spatialflow/_generated/spatialflow_generated/models/user_invite_response.py +99 -0
  359. spatialflow/_generated/spatialflow_generated/models/user_list_response.py +110 -0
  360. spatialflow/_generated/spatialflow_generated/models/user_profile_response.py +158 -0
  361. spatialflow/_generated/spatialflow_generated/models/user_rejection_request.py +87 -0
  362. spatialflow/_generated/spatialflow_generated/models/user_response.py +142 -0
  363. spatialflow/_generated/spatialflow_generated/models/user_summary.py +140 -0
  364. spatialflow/_generated/spatialflow_generated/models/user_usage_response.py +152 -0
  365. spatialflow/_generated/spatialflow_generated/models/user_workspace_response.py +110 -0
  366. spatialflow/_generated/spatialflow_generated/models/webhook_delivery_detail_response.py +182 -0
  367. spatialflow/_generated/spatialflow_generated/models/webhook_delivery_list_response.py +97 -0
  368. spatialflow/_generated/spatialflow_generated/models/webhook_delivery_response.py +161 -0
  369. spatialflow/_generated/spatialflow_generated/models/webhook_list_response.py +97 -0
  370. spatialflow/_generated/spatialflow_generated/models/webhook_metrics_response.py +89 -0
  371. spatialflow/_generated/spatialflow_generated/models/webhook_response.py +148 -0
  372. spatialflow/_generated/spatialflow_generated/models/webhook_test_response.py +114 -0
  373. spatialflow/_generated/spatialflow_generated/models/workflow_import_schema.py +89 -0
  374. spatialflow/_generated/spatialflow_generated/models/workflow_in.py +98 -0
  375. spatialflow/_generated/spatialflow_generated/models/workflow_list_out.py +118 -0
  376. spatialflow/_generated/spatialflow_generated/models/workflow_list_response.py +101 -0
  377. spatialflow/_generated/spatialflow_generated/models/workflow_out.py +129 -0
  378. spatialflow/_generated/spatialflow_generated/models/workflow_retry_policy_update_schema.py +109 -0
  379. spatialflow/_generated/spatialflow_generated/models/workflow_step_retry_schema.py +103 -0
  380. spatialflow/_generated/spatialflow_generated/models/workflow_update.py +120 -0
  381. spatialflow/_generated/spatialflow_generated/models/workspace_delete_response.py +93 -0
  382. spatialflow/_generated/spatialflow_generated/models/workspace_detail.py +116 -0
  383. spatialflow/_generated/spatialflow_generated/models/workspace_detail_response.py +143 -0
  384. spatialflow/_generated/spatialflow_generated/models/workspace_in.py +122 -0
  385. spatialflow/_generated/spatialflow_generated/models/workspace_list_item.py +130 -0
  386. spatialflow/_generated/spatialflow_generated/models/workspace_list_response.py +103 -0
  387. spatialflow/_generated/spatialflow_generated/models/workspace_members_response.py +109 -0
  388. spatialflow/_generated/spatialflow_generated/models/workspace_out.py +132 -0
  389. spatialflow/_generated/spatialflow_generated/models/workspace_summary.py +91 -0
  390. spatialflow/_generated/spatialflow_generated/models/workspace_update_request.py +120 -0
  391. spatialflow/_generated/spatialflow_generated/models/workspace_update_response.py +93 -0
  392. spatialflow/_generated/spatialflow_generated/py.typed +0 -0
  393. spatialflow/_generated/spatialflow_generated/rest.py +215 -0
  394. spatialflow/_generated/test-requirements.txt +6 -0
  395. spatialflow/_generated/tox.ini +9 -0
  396. spatialflow/client.py +137 -0
  397. spatialflow/exceptions.py +234 -0
  398. spatialflow/jobs.py +204 -0
  399. spatialflow/pagination.py +142 -0
  400. spatialflow/uploads.py +166 -0
  401. spatialflow/webhooks.py +126 -0
  402. spatialflow-0.1.0.dist-info/METADATA +249 -0
  403. spatialflow-0.1.0.dist-info/RECORD +404 -0
  404. spatialflow-0.1.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,2157 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ SpatialFlow API
5
+
6
+ Real-time geospatial automation platform API. ## Authentication **API Key:** Include `X-API-Key` header **JWT Token:** Include `Authorization: Bearer <token>` header ## Rate Limits - Per API Key: 200 rps sustained, 1,000 rps burst - Per Organization: 1,000 rps aggregate ## Webhook Verification Outbound webhooks include HMAC-SHA256 signatures in `X-SF-Signature` header. ## Support - Documentation: https://docs.spatialflow.io - GitHub: https://github.com/spatialflow/spatialflow - Email: support@spatialflow.io
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ import warnings
15
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
16
+ from typing import Any, Dict, List, Optional, Tuple, Union
17
+ from typing_extensions import Annotated
18
+
19
+ from pydantic import StrictStr
20
+ from typing import Any, Dict, Optional
21
+ from ..models.o_auth_authorize_response import OAuthAuthorizeResponse
22
+ from ..models.o_auth_callback_query import OAuthCallbackQuery
23
+ from ..models.o_auth_link_response import OAuthLinkResponse
24
+ from ..models.o_auth_providers_response import OAuthProvidersResponse
25
+ from ..models.unsubscribe_request import UnsubscribeRequest
26
+ from ..models.unsubscribe_response import UnsubscribeResponse
27
+
28
+ from ..api_client import ApiClient, RequestSerialized
29
+ from ..api_response import ApiResponse
30
+ from ..rest import RESTResponseType
31
+
32
+
33
+ class DefaultApi:
34
+ """NOTE: This class is auto generated by OpenAPI Generator
35
+ Ref: https://openapi-generator.tech
36
+
37
+ Do not edit the class manually.
38
+ """
39
+
40
+ def __init__(self, api_client=None) -> None:
41
+ if api_client is None:
42
+ api_client = ApiClient.get_default()
43
+ self.api_client = api_client
44
+
45
+
46
+ @validate_call
47
+ async def apps_authentication_oauth_api_disconnect_oauth_account(
48
+ self,
49
+ provider: StrictStr,
50
+ _request_timeout: Union[
51
+ None,
52
+ Annotated[StrictFloat, Field(gt=0)],
53
+ Tuple[
54
+ Annotated[StrictFloat, Field(gt=0)],
55
+ Annotated[StrictFloat, Field(gt=0)]
56
+ ]
57
+ ] = None,
58
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
59
+ _content_type: Optional[StrictStr] = None,
60
+ _headers: Optional[Dict[StrictStr, Any]] = None,
61
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
62
+ ) -> Dict[str, object]:
63
+ """Disconnect Oauth Account
64
+
65
+ Disconnect an OAuth provider from user account.
66
+
67
+ :param provider: (required)
68
+ :type provider: str
69
+ :param _request_timeout: timeout setting for this request. If one
70
+ number provided, it will be total request
71
+ timeout. It can also be a pair (tuple) of
72
+ (connection, read) timeouts.
73
+ :type _request_timeout: int, tuple(int, int), optional
74
+ :param _request_auth: set to override the auth_settings for an a single
75
+ request; this effectively ignores the
76
+ authentication in the spec for a single request.
77
+ :type _request_auth: dict, optional
78
+ :param _content_type: force content-type for the request.
79
+ :type _content_type: str, Optional
80
+ :param _headers: set to override the headers for a single
81
+ request; this effectively ignores the headers
82
+ in the spec for a single request.
83
+ :type _headers: dict, optional
84
+ :param _host_index: set to override the host_index for a single
85
+ request; this effectively ignores the host_index
86
+ in the spec for a single request.
87
+ :type _host_index: int, optional
88
+ :return: Returns the result object.
89
+ """ # noqa: E501
90
+
91
+ _param = self._apps_authentication_oauth_api_disconnect_oauth_account_serialize(
92
+ provider=provider,
93
+ _request_auth=_request_auth,
94
+ _content_type=_content_type,
95
+ _headers=_headers,
96
+ _host_index=_host_index
97
+ )
98
+
99
+ _response_types_map: Dict[str, Optional[str]] = {
100
+ '200': "Dict[str, object]",
101
+ '400': "Dict[str, object]",
102
+ }
103
+ response_data = await self.api_client.call_api(
104
+ *_param,
105
+ _request_timeout=_request_timeout
106
+ )
107
+ await response_data.read()
108
+ return self.api_client.response_deserialize(
109
+ response_data=response_data,
110
+ response_types_map=_response_types_map,
111
+ ).data
112
+
113
+
114
+ @validate_call
115
+ async def apps_authentication_oauth_api_disconnect_oauth_account_with_http_info(
116
+ self,
117
+ provider: StrictStr,
118
+ _request_timeout: Union[
119
+ None,
120
+ Annotated[StrictFloat, Field(gt=0)],
121
+ Tuple[
122
+ Annotated[StrictFloat, Field(gt=0)],
123
+ Annotated[StrictFloat, Field(gt=0)]
124
+ ]
125
+ ] = None,
126
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
127
+ _content_type: Optional[StrictStr] = None,
128
+ _headers: Optional[Dict[StrictStr, Any]] = None,
129
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
130
+ ) -> ApiResponse[Dict[str, object]]:
131
+ """Disconnect Oauth Account
132
+
133
+ Disconnect an OAuth provider from user account.
134
+
135
+ :param provider: (required)
136
+ :type provider: str
137
+ :param _request_timeout: timeout setting for this request. If one
138
+ number provided, it will be total request
139
+ timeout. It can also be a pair (tuple) of
140
+ (connection, read) timeouts.
141
+ :type _request_timeout: int, tuple(int, int), optional
142
+ :param _request_auth: set to override the auth_settings for an a single
143
+ request; this effectively ignores the
144
+ authentication in the spec for a single request.
145
+ :type _request_auth: dict, optional
146
+ :param _content_type: force content-type for the request.
147
+ :type _content_type: str, Optional
148
+ :param _headers: set to override the headers for a single
149
+ request; this effectively ignores the headers
150
+ in the spec for a single request.
151
+ :type _headers: dict, optional
152
+ :param _host_index: set to override the host_index for a single
153
+ request; this effectively ignores the host_index
154
+ in the spec for a single request.
155
+ :type _host_index: int, optional
156
+ :return: Returns the result object.
157
+ """ # noqa: E501
158
+
159
+ _param = self._apps_authentication_oauth_api_disconnect_oauth_account_serialize(
160
+ provider=provider,
161
+ _request_auth=_request_auth,
162
+ _content_type=_content_type,
163
+ _headers=_headers,
164
+ _host_index=_host_index
165
+ )
166
+
167
+ _response_types_map: Dict[str, Optional[str]] = {
168
+ '200': "Dict[str, object]",
169
+ '400': "Dict[str, object]",
170
+ }
171
+ response_data = await self.api_client.call_api(
172
+ *_param,
173
+ _request_timeout=_request_timeout
174
+ )
175
+ await response_data.read()
176
+ return self.api_client.response_deserialize(
177
+ response_data=response_data,
178
+ response_types_map=_response_types_map,
179
+ )
180
+
181
+
182
+ @validate_call
183
+ async def apps_authentication_oauth_api_disconnect_oauth_account_without_preload_content(
184
+ self,
185
+ provider: StrictStr,
186
+ _request_timeout: Union[
187
+ None,
188
+ Annotated[StrictFloat, Field(gt=0)],
189
+ Tuple[
190
+ Annotated[StrictFloat, Field(gt=0)],
191
+ Annotated[StrictFloat, Field(gt=0)]
192
+ ]
193
+ ] = None,
194
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
195
+ _content_type: Optional[StrictStr] = None,
196
+ _headers: Optional[Dict[StrictStr, Any]] = None,
197
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
198
+ ) -> RESTResponseType:
199
+ """Disconnect Oauth Account
200
+
201
+ Disconnect an OAuth provider from user account.
202
+
203
+ :param provider: (required)
204
+ :type provider: str
205
+ :param _request_timeout: timeout setting for this request. If one
206
+ number provided, it will be total request
207
+ timeout. It can also be a pair (tuple) of
208
+ (connection, read) timeouts.
209
+ :type _request_timeout: int, tuple(int, int), optional
210
+ :param _request_auth: set to override the auth_settings for an a single
211
+ request; this effectively ignores the
212
+ authentication in the spec for a single request.
213
+ :type _request_auth: dict, optional
214
+ :param _content_type: force content-type for the request.
215
+ :type _content_type: str, Optional
216
+ :param _headers: set to override the headers for a single
217
+ request; this effectively ignores the headers
218
+ in the spec for a single request.
219
+ :type _headers: dict, optional
220
+ :param _host_index: set to override the host_index for a single
221
+ request; this effectively ignores the host_index
222
+ in the spec for a single request.
223
+ :type _host_index: int, optional
224
+ :return: Returns the result object.
225
+ """ # noqa: E501
226
+
227
+ _param = self._apps_authentication_oauth_api_disconnect_oauth_account_serialize(
228
+ provider=provider,
229
+ _request_auth=_request_auth,
230
+ _content_type=_content_type,
231
+ _headers=_headers,
232
+ _host_index=_host_index
233
+ )
234
+
235
+ _response_types_map: Dict[str, Optional[str]] = {
236
+ '200': "Dict[str, object]",
237
+ '400': "Dict[str, object]",
238
+ }
239
+ response_data = await self.api_client.call_api(
240
+ *_param,
241
+ _request_timeout=_request_timeout
242
+ )
243
+ return response_data.response
244
+
245
+
246
+ def _apps_authentication_oauth_api_disconnect_oauth_account_serialize(
247
+ self,
248
+ provider,
249
+ _request_auth,
250
+ _content_type,
251
+ _headers,
252
+ _host_index,
253
+ ) -> RequestSerialized:
254
+
255
+ _host = None
256
+
257
+ _collection_formats: Dict[str, str] = {
258
+ }
259
+
260
+ _path_params: Dict[str, str] = {}
261
+ _query_params: List[Tuple[str, str]] = []
262
+ _header_params: Dict[str, Optional[str]] = _headers or {}
263
+ _form_params: List[Tuple[str, str]] = []
264
+ _files: Dict[
265
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
266
+ ] = {}
267
+ _body_params: Optional[bytes] = None
268
+
269
+ # process the path parameters
270
+ if provider is not None:
271
+ _path_params['provider'] = provider
272
+ # process the query parameters
273
+ # process the header parameters
274
+ # process the form parameters
275
+ # process the body parameter
276
+
277
+
278
+ # set the HTTP header `Accept`
279
+ if 'Accept' not in _header_params:
280
+ _header_params['Accept'] = self.api_client.select_header_accept(
281
+ [
282
+ 'application/json'
283
+ ]
284
+ )
285
+
286
+
287
+ # authentication setting
288
+ _auth_settings: List[str] = [
289
+ 'JWTBearer'
290
+ ]
291
+
292
+ return self.api_client.param_serialize(
293
+ method='DELETE',
294
+ resource_path='/api/v1/auth/oauth/{provider}/disconnect',
295
+ path_params=_path_params,
296
+ query_params=_query_params,
297
+ header_params=_header_params,
298
+ body=_body_params,
299
+ post_params=_form_params,
300
+ files=_files,
301
+ auth_settings=_auth_settings,
302
+ collection_formats=_collection_formats,
303
+ _host=_host,
304
+ _request_auth=_request_auth
305
+ )
306
+
307
+
308
+
309
+
310
+ @validate_call
311
+ async def apps_authentication_oauth_api_get_linked_accounts(
312
+ self,
313
+ _request_timeout: Union[
314
+ None,
315
+ Annotated[StrictFloat, Field(gt=0)],
316
+ Tuple[
317
+ Annotated[StrictFloat, Field(gt=0)],
318
+ Annotated[StrictFloat, Field(gt=0)]
319
+ ]
320
+ ] = None,
321
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
322
+ _content_type: Optional[StrictStr] = None,
323
+ _headers: Optional[Dict[StrictStr, Any]] = None,
324
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
325
+ ) -> None:
326
+ """Get Linked Accounts
327
+
328
+ Get list of OAuth providers linked to user account.
329
+
330
+ :param _request_timeout: timeout setting for this request. If one
331
+ number provided, it will be total request
332
+ timeout. It can also be a pair (tuple) of
333
+ (connection, read) timeouts.
334
+ :type _request_timeout: int, tuple(int, int), optional
335
+ :param _request_auth: set to override the auth_settings for an a single
336
+ request; this effectively ignores the
337
+ authentication in the spec for a single request.
338
+ :type _request_auth: dict, optional
339
+ :param _content_type: force content-type for the request.
340
+ :type _content_type: str, Optional
341
+ :param _headers: set to override the headers for a single
342
+ request; this effectively ignores the headers
343
+ in the spec for a single request.
344
+ :type _headers: dict, optional
345
+ :param _host_index: set to override the host_index for a single
346
+ request; this effectively ignores the host_index
347
+ in the spec for a single request.
348
+ :type _host_index: int, optional
349
+ :return: Returns the result object.
350
+ """ # noqa: E501
351
+
352
+ _param = self._apps_authentication_oauth_api_get_linked_accounts_serialize(
353
+ _request_auth=_request_auth,
354
+ _content_type=_content_type,
355
+ _headers=_headers,
356
+ _host_index=_host_index
357
+ )
358
+
359
+ _response_types_map: Dict[str, Optional[str]] = {
360
+ '200': None,
361
+ }
362
+ response_data = await self.api_client.call_api(
363
+ *_param,
364
+ _request_timeout=_request_timeout
365
+ )
366
+ await response_data.read()
367
+ return self.api_client.response_deserialize(
368
+ response_data=response_data,
369
+ response_types_map=_response_types_map,
370
+ ).data
371
+
372
+
373
+ @validate_call
374
+ async def apps_authentication_oauth_api_get_linked_accounts_with_http_info(
375
+ self,
376
+ _request_timeout: Union[
377
+ None,
378
+ Annotated[StrictFloat, Field(gt=0)],
379
+ Tuple[
380
+ Annotated[StrictFloat, Field(gt=0)],
381
+ Annotated[StrictFloat, Field(gt=0)]
382
+ ]
383
+ ] = None,
384
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
385
+ _content_type: Optional[StrictStr] = None,
386
+ _headers: Optional[Dict[StrictStr, Any]] = None,
387
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
388
+ ) -> ApiResponse[None]:
389
+ """Get Linked Accounts
390
+
391
+ Get list of OAuth providers linked to user account.
392
+
393
+ :param _request_timeout: timeout setting for this request. If one
394
+ number provided, it will be total request
395
+ timeout. It can also be a pair (tuple) of
396
+ (connection, read) timeouts.
397
+ :type _request_timeout: int, tuple(int, int), optional
398
+ :param _request_auth: set to override the auth_settings for an a single
399
+ request; this effectively ignores the
400
+ authentication in the spec for a single request.
401
+ :type _request_auth: dict, optional
402
+ :param _content_type: force content-type for the request.
403
+ :type _content_type: str, Optional
404
+ :param _headers: set to override the headers for a single
405
+ request; this effectively ignores the headers
406
+ in the spec for a single request.
407
+ :type _headers: dict, optional
408
+ :param _host_index: set to override the host_index for a single
409
+ request; this effectively ignores the host_index
410
+ in the spec for a single request.
411
+ :type _host_index: int, optional
412
+ :return: Returns the result object.
413
+ """ # noqa: E501
414
+
415
+ _param = self._apps_authentication_oauth_api_get_linked_accounts_serialize(
416
+ _request_auth=_request_auth,
417
+ _content_type=_content_type,
418
+ _headers=_headers,
419
+ _host_index=_host_index
420
+ )
421
+
422
+ _response_types_map: Dict[str, Optional[str]] = {
423
+ '200': None,
424
+ }
425
+ response_data = await self.api_client.call_api(
426
+ *_param,
427
+ _request_timeout=_request_timeout
428
+ )
429
+ await response_data.read()
430
+ return self.api_client.response_deserialize(
431
+ response_data=response_data,
432
+ response_types_map=_response_types_map,
433
+ )
434
+
435
+
436
+ @validate_call
437
+ async def apps_authentication_oauth_api_get_linked_accounts_without_preload_content(
438
+ self,
439
+ _request_timeout: Union[
440
+ None,
441
+ Annotated[StrictFloat, Field(gt=0)],
442
+ Tuple[
443
+ Annotated[StrictFloat, Field(gt=0)],
444
+ Annotated[StrictFloat, Field(gt=0)]
445
+ ]
446
+ ] = None,
447
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
448
+ _content_type: Optional[StrictStr] = None,
449
+ _headers: Optional[Dict[StrictStr, Any]] = None,
450
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
451
+ ) -> RESTResponseType:
452
+ """Get Linked Accounts
453
+
454
+ Get list of OAuth providers linked to user account.
455
+
456
+ :param _request_timeout: timeout setting for this request. If one
457
+ number provided, it will be total request
458
+ timeout. It can also be a pair (tuple) of
459
+ (connection, read) timeouts.
460
+ :type _request_timeout: int, tuple(int, int), optional
461
+ :param _request_auth: set to override the auth_settings for an a single
462
+ request; this effectively ignores the
463
+ authentication in the spec for a single request.
464
+ :type _request_auth: dict, optional
465
+ :param _content_type: force content-type for the request.
466
+ :type _content_type: str, Optional
467
+ :param _headers: set to override the headers for a single
468
+ request; this effectively ignores the headers
469
+ in the spec for a single request.
470
+ :type _headers: dict, optional
471
+ :param _host_index: set to override the host_index for a single
472
+ request; this effectively ignores the host_index
473
+ in the spec for a single request.
474
+ :type _host_index: int, optional
475
+ :return: Returns the result object.
476
+ """ # noqa: E501
477
+
478
+ _param = self._apps_authentication_oauth_api_get_linked_accounts_serialize(
479
+ _request_auth=_request_auth,
480
+ _content_type=_content_type,
481
+ _headers=_headers,
482
+ _host_index=_host_index
483
+ )
484
+
485
+ _response_types_map: Dict[str, Optional[str]] = {
486
+ '200': None,
487
+ }
488
+ response_data = await self.api_client.call_api(
489
+ *_param,
490
+ _request_timeout=_request_timeout
491
+ )
492
+ return response_data.response
493
+
494
+
495
+ def _apps_authentication_oauth_api_get_linked_accounts_serialize(
496
+ self,
497
+ _request_auth,
498
+ _content_type,
499
+ _headers,
500
+ _host_index,
501
+ ) -> RequestSerialized:
502
+
503
+ _host = None
504
+
505
+ _collection_formats: Dict[str, str] = {
506
+ }
507
+
508
+ _path_params: Dict[str, str] = {}
509
+ _query_params: List[Tuple[str, str]] = []
510
+ _header_params: Dict[str, Optional[str]] = _headers or {}
511
+ _form_params: List[Tuple[str, str]] = []
512
+ _files: Dict[
513
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
514
+ ] = {}
515
+ _body_params: Optional[bytes] = None
516
+
517
+ # process the path parameters
518
+ # process the query parameters
519
+ # process the header parameters
520
+ # process the form parameters
521
+ # process the body parameter
522
+
523
+
524
+
525
+
526
+ # authentication setting
527
+ _auth_settings: List[str] = [
528
+ 'JWTBearer'
529
+ ]
530
+
531
+ return self.api_client.param_serialize(
532
+ method='GET',
533
+ resource_path='/api/v1/auth/oauth/user/linked-accounts',
534
+ path_params=_path_params,
535
+ query_params=_query_params,
536
+ header_params=_header_params,
537
+ body=_body_params,
538
+ post_params=_form_params,
539
+ files=_files,
540
+ auth_settings=_auth_settings,
541
+ collection_formats=_collection_formats,
542
+ _host=_host,
543
+ _request_auth=_request_auth
544
+ )
545
+
546
+
547
+
548
+
549
+ @validate_call
550
+ async def apps_authentication_oauth_api_get_oauth_providers(
551
+ self,
552
+ _request_timeout: Union[
553
+ None,
554
+ Annotated[StrictFloat, Field(gt=0)],
555
+ Tuple[
556
+ Annotated[StrictFloat, Field(gt=0)],
557
+ Annotated[StrictFloat, Field(gt=0)]
558
+ ]
559
+ ] = None,
560
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
561
+ _content_type: Optional[StrictStr] = None,
562
+ _headers: Optional[Dict[StrictStr, Any]] = None,
563
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
564
+ ) -> OAuthProvidersResponse:
565
+ """Get Oauth Providers
566
+
567
+ Get list of available OAuth providers
568
+
569
+ :param _request_timeout: timeout setting for this request. If one
570
+ number provided, it will be total request
571
+ timeout. It can also be a pair (tuple) of
572
+ (connection, read) timeouts.
573
+ :type _request_timeout: int, tuple(int, int), optional
574
+ :param _request_auth: set to override the auth_settings for an a single
575
+ request; this effectively ignores the
576
+ authentication in the spec for a single request.
577
+ :type _request_auth: dict, optional
578
+ :param _content_type: force content-type for the request.
579
+ :type _content_type: str, Optional
580
+ :param _headers: set to override the headers for a single
581
+ request; this effectively ignores the headers
582
+ in the spec for a single request.
583
+ :type _headers: dict, optional
584
+ :param _host_index: set to override the host_index for a single
585
+ request; this effectively ignores the host_index
586
+ in the spec for a single request.
587
+ :type _host_index: int, optional
588
+ :return: Returns the result object.
589
+ """ # noqa: E501
590
+
591
+ _param = self._apps_authentication_oauth_api_get_oauth_providers_serialize(
592
+ _request_auth=_request_auth,
593
+ _content_type=_content_type,
594
+ _headers=_headers,
595
+ _host_index=_host_index
596
+ )
597
+
598
+ _response_types_map: Dict[str, Optional[str]] = {
599
+ '200': "OAuthProvidersResponse",
600
+ }
601
+ response_data = await self.api_client.call_api(
602
+ *_param,
603
+ _request_timeout=_request_timeout
604
+ )
605
+ await response_data.read()
606
+ return self.api_client.response_deserialize(
607
+ response_data=response_data,
608
+ response_types_map=_response_types_map,
609
+ ).data
610
+
611
+
612
+ @validate_call
613
+ async def apps_authentication_oauth_api_get_oauth_providers_with_http_info(
614
+ self,
615
+ _request_timeout: Union[
616
+ None,
617
+ Annotated[StrictFloat, Field(gt=0)],
618
+ Tuple[
619
+ Annotated[StrictFloat, Field(gt=0)],
620
+ Annotated[StrictFloat, Field(gt=0)]
621
+ ]
622
+ ] = None,
623
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
624
+ _content_type: Optional[StrictStr] = None,
625
+ _headers: Optional[Dict[StrictStr, Any]] = None,
626
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
627
+ ) -> ApiResponse[OAuthProvidersResponse]:
628
+ """Get Oauth Providers
629
+
630
+ Get list of available OAuth providers
631
+
632
+ :param _request_timeout: timeout setting for this request. If one
633
+ number provided, it will be total request
634
+ timeout. It can also be a pair (tuple) of
635
+ (connection, read) timeouts.
636
+ :type _request_timeout: int, tuple(int, int), optional
637
+ :param _request_auth: set to override the auth_settings for an a single
638
+ request; this effectively ignores the
639
+ authentication in the spec for a single request.
640
+ :type _request_auth: dict, optional
641
+ :param _content_type: force content-type for the request.
642
+ :type _content_type: str, Optional
643
+ :param _headers: set to override the headers for a single
644
+ request; this effectively ignores the headers
645
+ in the spec for a single request.
646
+ :type _headers: dict, optional
647
+ :param _host_index: set to override the host_index for a single
648
+ request; this effectively ignores the host_index
649
+ in the spec for a single request.
650
+ :type _host_index: int, optional
651
+ :return: Returns the result object.
652
+ """ # noqa: E501
653
+
654
+ _param = self._apps_authentication_oauth_api_get_oauth_providers_serialize(
655
+ _request_auth=_request_auth,
656
+ _content_type=_content_type,
657
+ _headers=_headers,
658
+ _host_index=_host_index
659
+ )
660
+
661
+ _response_types_map: Dict[str, Optional[str]] = {
662
+ '200': "OAuthProvidersResponse",
663
+ }
664
+ response_data = await self.api_client.call_api(
665
+ *_param,
666
+ _request_timeout=_request_timeout
667
+ )
668
+ await response_data.read()
669
+ return self.api_client.response_deserialize(
670
+ response_data=response_data,
671
+ response_types_map=_response_types_map,
672
+ )
673
+
674
+
675
+ @validate_call
676
+ async def apps_authentication_oauth_api_get_oauth_providers_without_preload_content(
677
+ self,
678
+ _request_timeout: Union[
679
+ None,
680
+ Annotated[StrictFloat, Field(gt=0)],
681
+ Tuple[
682
+ Annotated[StrictFloat, Field(gt=0)],
683
+ Annotated[StrictFloat, Field(gt=0)]
684
+ ]
685
+ ] = None,
686
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
687
+ _content_type: Optional[StrictStr] = None,
688
+ _headers: Optional[Dict[StrictStr, Any]] = None,
689
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
690
+ ) -> RESTResponseType:
691
+ """Get Oauth Providers
692
+
693
+ Get list of available OAuth providers
694
+
695
+ :param _request_timeout: timeout setting for this request. If one
696
+ number provided, it will be total request
697
+ timeout. It can also be a pair (tuple) of
698
+ (connection, read) timeouts.
699
+ :type _request_timeout: int, tuple(int, int), optional
700
+ :param _request_auth: set to override the auth_settings for an a single
701
+ request; this effectively ignores the
702
+ authentication in the spec for a single request.
703
+ :type _request_auth: dict, optional
704
+ :param _content_type: force content-type for the request.
705
+ :type _content_type: str, Optional
706
+ :param _headers: set to override the headers for a single
707
+ request; this effectively ignores the headers
708
+ in the spec for a single request.
709
+ :type _headers: dict, optional
710
+ :param _host_index: set to override the host_index for a single
711
+ request; this effectively ignores the host_index
712
+ in the spec for a single request.
713
+ :type _host_index: int, optional
714
+ :return: Returns the result object.
715
+ """ # noqa: E501
716
+
717
+ _param = self._apps_authentication_oauth_api_get_oauth_providers_serialize(
718
+ _request_auth=_request_auth,
719
+ _content_type=_content_type,
720
+ _headers=_headers,
721
+ _host_index=_host_index
722
+ )
723
+
724
+ _response_types_map: Dict[str, Optional[str]] = {
725
+ '200': "OAuthProvidersResponse",
726
+ }
727
+ response_data = await self.api_client.call_api(
728
+ *_param,
729
+ _request_timeout=_request_timeout
730
+ )
731
+ return response_data.response
732
+
733
+
734
+ def _apps_authentication_oauth_api_get_oauth_providers_serialize(
735
+ self,
736
+ _request_auth,
737
+ _content_type,
738
+ _headers,
739
+ _host_index,
740
+ ) -> RequestSerialized:
741
+
742
+ _host = None
743
+
744
+ _collection_formats: Dict[str, str] = {
745
+ }
746
+
747
+ _path_params: Dict[str, str] = {}
748
+ _query_params: List[Tuple[str, str]] = []
749
+ _header_params: Dict[str, Optional[str]] = _headers or {}
750
+ _form_params: List[Tuple[str, str]] = []
751
+ _files: Dict[
752
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
753
+ ] = {}
754
+ _body_params: Optional[bytes] = None
755
+
756
+ # process the path parameters
757
+ # process the query parameters
758
+ # process the header parameters
759
+ # process the form parameters
760
+ # process the body parameter
761
+
762
+
763
+ # set the HTTP header `Accept`
764
+ if 'Accept' not in _header_params:
765
+ _header_params['Accept'] = self.api_client.select_header_accept(
766
+ [
767
+ 'application/json'
768
+ ]
769
+ )
770
+
771
+
772
+ # authentication setting
773
+ _auth_settings: List[str] = [
774
+ ]
775
+
776
+ return self.api_client.param_serialize(
777
+ method='GET',
778
+ resource_path='/api/v1/auth/oauth/providers',
779
+ path_params=_path_params,
780
+ query_params=_query_params,
781
+ header_params=_header_params,
782
+ body=_body_params,
783
+ post_params=_form_params,
784
+ files=_files,
785
+ auth_settings=_auth_settings,
786
+ collection_formats=_collection_formats,
787
+ _host=_host,
788
+ _request_auth=_request_auth
789
+ )
790
+
791
+
792
+
793
+
794
+ @validate_call
795
+ async def apps_authentication_oauth_api_link_oauth_account(
796
+ self,
797
+ provider: StrictStr,
798
+ _request_timeout: Union[
799
+ None,
800
+ Annotated[StrictFloat, Field(gt=0)],
801
+ Tuple[
802
+ Annotated[StrictFloat, Field(gt=0)],
803
+ Annotated[StrictFloat, Field(gt=0)]
804
+ ]
805
+ ] = None,
806
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
807
+ _content_type: Optional[StrictStr] = None,
808
+ _headers: Optional[Dict[StrictStr, Any]] = None,
809
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
810
+ ) -> OAuthLinkResponse:
811
+ """Link Oauth Account
812
+
813
+ Link an OAuth provider to an existing authenticated user account.
814
+
815
+ :param provider: (required)
816
+ :type provider: str
817
+ :param _request_timeout: timeout setting for this request. If one
818
+ number provided, it will be total request
819
+ timeout. It can also be a pair (tuple) of
820
+ (connection, read) timeouts.
821
+ :type _request_timeout: int, tuple(int, int), optional
822
+ :param _request_auth: set to override the auth_settings for an a single
823
+ request; this effectively ignores the
824
+ authentication in the spec for a single request.
825
+ :type _request_auth: dict, optional
826
+ :param _content_type: force content-type for the request.
827
+ :type _content_type: str, Optional
828
+ :param _headers: set to override the headers for a single
829
+ request; this effectively ignores the headers
830
+ in the spec for a single request.
831
+ :type _headers: dict, optional
832
+ :param _host_index: set to override the host_index for a single
833
+ request; this effectively ignores the host_index
834
+ in the spec for a single request.
835
+ :type _host_index: int, optional
836
+ :return: Returns the result object.
837
+ """ # noqa: E501
838
+
839
+ _param = self._apps_authentication_oauth_api_link_oauth_account_serialize(
840
+ provider=provider,
841
+ _request_auth=_request_auth,
842
+ _content_type=_content_type,
843
+ _headers=_headers,
844
+ _host_index=_host_index
845
+ )
846
+
847
+ _response_types_map: Dict[str, Optional[str]] = {
848
+ '200': "OAuthLinkResponse",
849
+ '400': "Dict[str, object]",
850
+ }
851
+ response_data = await self.api_client.call_api(
852
+ *_param,
853
+ _request_timeout=_request_timeout
854
+ )
855
+ await response_data.read()
856
+ return self.api_client.response_deserialize(
857
+ response_data=response_data,
858
+ response_types_map=_response_types_map,
859
+ ).data
860
+
861
+
862
+ @validate_call
863
+ async def apps_authentication_oauth_api_link_oauth_account_with_http_info(
864
+ self,
865
+ provider: StrictStr,
866
+ _request_timeout: Union[
867
+ None,
868
+ Annotated[StrictFloat, Field(gt=0)],
869
+ Tuple[
870
+ Annotated[StrictFloat, Field(gt=0)],
871
+ Annotated[StrictFloat, Field(gt=0)]
872
+ ]
873
+ ] = None,
874
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
875
+ _content_type: Optional[StrictStr] = None,
876
+ _headers: Optional[Dict[StrictStr, Any]] = None,
877
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
878
+ ) -> ApiResponse[OAuthLinkResponse]:
879
+ """Link Oauth Account
880
+
881
+ Link an OAuth provider to an existing authenticated user account.
882
+
883
+ :param provider: (required)
884
+ :type provider: str
885
+ :param _request_timeout: timeout setting for this request. If one
886
+ number provided, it will be total request
887
+ timeout. It can also be a pair (tuple) of
888
+ (connection, read) timeouts.
889
+ :type _request_timeout: int, tuple(int, int), optional
890
+ :param _request_auth: set to override the auth_settings for an a single
891
+ request; this effectively ignores the
892
+ authentication in the spec for a single request.
893
+ :type _request_auth: dict, optional
894
+ :param _content_type: force content-type for the request.
895
+ :type _content_type: str, Optional
896
+ :param _headers: set to override the headers for a single
897
+ request; this effectively ignores the headers
898
+ in the spec for a single request.
899
+ :type _headers: dict, optional
900
+ :param _host_index: set to override the host_index for a single
901
+ request; this effectively ignores the host_index
902
+ in the spec for a single request.
903
+ :type _host_index: int, optional
904
+ :return: Returns the result object.
905
+ """ # noqa: E501
906
+
907
+ _param = self._apps_authentication_oauth_api_link_oauth_account_serialize(
908
+ provider=provider,
909
+ _request_auth=_request_auth,
910
+ _content_type=_content_type,
911
+ _headers=_headers,
912
+ _host_index=_host_index
913
+ )
914
+
915
+ _response_types_map: Dict[str, Optional[str]] = {
916
+ '200': "OAuthLinkResponse",
917
+ '400': "Dict[str, object]",
918
+ }
919
+ response_data = await self.api_client.call_api(
920
+ *_param,
921
+ _request_timeout=_request_timeout
922
+ )
923
+ await response_data.read()
924
+ return self.api_client.response_deserialize(
925
+ response_data=response_data,
926
+ response_types_map=_response_types_map,
927
+ )
928
+
929
+
930
+ @validate_call
931
+ async def apps_authentication_oauth_api_link_oauth_account_without_preload_content(
932
+ self,
933
+ provider: StrictStr,
934
+ _request_timeout: Union[
935
+ None,
936
+ Annotated[StrictFloat, Field(gt=0)],
937
+ Tuple[
938
+ Annotated[StrictFloat, Field(gt=0)],
939
+ Annotated[StrictFloat, Field(gt=0)]
940
+ ]
941
+ ] = None,
942
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
943
+ _content_type: Optional[StrictStr] = None,
944
+ _headers: Optional[Dict[StrictStr, Any]] = None,
945
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
946
+ ) -> RESTResponseType:
947
+ """Link Oauth Account
948
+
949
+ Link an OAuth provider to an existing authenticated user account.
950
+
951
+ :param provider: (required)
952
+ :type provider: str
953
+ :param _request_timeout: timeout setting for this request. If one
954
+ number provided, it will be total request
955
+ timeout. It can also be a pair (tuple) of
956
+ (connection, read) timeouts.
957
+ :type _request_timeout: int, tuple(int, int), optional
958
+ :param _request_auth: set to override the auth_settings for an a single
959
+ request; this effectively ignores the
960
+ authentication in the spec for a single request.
961
+ :type _request_auth: dict, optional
962
+ :param _content_type: force content-type for the request.
963
+ :type _content_type: str, Optional
964
+ :param _headers: set to override the headers for a single
965
+ request; this effectively ignores the headers
966
+ in the spec for a single request.
967
+ :type _headers: dict, optional
968
+ :param _host_index: set to override the host_index for a single
969
+ request; this effectively ignores the host_index
970
+ in the spec for a single request.
971
+ :type _host_index: int, optional
972
+ :return: Returns the result object.
973
+ """ # noqa: E501
974
+
975
+ _param = self._apps_authentication_oauth_api_link_oauth_account_serialize(
976
+ provider=provider,
977
+ _request_auth=_request_auth,
978
+ _content_type=_content_type,
979
+ _headers=_headers,
980
+ _host_index=_host_index
981
+ )
982
+
983
+ _response_types_map: Dict[str, Optional[str]] = {
984
+ '200': "OAuthLinkResponse",
985
+ '400': "Dict[str, object]",
986
+ }
987
+ response_data = await self.api_client.call_api(
988
+ *_param,
989
+ _request_timeout=_request_timeout
990
+ )
991
+ return response_data.response
992
+
993
+
994
+ def _apps_authentication_oauth_api_link_oauth_account_serialize(
995
+ self,
996
+ provider,
997
+ _request_auth,
998
+ _content_type,
999
+ _headers,
1000
+ _host_index,
1001
+ ) -> RequestSerialized:
1002
+
1003
+ _host = None
1004
+
1005
+ _collection_formats: Dict[str, str] = {
1006
+ }
1007
+
1008
+ _path_params: Dict[str, str] = {}
1009
+ _query_params: List[Tuple[str, str]] = []
1010
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1011
+ _form_params: List[Tuple[str, str]] = []
1012
+ _files: Dict[
1013
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1014
+ ] = {}
1015
+ _body_params: Optional[bytes] = None
1016
+
1017
+ # process the path parameters
1018
+ if provider is not None:
1019
+ _path_params['provider'] = provider
1020
+ # process the query parameters
1021
+ # process the header parameters
1022
+ # process the form parameters
1023
+ # process the body parameter
1024
+
1025
+
1026
+ # set the HTTP header `Accept`
1027
+ if 'Accept' not in _header_params:
1028
+ _header_params['Accept'] = self.api_client.select_header_accept(
1029
+ [
1030
+ 'application/json'
1031
+ ]
1032
+ )
1033
+
1034
+
1035
+ # authentication setting
1036
+ _auth_settings: List[str] = [
1037
+ 'JWTBearer'
1038
+ ]
1039
+
1040
+ return self.api_client.param_serialize(
1041
+ method='POST',
1042
+ resource_path='/api/v1/auth/oauth/{provider}/link',
1043
+ path_params=_path_params,
1044
+ query_params=_query_params,
1045
+ header_params=_header_params,
1046
+ body=_body_params,
1047
+ post_params=_form_params,
1048
+ files=_files,
1049
+ auth_settings=_auth_settings,
1050
+ collection_formats=_collection_formats,
1051
+ _host=_host,
1052
+ _request_auth=_request_auth
1053
+ )
1054
+
1055
+
1056
+
1057
+
1058
+ @validate_call
1059
+ async def apps_authentication_oauth_api_oauth_authorize(
1060
+ self,
1061
+ provider: StrictStr,
1062
+ next: Optional[StrictStr] = None,
1063
+ _request_timeout: Union[
1064
+ None,
1065
+ Annotated[StrictFloat, Field(gt=0)],
1066
+ Tuple[
1067
+ Annotated[StrictFloat, Field(gt=0)],
1068
+ Annotated[StrictFloat, Field(gt=0)]
1069
+ ]
1070
+ ] = None,
1071
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1072
+ _content_type: Optional[StrictStr] = None,
1073
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1074
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1075
+ ) -> OAuthAuthorizeResponse:
1076
+ """Oauth Authorize
1077
+
1078
+ Initialize OAuth flow for a provider. Returns authorization URL to redirect user to.
1079
+
1080
+ :param provider: (required)
1081
+ :type provider: str
1082
+ :param next:
1083
+ :type next: str
1084
+ :param _request_timeout: timeout setting for this request. If one
1085
+ number provided, it will be total request
1086
+ timeout. It can also be a pair (tuple) of
1087
+ (connection, read) timeouts.
1088
+ :type _request_timeout: int, tuple(int, int), optional
1089
+ :param _request_auth: set to override the auth_settings for an a single
1090
+ request; this effectively ignores the
1091
+ authentication in the spec for a single request.
1092
+ :type _request_auth: dict, optional
1093
+ :param _content_type: force content-type for the request.
1094
+ :type _content_type: str, Optional
1095
+ :param _headers: set to override the headers for a single
1096
+ request; this effectively ignores the headers
1097
+ in the spec for a single request.
1098
+ :type _headers: dict, optional
1099
+ :param _host_index: set to override the host_index for a single
1100
+ request; this effectively ignores the host_index
1101
+ in the spec for a single request.
1102
+ :type _host_index: int, optional
1103
+ :return: Returns the result object.
1104
+ """ # noqa: E501
1105
+
1106
+ _param = self._apps_authentication_oauth_api_oauth_authorize_serialize(
1107
+ provider=provider,
1108
+ next=next,
1109
+ _request_auth=_request_auth,
1110
+ _content_type=_content_type,
1111
+ _headers=_headers,
1112
+ _host_index=_host_index
1113
+ )
1114
+
1115
+ _response_types_map: Dict[str, Optional[str]] = {
1116
+ '200': "OAuthAuthorizeResponse",
1117
+ '400': "Dict[str, object]",
1118
+ }
1119
+ response_data = await self.api_client.call_api(
1120
+ *_param,
1121
+ _request_timeout=_request_timeout
1122
+ )
1123
+ await response_data.read()
1124
+ return self.api_client.response_deserialize(
1125
+ response_data=response_data,
1126
+ response_types_map=_response_types_map,
1127
+ ).data
1128
+
1129
+
1130
+ @validate_call
1131
+ async def apps_authentication_oauth_api_oauth_authorize_with_http_info(
1132
+ self,
1133
+ provider: StrictStr,
1134
+ next: Optional[StrictStr] = None,
1135
+ _request_timeout: Union[
1136
+ None,
1137
+ Annotated[StrictFloat, Field(gt=0)],
1138
+ Tuple[
1139
+ Annotated[StrictFloat, Field(gt=0)],
1140
+ Annotated[StrictFloat, Field(gt=0)]
1141
+ ]
1142
+ ] = None,
1143
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1144
+ _content_type: Optional[StrictStr] = None,
1145
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1146
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1147
+ ) -> ApiResponse[OAuthAuthorizeResponse]:
1148
+ """Oauth Authorize
1149
+
1150
+ Initialize OAuth flow for a provider. Returns authorization URL to redirect user to.
1151
+
1152
+ :param provider: (required)
1153
+ :type provider: str
1154
+ :param next:
1155
+ :type next: str
1156
+ :param _request_timeout: timeout setting for this request. If one
1157
+ number provided, it will be total request
1158
+ timeout. It can also be a pair (tuple) of
1159
+ (connection, read) timeouts.
1160
+ :type _request_timeout: int, tuple(int, int), optional
1161
+ :param _request_auth: set to override the auth_settings for an a single
1162
+ request; this effectively ignores the
1163
+ authentication in the spec for a single request.
1164
+ :type _request_auth: dict, optional
1165
+ :param _content_type: force content-type for the request.
1166
+ :type _content_type: str, Optional
1167
+ :param _headers: set to override the headers for a single
1168
+ request; this effectively ignores the headers
1169
+ in the spec for a single request.
1170
+ :type _headers: dict, optional
1171
+ :param _host_index: set to override the host_index for a single
1172
+ request; this effectively ignores the host_index
1173
+ in the spec for a single request.
1174
+ :type _host_index: int, optional
1175
+ :return: Returns the result object.
1176
+ """ # noqa: E501
1177
+
1178
+ _param = self._apps_authentication_oauth_api_oauth_authorize_serialize(
1179
+ provider=provider,
1180
+ next=next,
1181
+ _request_auth=_request_auth,
1182
+ _content_type=_content_type,
1183
+ _headers=_headers,
1184
+ _host_index=_host_index
1185
+ )
1186
+
1187
+ _response_types_map: Dict[str, Optional[str]] = {
1188
+ '200': "OAuthAuthorizeResponse",
1189
+ '400': "Dict[str, object]",
1190
+ }
1191
+ response_data = await self.api_client.call_api(
1192
+ *_param,
1193
+ _request_timeout=_request_timeout
1194
+ )
1195
+ await response_data.read()
1196
+ return self.api_client.response_deserialize(
1197
+ response_data=response_data,
1198
+ response_types_map=_response_types_map,
1199
+ )
1200
+
1201
+
1202
+ @validate_call
1203
+ async def apps_authentication_oauth_api_oauth_authorize_without_preload_content(
1204
+ self,
1205
+ provider: StrictStr,
1206
+ next: Optional[StrictStr] = None,
1207
+ _request_timeout: Union[
1208
+ None,
1209
+ Annotated[StrictFloat, Field(gt=0)],
1210
+ Tuple[
1211
+ Annotated[StrictFloat, Field(gt=0)],
1212
+ Annotated[StrictFloat, Field(gt=0)]
1213
+ ]
1214
+ ] = None,
1215
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1216
+ _content_type: Optional[StrictStr] = None,
1217
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1218
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1219
+ ) -> RESTResponseType:
1220
+ """Oauth Authorize
1221
+
1222
+ Initialize OAuth flow for a provider. Returns authorization URL to redirect user to.
1223
+
1224
+ :param provider: (required)
1225
+ :type provider: str
1226
+ :param next:
1227
+ :type next: str
1228
+ :param _request_timeout: timeout setting for this request. If one
1229
+ number provided, it will be total request
1230
+ timeout. It can also be a pair (tuple) of
1231
+ (connection, read) timeouts.
1232
+ :type _request_timeout: int, tuple(int, int), optional
1233
+ :param _request_auth: set to override the auth_settings for an a single
1234
+ request; this effectively ignores the
1235
+ authentication in the spec for a single request.
1236
+ :type _request_auth: dict, optional
1237
+ :param _content_type: force content-type for the request.
1238
+ :type _content_type: str, Optional
1239
+ :param _headers: set to override the headers for a single
1240
+ request; this effectively ignores the headers
1241
+ in the spec for a single request.
1242
+ :type _headers: dict, optional
1243
+ :param _host_index: set to override the host_index for a single
1244
+ request; this effectively ignores the host_index
1245
+ in the spec for a single request.
1246
+ :type _host_index: int, optional
1247
+ :return: Returns the result object.
1248
+ """ # noqa: E501
1249
+
1250
+ _param = self._apps_authentication_oauth_api_oauth_authorize_serialize(
1251
+ provider=provider,
1252
+ next=next,
1253
+ _request_auth=_request_auth,
1254
+ _content_type=_content_type,
1255
+ _headers=_headers,
1256
+ _host_index=_host_index
1257
+ )
1258
+
1259
+ _response_types_map: Dict[str, Optional[str]] = {
1260
+ '200': "OAuthAuthorizeResponse",
1261
+ '400': "Dict[str, object]",
1262
+ }
1263
+ response_data = await self.api_client.call_api(
1264
+ *_param,
1265
+ _request_timeout=_request_timeout
1266
+ )
1267
+ return response_data.response
1268
+
1269
+
1270
+ def _apps_authentication_oauth_api_oauth_authorize_serialize(
1271
+ self,
1272
+ provider,
1273
+ next,
1274
+ _request_auth,
1275
+ _content_type,
1276
+ _headers,
1277
+ _host_index,
1278
+ ) -> RequestSerialized:
1279
+
1280
+ _host = None
1281
+
1282
+ _collection_formats: Dict[str, str] = {
1283
+ }
1284
+
1285
+ _path_params: Dict[str, str] = {}
1286
+ _query_params: List[Tuple[str, str]] = []
1287
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1288
+ _form_params: List[Tuple[str, str]] = []
1289
+ _files: Dict[
1290
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1291
+ ] = {}
1292
+ _body_params: Optional[bytes] = None
1293
+
1294
+ # process the path parameters
1295
+ if provider is not None:
1296
+ _path_params['provider'] = provider
1297
+ # process the query parameters
1298
+ if next is not None:
1299
+
1300
+ _query_params.append(('next', next))
1301
+
1302
+ # process the header parameters
1303
+ # process the form parameters
1304
+ # process the body parameter
1305
+
1306
+
1307
+ # set the HTTP header `Accept`
1308
+ if 'Accept' not in _header_params:
1309
+ _header_params['Accept'] = self.api_client.select_header_accept(
1310
+ [
1311
+ 'application/json'
1312
+ ]
1313
+ )
1314
+
1315
+
1316
+ # authentication setting
1317
+ _auth_settings: List[str] = [
1318
+ ]
1319
+
1320
+ return self.api_client.param_serialize(
1321
+ method='GET',
1322
+ resource_path='/api/v1/auth/oauth/{provider}/authorize',
1323
+ path_params=_path_params,
1324
+ query_params=_query_params,
1325
+ header_params=_header_params,
1326
+ body=_body_params,
1327
+ post_params=_form_params,
1328
+ files=_files,
1329
+ auth_settings=_auth_settings,
1330
+ collection_formats=_collection_formats,
1331
+ _host=_host,
1332
+ _request_auth=_request_auth
1333
+ )
1334
+
1335
+
1336
+
1337
+
1338
+ @validate_call
1339
+ async def apps_authentication_oauth_api_oauth_callback(
1340
+ self,
1341
+ provider: StrictStr,
1342
+ o_auth_callback_query: OAuthCallbackQuery,
1343
+ _request_timeout: Union[
1344
+ None,
1345
+ Annotated[StrictFloat, Field(gt=0)],
1346
+ Tuple[
1347
+ Annotated[StrictFloat, Field(gt=0)],
1348
+ Annotated[StrictFloat, Field(gt=0)]
1349
+ ]
1350
+ ] = None,
1351
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1352
+ _content_type: Optional[StrictStr] = None,
1353
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1354
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1355
+ ) -> None:
1356
+ """Oauth Callback
1357
+
1358
+ Handle OAuth callback from provider. Exchanges code for tokens and creates/links user account.
1359
+
1360
+ :param provider: (required)
1361
+ :type provider: str
1362
+ :param o_auth_callback_query: (required)
1363
+ :type o_auth_callback_query: OAuthCallbackQuery
1364
+ :param _request_timeout: timeout setting for this request. If one
1365
+ number provided, it will be total request
1366
+ timeout. It can also be a pair (tuple) of
1367
+ (connection, read) timeouts.
1368
+ :type _request_timeout: int, tuple(int, int), optional
1369
+ :param _request_auth: set to override the auth_settings for an a single
1370
+ request; this effectively ignores the
1371
+ authentication in the spec for a single request.
1372
+ :type _request_auth: dict, optional
1373
+ :param _content_type: force content-type for the request.
1374
+ :type _content_type: str, Optional
1375
+ :param _headers: set to override the headers for a single
1376
+ request; this effectively ignores the headers
1377
+ in the spec for a single request.
1378
+ :type _headers: dict, optional
1379
+ :param _host_index: set to override the host_index for a single
1380
+ request; this effectively ignores the host_index
1381
+ in the spec for a single request.
1382
+ :type _host_index: int, optional
1383
+ :return: Returns the result object.
1384
+ """ # noqa: E501
1385
+
1386
+ _param = self._apps_authentication_oauth_api_oauth_callback_serialize(
1387
+ provider=provider,
1388
+ o_auth_callback_query=o_auth_callback_query,
1389
+ _request_auth=_request_auth,
1390
+ _content_type=_content_type,
1391
+ _headers=_headers,
1392
+ _host_index=_host_index
1393
+ )
1394
+
1395
+ _response_types_map: Dict[str, Optional[str]] = {
1396
+ '200': None,
1397
+ }
1398
+ response_data = await self.api_client.call_api(
1399
+ *_param,
1400
+ _request_timeout=_request_timeout
1401
+ )
1402
+ await response_data.read()
1403
+ return self.api_client.response_deserialize(
1404
+ response_data=response_data,
1405
+ response_types_map=_response_types_map,
1406
+ ).data
1407
+
1408
+
1409
+ @validate_call
1410
+ async def apps_authentication_oauth_api_oauth_callback_with_http_info(
1411
+ self,
1412
+ provider: StrictStr,
1413
+ o_auth_callback_query: OAuthCallbackQuery,
1414
+ _request_timeout: Union[
1415
+ None,
1416
+ Annotated[StrictFloat, Field(gt=0)],
1417
+ Tuple[
1418
+ Annotated[StrictFloat, Field(gt=0)],
1419
+ Annotated[StrictFloat, Field(gt=0)]
1420
+ ]
1421
+ ] = None,
1422
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1423
+ _content_type: Optional[StrictStr] = None,
1424
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1425
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1426
+ ) -> ApiResponse[None]:
1427
+ """Oauth Callback
1428
+
1429
+ Handle OAuth callback from provider. Exchanges code for tokens and creates/links user account.
1430
+
1431
+ :param provider: (required)
1432
+ :type provider: str
1433
+ :param o_auth_callback_query: (required)
1434
+ :type o_auth_callback_query: OAuthCallbackQuery
1435
+ :param _request_timeout: timeout setting for this request. If one
1436
+ number provided, it will be total request
1437
+ timeout. It can also be a pair (tuple) of
1438
+ (connection, read) timeouts.
1439
+ :type _request_timeout: int, tuple(int, int), optional
1440
+ :param _request_auth: set to override the auth_settings for an a single
1441
+ request; this effectively ignores the
1442
+ authentication in the spec for a single request.
1443
+ :type _request_auth: dict, optional
1444
+ :param _content_type: force content-type for the request.
1445
+ :type _content_type: str, Optional
1446
+ :param _headers: set to override the headers for a single
1447
+ request; this effectively ignores the headers
1448
+ in the spec for a single request.
1449
+ :type _headers: dict, optional
1450
+ :param _host_index: set to override the host_index for a single
1451
+ request; this effectively ignores the host_index
1452
+ in the spec for a single request.
1453
+ :type _host_index: int, optional
1454
+ :return: Returns the result object.
1455
+ """ # noqa: E501
1456
+
1457
+ _param = self._apps_authentication_oauth_api_oauth_callback_serialize(
1458
+ provider=provider,
1459
+ o_auth_callback_query=o_auth_callback_query,
1460
+ _request_auth=_request_auth,
1461
+ _content_type=_content_type,
1462
+ _headers=_headers,
1463
+ _host_index=_host_index
1464
+ )
1465
+
1466
+ _response_types_map: Dict[str, Optional[str]] = {
1467
+ '200': None,
1468
+ }
1469
+ response_data = await self.api_client.call_api(
1470
+ *_param,
1471
+ _request_timeout=_request_timeout
1472
+ )
1473
+ await response_data.read()
1474
+ return self.api_client.response_deserialize(
1475
+ response_data=response_data,
1476
+ response_types_map=_response_types_map,
1477
+ )
1478
+
1479
+
1480
+ @validate_call
1481
+ async def apps_authentication_oauth_api_oauth_callback_without_preload_content(
1482
+ self,
1483
+ provider: StrictStr,
1484
+ o_auth_callback_query: OAuthCallbackQuery,
1485
+ _request_timeout: Union[
1486
+ None,
1487
+ Annotated[StrictFloat, Field(gt=0)],
1488
+ Tuple[
1489
+ Annotated[StrictFloat, Field(gt=0)],
1490
+ Annotated[StrictFloat, Field(gt=0)]
1491
+ ]
1492
+ ] = None,
1493
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1494
+ _content_type: Optional[StrictStr] = None,
1495
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1496
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1497
+ ) -> RESTResponseType:
1498
+ """Oauth Callback
1499
+
1500
+ Handle OAuth callback from provider. Exchanges code for tokens and creates/links user account.
1501
+
1502
+ :param provider: (required)
1503
+ :type provider: str
1504
+ :param o_auth_callback_query: (required)
1505
+ :type o_auth_callback_query: OAuthCallbackQuery
1506
+ :param _request_timeout: timeout setting for this request. If one
1507
+ number provided, it will be total request
1508
+ timeout. It can also be a pair (tuple) of
1509
+ (connection, read) timeouts.
1510
+ :type _request_timeout: int, tuple(int, int), optional
1511
+ :param _request_auth: set to override the auth_settings for an a single
1512
+ request; this effectively ignores the
1513
+ authentication in the spec for a single request.
1514
+ :type _request_auth: dict, optional
1515
+ :param _content_type: force content-type for the request.
1516
+ :type _content_type: str, Optional
1517
+ :param _headers: set to override the headers for a single
1518
+ request; this effectively ignores the headers
1519
+ in the spec for a single request.
1520
+ :type _headers: dict, optional
1521
+ :param _host_index: set to override the host_index for a single
1522
+ request; this effectively ignores the host_index
1523
+ in the spec for a single request.
1524
+ :type _host_index: int, optional
1525
+ :return: Returns the result object.
1526
+ """ # noqa: E501
1527
+
1528
+ _param = self._apps_authentication_oauth_api_oauth_callback_serialize(
1529
+ provider=provider,
1530
+ o_auth_callback_query=o_auth_callback_query,
1531
+ _request_auth=_request_auth,
1532
+ _content_type=_content_type,
1533
+ _headers=_headers,
1534
+ _host_index=_host_index
1535
+ )
1536
+
1537
+ _response_types_map: Dict[str, Optional[str]] = {
1538
+ '200': None,
1539
+ }
1540
+ response_data = await self.api_client.call_api(
1541
+ *_param,
1542
+ _request_timeout=_request_timeout
1543
+ )
1544
+ return response_data.response
1545
+
1546
+
1547
+ def _apps_authentication_oauth_api_oauth_callback_serialize(
1548
+ self,
1549
+ provider,
1550
+ o_auth_callback_query,
1551
+ _request_auth,
1552
+ _content_type,
1553
+ _headers,
1554
+ _host_index,
1555
+ ) -> RequestSerialized:
1556
+
1557
+ _host = None
1558
+
1559
+ _collection_formats: Dict[str, str] = {
1560
+ }
1561
+
1562
+ _path_params: Dict[str, str] = {}
1563
+ _query_params: List[Tuple[str, str]] = []
1564
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1565
+ _form_params: List[Tuple[str, str]] = []
1566
+ _files: Dict[
1567
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1568
+ ] = {}
1569
+ _body_params: Optional[bytes] = None
1570
+
1571
+ # process the path parameters
1572
+ if provider is not None:
1573
+ _path_params['provider'] = provider
1574
+ # process the query parameters
1575
+ # process the header parameters
1576
+ # process the form parameters
1577
+ # process the body parameter
1578
+ if o_auth_callback_query is not None:
1579
+ _body_params = o_auth_callback_query
1580
+
1581
+
1582
+
1583
+ # set the HTTP header `Content-Type`
1584
+ if _content_type:
1585
+ _header_params['Content-Type'] = _content_type
1586
+ else:
1587
+ _default_content_type = (
1588
+ self.api_client.select_header_content_type(
1589
+ [
1590
+ 'application/json'
1591
+ ]
1592
+ )
1593
+ )
1594
+ if _default_content_type is not None:
1595
+ _header_params['Content-Type'] = _default_content_type
1596
+
1597
+ # authentication setting
1598
+ _auth_settings: List[str] = [
1599
+ ]
1600
+
1601
+ return self.api_client.param_serialize(
1602
+ method='GET',
1603
+ resource_path='/api/v1/auth/oauth/{provider}/callback',
1604
+ path_params=_path_params,
1605
+ query_params=_query_params,
1606
+ header_params=_header_params,
1607
+ body=_body_params,
1608
+ post_params=_form_params,
1609
+ files=_files,
1610
+ auth_settings=_auth_settings,
1611
+ collection_formats=_collection_formats,
1612
+ _host=_host,
1613
+ _request_auth=_request_auth
1614
+ )
1615
+
1616
+
1617
+
1618
+
1619
+ @validate_call
1620
+ async def apps_email_unsubscribe_unsubscribe(
1621
+ self,
1622
+ unsubscribe_request: UnsubscribeRequest,
1623
+ _request_timeout: Union[
1624
+ None,
1625
+ Annotated[StrictFloat, Field(gt=0)],
1626
+ Tuple[
1627
+ Annotated[StrictFloat, Field(gt=0)],
1628
+ Annotated[StrictFloat, Field(gt=0)]
1629
+ ]
1630
+ ] = None,
1631
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1632
+ _content_type: Optional[StrictStr] = None,
1633
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1634
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1635
+ ) -> UnsubscribeResponse:
1636
+ """Unsubscribe
1637
+
1638
+ Handle email unsubscribe requests. Verifies the signed timestamped token (max 90 days old) and adds the email to the blacklist. This endpoint is public (no authentication required) to allow one-click unsubscribe from emails. Rate limited to 10 requests per minute per IP to prevent abuse.
1639
+
1640
+ :param unsubscribe_request: (required)
1641
+ :type unsubscribe_request: UnsubscribeRequest
1642
+ :param _request_timeout: timeout setting for this request. If one
1643
+ number provided, it will be total request
1644
+ timeout. It can also be a pair (tuple) of
1645
+ (connection, read) timeouts.
1646
+ :type _request_timeout: int, tuple(int, int), optional
1647
+ :param _request_auth: set to override the auth_settings for an a single
1648
+ request; this effectively ignores the
1649
+ authentication in the spec for a single request.
1650
+ :type _request_auth: dict, optional
1651
+ :param _content_type: force content-type for the request.
1652
+ :type _content_type: str, Optional
1653
+ :param _headers: set to override the headers for a single
1654
+ request; this effectively ignores the headers
1655
+ in the spec for a single request.
1656
+ :type _headers: dict, optional
1657
+ :param _host_index: set to override the host_index for a single
1658
+ request; this effectively ignores the host_index
1659
+ in the spec for a single request.
1660
+ :type _host_index: int, optional
1661
+ :return: Returns the result object.
1662
+ """ # noqa: E501
1663
+
1664
+ _param = self._apps_email_unsubscribe_unsubscribe_serialize(
1665
+ unsubscribe_request=unsubscribe_request,
1666
+ _request_auth=_request_auth,
1667
+ _content_type=_content_type,
1668
+ _headers=_headers,
1669
+ _host_index=_host_index
1670
+ )
1671
+
1672
+ _response_types_map: Dict[str, Optional[str]] = {
1673
+ '200': "UnsubscribeResponse",
1674
+ '400': "Dict[str, object]",
1675
+ }
1676
+ response_data = await self.api_client.call_api(
1677
+ *_param,
1678
+ _request_timeout=_request_timeout
1679
+ )
1680
+ await response_data.read()
1681
+ return self.api_client.response_deserialize(
1682
+ response_data=response_data,
1683
+ response_types_map=_response_types_map,
1684
+ ).data
1685
+
1686
+
1687
+ @validate_call
1688
+ async def apps_email_unsubscribe_unsubscribe_with_http_info(
1689
+ self,
1690
+ unsubscribe_request: UnsubscribeRequest,
1691
+ _request_timeout: Union[
1692
+ None,
1693
+ Annotated[StrictFloat, Field(gt=0)],
1694
+ Tuple[
1695
+ Annotated[StrictFloat, Field(gt=0)],
1696
+ Annotated[StrictFloat, Field(gt=0)]
1697
+ ]
1698
+ ] = None,
1699
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1700
+ _content_type: Optional[StrictStr] = None,
1701
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1702
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1703
+ ) -> ApiResponse[UnsubscribeResponse]:
1704
+ """Unsubscribe
1705
+
1706
+ Handle email unsubscribe requests. Verifies the signed timestamped token (max 90 days old) and adds the email to the blacklist. This endpoint is public (no authentication required) to allow one-click unsubscribe from emails. Rate limited to 10 requests per minute per IP to prevent abuse.
1707
+
1708
+ :param unsubscribe_request: (required)
1709
+ :type unsubscribe_request: UnsubscribeRequest
1710
+ :param _request_timeout: timeout setting for this request. If one
1711
+ number provided, it will be total request
1712
+ timeout. It can also be a pair (tuple) of
1713
+ (connection, read) timeouts.
1714
+ :type _request_timeout: int, tuple(int, int), optional
1715
+ :param _request_auth: set to override the auth_settings for an a single
1716
+ request; this effectively ignores the
1717
+ authentication in the spec for a single request.
1718
+ :type _request_auth: dict, optional
1719
+ :param _content_type: force content-type for the request.
1720
+ :type _content_type: str, Optional
1721
+ :param _headers: set to override the headers for a single
1722
+ request; this effectively ignores the headers
1723
+ in the spec for a single request.
1724
+ :type _headers: dict, optional
1725
+ :param _host_index: set to override the host_index for a single
1726
+ request; this effectively ignores the host_index
1727
+ in the spec for a single request.
1728
+ :type _host_index: int, optional
1729
+ :return: Returns the result object.
1730
+ """ # noqa: E501
1731
+
1732
+ _param = self._apps_email_unsubscribe_unsubscribe_serialize(
1733
+ unsubscribe_request=unsubscribe_request,
1734
+ _request_auth=_request_auth,
1735
+ _content_type=_content_type,
1736
+ _headers=_headers,
1737
+ _host_index=_host_index
1738
+ )
1739
+
1740
+ _response_types_map: Dict[str, Optional[str]] = {
1741
+ '200': "UnsubscribeResponse",
1742
+ '400': "Dict[str, object]",
1743
+ }
1744
+ response_data = await self.api_client.call_api(
1745
+ *_param,
1746
+ _request_timeout=_request_timeout
1747
+ )
1748
+ await response_data.read()
1749
+ return self.api_client.response_deserialize(
1750
+ response_data=response_data,
1751
+ response_types_map=_response_types_map,
1752
+ )
1753
+
1754
+
1755
+ @validate_call
1756
+ async def apps_email_unsubscribe_unsubscribe_without_preload_content(
1757
+ self,
1758
+ unsubscribe_request: UnsubscribeRequest,
1759
+ _request_timeout: Union[
1760
+ None,
1761
+ Annotated[StrictFloat, Field(gt=0)],
1762
+ Tuple[
1763
+ Annotated[StrictFloat, Field(gt=0)],
1764
+ Annotated[StrictFloat, Field(gt=0)]
1765
+ ]
1766
+ ] = None,
1767
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1768
+ _content_type: Optional[StrictStr] = None,
1769
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1770
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1771
+ ) -> RESTResponseType:
1772
+ """Unsubscribe
1773
+
1774
+ Handle email unsubscribe requests. Verifies the signed timestamped token (max 90 days old) and adds the email to the blacklist. This endpoint is public (no authentication required) to allow one-click unsubscribe from emails. Rate limited to 10 requests per minute per IP to prevent abuse.
1775
+
1776
+ :param unsubscribe_request: (required)
1777
+ :type unsubscribe_request: UnsubscribeRequest
1778
+ :param _request_timeout: timeout setting for this request. If one
1779
+ number provided, it will be total request
1780
+ timeout. It can also be a pair (tuple) of
1781
+ (connection, read) timeouts.
1782
+ :type _request_timeout: int, tuple(int, int), optional
1783
+ :param _request_auth: set to override the auth_settings for an a single
1784
+ request; this effectively ignores the
1785
+ authentication in the spec for a single request.
1786
+ :type _request_auth: dict, optional
1787
+ :param _content_type: force content-type for the request.
1788
+ :type _content_type: str, Optional
1789
+ :param _headers: set to override the headers for a single
1790
+ request; this effectively ignores the headers
1791
+ in the spec for a single request.
1792
+ :type _headers: dict, optional
1793
+ :param _host_index: set to override the host_index for a single
1794
+ request; this effectively ignores the host_index
1795
+ in the spec for a single request.
1796
+ :type _host_index: int, optional
1797
+ :return: Returns the result object.
1798
+ """ # noqa: E501
1799
+
1800
+ _param = self._apps_email_unsubscribe_unsubscribe_serialize(
1801
+ unsubscribe_request=unsubscribe_request,
1802
+ _request_auth=_request_auth,
1803
+ _content_type=_content_type,
1804
+ _headers=_headers,
1805
+ _host_index=_host_index
1806
+ )
1807
+
1808
+ _response_types_map: Dict[str, Optional[str]] = {
1809
+ '200': "UnsubscribeResponse",
1810
+ '400': "Dict[str, object]",
1811
+ }
1812
+ response_data = await self.api_client.call_api(
1813
+ *_param,
1814
+ _request_timeout=_request_timeout
1815
+ )
1816
+ return response_data.response
1817
+
1818
+
1819
+ def _apps_email_unsubscribe_unsubscribe_serialize(
1820
+ self,
1821
+ unsubscribe_request,
1822
+ _request_auth,
1823
+ _content_type,
1824
+ _headers,
1825
+ _host_index,
1826
+ ) -> RequestSerialized:
1827
+
1828
+ _host = None
1829
+
1830
+ _collection_formats: Dict[str, str] = {
1831
+ }
1832
+
1833
+ _path_params: Dict[str, str] = {}
1834
+ _query_params: List[Tuple[str, str]] = []
1835
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1836
+ _form_params: List[Tuple[str, str]] = []
1837
+ _files: Dict[
1838
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1839
+ ] = {}
1840
+ _body_params: Optional[bytes] = None
1841
+
1842
+ # process the path parameters
1843
+ # process the query parameters
1844
+ # process the header parameters
1845
+ # process the form parameters
1846
+ # process the body parameter
1847
+ if unsubscribe_request is not None:
1848
+ _body_params = unsubscribe_request
1849
+
1850
+
1851
+ # set the HTTP header `Accept`
1852
+ if 'Accept' not in _header_params:
1853
+ _header_params['Accept'] = self.api_client.select_header_accept(
1854
+ [
1855
+ 'application/json'
1856
+ ]
1857
+ )
1858
+
1859
+ # set the HTTP header `Content-Type`
1860
+ if _content_type:
1861
+ _header_params['Content-Type'] = _content_type
1862
+ else:
1863
+ _default_content_type = (
1864
+ self.api_client.select_header_content_type(
1865
+ [
1866
+ 'application/json'
1867
+ ]
1868
+ )
1869
+ )
1870
+ if _default_content_type is not None:
1871
+ _header_params['Content-Type'] = _default_content_type
1872
+
1873
+ # authentication setting
1874
+ _auth_settings: List[str] = [
1875
+ ]
1876
+
1877
+ return self.api_client.param_serialize(
1878
+ method='POST',
1879
+ resource_path='/api/v1/email/unsubscribe',
1880
+ path_params=_path_params,
1881
+ query_params=_query_params,
1882
+ header_params=_header_params,
1883
+ body=_body_params,
1884
+ post_params=_form_params,
1885
+ files=_files,
1886
+ auth_settings=_auth_settings,
1887
+ collection_formats=_collection_formats,
1888
+ _host=_host,
1889
+ _request_auth=_request_auth
1890
+ )
1891
+
1892
+
1893
+
1894
+
1895
+ @validate_call
1896
+ async def apps_email_unsubscribe_verify_unsubscribe_token(
1897
+ self,
1898
+ token: StrictStr,
1899
+ _request_timeout: Union[
1900
+ None,
1901
+ Annotated[StrictFloat, Field(gt=0)],
1902
+ Tuple[
1903
+ Annotated[StrictFloat, Field(gt=0)],
1904
+ Annotated[StrictFloat, Field(gt=0)]
1905
+ ]
1906
+ ] = None,
1907
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1908
+ _content_type: Optional[StrictStr] = None,
1909
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1910
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1911
+ ) -> Dict[str, object]:
1912
+ """Verify Unsubscribe Token
1913
+
1914
+ Verify an unsubscribe token without actually unsubscribing. This can be used by the frontend to show a confirmation page before the user confirms they want to unsubscribe.
1915
+
1916
+ :param token: (required)
1917
+ :type token: str
1918
+ :param _request_timeout: timeout setting for this request. If one
1919
+ number provided, it will be total request
1920
+ timeout. It can also be a pair (tuple) of
1921
+ (connection, read) timeouts.
1922
+ :type _request_timeout: int, tuple(int, int), optional
1923
+ :param _request_auth: set to override the auth_settings for an a single
1924
+ request; this effectively ignores the
1925
+ authentication in the spec for a single request.
1926
+ :type _request_auth: dict, optional
1927
+ :param _content_type: force content-type for the request.
1928
+ :type _content_type: str, Optional
1929
+ :param _headers: set to override the headers for a single
1930
+ request; this effectively ignores the headers
1931
+ in the spec for a single request.
1932
+ :type _headers: dict, optional
1933
+ :param _host_index: set to override the host_index for a single
1934
+ request; this effectively ignores the host_index
1935
+ in the spec for a single request.
1936
+ :type _host_index: int, optional
1937
+ :return: Returns the result object.
1938
+ """ # noqa: E501
1939
+
1940
+ _param = self._apps_email_unsubscribe_verify_unsubscribe_token_serialize(
1941
+ token=token,
1942
+ _request_auth=_request_auth,
1943
+ _content_type=_content_type,
1944
+ _headers=_headers,
1945
+ _host_index=_host_index
1946
+ )
1947
+
1948
+ _response_types_map: Dict[str, Optional[str]] = {
1949
+ '200': "Dict[str, object]",
1950
+ '400': "Dict[str, object]",
1951
+ }
1952
+ response_data = await self.api_client.call_api(
1953
+ *_param,
1954
+ _request_timeout=_request_timeout
1955
+ )
1956
+ await response_data.read()
1957
+ return self.api_client.response_deserialize(
1958
+ response_data=response_data,
1959
+ response_types_map=_response_types_map,
1960
+ ).data
1961
+
1962
+
1963
+ @validate_call
1964
+ async def apps_email_unsubscribe_verify_unsubscribe_token_with_http_info(
1965
+ self,
1966
+ token: StrictStr,
1967
+ _request_timeout: Union[
1968
+ None,
1969
+ Annotated[StrictFloat, Field(gt=0)],
1970
+ Tuple[
1971
+ Annotated[StrictFloat, Field(gt=0)],
1972
+ Annotated[StrictFloat, Field(gt=0)]
1973
+ ]
1974
+ ] = None,
1975
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1976
+ _content_type: Optional[StrictStr] = None,
1977
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1978
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1979
+ ) -> ApiResponse[Dict[str, object]]:
1980
+ """Verify Unsubscribe Token
1981
+
1982
+ Verify an unsubscribe token without actually unsubscribing. This can be used by the frontend to show a confirmation page before the user confirms they want to unsubscribe.
1983
+
1984
+ :param token: (required)
1985
+ :type token: str
1986
+ :param _request_timeout: timeout setting for this request. If one
1987
+ number provided, it will be total request
1988
+ timeout. It can also be a pair (tuple) of
1989
+ (connection, read) timeouts.
1990
+ :type _request_timeout: int, tuple(int, int), optional
1991
+ :param _request_auth: set to override the auth_settings for an a single
1992
+ request; this effectively ignores the
1993
+ authentication in the spec for a single request.
1994
+ :type _request_auth: dict, optional
1995
+ :param _content_type: force content-type for the request.
1996
+ :type _content_type: str, Optional
1997
+ :param _headers: set to override the headers for a single
1998
+ request; this effectively ignores the headers
1999
+ in the spec for a single request.
2000
+ :type _headers: dict, optional
2001
+ :param _host_index: set to override the host_index for a single
2002
+ request; this effectively ignores the host_index
2003
+ in the spec for a single request.
2004
+ :type _host_index: int, optional
2005
+ :return: Returns the result object.
2006
+ """ # noqa: E501
2007
+
2008
+ _param = self._apps_email_unsubscribe_verify_unsubscribe_token_serialize(
2009
+ token=token,
2010
+ _request_auth=_request_auth,
2011
+ _content_type=_content_type,
2012
+ _headers=_headers,
2013
+ _host_index=_host_index
2014
+ )
2015
+
2016
+ _response_types_map: Dict[str, Optional[str]] = {
2017
+ '200': "Dict[str, object]",
2018
+ '400': "Dict[str, object]",
2019
+ }
2020
+ response_data = await self.api_client.call_api(
2021
+ *_param,
2022
+ _request_timeout=_request_timeout
2023
+ )
2024
+ await response_data.read()
2025
+ return self.api_client.response_deserialize(
2026
+ response_data=response_data,
2027
+ response_types_map=_response_types_map,
2028
+ )
2029
+
2030
+
2031
+ @validate_call
2032
+ async def apps_email_unsubscribe_verify_unsubscribe_token_without_preload_content(
2033
+ self,
2034
+ token: StrictStr,
2035
+ _request_timeout: Union[
2036
+ None,
2037
+ Annotated[StrictFloat, Field(gt=0)],
2038
+ Tuple[
2039
+ Annotated[StrictFloat, Field(gt=0)],
2040
+ Annotated[StrictFloat, Field(gt=0)]
2041
+ ]
2042
+ ] = None,
2043
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2044
+ _content_type: Optional[StrictStr] = None,
2045
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2046
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2047
+ ) -> RESTResponseType:
2048
+ """Verify Unsubscribe Token
2049
+
2050
+ Verify an unsubscribe token without actually unsubscribing. This can be used by the frontend to show a confirmation page before the user confirms they want to unsubscribe.
2051
+
2052
+ :param token: (required)
2053
+ :type token: str
2054
+ :param _request_timeout: timeout setting for this request. If one
2055
+ number provided, it will be total request
2056
+ timeout. It can also be a pair (tuple) of
2057
+ (connection, read) timeouts.
2058
+ :type _request_timeout: int, tuple(int, int), optional
2059
+ :param _request_auth: set to override the auth_settings for an a single
2060
+ request; this effectively ignores the
2061
+ authentication in the spec for a single request.
2062
+ :type _request_auth: dict, optional
2063
+ :param _content_type: force content-type for the request.
2064
+ :type _content_type: str, Optional
2065
+ :param _headers: set to override the headers for a single
2066
+ request; this effectively ignores the headers
2067
+ in the spec for a single request.
2068
+ :type _headers: dict, optional
2069
+ :param _host_index: set to override the host_index for a single
2070
+ request; this effectively ignores the host_index
2071
+ in the spec for a single request.
2072
+ :type _host_index: int, optional
2073
+ :return: Returns the result object.
2074
+ """ # noqa: E501
2075
+
2076
+ _param = self._apps_email_unsubscribe_verify_unsubscribe_token_serialize(
2077
+ token=token,
2078
+ _request_auth=_request_auth,
2079
+ _content_type=_content_type,
2080
+ _headers=_headers,
2081
+ _host_index=_host_index
2082
+ )
2083
+
2084
+ _response_types_map: Dict[str, Optional[str]] = {
2085
+ '200': "Dict[str, object]",
2086
+ '400': "Dict[str, object]",
2087
+ }
2088
+ response_data = await self.api_client.call_api(
2089
+ *_param,
2090
+ _request_timeout=_request_timeout
2091
+ )
2092
+ return response_data.response
2093
+
2094
+
2095
+ def _apps_email_unsubscribe_verify_unsubscribe_token_serialize(
2096
+ self,
2097
+ token,
2098
+ _request_auth,
2099
+ _content_type,
2100
+ _headers,
2101
+ _host_index,
2102
+ ) -> RequestSerialized:
2103
+
2104
+ _host = None
2105
+
2106
+ _collection_formats: Dict[str, str] = {
2107
+ }
2108
+
2109
+ _path_params: Dict[str, str] = {}
2110
+ _query_params: List[Tuple[str, str]] = []
2111
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2112
+ _form_params: List[Tuple[str, str]] = []
2113
+ _files: Dict[
2114
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2115
+ ] = {}
2116
+ _body_params: Optional[bytes] = None
2117
+
2118
+ # process the path parameters
2119
+ # process the query parameters
2120
+ if token is not None:
2121
+
2122
+ _query_params.append(('token', token))
2123
+
2124
+ # process the header parameters
2125
+ # process the form parameters
2126
+ # process the body parameter
2127
+
2128
+
2129
+ # set the HTTP header `Accept`
2130
+ if 'Accept' not in _header_params:
2131
+ _header_params['Accept'] = self.api_client.select_header_accept(
2132
+ [
2133
+ 'application/json'
2134
+ ]
2135
+ )
2136
+
2137
+
2138
+ # authentication setting
2139
+ _auth_settings: List[str] = [
2140
+ ]
2141
+
2142
+ return self.api_client.param_serialize(
2143
+ method='GET',
2144
+ resource_path='/api/v1/email/unsubscribe/verify',
2145
+ path_params=_path_params,
2146
+ query_params=_query_params,
2147
+ header_params=_header_params,
2148
+ body=_body_params,
2149
+ post_params=_form_params,
2150
+ files=_files,
2151
+ auth_settings=_auth_settings,
2152
+ collection_formats=_collection_formats,
2153
+ _host=_host,
2154
+ _request_auth=_request_auth
2155
+ )
2156
+
2157
+