spatialflow 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- spatialflow-0.1.0/.gitignore +148 -0
- spatialflow-0.1.0/CHANGELOG.md +28 -0
- spatialflow-0.1.0/PKG-INFO +249 -0
- spatialflow-0.1.0/README.md +204 -0
- spatialflow-0.1.0/pyproject.toml +101 -0
- spatialflow-0.1.0/src/spatialflow/__init__.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/.github/workflows/python.yml +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/.gitignore +66 -0
- spatialflow-0.1.0/src/spatialflow/_generated/.gitlab-ci.yml +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/.openapi-generator/FILES +390 -0
- spatialflow-0.1.0/src/spatialflow/_generated/.openapi-generator/VERSION +1 -0
- spatialflow-0.1.0/src/spatialflow/_generated/.openapi-generator-ignore +23 -0
- spatialflow-0.1.0/src/spatialflow/_generated/.spec-hash +1 -0
- spatialflow-0.1.0/src/spatialflow/_generated/.travis.yml +17 -0
- spatialflow-0.1.0/src/spatialflow/_generated/README.md +537 -0
- spatialflow-0.1.0/src/spatialflow/_generated/__init__.py +1 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/APIUsageStats.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AccountApi.md +1751 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ActionDeliverySuccessMetrics.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ActionResponse.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ActionRetryConfigSchema.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ActivitySummary.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AdminApi.md +1787 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ApiKeyCreateRequest.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ApiKeyCreateResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ApiKeyResponse.md +38 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ApiKeyUpdateRequest.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AsyncUploadGeofencesResponse.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AuthTypeEnum.md +17 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/AuthenticationApi.md +1289 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/BatchLocationUpdateIn.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/BillingApi.md +925 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/BulkGeofenceRequest.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ChangePasswordSchema.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CheckoutSessionRequest.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CheckoutSessionResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CircuitBreakerSchema.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ConfigFieldDefinitionRequest.md +41 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ConfigFieldDefinitionResponse.md +43 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ConfirmPasswordResetSchema.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateFromTemplateIn.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateGeofenceRequest.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateIntegrationSchema.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateUserSchema.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/CreateWebhookRequest.md +43 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DashboardComparisonMetrics.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DashboardMetricsResponse.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DefaultApi.md +585 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DeleteFileResponse.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DeliveryStatusEnum.md +15 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DeviceIn.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DeviceOut.md +37 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/DevicesApi.md +1213 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/E2ETestApi.md +271 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailApi.md +541 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailHealthResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailQueueStats.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailStats.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/EmailStatusResponse.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ErrorResponse.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ExecutionOut.md +38 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ExportIntegrationSchema.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/FileListResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ForgotPasswordSchema.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GPXPlaybackOut.md +42 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GPXRouteOut.md +40 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GPXSimulatorApi.md +883 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeoJSONPoint.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofenceListResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofenceResponse.md +43 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofenceStats.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofenceTestResult.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/GeofencesApi.md +1524 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/HealthCheckResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/HealthResponse.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ImportIntegrationSchema.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ImportResultSchema.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationDetailSchema.md +44 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationResponseSchema.md +42 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationStatsSchema.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationTypeListResponse.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationTypeRequest.md +40 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationTypeResponse.md +45 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/IntegrationsApi.md +2008 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/InvoiceLineItem.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/InvoiceListResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/InvoiceResponse.md +40 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationBatchIn.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationImportResponse.md +41 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationIngestResponse.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationPointIn.md +38 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationUpdateIn.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LocationUpdateOut.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LoginResponse.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/LoginSchema.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/MemberActionResponse.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/MemberSummary.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/MethodEnum.md +17 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OAuthAuthorizeResponse.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OAuthCallbackQuery.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OAuthLinkResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OAuthProvidersResponse.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/OnboardingProgressResponse.md +37 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PaymentMethodResponse.md +37 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PingResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PlanChangePreviewResponse.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PlanFeatures.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PlanLimits.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PlanResponse.md +37 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PortalSessionRequest.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PortalSessionResponse.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PresignedUrlRequest.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PresignedUrlResponse.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PrivacyErasureRequest.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PrivacyErasureResponse.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PublicApi.md +389 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/PublicLocationIngestApi.md +249 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RateLimitResponse.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RecentActivity.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RefreshTokenSchema.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RegisterSchema.md +37 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ResendVerificationSchema.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/ResetPasswordSchema.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RetryPolicyResponseSchema.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RetryPolicySchema.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/RetryStrategyEnum.md +14 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SeedDataResponseSchema.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SendEmailRequest.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SetupIntentResponse.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SignupRequest.md +40 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/StartPlaybackRequest.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/StorageApi.md +494 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SubscriptionActionResponse.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SubscriptionResponse.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SubscriptionsApi.md +677 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SuccessResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/SystemApi.md +137 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TemplateOut.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestEventRequest.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestIntegrationResponseSchema.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestPointRequest.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestPointResponse.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestWebhookRequest.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TestWorkflowIn.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TileMetadata.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/TilesApi.md +462 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UnsubscribeRequest.md +29 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UnsubscribeResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateGeofenceRequest.md +37 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateIntegrationSchema.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateMemberRoleRequest.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateOnboardingProgressRequest.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateProfileRequest.md +45 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateUserWorkspaceRequest.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UpdateWebhookRequest.md +43 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UploadGeofencesRequest.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UploadJobStatus.md +42 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UsageMetrics.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UsageResponse.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UsageStats.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserActionResponse.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserApprovalRequest.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserInviteRequest.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserInviteResponse.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserListResponse.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserProfileResponse.md +55 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserRejectionRequest.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserResponse.md +44 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserSummary.md +41 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserUsageResponse.md +38 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/UserWorkspaceResponse.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookDeliveryDetailResponse.md +49 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookDeliveryListResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookDeliveryResponse.md +46 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookListResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookMetricsResponse.md +31 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookResponse.md +50 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhookTestResponse.md +36 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WebhooksApi.md +1384 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowImportSchema.md +30 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowIn.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowListOut.md +39 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowListResponse.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowOut.md +42 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowRetryPolicyUpdateSchema.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowStepRetrySchema.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowUpdate.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkflowsApi.md +2599 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceDeleteResponse.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceDetail.md +37 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceDetailResponse.md +41 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceIn.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceListItem.md +39 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceListResponse.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceMembersResponse.md +35 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceOut.md +38 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceSummary.md +32 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceUpdateRequest.md +34 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspaceUpdateResponse.md +33 -0
- spatialflow-0.1.0/src/spatialflow/_generated/docs/WorkspacesApi.md +241 -0
- spatialflow-0.1.0/src/spatialflow/_generated/git_push.sh +57 -0
- spatialflow-0.1.0/src/spatialflow/_generated/pyproject.toml +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/requirements.txt +6 -0
- spatialflow-0.1.0/src/spatialflow/_generated/setup.cfg +2 -0
- spatialflow-0.1.0/src/spatialflow/_generated/setup.py +51 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/__init__.py +216 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/__init__.py +24 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/account_api.py +5675 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/admin_api.py +6173 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/authentication_api.py +4753 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/billing_api.py +3151 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/default_api.py +2157 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/devices_api.py +3965 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/e2_e_test_api.py +1049 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/email_api.py +1879 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/geofences_api.py +4899 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/gpx_simulator_api.py +2824 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/integrations_api.py +6952 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/public_api.py +1506 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/public_location_ingest_api.py +845 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/storage_api.py +1642 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/subscriptions_api.py +2356 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/system_api.py +529 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/tiles_api.py +1626 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/webhooks_api.py +4579 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/workflows_api.py +8334 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api/workspaces_api.py +813 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api_client.py +800 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/api_response.py +21 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/configuration.py +599 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/exceptions.py +199 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/__init__.py +180 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/action_delivery_success_metrics.py +96 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/action_response.py +96 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/action_retry_config_schema.py +114 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/activity_summary.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/api_key_create_request.py +95 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/api_key_create_response.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/api_key_response.py +109 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/api_key_update_request.py +114 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/api_usage_stats.py +98 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/async_upload_geofences_response.py +93 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/auth_type_enum.py +39 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/batch_location_update_in.py +97 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/bulk_geofence_request.py +95 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/change_password_schema.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/checkout_session_request.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/checkout_session_response.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/circuit_breaker_schema.py +94 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/config_field_definition_request.py +134 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/config_field_definition_response.py +138 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/confirm_password_reset_schema.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/create_from_template_in.py +94 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/create_geofence_request.py +125 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/create_integration_schema.py +106 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/create_user_schema.py +99 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/create_webhook_request.py +136 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/dashboard_comparison_metrics.py +96 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/dashboard_metrics_response.py +108 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/delete_file_response.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/delivery_status_enum.py +38 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/device_in.py +98 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/device_out.py +114 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/email_health_response.py +92 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/email_queue_stats.py +97 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/email_stats.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/email_status_response.py +112 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/error_response.py +101 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/execution_out.py +126 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/export_integration_schema.py +97 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/file_list_response.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/forgot_password_schema.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/geo_json_point.py +97 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/geofence_list_response.py +97 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/geofence_response.py +139 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/geofence_stats.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/geofence_test_result.py +98 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/gpx_playback_out.py +128 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/gpx_route_out.py +119 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/health_check_response.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/health_response.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/import_integration_schema.py +100 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/import_result_schema.py +103 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/integration_detail_schema.py +125 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/integration_response_schema.py +123 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/integration_stats_schema.py +116 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/integration_type_list_response.py +103 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/integration_type_request.py +117 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/integration_type_response.py +128 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/invoice_line_item.py +93 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/invoice_list_response.py +97 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/invoice_response.py +120 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/location_batch_in.py +102 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/location_import_response.py +120 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/location_ingest_response.py +117 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/location_point_in.py +129 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/location_update_in.py +132 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/location_update_out.py +93 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/login_response.py +95 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/login_schema.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/member_action_response.py +98 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/member_summary.py +114 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/method_enum.py +39 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/o_auth_authorize_response.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/o_auth_callback_query.py +103 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/o_auth_link_response.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/o_auth_providers_response.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/onboarding_progress_response.py +112 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/payment_method_response.py +116 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/ping_response.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/plan_change_preview_response.py +104 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/plan_features.py +109 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/plan_limits.py +95 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/plan_response.py +114 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/portal_session_request.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/portal_session_response.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/presigned_url_request.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/presigned_url_response.py +99 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/privacy_erasure_request.py +118 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/privacy_erasure_response.py +110 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/rate_limit_response.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/recent_activity.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/refresh_token_schema.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/register_schema.py +133 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/resend_verification_schema.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/reset_password_schema.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/retry_policy_response_schema.py +95 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/retry_policy_schema.py +99 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/retry_strategy_enum.py +38 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/seed_data_response_schema.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/send_email_request.py +100 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/setup_intent_response.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/signup_request.py +164 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/start_playback_request.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/subscription_action_response.py +100 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/subscription_response.py +113 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/success_response.py +94 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/template_out.py +104 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/test_event_request.py +92 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/test_integration_response_schema.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/test_point_request.py +125 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/test_point_response.py +101 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/test_webhook_request.py +106 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/test_workflow_in.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/tile_metadata.py +99 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/unsubscribe_request.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/unsubscribe_response.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/update_geofence_request.py +142 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/update_integration_schema.py +121 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/update_member_role_request.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/update_onboarding_progress_request.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/update_profile_request.py +208 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/update_user_workspace_request.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/update_webhook_request.py +186 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/upload_geofences_request.py +95 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/upload_job_status.py +137 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/usage_metrics.py +93 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/usage_response.py +105 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/usage_stats.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_action_response.py +119 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_approval_request.py +92 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_invite_request.py +110 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_invite_response.py +99 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_list_response.py +110 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_profile_response.py +158 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_rejection_request.py +87 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_response.py +142 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_summary.py +140 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_usage_response.py +152 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/user_workspace_response.py +110 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/webhook_delivery_detail_response.py +182 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/webhook_delivery_list_response.py +97 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/webhook_delivery_response.py +161 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/webhook_list_response.py +97 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/webhook_metrics_response.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/webhook_response.py +148 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/webhook_test_response.py +114 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workflow_import_schema.py +89 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workflow_in.py +98 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workflow_list_out.py +118 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workflow_list_response.py +101 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workflow_out.py +129 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workflow_retry_policy_update_schema.py +109 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workflow_step_retry_schema.py +103 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workflow_update.py +120 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_delete_response.py +93 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_detail.py +116 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_detail_response.py +143 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_in.py +122 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_list_item.py +130 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_list_response.py +103 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_members_response.py +109 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_out.py +132 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_summary.py +91 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_update_request.py +120 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/models/workspace_update_response.py +93 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/py.typed +0 -0
- spatialflow-0.1.0/src/spatialflow/_generated/spatialflow_generated/rest.py +215 -0
- spatialflow-0.1.0/src/spatialflow/_generated/test-requirements.txt +6 -0
- spatialflow-0.1.0/src/spatialflow/_generated/tox.ini +9 -0
- spatialflow-0.1.0/src/spatialflow/client.py +137 -0
- spatialflow-0.1.0/src/spatialflow/exceptions.py +234 -0
- spatialflow-0.1.0/src/spatialflow/jobs.py +204 -0
- spatialflow-0.1.0/src/spatialflow/pagination.py +142 -0
- spatialflow-0.1.0/src/spatialflow/uploads.py +166 -0
- spatialflow-0.1.0/src/spatialflow/webhooks.py +126 -0
- spatialflow-0.1.0/tests/__init__.py +1 -0
- spatialflow-0.1.0/tests/conftest.py +35 -0
- spatialflow-0.1.0/tests/test_integration.py +135 -0
- spatialflow-0.1.0/tests/test_jobs.py +233 -0
- spatialflow-0.1.0/tests/test_pagination.py +195 -0
- spatialflow-0.1.0/tests/test_uploads.py +222 -0
- spatialflow-0.1.0/tests/test_webhooks.py +171 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Logs
|
|
2
|
+
logs
|
|
3
|
+
*.log
|
|
4
|
+
npm-debug.log*
|
|
5
|
+
yarn-debug.log*
|
|
6
|
+
yarn-error.log*
|
|
7
|
+
dev-debug.log
|
|
8
|
+
|
|
9
|
+
# Dependency directories
|
|
10
|
+
node_modules/
|
|
11
|
+
|
|
12
|
+
# Environment variables
|
|
13
|
+
.env
|
|
14
|
+
.env.*
|
|
15
|
+
env/.env.*
|
|
16
|
+
env/.env.prd
|
|
17
|
+
env/.env.dev
|
|
18
|
+
|
|
19
|
+
# Editor directories and files
|
|
20
|
+
.idea
|
|
21
|
+
.vscode
|
|
22
|
+
*.suo
|
|
23
|
+
*.ntvs*
|
|
24
|
+
*.njsproj
|
|
25
|
+
*.sln
|
|
26
|
+
*.sw?
|
|
27
|
+
|
|
28
|
+
# OS specific
|
|
29
|
+
.DS_Store
|
|
30
|
+
|
|
31
|
+
# Task files
|
|
32
|
+
tasks.json
|
|
33
|
+
tasks/
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
repomix-output.md
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# Terraform files
|
|
40
|
+
*.tfstate
|
|
41
|
+
*.tfstate.*
|
|
42
|
+
*.tfplan
|
|
43
|
+
*.tfplan.*
|
|
44
|
+
.terraform/
|
|
45
|
+
.terraform.lock.hcl
|
|
46
|
+
|
|
47
|
+
# Lambda deployment packages
|
|
48
|
+
*.zip
|
|
49
|
+
infrastructure/modules/lambdas/**/*.zip
|
|
50
|
+
infrastructure/.terraform/tmp/
|
|
51
|
+
|
|
52
|
+
# Crash log files
|
|
53
|
+
crash.log
|
|
54
|
+
crash.*.log
|
|
55
|
+
|
|
56
|
+
# Exclude all .tfvars files, which are likely to contain sensitive data
|
|
57
|
+
*.tfvars
|
|
58
|
+
*.tfvars.json
|
|
59
|
+
|
|
60
|
+
# Ignore override files as they are usually used to override resources locally
|
|
61
|
+
override.tf
|
|
62
|
+
override.tf.json
|
|
63
|
+
*_override.tf
|
|
64
|
+
*_override.tf.json
|
|
65
|
+
|
|
66
|
+
# Include override files you do wish to add to version control using negated pattern
|
|
67
|
+
# !example_override.tf
|
|
68
|
+
|
|
69
|
+
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
|
|
70
|
+
# example: *tfplan*
|
|
71
|
+
|
|
72
|
+
# Ignore CLI configuration files
|
|
73
|
+
.terraformrc
|
|
74
|
+
terraform.rc
|
|
75
|
+
|
|
76
|
+
# Lambda deployment packages
|
|
77
|
+
*.zip
|
|
78
|
+
|
|
79
|
+
# OS generated files
|
|
80
|
+
.DS_Store
|
|
81
|
+
.DS_Store?
|
|
82
|
+
._*
|
|
83
|
+
.Spotlight-V100
|
|
84
|
+
.Trashes
|
|
85
|
+
ehthumbs.db
|
|
86
|
+
Thumbs.db
|
|
87
|
+
|
|
88
|
+
# IDE files
|
|
89
|
+
.vscode/
|
|
90
|
+
.idea/
|
|
91
|
+
*.swp
|
|
92
|
+
*.swo
|
|
93
|
+
*~
|
|
94
|
+
|
|
95
|
+
# Local testing artifacts
|
|
96
|
+
logs/
|
|
97
|
+
scripts/test_data/
|
|
98
|
+
backups/
|
|
99
|
+
*.log
|
|
100
|
+
|
|
101
|
+
# Docker volumes
|
|
102
|
+
postgres_data/
|
|
103
|
+
pgadmin_data/
|
|
104
|
+
redis_data/
|
|
105
|
+
|
|
106
|
+
# Python cache
|
|
107
|
+
__pycache__/
|
|
108
|
+
*.pyc
|
|
109
|
+
*.pyo
|
|
110
|
+
*.pyd
|
|
111
|
+
.Python
|
|
112
|
+
env/
|
|
113
|
+
venv/
|
|
114
|
+
.venv/
|
|
115
|
+
pip-log.txt
|
|
116
|
+
pip-delete-this-directory.txt
|
|
117
|
+
|
|
118
|
+
# Code quality tool outputs
|
|
119
|
+
.coverage
|
|
120
|
+
coverage_html/
|
|
121
|
+
htmlcov/
|
|
122
|
+
.pytest_cache/
|
|
123
|
+
.mypy_cache/
|
|
124
|
+
security-report.json
|
|
125
|
+
safety-report.json
|
|
126
|
+
lint-report/
|
|
127
|
+
mypy-report/
|
|
128
|
+
.bandit
|
|
129
|
+
.radon/
|
|
130
|
+
|
|
131
|
+
# OS files
|
|
132
|
+
.DS_Store
|
|
133
|
+
Thumbs.db
|
|
134
|
+
|
|
135
|
+
infrastructure/modules/lambdas/shared/src/python
|
|
136
|
+
frontend/test-results
|
|
137
|
+
frontend/test-output
|
|
138
|
+
frontend/playwright-report
|
|
139
|
+
e2e-results
|
|
140
|
+
e2e-reports
|
|
141
|
+
|
|
142
|
+
# E2E test auth states
|
|
143
|
+
frontend/.auth/
|
|
144
|
+
.playwright-mcp/
|
|
145
|
+
|
|
146
|
+
tfplan
|
|
147
|
+
|
|
148
|
+
*.geojson
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the SpatialFlow Python SDK will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] - 2024-12-04
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Initial alpha release
|
|
13
|
+
- **Authentication**: API key and JWT token support
|
|
14
|
+
- **Client**: `SpatialFlow` async client with resource accessors
|
|
15
|
+
- **Resources**: Full CRUD for geofences, workflows, webhooks, devices
|
|
16
|
+
- **Pagination**: `paginate()` async iterator for paginated endpoints
|
|
17
|
+
- **Webhook verification**: `verify_webhook_signature()` with HMAC-SHA256
|
|
18
|
+
- **Job polling**: `poll_job()` for async job status tracking
|
|
19
|
+
- **File uploads**: `upload_geofences()` for GeoJSON/KML/GPX imports
|
|
20
|
+
- **Typed exceptions**: `AuthenticationError`, `NotFoundError`, `ValidationError`, etc.
|
|
21
|
+
- **Models**: Re-exported Pydantic models from generated code
|
|
22
|
+
|
|
23
|
+
### Technical Details
|
|
24
|
+
|
|
25
|
+
- Generated from OpenAPI spec using openapi-generator-cli 7.10.0
|
|
26
|
+
- Python generator with `library=asyncio` for native async/await
|
|
27
|
+
- Requires Python 3.9+
|
|
28
|
+
- Dependencies: aiohttp, pydantic v2, python-dateutil
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: spatialflow
|
|
3
|
+
Version: 0.1.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
|
+
Keywords: automation,geofencing,geospatial,location,sdk,spatialflow
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
+
Classifier: Typing :: Typed
|
|
26
|
+
Requires-Python: >=3.9
|
|
27
|
+
Requires-Dist: aiohttp-retry>=2.8.3
|
|
28
|
+
Requires-Dist: aiohttp>=3.8.4
|
|
29
|
+
Requires-Dist: pydantic>=2.0.0
|
|
30
|
+
Requires-Dist: python-dateutil>=2.8.2
|
|
31
|
+
Requires-Dist: typing-extensions>=4.7.1
|
|
32
|
+
Requires-Dist: urllib3<3.0.0,>=1.25.3
|
|
33
|
+
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: aioresponses>=0.7.4; extra == 'dev'
|
|
35
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
36
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
37
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
40
|
+
Provides-Extra: docs
|
|
41
|
+
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
|
|
42
|
+
Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
|
|
43
|
+
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == 'docs'
|
|
44
|
+
Description-Content-Type: text/markdown
|
|
45
|
+
|
|
46
|
+
# SpatialFlow Python SDK
|
|
47
|
+
|
|
48
|
+
The official Python SDK for [SpatialFlow](https://spatialflow.io) - a real-time geospatial automation platform.
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install spatialflow
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Quick Start
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
import asyncio
|
|
60
|
+
from spatialflow import SpatialFlow, models
|
|
61
|
+
|
|
62
|
+
async def main():
|
|
63
|
+
# Initialize with API key
|
|
64
|
+
async with SpatialFlow(api_key="sf_xxx") as client:
|
|
65
|
+
# List geofences
|
|
66
|
+
response = await client.geofences.apps_geofences_api_list_geofences()
|
|
67
|
+
for geofence in response.results:
|
|
68
|
+
print(f"{geofence.name}: {geofence.id}")
|
|
69
|
+
|
|
70
|
+
# Create a geofence
|
|
71
|
+
geofence = await client.geofences.apps_geofences_api_create_geofence(
|
|
72
|
+
models.CreateGeofenceRequest(
|
|
73
|
+
name="My Region",
|
|
74
|
+
geometry={
|
|
75
|
+
"type": "Polygon",
|
|
76
|
+
"coordinates": [[[-122.4, 37.8], [-122.4, 37.7], [-122.3, 37.7], [-122.3, 37.8], [-122.4, 37.8]]]
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
asyncio.run(main())
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Authentication
|
|
85
|
+
|
|
86
|
+
### API Key (Recommended for server-side)
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
client = SpatialFlow(api_key="sf_xxx")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### JWT Token (For client-side apps)
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
client = SpatialFlow(access_token="eyJ...")
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Resources
|
|
99
|
+
|
|
100
|
+
- **Geofences** - Create and manage geofences
|
|
101
|
+
- **Workflows** - Automate location-based actions
|
|
102
|
+
- **Webhooks** - Receive real-time event notifications
|
|
103
|
+
- **Devices** - Track device locations
|
|
104
|
+
|
|
105
|
+
## Method Naming
|
|
106
|
+
|
|
107
|
+
API methods are auto-generated from the OpenAPI spec and follow the pattern:
|
|
108
|
+
`apps_{resource}_api_{operation}`. For example:
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
# Geofences
|
|
112
|
+
client.geofences.apps_geofences_api_list_geofences()
|
|
113
|
+
client.geofences.apps_geofences_api_create_geofence(...)
|
|
114
|
+
client.geofences.apps_geofences_api_get_geofence(id=...)
|
|
115
|
+
client.geofences.apps_geofences_api_update_geofence(id=..., ...)
|
|
116
|
+
client.geofences.apps_geofences_api_delete_geofence(id=...)
|
|
117
|
+
|
|
118
|
+
# Workflows
|
|
119
|
+
client.workflows.apps_workflows_api_list_workflows()
|
|
120
|
+
client.workflows.apps_workflows_api_create_workflow(...)
|
|
121
|
+
|
|
122
|
+
# Webhooks
|
|
123
|
+
client.webhooks.apps_webhooks_api_list_webhooks()
|
|
124
|
+
client.webhooks.apps_webhooks_api_create_webhook(...)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Use your IDE's autocomplete to discover available methods, or see the
|
|
128
|
+
[API Reference](https://docs.spatialflow.io/sdk/python) for the full list.
|
|
129
|
+
|
|
130
|
+
## Webhook Verification
|
|
131
|
+
|
|
132
|
+
Verify incoming webhook signatures to ensure they're from SpatialFlow:
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
from spatialflow import verify_webhook_signature, WebhookSignatureError
|
|
136
|
+
|
|
137
|
+
# In your webhook handler (e.g., FastAPI/Flask)
|
|
138
|
+
@app.post("/webhook")
|
|
139
|
+
async def handle_webhook(request):
|
|
140
|
+
payload = await request.body()
|
|
141
|
+
signature = request.headers.get("X-SF-Signature")
|
|
142
|
+
|
|
143
|
+
try:
|
|
144
|
+
event = verify_webhook_signature(
|
|
145
|
+
payload=payload,
|
|
146
|
+
signature=signature,
|
|
147
|
+
secret=WEBHOOK_SECRET,
|
|
148
|
+
)
|
|
149
|
+
print(f"Event type: {event['type']}")
|
|
150
|
+
return {"status": "ok"}
|
|
151
|
+
except WebhookSignatureError as e:
|
|
152
|
+
return {"error": str(e)}, 400
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Pagination
|
|
156
|
+
|
|
157
|
+
Use the async paginator to iterate through all results:
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
from spatialflow import paginate
|
|
161
|
+
|
|
162
|
+
async def fetch_page(offset, limit):
|
|
163
|
+
return await client.geofences.apps_geofences_api_list_geofences(
|
|
164
|
+
offset=offset, limit=limit
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
async for geofence in paginate(fetch_page):
|
|
168
|
+
print(geofence.name)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## File Uploads
|
|
172
|
+
|
|
173
|
+
Upload geofence files (GeoJSON, KML, GPX) with automatic job polling:
|
|
174
|
+
|
|
175
|
+
```python
|
|
176
|
+
from spatialflow import upload_geofences
|
|
177
|
+
|
|
178
|
+
result = await upload_geofences(
|
|
179
|
+
client,
|
|
180
|
+
"boundaries.geojson",
|
|
181
|
+
group_name="my-region",
|
|
182
|
+
timeout=120,
|
|
183
|
+
on_status=lambda status, _: print(f"Status: {status}"),
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
print(f"Created {result.created_count} geofences")
|
|
187
|
+
for geofence in result.created_geofences:
|
|
188
|
+
print(f" - {geofence['name']} ({geofence['id']})")
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Async Job Polling
|
|
192
|
+
|
|
193
|
+
For lower-level control over job polling:
|
|
194
|
+
|
|
195
|
+
```python
|
|
196
|
+
from spatialflow import poll_job, JobTimeoutError, JobFailedError
|
|
197
|
+
|
|
198
|
+
async def get_status():
|
|
199
|
+
return await client.geofences.apps_geofences_api_get_upload_job_status(
|
|
200
|
+
job_id=job_id
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
try:
|
|
204
|
+
result = await poll_job(
|
|
205
|
+
get_status,
|
|
206
|
+
timeout=120,
|
|
207
|
+
poll_interval=2.0,
|
|
208
|
+
on_status=lambda status, _: print(f"Status: {status}"),
|
|
209
|
+
)
|
|
210
|
+
print(f"Job completed: {result.created_count} created")
|
|
211
|
+
except JobTimeoutError as e:
|
|
212
|
+
print(f"Job timed out after {e.timeout}s (last status: {e.last_status})")
|
|
213
|
+
except JobFailedError as e:
|
|
214
|
+
print(f"Job failed: {e.error_message}")
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## Models
|
|
218
|
+
|
|
219
|
+
Request/response models are available via the `models` namespace:
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
from spatialflow import models
|
|
223
|
+
|
|
224
|
+
# Common models
|
|
225
|
+
models.CreateGeofenceRequest
|
|
226
|
+
models.GeofenceResponse
|
|
227
|
+
models.CreateWebhookRequest
|
|
228
|
+
models.WebhookResponse
|
|
229
|
+
models.WorkflowIn
|
|
230
|
+
models.WorkflowOut
|
|
231
|
+
|
|
232
|
+
# Explore all available models
|
|
233
|
+
print([m for m in dir(models) if not m.startswith('_')])
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Documentation
|
|
237
|
+
|
|
238
|
+
- [API Reference](https://docs.spatialflow.io/sdk/python)
|
|
239
|
+
- [Examples](./examples/)
|
|
240
|
+
- [Changelog](./CHANGELOG.md)
|
|
241
|
+
|
|
242
|
+
## Support
|
|
243
|
+
|
|
244
|
+
- GitHub Issues: https://github.com/spatialflow-io/spatialflow-python/issues
|
|
245
|
+
- Email: support@spatialflow.io
|
|
246
|
+
|
|
247
|
+
## License
|
|
248
|
+
|
|
249
|
+
MIT License - see [LICENSE](./LICENSE) for details.
|
|
@@ -0,0 +1,204 @@
|
|
|
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
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```python
|
|
14
|
+
import asyncio
|
|
15
|
+
from spatialflow import SpatialFlow, models
|
|
16
|
+
|
|
17
|
+
async def main():
|
|
18
|
+
# Initialize with API key
|
|
19
|
+
async with SpatialFlow(api_key="sf_xxx") as client:
|
|
20
|
+
# List geofences
|
|
21
|
+
response = await client.geofences.apps_geofences_api_list_geofences()
|
|
22
|
+
for geofence in response.results:
|
|
23
|
+
print(f"{geofence.name}: {geofence.id}")
|
|
24
|
+
|
|
25
|
+
# Create a geofence
|
|
26
|
+
geofence = await client.geofences.apps_geofences_api_create_geofence(
|
|
27
|
+
models.CreateGeofenceRequest(
|
|
28
|
+
name="My Region",
|
|
29
|
+
geometry={
|
|
30
|
+
"type": "Polygon",
|
|
31
|
+
"coordinates": [[[-122.4, 37.8], [-122.4, 37.7], [-122.3, 37.7], [-122.3, 37.8], [-122.4, 37.8]]]
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
asyncio.run(main())
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Authentication
|
|
40
|
+
|
|
41
|
+
### API Key (Recommended for server-side)
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
client = SpatialFlow(api_key="sf_xxx")
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### JWT Token (For client-side apps)
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
client = SpatialFlow(access_token="eyJ...")
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Resources
|
|
54
|
+
|
|
55
|
+
- **Geofences** - Create and manage geofences
|
|
56
|
+
- **Workflows** - Automate location-based actions
|
|
57
|
+
- **Webhooks** - Receive real-time event notifications
|
|
58
|
+
- **Devices** - Track device locations
|
|
59
|
+
|
|
60
|
+
## Method Naming
|
|
61
|
+
|
|
62
|
+
API methods are auto-generated from the OpenAPI spec and follow the pattern:
|
|
63
|
+
`apps_{resource}_api_{operation}`. For example:
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
# Geofences
|
|
67
|
+
client.geofences.apps_geofences_api_list_geofences()
|
|
68
|
+
client.geofences.apps_geofences_api_create_geofence(...)
|
|
69
|
+
client.geofences.apps_geofences_api_get_geofence(id=...)
|
|
70
|
+
client.geofences.apps_geofences_api_update_geofence(id=..., ...)
|
|
71
|
+
client.geofences.apps_geofences_api_delete_geofence(id=...)
|
|
72
|
+
|
|
73
|
+
# Workflows
|
|
74
|
+
client.workflows.apps_workflows_api_list_workflows()
|
|
75
|
+
client.workflows.apps_workflows_api_create_workflow(...)
|
|
76
|
+
|
|
77
|
+
# Webhooks
|
|
78
|
+
client.webhooks.apps_webhooks_api_list_webhooks()
|
|
79
|
+
client.webhooks.apps_webhooks_api_create_webhook(...)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Use your IDE's autocomplete to discover available methods, or see the
|
|
83
|
+
[API Reference](https://docs.spatialflow.io/sdk/python) for the full list.
|
|
84
|
+
|
|
85
|
+
## Webhook Verification
|
|
86
|
+
|
|
87
|
+
Verify incoming webhook signatures to ensure they're from SpatialFlow:
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
from spatialflow import verify_webhook_signature, WebhookSignatureError
|
|
91
|
+
|
|
92
|
+
# In your webhook handler (e.g., FastAPI/Flask)
|
|
93
|
+
@app.post("/webhook")
|
|
94
|
+
async def handle_webhook(request):
|
|
95
|
+
payload = await request.body()
|
|
96
|
+
signature = request.headers.get("X-SF-Signature")
|
|
97
|
+
|
|
98
|
+
try:
|
|
99
|
+
event = verify_webhook_signature(
|
|
100
|
+
payload=payload,
|
|
101
|
+
signature=signature,
|
|
102
|
+
secret=WEBHOOK_SECRET,
|
|
103
|
+
)
|
|
104
|
+
print(f"Event type: {event['type']}")
|
|
105
|
+
return {"status": "ok"}
|
|
106
|
+
except WebhookSignatureError as e:
|
|
107
|
+
return {"error": str(e)}, 400
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Pagination
|
|
111
|
+
|
|
112
|
+
Use the async paginator to iterate through all results:
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
from spatialflow import paginate
|
|
116
|
+
|
|
117
|
+
async def fetch_page(offset, limit):
|
|
118
|
+
return await client.geofences.apps_geofences_api_list_geofences(
|
|
119
|
+
offset=offset, limit=limit
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
async for geofence in paginate(fetch_page):
|
|
123
|
+
print(geofence.name)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## File Uploads
|
|
127
|
+
|
|
128
|
+
Upload geofence files (GeoJSON, KML, GPX) with automatic job polling:
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
from spatialflow import upload_geofences
|
|
132
|
+
|
|
133
|
+
result = await upload_geofences(
|
|
134
|
+
client,
|
|
135
|
+
"boundaries.geojson",
|
|
136
|
+
group_name="my-region",
|
|
137
|
+
timeout=120,
|
|
138
|
+
on_status=lambda status, _: print(f"Status: {status}"),
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
print(f"Created {result.created_count} geofences")
|
|
142
|
+
for geofence in result.created_geofences:
|
|
143
|
+
print(f" - {geofence['name']} ({geofence['id']})")
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Async Job Polling
|
|
147
|
+
|
|
148
|
+
For lower-level control over job polling:
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
from spatialflow import poll_job, JobTimeoutError, JobFailedError
|
|
152
|
+
|
|
153
|
+
async def get_status():
|
|
154
|
+
return await client.geofences.apps_geofences_api_get_upload_job_status(
|
|
155
|
+
job_id=job_id
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
try:
|
|
159
|
+
result = await poll_job(
|
|
160
|
+
get_status,
|
|
161
|
+
timeout=120,
|
|
162
|
+
poll_interval=2.0,
|
|
163
|
+
on_status=lambda status, _: print(f"Status: {status}"),
|
|
164
|
+
)
|
|
165
|
+
print(f"Job completed: {result.created_count} created")
|
|
166
|
+
except JobTimeoutError as e:
|
|
167
|
+
print(f"Job timed out after {e.timeout}s (last status: {e.last_status})")
|
|
168
|
+
except JobFailedError as e:
|
|
169
|
+
print(f"Job failed: {e.error_message}")
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Models
|
|
173
|
+
|
|
174
|
+
Request/response models are available via the `models` namespace:
|
|
175
|
+
|
|
176
|
+
```python
|
|
177
|
+
from spatialflow import models
|
|
178
|
+
|
|
179
|
+
# Common models
|
|
180
|
+
models.CreateGeofenceRequest
|
|
181
|
+
models.GeofenceResponse
|
|
182
|
+
models.CreateWebhookRequest
|
|
183
|
+
models.WebhookResponse
|
|
184
|
+
models.WorkflowIn
|
|
185
|
+
models.WorkflowOut
|
|
186
|
+
|
|
187
|
+
# Explore all available models
|
|
188
|
+
print([m for m in dir(models) if not m.startswith('_')])
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Documentation
|
|
192
|
+
|
|
193
|
+
- [API Reference](https://docs.spatialflow.io/sdk/python)
|
|
194
|
+
- [Examples](./examples/)
|
|
195
|
+
- [Changelog](./CHANGELOG.md)
|
|
196
|
+
|
|
197
|
+
## Support
|
|
198
|
+
|
|
199
|
+
- GitHub Issues: https://github.com/spatialflow-io/spatialflow-python/issues
|
|
200
|
+
- Email: support@spatialflow.io
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
MIT License - see [LICENSE](./LICENSE) for details.
|