spatialflow 0.1.0__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- spatialflow-0.2.0/.gitignore +29 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/CHANGELOG.md +27 -1
- spatialflow-0.2.0/LICENSE +21 -0
- spatialflow-0.2.0/PKG-INFO +144 -0
- spatialflow-0.2.0/README.md +98 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/pyproject.toml +44 -1
- spatialflow-0.2.0/src/spatialflow/__init__.py +144 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/__init__.py +462 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/__init__.py +1 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/admin_api.py +903 -11
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/authentication_api.py +581 -12
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/devices_api.py +7 -6
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/e2_e_test_api.py +23 -23
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/geofences_api.py +58 -57
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/gpx_simulator_api.py +43 -42
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/integrations_api.py +122 -96
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/public_api.py +3 -3
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/public_location_ingest_api.py +6 -3
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/api/simulation_center_api.py +4282 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/webhooks_api.py +67 -66
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/workflows_api.py +420 -154
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/api/workspaces_api.py +2972 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api_client.py +16 -9
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/configuration.py +32 -20
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/exceptions.py +23 -3
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/__init__.py +24 -1
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/accept_invite_schema.py +96 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/admin_user_stats_response.py +105 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/create_invitation_in.py +89 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/create_simulation_request.py +95 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/device_out.py +2 -1
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/execution_out.py +3 -2
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/import_result_schema.py +2 -1
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/integration_detail_schema.py +2 -1
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/integration_response_schema.py +2 -1
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/invitation_list_response.py +97 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/invitation_out.py +104 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/matched_geofence_item.py +110 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/member_action_out.py +96 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/member_list_response.py +99 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/member_out.py +100 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/revoke_all_sessions_out.py +93 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/route_track_points_out.py +99 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/route_upload_response.py +99 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/simulation_detail_out.py +111 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/simulation_event_out.py +110 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/simulation_out.py +130 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/simulation_route_out.py +132 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/template_out.py +2 -1
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/template_warnings.py +89 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/test_point_request.py +9 -2
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/test_point_response.py +22 -5
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/track_point_out.py +103 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/update_member_role_in.py +87 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/update_simulation_request.py +120 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/user_api_stats.py +98 -0
- spatialflow-0.2.0/src/spatialflow/_generated/spatialflow_generated/models/verify_email_schema.py +87 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workflow_list_out.py +2 -1
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workflow_out.py +15 -3
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_out.py +2 -1
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/rest.py +40 -37
- spatialflow-0.2.0/src/spatialflow/builders.py +171 -0
- spatialflow-0.2.0/src/spatialflow/client.py +466 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/exceptions.py +104 -0
- spatialflow-0.2.0/src/spatialflow/pagination.py +285 -0
- spatialflow-0.2.0/src/spatialflow/py.typed +0 -0
- spatialflow-0.2.0/src/spatialflow/resources.py +1733 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/uploads.py +60 -35
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/webhooks.py +1 -1
- spatialflow-0.2.0/tests/test_api_methods.py +164 -0
- spatialflow-0.2.0/tests/test_builders.py +244 -0
- spatialflow-0.2.0/tests/test_integration.py +429 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/tests/test_pagination.py +5 -5
- spatialflow-0.2.0/tests/test_resources.py +893 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/tests/test_uploads.py +12 -6
- spatialflow-0.1.0/.gitignore +0 -148
- spatialflow-0.1.0/PKG-INFO +0 -249
- spatialflow-0.1.0/README.md +0 -204
- spatialflow-0.1.0/src/spatialflow/__init__.py +0 -91
- spatialflow-0.1.0/src/spatialflow/_generated/.github/workflows/python.yml +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/.gitignore +0 -66
- spatialflow-0.1.0/src/spatialflow/_generated/.gitlab-ci.yml +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/.openapi-generator/FILES +0 -390
- spatialflow-0.1.0/src/spatialflow/_generated/.openapi-generator/VERSION +0 -1
- spatialflow-0.1.0/src/spatialflow/_generated/.openapi-generator-ignore +0 -23
- spatialflow-0.1.0/src/spatialflow/_generated/.spec-hash +0 -1
- spatialflow-0.1.0/src/spatialflow/_generated/.travis.yml +0 -17
- spatialflow-0.1.0/src/spatialflow/_generated/README.md +0 -537
- spatialflow-0.1.0/src/spatialflow/_generated/__init__.py +0 -1
- spatialflow-0.1.0/src/spatialflow/_generated/docs/APIUsageStats.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AccountApi.md +0 -1751
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ActionDeliverySuccessMetrics.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ActionResponse.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ActionRetryConfigSchema.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ActivitySummary.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AdminApi.md +0 -1787
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ApiKeyCreateRequest.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ApiKeyCreateResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ApiKeyResponse.md +0 -38
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ApiKeyUpdateRequest.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AsyncUploadGeofencesResponse.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AuthTypeEnum.md +0 -17
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AuthenticationApi.md +0 -1289
- spatialflow-0.1.0/src/spatialflow/_generated/docs/BatchLocationUpdateIn.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/BillingApi.md +0 -925
- spatialflow-0.1.0/src/spatialflow/_generated/docs/BulkGeofenceRequest.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ChangePasswordSchema.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CheckoutSessionRequest.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CheckoutSessionResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CircuitBreakerSchema.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ConfigFieldDefinitionRequest.md +0 -41
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ConfigFieldDefinitionResponse.md +0 -43
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ConfirmPasswordResetSchema.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateFromTemplateIn.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateGeofenceRequest.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateIntegrationSchema.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateUserSchema.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateWebhookRequest.md +0 -43
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DashboardComparisonMetrics.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DashboardMetricsResponse.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DefaultApi.md +0 -585
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DeleteFileResponse.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DeliveryStatusEnum.md +0 -15
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DeviceIn.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DeviceOut.md +0 -37
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DevicesApi.md +0 -1213
- spatialflow-0.1.0/src/spatialflow/_generated/docs/E2ETestApi.md +0 -271
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailApi.md +0 -541
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailHealthResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailQueueStats.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailStats.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailStatusResponse.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ErrorResponse.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ExecutionOut.md +0 -38
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ExportIntegrationSchema.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/FileListResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ForgotPasswordSchema.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GPXPlaybackOut.md +0 -42
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GPXRouteOut.md +0 -40
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GPXSimulatorApi.md +0 -883
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeoJSONPoint.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofenceListResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofenceResponse.md +0 -43
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofenceStats.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofenceTestResult.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofencesApi.md +0 -1524
- spatialflow-0.1.0/src/spatialflow/_generated/docs/HealthCheckResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/HealthResponse.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ImportIntegrationSchema.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ImportResultSchema.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationDetailSchema.md +0 -44
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationResponseSchema.md +0 -42
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationStatsSchema.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationTypeListResponse.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationTypeRequest.md +0 -40
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationTypeResponse.md +0 -45
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationsApi.md +0 -2008
- spatialflow-0.1.0/src/spatialflow/_generated/docs/InvoiceLineItem.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/InvoiceListResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/InvoiceResponse.md +0 -40
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationBatchIn.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationImportResponse.md +0 -41
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationIngestResponse.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationPointIn.md +0 -38
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationUpdateIn.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationUpdateOut.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LoginResponse.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LoginSchema.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/MemberActionResponse.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/MemberSummary.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/MethodEnum.md +0 -17
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OAuthAuthorizeResponse.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OAuthCallbackQuery.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OAuthLinkResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OAuthProvidersResponse.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OnboardingProgressResponse.md +0 -37
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PaymentMethodResponse.md +0 -37
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PingResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PlanChangePreviewResponse.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PlanFeatures.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PlanLimits.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PlanResponse.md +0 -37
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PortalSessionRequest.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PortalSessionResponse.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PresignedUrlRequest.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PresignedUrlResponse.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PrivacyErasureRequest.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PrivacyErasureResponse.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PublicApi.md +0 -389
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PublicLocationIngestApi.md +0 -249
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RateLimitResponse.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RecentActivity.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RefreshTokenSchema.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RegisterSchema.md +0 -37
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ResendVerificationSchema.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ResetPasswordSchema.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RetryPolicyResponseSchema.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RetryPolicySchema.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RetryStrategyEnum.md +0 -14
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SeedDataResponseSchema.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SendEmailRequest.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SetupIntentResponse.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SignupRequest.md +0 -40
- spatialflow-0.1.0/src/spatialflow/_generated/docs/StartPlaybackRequest.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/StorageApi.md +0 -494
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SubscriptionActionResponse.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SubscriptionResponse.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SubscriptionsApi.md +0 -677
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SuccessResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SystemApi.md +0 -137
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TemplateOut.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestEventRequest.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestIntegrationResponseSchema.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestPointRequest.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestPointResponse.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestWebhookRequest.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestWorkflowIn.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TileMetadata.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TilesApi.md +0 -462
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UnsubscribeRequest.md +0 -29
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UnsubscribeResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateGeofenceRequest.md +0 -37
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateIntegrationSchema.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateMemberRoleRequest.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateOnboardingProgressRequest.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateProfileRequest.md +0 -45
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateUserWorkspaceRequest.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateWebhookRequest.md +0 -43
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UploadGeofencesRequest.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UploadJobStatus.md +0 -42
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UsageMetrics.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UsageResponse.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UsageStats.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserActionResponse.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserApprovalRequest.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserInviteRequest.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserInviteResponse.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserListResponse.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserProfileResponse.md +0 -55
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserRejectionRequest.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserResponse.md +0 -44
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserSummary.md +0 -41
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserUsageResponse.md +0 -38
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserWorkspaceResponse.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookDeliveryDetailResponse.md +0 -49
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookDeliveryListResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookDeliveryResponse.md +0 -46
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookListResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookMetricsResponse.md +0 -31
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookResponse.md +0 -50
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookTestResponse.md +0 -36
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhooksApi.md +0 -1384
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowImportSchema.md +0 -30
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowIn.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowListOut.md +0 -39
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowListResponse.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowOut.md +0 -42
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowRetryPolicyUpdateSchema.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowStepRetrySchema.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowUpdate.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowsApi.md +0 -2599
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceDeleteResponse.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceDetail.md +0 -37
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceDetailResponse.md +0 -41
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceIn.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceListItem.md +0 -39
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceListResponse.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceMembersResponse.md +0 -35
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceOut.md +0 -38
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceSummary.md +0 -32
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceUpdateRequest.md +0 -34
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceUpdateResponse.md +0 -33
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspacesApi.md +0 -241
- spatialflow-0.1.0/src/spatialflow/_generated/git_push.sh +0 -57
- spatialflow-0.1.0/src/spatialflow/_generated/pyproject.toml +0 -91
- spatialflow-0.1.0/src/spatialflow/_generated/requirements.txt +0 -6
- spatialflow-0.1.0/src/spatialflow/_generated/setup.cfg +0 -2
- spatialflow-0.1.0/src/spatialflow/_generated/setup.py +0 -51
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/__init__.py +0 -216
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/workspaces_api.py +0 -813
- spatialflow-0.1.0/src/spatialflow/_generated/test-requirements.txt +0 -6
- spatialflow-0.1.0/src/spatialflow/_generated/tox.ini +0 -9
- spatialflow-0.1.0/src/spatialflow/client.py +0 -137
- spatialflow-0.1.0/src/spatialflow/pagination.py +0 -142
- spatialflow-0.1.0/tests/test_integration.py +0 -135
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/account_api.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/billing_api.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/default_api.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/email_api.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/storage_api.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/subscriptions_api.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/system_api.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api/tiles_api.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/api_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/action_delivery_success_metrics.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/action_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/action_retry_config_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/activity_summary.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/api_key_create_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/api_key_create_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/api_key_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/api_key_update_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/api_usage_stats.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/async_upload_geofences_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/auth_type_enum.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/batch_location_update_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/bulk_geofence_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/change_password_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/checkout_session_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/checkout_session_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/circuit_breaker_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/config_field_definition_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/config_field_definition_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/confirm_password_reset_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/create_from_template_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/create_geofence_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/create_integration_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/create_user_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/create_webhook_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/dashboard_comparison_metrics.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/dashboard_metrics_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/delete_file_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/delivery_status_enum.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/device_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/email_health_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/email_queue_stats.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/email_stats.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/email_status_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/error_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/export_integration_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/file_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/forgot_password_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/geo_json_point.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/geofence_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/geofence_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/geofence_stats.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/geofence_test_result.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/gpx_playback_out.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/gpx_route_out.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/health_check_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/health_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/import_integration_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/integration_stats_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/integration_type_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/integration_type_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/integration_type_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/invoice_line_item.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/invoice_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/invoice_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/location_batch_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/location_import_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/location_ingest_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/location_point_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/location_update_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/location_update_out.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/login_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/login_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/member_action_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/member_summary.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/method_enum.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/o_auth_authorize_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/o_auth_callback_query.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/o_auth_link_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/o_auth_providers_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/onboarding_progress_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/payment_method_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/ping_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/plan_change_preview_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/plan_features.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/plan_limits.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/plan_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/portal_session_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/portal_session_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/presigned_url_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/presigned_url_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/privacy_erasure_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/privacy_erasure_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/rate_limit_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/recent_activity.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/refresh_token_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/register_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/resend_verification_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/reset_password_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/retry_policy_response_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/retry_policy_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/retry_strategy_enum.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/seed_data_response_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/send_email_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/setup_intent_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/signup_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/start_playback_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/subscription_action_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/subscription_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/success_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/test_event_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/test_integration_response_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/test_webhook_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/test_workflow_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/tile_metadata.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/unsubscribe_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/unsubscribe_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/update_geofence_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/update_integration_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/update_member_role_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/update_onboarding_progress_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/update_profile_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/update_user_workspace_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/update_webhook_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/upload_geofences_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/upload_job_status.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/usage_metrics.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/usage_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/usage_stats.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_action_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_approval_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_invite_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_invite_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_profile_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_rejection_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_summary.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_usage_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/user_workspace_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/webhook_delivery_detail_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/webhook_delivery_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/webhook_delivery_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/webhook_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/webhook_metrics_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/webhook_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/webhook_test_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workflow_import_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workflow_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workflow_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workflow_retry_policy_update_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workflow_step_retry_schema.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workflow_update.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_delete_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_detail.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_detail_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_in.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_list_item.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_list_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_members_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_summary.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_update_request.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/models/workspace_update_response.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/_generated/spatialflow_generated/py.typed +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/src/spatialflow/jobs.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/tests/__init__.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/tests/conftest.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/tests/test_jobs.py +0 -0
- {spatialflow-0.1.0 → spatialflow-0.2.0}/tests/test_webhooks.py +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Build artifacts
|
|
2
|
+
dist/
|
|
3
|
+
build/
|
|
4
|
+
*.egg-info/
|
|
5
|
+
|
|
6
|
+
# Python cache
|
|
7
|
+
__pycache__/
|
|
8
|
+
*.py[cod]
|
|
9
|
+
*$py.class
|
|
10
|
+
.pytest_cache/
|
|
11
|
+
|
|
12
|
+
# Coverage
|
|
13
|
+
htmlcov/
|
|
14
|
+
.coverage
|
|
15
|
+
.coverage.*
|
|
16
|
+
|
|
17
|
+
# Virtual environments
|
|
18
|
+
.venv/
|
|
19
|
+
venv/
|
|
20
|
+
ENV/
|
|
21
|
+
|
|
22
|
+
# IDE
|
|
23
|
+
.idea/
|
|
24
|
+
.vscode/
|
|
25
|
+
*.swp
|
|
26
|
+
*.swo
|
|
27
|
+
|
|
28
|
+
# OpenAPI generator scratch (if regenerating)
|
|
29
|
+
.openapi-generator/FILES
|
|
@@ -5,7 +5,33 @@ All notable changes to the SpatialFlow Python SDK will be documented in this fil
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [0.
|
|
8
|
+
## [0.2.0] - 2025-12-26
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Workflow activation**: `client.workflows.activate(workflow_id)` - Activate draft workflows for production use
|
|
13
|
+
- Idempotent: returns success if workflow is already active
|
|
14
|
+
- Validates workflow has trigger and steps before activation
|
|
15
|
+
- Rate limited: 1000 requests/hour
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **Integrations API key auth**: Integrations API now accepts API key authentication (was JWT-only)
|
|
20
|
+
- Requires `integrations:read` permission for list/get endpoints
|
|
21
|
+
- Requires `integrations:write` permission for create/update/delete/test endpoints
|
|
22
|
+
- Fixes: GitHub issue #114
|
|
23
|
+
|
|
24
|
+
- **Location ingest JWT auth**: Location ingest API now accepts JWT authentication (was API-key-only)
|
|
25
|
+
- Both JWT and API key auth now work for location ingestion
|
|
26
|
+
- Fixes: GitHub issue #115
|
|
27
|
+
|
|
28
|
+
### Technical Details
|
|
29
|
+
|
|
30
|
+
- Regenerated from OpenAPI spec using openapi-generator-cli 7.19.0
|
|
31
|
+
- Generated package now installed as `spatialflow_generated` in virtualenv
|
|
32
|
+
- OpenAPI spec hash: ce5ef5f82f7f17ebc5d628a612b84d1d39159c330c8362c4680be7bbdda50327
|
|
33
|
+
|
|
34
|
+
## [0.1.0] - 2025-12-04
|
|
9
35
|
|
|
10
36
|
### Added
|
|
11
37
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 SpatialFlow
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: spatialflow
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Python SDK for SpatialFlow - Real-time geospatial automation platform
|
|
5
|
+
Project-URL: Homepage, https://spatialflow.io
|
|
6
|
+
Project-URL: Documentation, https://docs.spatialflow.io/sdk/python
|
|
7
|
+
Project-URL: Repository, https://github.com/spatialflow-io/spatialflow-python
|
|
8
|
+
Project-URL: Issues, https://github.com/spatialflow-io/spatialflow-python/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/spatialflow-io/spatialflow-python/blob/main/CHANGELOG.md
|
|
10
|
+
Author-email: SpatialFlow <support@spatialflow.io>
|
|
11
|
+
License-Expression: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: automation,geofencing,geospatial,location,sdk,spatialflow
|
|
14
|
+
Classifier: Development Status :: 3 - Alpha
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
25
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
26
|
+
Classifier: Typing :: Typed
|
|
27
|
+
Requires-Python: >=3.9
|
|
28
|
+
Requires-Dist: aiohttp-retry>=2.8.3
|
|
29
|
+
Requires-Dist: aiohttp>=3.8.4
|
|
30
|
+
Requires-Dist: pydantic>=2.0.0
|
|
31
|
+
Requires-Dist: python-dateutil>=2.8.2
|
|
32
|
+
Requires-Dist: typing-extensions>=4.7.1
|
|
33
|
+
Requires-Dist: urllib3<3.0.0,>=1.25.3
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: aioresponses>=0.7.4; extra == 'dev'
|
|
36
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
37
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
41
|
+
Provides-Extra: docs
|
|
42
|
+
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
|
|
43
|
+
Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
|
|
44
|
+
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == 'docs'
|
|
45
|
+
Description-Content-Type: text/markdown
|
|
46
|
+
|
|
47
|
+
# SpatialFlow Python SDK
|
|
48
|
+
|
|
49
|
+
The official Python SDK for [SpatialFlow](https://spatialflow.io) - a real-time geospatial automation platform.
|
|
50
|
+
|
|
51
|
+
## Installation
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install spatialflow
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Development Installation
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
cd sdks/python
|
|
61
|
+
pip install -e ".[dev]"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Quick Start
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
import asyncio
|
|
68
|
+
from spatialflow import SpatialFlow
|
|
69
|
+
|
|
70
|
+
async def main():
|
|
71
|
+
async with SpatialFlow(api_key="sf_xxx") as client:
|
|
72
|
+
# List geofences
|
|
73
|
+
response = await client.geofences.list()
|
|
74
|
+
for geofence in response.geofences:
|
|
75
|
+
print(f"{geofence.name}: {geofence.id}")
|
|
76
|
+
|
|
77
|
+
# Get workspace usage
|
|
78
|
+
usage = await client.workspaces.get_usage()
|
|
79
|
+
print(f"Event units: {usage.event_units}")
|
|
80
|
+
|
|
81
|
+
asyncio.run(main())
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Supported Resources
|
|
85
|
+
|
|
86
|
+
| Resource | Methods | Description |
|
|
87
|
+
|----------|---------|-------------|
|
|
88
|
+
| **Geofences** | CRUD, upload, bulk | Manage geofence boundaries |
|
|
89
|
+
| **Workflows** | CRUD, execute, monitor, versioning | Automation workflows |
|
|
90
|
+
| **Webhooks** | CRUD, deliveries, DLQ, metrics | Webhook endpoints and delivery tracking |
|
|
91
|
+
| **Devices** | CRUD, location updates | Device management |
|
|
92
|
+
| **Account** | profile, API keys, metrics, onboarding | User account management |
|
|
93
|
+
| **Workspaces** | get, update, usage | Workspace settings and usage metrics |
|
|
94
|
+
| **Locations** | ingest, batch, stats | Public location ingestion API |
|
|
95
|
+
| **Integrations** | CRUD, test | Third-party service connections |
|
|
96
|
+
| **Storage** | presigned URLs, files | File upload and management |
|
|
97
|
+
|
|
98
|
+
## Features
|
|
99
|
+
|
|
100
|
+
- Fully async with `aiohttp`
|
|
101
|
+
- Automatic retry with exponential backoff
|
|
102
|
+
- Pagination helpers
|
|
103
|
+
- Webhook signature verification
|
|
104
|
+
- Workflow builders for common patterns
|
|
105
|
+
- File upload with streaming (memory efficient)
|
|
106
|
+
|
|
107
|
+
## Error Handling
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
from spatialflow import SpatialFlow, NotFoundError, ValidationError
|
|
111
|
+
|
|
112
|
+
async with SpatialFlow(api_key="sf_xxx") as client:
|
|
113
|
+
try:
|
|
114
|
+
geofence = await client.geofences.get("invalid-id")
|
|
115
|
+
except NotFoundError as e:
|
|
116
|
+
print(f"Geofence not found: {e}")
|
|
117
|
+
except ValidationError as e:
|
|
118
|
+
print(f"Invalid request: {e.errors}")
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Raw API Access
|
|
122
|
+
|
|
123
|
+
For advanced use cases, access the generated API clients directly:
|
|
124
|
+
|
|
125
|
+
```python
|
|
126
|
+
async with SpatialFlow(api_key="sf_xxx") as client:
|
|
127
|
+
# Use raw generated API
|
|
128
|
+
response = await client.raw.geofences.apps_geofences_api_list_geofences()
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Available via `client.raw`:
|
|
132
|
+
- `geofences`, `workflows`, `webhooks`, `devices`, `storage`, `locations`, `integrations`, `workspaces`, `account` (also wrapped)
|
|
133
|
+
- `authentication`, `admin`, `billing`, `subscriptions`, `tiles` (raw only)
|
|
134
|
+
|
|
135
|
+
> **Alpha Notice:** This SDK is in alpha (v0.1.0). Some generated APIs (email, system, gpx_simulator,
|
|
136
|
+
> public, default, e2e_test) are not yet exposed. Use the generated client directly for those.
|
|
137
|
+
|
|
138
|
+
## Documentation
|
|
139
|
+
|
|
140
|
+
Full documentation: [docs.spatialflow.io/sdks/python](https://docs.spatialflow.io/sdks/python)
|
|
141
|
+
|
|
142
|
+
## License
|
|
143
|
+
|
|
144
|
+
MIT
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# SpatialFlow Python SDK
|
|
2
|
+
|
|
3
|
+
The official Python SDK for [SpatialFlow](https://spatialflow.io) - a real-time geospatial automation platform.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install spatialflow
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Development Installation
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
cd sdks/python
|
|
15
|
+
pip install -e ".[dev]"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
import asyncio
|
|
22
|
+
from spatialflow import SpatialFlow
|
|
23
|
+
|
|
24
|
+
async def main():
|
|
25
|
+
async with SpatialFlow(api_key="sf_xxx") as client:
|
|
26
|
+
# List geofences
|
|
27
|
+
response = await client.geofences.list()
|
|
28
|
+
for geofence in response.geofences:
|
|
29
|
+
print(f"{geofence.name}: {geofence.id}")
|
|
30
|
+
|
|
31
|
+
# Get workspace usage
|
|
32
|
+
usage = await client.workspaces.get_usage()
|
|
33
|
+
print(f"Event units: {usage.event_units}")
|
|
34
|
+
|
|
35
|
+
asyncio.run(main())
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Supported Resources
|
|
39
|
+
|
|
40
|
+
| Resource | Methods | Description |
|
|
41
|
+
|----------|---------|-------------|
|
|
42
|
+
| **Geofences** | CRUD, upload, bulk | Manage geofence boundaries |
|
|
43
|
+
| **Workflows** | CRUD, execute, monitor, versioning | Automation workflows |
|
|
44
|
+
| **Webhooks** | CRUD, deliveries, DLQ, metrics | Webhook endpoints and delivery tracking |
|
|
45
|
+
| **Devices** | CRUD, location updates | Device management |
|
|
46
|
+
| **Account** | profile, API keys, metrics, onboarding | User account management |
|
|
47
|
+
| **Workspaces** | get, update, usage | Workspace settings and usage metrics |
|
|
48
|
+
| **Locations** | ingest, batch, stats | Public location ingestion API |
|
|
49
|
+
| **Integrations** | CRUD, test | Third-party service connections |
|
|
50
|
+
| **Storage** | presigned URLs, files | File upload and management |
|
|
51
|
+
|
|
52
|
+
## Features
|
|
53
|
+
|
|
54
|
+
- Fully async with `aiohttp`
|
|
55
|
+
- Automatic retry with exponential backoff
|
|
56
|
+
- Pagination helpers
|
|
57
|
+
- Webhook signature verification
|
|
58
|
+
- Workflow builders for common patterns
|
|
59
|
+
- File upload with streaming (memory efficient)
|
|
60
|
+
|
|
61
|
+
## Error Handling
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from spatialflow import SpatialFlow, NotFoundError, ValidationError
|
|
65
|
+
|
|
66
|
+
async with SpatialFlow(api_key="sf_xxx") as client:
|
|
67
|
+
try:
|
|
68
|
+
geofence = await client.geofences.get("invalid-id")
|
|
69
|
+
except NotFoundError as e:
|
|
70
|
+
print(f"Geofence not found: {e}")
|
|
71
|
+
except ValidationError as e:
|
|
72
|
+
print(f"Invalid request: {e.errors}")
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Raw API Access
|
|
76
|
+
|
|
77
|
+
For advanced use cases, access the generated API clients directly:
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
async with SpatialFlow(api_key="sf_xxx") as client:
|
|
81
|
+
# Use raw generated API
|
|
82
|
+
response = await client.raw.geofences.apps_geofences_api_list_geofences()
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Available via `client.raw`:
|
|
86
|
+
- `geofences`, `workflows`, `webhooks`, `devices`, `storage`, `locations`, `integrations`, `workspaces`, `account` (also wrapped)
|
|
87
|
+
- `authentication`, `admin`, `billing`, `subscriptions`, `tiles` (raw only)
|
|
88
|
+
|
|
89
|
+
> **Alpha Notice:** This SDK is in alpha (v0.1.0). Some generated APIs (email, system, gpx_simulator,
|
|
90
|
+
> public, default, e2e_test) are not yet exposed. Use the generated client directly for those.
|
|
91
|
+
|
|
92
|
+
## Documentation
|
|
93
|
+
|
|
94
|
+
Full documentation: [docs.spatialflow.io/sdks/python](https://docs.spatialflow.io/sdks/python)
|
|
95
|
+
|
|
96
|
+
## License
|
|
97
|
+
|
|
98
|
+
MIT
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "spatialflow"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
description = "Python SDK for SpatialFlow - Real-time geospatial automation platform"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -61,6 +61,30 @@ Changelog = "https://github.com/spatialflow-io/spatialflow-python/blob/main/CHAN
|
|
|
61
61
|
|
|
62
62
|
[tool.hatch.build.targets.wheel]
|
|
63
63
|
packages = ["src/spatialflow"]
|
|
64
|
+
# Exclude generated scaffolding from wheel (keep only Python code)
|
|
65
|
+
exclude = [
|
|
66
|
+
# OpenAPI generator scaffolding
|
|
67
|
+
"**/.openapi-generator*",
|
|
68
|
+
"**/git_push.sh",
|
|
69
|
+
# Generated docs (not needed at runtime)
|
|
70
|
+
"**/docs/**",
|
|
71
|
+
# CI/CD configs
|
|
72
|
+
"**/.github/**",
|
|
73
|
+
"**/.gitlab-ci.yml",
|
|
74
|
+
"**/.travis.yml",
|
|
75
|
+
"**/tox.ini",
|
|
76
|
+
# Build configs (use root pyproject.toml instead)
|
|
77
|
+
"src/spatialflow/_generated/pyproject.toml",
|
|
78
|
+
"src/spatialflow/_generated/setup.py",
|
|
79
|
+
"src/spatialflow/_generated/setup.cfg",
|
|
80
|
+
"src/spatialflow/_generated/requirements.txt",
|
|
81
|
+
"src/spatialflow/_generated/test-requirements.txt",
|
|
82
|
+
# Generated README (we have our own)
|
|
83
|
+
"src/spatialflow/_generated/README.md",
|
|
84
|
+
# Git ignores
|
|
85
|
+
"**/.gitignore",
|
|
86
|
+
"**/.spec-hash",
|
|
87
|
+
]
|
|
64
88
|
|
|
65
89
|
[tool.hatch.build.targets.sdist]
|
|
66
90
|
include = [
|
|
@@ -68,6 +92,25 @@ include = [
|
|
|
68
92
|
"/tests",
|
|
69
93
|
"/README.md",
|
|
70
94
|
"/CHANGELOG.md",
|
|
95
|
+
"/LICENSE",
|
|
96
|
+
]
|
|
97
|
+
exclude = [
|
|
98
|
+
# Same exclusions for sdist
|
|
99
|
+
"**/.openapi-generator*",
|
|
100
|
+
"**/git_push.sh",
|
|
101
|
+
"**/docs/**",
|
|
102
|
+
"**/.github/**",
|
|
103
|
+
"**/.gitlab-ci.yml",
|
|
104
|
+
"**/.travis.yml",
|
|
105
|
+
"**/tox.ini",
|
|
106
|
+
"src/spatialflow/_generated/pyproject.toml",
|
|
107
|
+
"src/spatialflow/_generated/setup.py",
|
|
108
|
+
"src/spatialflow/_generated/setup.cfg",
|
|
109
|
+
"src/spatialflow/_generated/requirements.txt",
|
|
110
|
+
"src/spatialflow/_generated/test-requirements.txt",
|
|
111
|
+
"src/spatialflow/_generated/README.md",
|
|
112
|
+
"**/.gitignore",
|
|
113
|
+
"**/.spec-hash",
|
|
71
114
|
]
|
|
72
115
|
|
|
73
116
|
[tool.ruff]
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SpatialFlow Python SDK
|
|
3
|
+
|
|
4
|
+
A Python client for the SpatialFlow API - real-time geospatial automation platform.
|
|
5
|
+
|
|
6
|
+
Example:
|
|
7
|
+
>>> from spatialflow import SpatialFlow, models
|
|
8
|
+
>>>
|
|
9
|
+
>>> async with SpatialFlow(api_key="sf_xxx") as client:
|
|
10
|
+
... # List geofences
|
|
11
|
+
... response = await client.geofences.list()
|
|
12
|
+
... for geofence in response.geofences:
|
|
13
|
+
... print(geofence.name)
|
|
14
|
+
...
|
|
15
|
+
... # Create a geofence
|
|
16
|
+
... geofence = await client.geofences.create(
|
|
17
|
+
... models.CreateGeofenceRequest(name="My Region", geometry={...})
|
|
18
|
+
... )
|
|
19
|
+
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
__version__ = "0.2.0"
|
|
23
|
+
|
|
24
|
+
# Main client (imported early to get DEFAULT_BASE_URL)
|
|
25
|
+
from .client import SpatialFlow, DEFAULT_BASE_URL
|
|
26
|
+
|
|
27
|
+
# Custom exceptions
|
|
28
|
+
from .exceptions import (
|
|
29
|
+
SpatialFlowError,
|
|
30
|
+
AuthenticationError,
|
|
31
|
+
PermissionError,
|
|
32
|
+
NotFoundError,
|
|
33
|
+
ValidationError,
|
|
34
|
+
RateLimitError,
|
|
35
|
+
ServerError,
|
|
36
|
+
ConflictError,
|
|
37
|
+
TimeoutError,
|
|
38
|
+
ConnectionError,
|
|
39
|
+
translate_exception,
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
# Webhook verification
|
|
43
|
+
from .webhooks import verify_webhook_signature, WebhookSignatureError, verify_signature
|
|
44
|
+
|
|
45
|
+
# Pagination helpers
|
|
46
|
+
from .pagination import (
|
|
47
|
+
paginate,
|
|
48
|
+
paginate_geofences,
|
|
49
|
+
paginate_workflows,
|
|
50
|
+
paginate_webhooks,
|
|
51
|
+
paginate_users,
|
|
52
|
+
paginate_files,
|
|
53
|
+
AsyncPaginator,
|
|
54
|
+
PaginatedResponse,
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# Job polling helpers
|
|
58
|
+
from .jobs import poll_job, JobResult, JobTimeoutError, JobFailedError
|
|
59
|
+
|
|
60
|
+
# File upload helpers
|
|
61
|
+
from .uploads import upload_geofences
|
|
62
|
+
|
|
63
|
+
# Workflow builders
|
|
64
|
+
from .builders import (
|
|
65
|
+
build_geofence_webhook_workflow,
|
|
66
|
+
build_geofence_integration_workflow,
|
|
67
|
+
TriggerType,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
# Resource classes (for type hints and advanced usage)
|
|
71
|
+
from .resources import (
|
|
72
|
+
AccountResource,
|
|
73
|
+
GeofencesResource,
|
|
74
|
+
WorkflowsResource,
|
|
75
|
+
WebhooksResource,
|
|
76
|
+
DevicesResource,
|
|
77
|
+
StorageResource,
|
|
78
|
+
LocationsResource,
|
|
79
|
+
IntegrationsResource,
|
|
80
|
+
WorkspacesResource,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
# Re-export generated client and models for advanced usage
|
|
84
|
+
from ._generated.spatialflow_generated.api_client import ApiClient
|
|
85
|
+
from ._generated.spatialflow_generated.configuration import Configuration
|
|
86
|
+
from ._generated.spatialflow_generated import models
|
|
87
|
+
|
|
88
|
+
__all__ = [
|
|
89
|
+
# Version
|
|
90
|
+
"__version__",
|
|
91
|
+
"DEFAULT_BASE_URL",
|
|
92
|
+
# Main client
|
|
93
|
+
"SpatialFlow",
|
|
94
|
+
# Exceptions
|
|
95
|
+
"SpatialFlowError",
|
|
96
|
+
"AuthenticationError",
|
|
97
|
+
"PermissionError",
|
|
98
|
+
"NotFoundError",
|
|
99
|
+
"ValidationError",
|
|
100
|
+
"RateLimitError",
|
|
101
|
+
"ServerError",
|
|
102
|
+
"ConflictError",
|
|
103
|
+
"TimeoutError",
|
|
104
|
+
"ConnectionError",
|
|
105
|
+
"translate_exception",
|
|
106
|
+
# Webhooks
|
|
107
|
+
"verify_webhook_signature",
|
|
108
|
+
"verify_signature",
|
|
109
|
+
"WebhookSignatureError",
|
|
110
|
+
# Pagination
|
|
111
|
+
"paginate",
|
|
112
|
+
"paginate_geofences",
|
|
113
|
+
"paginate_workflows",
|
|
114
|
+
"paginate_webhooks",
|
|
115
|
+
"paginate_users",
|
|
116
|
+
"paginate_files",
|
|
117
|
+
"AsyncPaginator",
|
|
118
|
+
"PaginatedResponse",
|
|
119
|
+
# Job polling
|
|
120
|
+
"poll_job",
|
|
121
|
+
"JobResult",
|
|
122
|
+
"JobTimeoutError",
|
|
123
|
+
"JobFailedError",
|
|
124
|
+
# File uploads
|
|
125
|
+
"upload_geofences",
|
|
126
|
+
# Workflow builders
|
|
127
|
+
"build_geofence_webhook_workflow",
|
|
128
|
+
"build_geofence_integration_workflow",
|
|
129
|
+
"TriggerType",
|
|
130
|
+
# Resource classes
|
|
131
|
+
"AccountResource",
|
|
132
|
+
"GeofencesResource",
|
|
133
|
+
"WorkflowsResource",
|
|
134
|
+
"WebhooksResource",
|
|
135
|
+
"DevicesResource",
|
|
136
|
+
"StorageResource",
|
|
137
|
+
"LocationsResource",
|
|
138
|
+
"IntegrationsResource",
|
|
139
|
+
"WorkspacesResource",
|
|
140
|
+
# Generated (advanced)
|
|
141
|
+
"ApiClient",
|
|
142
|
+
"Configuration",
|
|
143
|
+
"models",
|
|
144
|
+
]
|