primitivedotdev 1.3.0__tar.gz → 1.4.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.
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/PKG-INFO +1 -1
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/json-schema/email-received-event.schema.json +287 -2
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/pyproject.toml +1 -1
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/scripts/generate_models.py +7 -1
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/list_emails.py +30 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/create_function.py +24 -16
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/account.py +43 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/models_generated.py +249 -3
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/schemas/email_received_event.schema.json +287 -2
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_validation.py +16 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/.gitignore +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/README.md +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/scripts/generate_api_client.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/scripts/generate_schema_module.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/_compat.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/account/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/account/get_account.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/account/get_storage_stats.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/account/get_webhook_secret.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/account/rotate_webhook_secret.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/account/update_account.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/agent/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/agent/create_agent_account.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/agent/create_agent_claim_link.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/agent/resend_agent_signup_verification.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/agent/start_agent_claim.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/agent/start_agent_signup.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/agent/verify_agent_claim.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/agent/verify_agent_signup.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/cli/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/cli/cli_logout.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/cli/poll_cli_login.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/cli/resend_cli_signup_verification.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/cli/start_cli_login.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/cli/start_cli_signup.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/cli/verify_cli_signup.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/domains/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/domains/add_domain.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/domains/delete_domain.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/domains/download_domain_zone_file.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/domains/list_domains.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/domains/update_domain.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/domains/verify_domain.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/delete_email.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/discard_email_content.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/download_attachments.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/download_raw_email.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/get_conversation.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/get_email.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/replay_email_webhooks.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/emails/search_emails.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/endpoints/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/endpoints/create_endpoint.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/endpoints/delete_endpoint.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/endpoints/list_endpoints.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/endpoints/test_endpoint.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/endpoints/update_endpoint.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/filters/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/filters/create_filter.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/filters/delete_filter.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/filters/list_filters.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/filters/update_filter.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/create_function_secret.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/delete_function.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/delete_function_secret.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/get_function.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/get_function_routing.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/get_function_test_run_trace.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/get_org_routing_topology.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/list_function_logs.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/list_function_secrets.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/list_functions.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/set_function_route.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/set_function_secret.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/test_function.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/unset_function_route.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/update_function.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/inbox/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/inbox/get_inbox_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/search/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/search/semantic_search.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/sending/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/sending/get_send_permissions.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/sending/get_sent_email.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/sending/list_sent_emails.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/sending/reply_to_email.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/sending/send_email.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/threads/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/threads/get_thread.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/webhook_deliveries/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/webhook_deliveries/list_deliveries.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/webhook_deliveries/replay_delivery.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/client.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/downloads.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/errors.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/__init__.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/account_updated.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/add_domain_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/add_domain_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_account_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_account_result_plan.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_account_upgrade_hint.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_account_upgrade_hint_plan.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_claim_link_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_claim_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_claim_result_plan.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_claim_start_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_org_ref.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_signup_resend_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_signup_start_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_signup_verify_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_signup_verify_result_auth_method.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/agent_signup_verify_result_token_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_login_poll_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_login_poll_result_auth_method.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_login_poll_result_token_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_login_start_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_logout_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_logout_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_logout_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_signup_resend_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_signup_start_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_signup_verify_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_signup_verify_result_auth_method.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/cli_signup_verify_result_token_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/conversation.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/conversation_message.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/conversation_message_direction.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/conversation_message_role.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_agent_account_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_agent_account_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_agent_claim_link_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_agent_claim_link_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_endpoint_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_endpoint_input_rules.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_endpoint_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_filter_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_filter_input_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_filter_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_function_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_function_input_files.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_function_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_function_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_function_secret_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_function_secret_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/create_function_secret_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_domain_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_domain_response_200_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_email_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_email_response_200_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_endpoint_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_endpoint_response_200_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_filter_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_filter_response_200_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_function_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delete_function_response_200_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delivery_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delivery_summary.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delivery_summary_email_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/delivery_summary_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/discard_content_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/discard_email_content_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/dkim_signature.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/domain_dns_record.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/domain_dns_record_purpose.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/domain_dns_record_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/domain_dns_record_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/domain_verify_result_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/domain_verify_result_type_1.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_address.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_attachment.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_auth.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_detail.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_detail_reply.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_search_facet_bucket.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_search_facets.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_search_facets_has_attachment.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_search_highlights.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_search_meta.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_search_meta_sort.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_search_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_summary.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_webhook_status_type_1.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_webhook_status_type_2_type_1.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/email_webhook_status_type_3_type_1.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/endpoint.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/endpoint_rules.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/error_response.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/error_response_error.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/error_response_error_code.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/error_response_error_details.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/error_response_error_details_mx_conflict.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/filter_.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/filter_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_deploy_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_detail.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_list_item.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_log_row.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_log_row_level.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_log_row_metadata_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_route_body.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_route_body_target_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_route_body_target_type_0_kind.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_route_body_target_type_1.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_route_body_target_type_1_kind.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_route_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_route_result_conflict.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_route_result_conflict_kind.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_routing.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_routing_domain_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_routing_rules.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_secret_list_item.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_secret_write_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_delivery.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_delivery_endpoint_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_delivery_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_inbound_email_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_outbound_request.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_reply.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_send_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_state.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/function_test_run_trace.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/gate_denial.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/gate_denial_name.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/gate_denial_reason.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/gate_fix.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/gate_fix_action.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_account_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_conversation_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_email_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_function_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_function_routing_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_function_test_run_trace_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_inbox_status_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_org_routing_topology_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_send_permissions_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_sent_email_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_storage_stats_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_thread_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/get_webhook_secret_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/inbox_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/inbox_status_domain.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/inbox_status_domain_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/inbox_status_endpoint_summary.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/inbox_status_function_summary.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/inbox_status_next_action.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/inbox_status_next_action_kind.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/inbox_status_recent_email_summary.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_deliveries_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_deliveries_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_domains_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_emails_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_endpoints_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_envelope.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_filters_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_function_logs_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_function_logs_response_200_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_function_secrets_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_function_secrets_response_200_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_functions_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/list_sent_emails_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/pagination_meta.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/parsed_email_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/parsed_email_data_error_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/parsed_email_data_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/plan_limits.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/poll_cli_login_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/poll_cli_login_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/replay_delivery_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/replay_email_webhooks_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/replay_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/reply_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/reply_to_email_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/resend_agent_signup_verification_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/resend_agent_signup_verification_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/resend_cli_signup_verification_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/resend_cli_signup_verification_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/rotate_webhook_secret_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/routing_topology.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/routing_topology_domains_item.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/routing_topology_domains_item_routed_function_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/routing_topology_fallback_function_type_0.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/routing_topology_unrouted_functions_item.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/search_emails_has_attachment.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/search_emails_include_facets.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/search_emails_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/search_emails_snippet.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/search_emails_sort.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_coverage.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_field.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_input_corpus_item.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_input_include_item.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_input_mode.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_meta.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_meta_mode.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_result_source_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_score_breakdown.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/semantic_search_snippet.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_email_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_mail_attachment.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_mail_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_mail_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permission_address.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permission_address_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permission_any_recipient.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permission_any_recipient_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permission_managed_zone.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permission_managed_zone_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permission_your_domain.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permission_your_domain_type.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/send_permissions_meta.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/sent_email_detail.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/sent_email_status.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/sent_email_summary.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/set_function_route_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/set_function_secret_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/set_function_secret_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/set_function_secret_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_agent_claim_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_agent_claim_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_agent_signup_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_agent_signup_input_metadata.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_agent_signup_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_cli_login_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_cli_login_input_metadata.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_cli_login_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_cli_signup_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_cli_signup_input_metadata.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/start_cli_signup_response_201.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/storage_stats.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/success_envelope.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/test_endpoint_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/test_function_body.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/test_function_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/test_invocation_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/test_result.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/thread.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/thread_message.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/thread_message_direction.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/unset_function_route_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/unset_function_route_response_200_data.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/unverified_domain.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_account_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_account_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_domain_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_domain_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_endpoint_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_endpoint_input_rules.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_endpoint_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_filter_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_filter_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_function_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_function_input_files.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/update_function_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/verified_domain.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/verify_agent_claim_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/verify_agent_claim_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/verify_agent_signup_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/verify_agent_signup_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/verify_cli_signup_input.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/verify_cli_signup_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/verify_domain_response_200.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/models/webhook_secret.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/types.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/client.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/errors.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/py.typed +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/received_email.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/schema.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/types.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/validation.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/webhook.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/auth/cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/download-tokens/vectors.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/handle-webhook/cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/handle-webhook/standard-webhooks-cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/header-address-parser/cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/parse-webhook-event/cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/raw/cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/send-payloads/cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/signing/standard-webhooks-vectors.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/signing/vectors.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/subject-builders/cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/webhook/valid-email-received.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/test-fixtures/webhook/validation-cases.json +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/conftest.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_auth.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_client.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_email_detail.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_encoding.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_generated_downloads.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_parsing.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_send_payloads.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_shared_fixtures.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_signing.py +0 -0
- {primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/tests/test_webhook.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: primitivedotdev
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Official Primitive Python SDK for webhook handling and API access
|
|
5
5
|
Project-URL: Homepage, https://primitive.dev
|
|
6
6
|
Project-URL: Repository, https://github.com/primitivedotdev/sdks
|
{primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/json-schema/email-received-event.schema.json
RENAMED
|
@@ -12,8 +12,14 @@
|
|
|
12
12
|
},
|
|
13
13
|
"event": {
|
|
14
14
|
"type": "string",
|
|
15
|
-
"
|
|
16
|
-
|
|
15
|
+
"enum": [
|
|
16
|
+
"email.received",
|
|
17
|
+
"email.bounced",
|
|
18
|
+
"email.tls_report",
|
|
19
|
+
"email.dmarc_report",
|
|
20
|
+
"email.dmarc_failure"
|
|
21
|
+
],
|
|
22
|
+
"description": "Event type identifier.\n\n- `email.received` - A normal inbound email.\n- `email.bounced` - A delivery status notification (DSN) reporting that a message delivery failed. Carries `email.analysis.bounce`.\n- `email.tls_report` - An SMTP TLS report (RFC 8460). Carries `email.analysis.tls_report`.\n- `email.dmarc_report` - A DMARC aggregate report (RFC 7489). Carries `email.analysis.dmarc_report`.\n- `email.dmarc_failure` - A DMARC failure (forensic) report.\n\nMachine-generated mail (bounces and the report types above) is delivered under its own event type rather than `email.received`, so an endpoint subscribed only to `email.received` receives just normal inbound mail. The payload shape is otherwise identical across event types; the type-specific details live under `email.analysis`."
|
|
17
23
|
},
|
|
18
24
|
"version": {
|
|
19
25
|
"$ref": "#/definitions/WebhookVersion",
|
|
@@ -655,10 +661,289 @@
|
|
|
655
661
|
"forward": {
|
|
656
662
|
"$ref": "#/definitions/ForwardAnalysis",
|
|
657
663
|
"description": "Forward detection and analysis results.\n\nOptional. Present when the email was processed by a forward-detection pipeline (always present in Primitive's managed service). When absent, forward detection was not performed on this email."
|
|
664
|
+
},
|
|
665
|
+
"bounce": {
|
|
666
|
+
"$ref": "#/definitions/BounceAnalysis",
|
|
667
|
+
"description": "Bounce (delivery status notification) analysis.\n\nPresent on `email.bounced` events: the parsed DSN reporting that a message you sent could not be delivered. Absent on all other event types."
|
|
668
|
+
},
|
|
669
|
+
"tls_report": {
|
|
670
|
+
"$ref": "#/definitions/TlsReportAnalysis",
|
|
671
|
+
"description": "SMTP TLS report analysis (RFC 8460).\n\nPresent on `email.tls_report` events: a remote MTA's report of TLS negotiation results for mail sent to your domain. Absent on all other event types."
|
|
672
|
+
},
|
|
673
|
+
"dmarc_report": {
|
|
674
|
+
"$ref": "#/definitions/DmarcReportAnalysis",
|
|
675
|
+
"description": "DMARC aggregate report analysis (RFC 7489).\n\nPresent on `email.dmarc_report` events: a receiver's periodic aggregate report of DMARC authentication results for your domain. Absent on all other event types."
|
|
658
676
|
}
|
|
659
677
|
},
|
|
660
678
|
"description": "Email analysis and classification results.\n\nAll properties in this object are optional. Which fields are present depends on the analysis pipeline processing the email. Primitive's managed service populates all fields. Self-hosted or third-party deployments may include some, all, or none of these fields depending on their pipeline configuration.\n\nWhen a field is absent, it means that particular analysis was not performed, not that the analysis produced no results. For example, a missing `spamassassin` field means SpamAssassin was not run, not that the email scored 0.\n\nThese fields may be omitted from the payload entirely but must not be set to null."
|
|
661
679
|
},
|
|
680
|
+
"BounceAnalysis": {
|
|
681
|
+
"type": "object",
|
|
682
|
+
"properties": {
|
|
683
|
+
"is_bounce": {
|
|
684
|
+
"type": "boolean",
|
|
685
|
+
"const": true,
|
|
686
|
+
"description": "Always `true` on a parsed bounce."
|
|
687
|
+
},
|
|
688
|
+
"kind": {
|
|
689
|
+
"type": "string",
|
|
690
|
+
"const": "dsn",
|
|
691
|
+
"description": "The machine-mail kind. Always `dsn` for a bounce."
|
|
692
|
+
},
|
|
693
|
+
"type": {
|
|
694
|
+
"type": "string",
|
|
695
|
+
"enum": ["permanent", "transient", "undetermined"],
|
|
696
|
+
"description": "Whether the failure is permanent (hard bounce), transient (soft bounce, may be retried), or undetermined."
|
|
697
|
+
},
|
|
698
|
+
"category": {
|
|
699
|
+
"type": "string",
|
|
700
|
+
"enum": [
|
|
701
|
+
"mailbox_does_not_exist",
|
|
702
|
+
"domain_does_not_exist",
|
|
703
|
+
"domain_not_accepting_mail",
|
|
704
|
+
"mailbox_full",
|
|
705
|
+
"mailbox_inactive",
|
|
706
|
+
"message_too_large",
|
|
707
|
+
"content_rejected",
|
|
708
|
+
"policy_blocked",
|
|
709
|
+
"auth_failure",
|
|
710
|
+
"relay_denied",
|
|
711
|
+
"rate_limited",
|
|
712
|
+
"network_error",
|
|
713
|
+
"recipient_moved",
|
|
714
|
+
"expired",
|
|
715
|
+
"undetermined"
|
|
716
|
+
],
|
|
717
|
+
"description": "Best-effort reason category for the failure."
|
|
718
|
+
},
|
|
719
|
+
"classified_by": {
|
|
720
|
+
"type": "string",
|
|
721
|
+
"enum": ["status_code", "smtp_code", "pattern", "provider", "none"],
|
|
722
|
+
"description": "Which signal produced `category` (for transparency and debugging)."
|
|
723
|
+
},
|
|
724
|
+
"failed_recipient": {
|
|
725
|
+
"type": ["string", "null"],
|
|
726
|
+
"description": "The recipient address that failed, if the report identifies one."
|
|
727
|
+
},
|
|
728
|
+
"smtp_code": {
|
|
729
|
+
"type": ["integer", "null"],
|
|
730
|
+
"description": "SMTP reply code (e.g. `550`), if reported."
|
|
731
|
+
},
|
|
732
|
+
"status_code": {
|
|
733
|
+
"type": ["string", "null"],
|
|
734
|
+
"description": "Enhanced mail system status code (RFC 3463, e.g. `5.1.1`), if reported."
|
|
735
|
+
},
|
|
736
|
+
"diagnostic_code": {
|
|
737
|
+
"type": ["string", "null"],
|
|
738
|
+
"description": "Raw diagnostic text from the reporting MTA, if present."
|
|
739
|
+
},
|
|
740
|
+
"reported_by_mta": {
|
|
741
|
+
"type": ["string", "null"],
|
|
742
|
+
"description": "The MTA that generated the report, if identifiable."
|
|
743
|
+
},
|
|
744
|
+
"original_message_id": {
|
|
745
|
+
"type": ["string", "null"],
|
|
746
|
+
"description": "Message-ID of the original message that bounced, if recoverable. Match this against the `message_id` of a message you sent to correlate the bounce."
|
|
747
|
+
},
|
|
748
|
+
"reasons": {
|
|
749
|
+
"type": "array",
|
|
750
|
+
"items": { "type": "string" },
|
|
751
|
+
"description": "Human-readable reason strings extracted from the report."
|
|
752
|
+
}
|
|
753
|
+
},
|
|
754
|
+
"required": [
|
|
755
|
+
"is_bounce",
|
|
756
|
+
"kind",
|
|
757
|
+
"type",
|
|
758
|
+
"category",
|
|
759
|
+
"classified_by",
|
|
760
|
+
"failed_recipient",
|
|
761
|
+
"smtp_code",
|
|
762
|
+
"status_code",
|
|
763
|
+
"diagnostic_code",
|
|
764
|
+
"reported_by_mta",
|
|
765
|
+
"original_message_id",
|
|
766
|
+
"reasons"
|
|
767
|
+
],
|
|
768
|
+
"description": "Parsed delivery status notification (bounce). Present as `email.analysis.bounce` on `email.bounced` events."
|
|
769
|
+
},
|
|
770
|
+
"TlsReportFailure": {
|
|
771
|
+
"type": "object",
|
|
772
|
+
"properties": {
|
|
773
|
+
"result_type": {
|
|
774
|
+
"type": ["string", "null"],
|
|
775
|
+
"description": "Failure result type (e.g. `certificate-expired`, `starttls-not-supported`)."
|
|
776
|
+
},
|
|
777
|
+
"count": {
|
|
778
|
+
"type": "integer",
|
|
779
|
+
"description": "Number of sessions that hit this failure."
|
|
780
|
+
},
|
|
781
|
+
"sending_mta_ip": { "type": ["string", "null"] },
|
|
782
|
+
"receiving_mx_hostname": { "type": ["string", "null"] }
|
|
783
|
+
},
|
|
784
|
+
"required": ["result_type", "count", "sending_mta_ip", "receiving_mx_hostname"]
|
|
785
|
+
},
|
|
786
|
+
"TlsReportPolicy": {
|
|
787
|
+
"type": "object",
|
|
788
|
+
"properties": {
|
|
789
|
+
"policy_domain": { "type": ["string", "null"] },
|
|
790
|
+
"policy_type": {
|
|
791
|
+
"type": ["string", "null"],
|
|
792
|
+
"description": "Policy type the sessions were evaluated against (e.g. `sts`, `tlsa`, `no-policy-found`)."
|
|
793
|
+
},
|
|
794
|
+
"successful_sessions": { "type": "integer" },
|
|
795
|
+
"failed_sessions": { "type": "integer" },
|
|
796
|
+
"failures": {
|
|
797
|
+
"type": "array",
|
|
798
|
+
"items": { "$ref": "#/definitions/TlsReportFailure" }
|
|
799
|
+
}
|
|
800
|
+
},
|
|
801
|
+
"required": [
|
|
802
|
+
"policy_domain",
|
|
803
|
+
"policy_type",
|
|
804
|
+
"successful_sessions",
|
|
805
|
+
"failed_sessions",
|
|
806
|
+
"failures"
|
|
807
|
+
]
|
|
808
|
+
},
|
|
809
|
+
"TlsReportAnalysis": {
|
|
810
|
+
"type": "object",
|
|
811
|
+
"properties": {
|
|
812
|
+
"kind": { "type": "string", "const": "tls_report" },
|
|
813
|
+
"organization": {
|
|
814
|
+
"type": ["string", "null"],
|
|
815
|
+
"description": "Reporting organization name."
|
|
816
|
+
},
|
|
817
|
+
"report_id": { "type": ["string", "null"] },
|
|
818
|
+
"contact": {
|
|
819
|
+
"type": ["string", "null"],
|
|
820
|
+
"description": "Reporter contact, if provided."
|
|
821
|
+
},
|
|
822
|
+
"date_range": {
|
|
823
|
+
"type": "object",
|
|
824
|
+
"properties": {
|
|
825
|
+
"start": {
|
|
826
|
+
"type": ["string", "null"],
|
|
827
|
+
"description": "ISO 8601 start of the reporting window."
|
|
828
|
+
},
|
|
829
|
+
"end": {
|
|
830
|
+
"type": ["string", "null"],
|
|
831
|
+
"description": "ISO 8601 end of the reporting window."
|
|
832
|
+
}
|
|
833
|
+
},
|
|
834
|
+
"required": ["start", "end"]
|
|
835
|
+
},
|
|
836
|
+
"total_successful_sessions": { "type": "integer" },
|
|
837
|
+
"total_failed_sessions": { "type": "integer" },
|
|
838
|
+
"policies": {
|
|
839
|
+
"type": "array",
|
|
840
|
+
"items": { "$ref": "#/definitions/TlsReportPolicy" }
|
|
841
|
+
}
|
|
842
|
+
},
|
|
843
|
+
"required": [
|
|
844
|
+
"kind",
|
|
845
|
+
"organization",
|
|
846
|
+
"report_id",
|
|
847
|
+
"contact",
|
|
848
|
+
"date_range",
|
|
849
|
+
"total_successful_sessions",
|
|
850
|
+
"total_failed_sessions",
|
|
851
|
+
"policies"
|
|
852
|
+
],
|
|
853
|
+
"description": "Parsed SMTP TLS report (RFC 8460). Present as `email.analysis.tls_report` on `email.tls_report` events."
|
|
854
|
+
},
|
|
855
|
+
"DmarcRecord": {
|
|
856
|
+
"type": "object",
|
|
857
|
+
"properties": {
|
|
858
|
+
"source_ip": { "type": ["string", "null"] },
|
|
859
|
+
"count": { "type": "integer" },
|
|
860
|
+
"disposition": {
|
|
861
|
+
"type": ["string", "null"],
|
|
862
|
+
"description": "Disposition applied by the receiver: `none`, `quarantine`, or `reject`."
|
|
863
|
+
},
|
|
864
|
+
"dkim": {
|
|
865
|
+
"type": ["string", "null"],
|
|
866
|
+
"description": "DKIM alignment result: `pass` or `fail`."
|
|
867
|
+
},
|
|
868
|
+
"spf": {
|
|
869
|
+
"type": ["string", "null"],
|
|
870
|
+
"description": "SPF alignment result: `pass` or `fail`."
|
|
871
|
+
},
|
|
872
|
+
"header_from": { "type": ["string", "null"] }
|
|
873
|
+
},
|
|
874
|
+
"required": ["source_ip", "count", "disposition", "dkim", "spf", "header_from"]
|
|
875
|
+
},
|
|
876
|
+
"DmarcReportAnalysis": {
|
|
877
|
+
"type": "object",
|
|
878
|
+
"properties": {
|
|
879
|
+
"kind": { "type": "string", "const": "dmarc_report" },
|
|
880
|
+
"organization": { "type": ["string", "null"] },
|
|
881
|
+
"report_id": { "type": ["string", "null"] },
|
|
882
|
+
"date_range": {
|
|
883
|
+
"type": "object",
|
|
884
|
+
"properties": {
|
|
885
|
+
"start": {
|
|
886
|
+
"type": ["string", "null"],
|
|
887
|
+
"description": "ISO 8601 start of the reporting window."
|
|
888
|
+
},
|
|
889
|
+
"end": {
|
|
890
|
+
"type": ["string", "null"],
|
|
891
|
+
"description": "ISO 8601 end of the reporting window."
|
|
892
|
+
}
|
|
893
|
+
},
|
|
894
|
+
"required": ["start", "end"]
|
|
895
|
+
},
|
|
896
|
+
"policy_published": {
|
|
897
|
+
"type": "object",
|
|
898
|
+
"properties": {
|
|
899
|
+
"domain": { "type": ["string", "null"] },
|
|
900
|
+
"p": {
|
|
901
|
+
"type": ["string", "null"],
|
|
902
|
+
"description": "Published domain policy: `none`, `quarantine`, or `reject`."
|
|
903
|
+
},
|
|
904
|
+
"sp": {
|
|
905
|
+
"type": ["string", "null"],
|
|
906
|
+
"description": "Published subdomain policy."
|
|
907
|
+
},
|
|
908
|
+
"pct": {
|
|
909
|
+
"type": ["integer", "null"],
|
|
910
|
+
"description": "Percentage of messages the policy is applied to."
|
|
911
|
+
},
|
|
912
|
+
"adkim": {
|
|
913
|
+
"type": ["string", "null"],
|
|
914
|
+
"description": "DKIM alignment mode: `r` (relaxed) or `s` (strict)."
|
|
915
|
+
},
|
|
916
|
+
"aspf": {
|
|
917
|
+
"type": ["string", "null"],
|
|
918
|
+
"description": "SPF alignment mode: `r` (relaxed) or `s` (strict)."
|
|
919
|
+
}
|
|
920
|
+
},
|
|
921
|
+
"required": ["domain", "p", "sp", "pct", "adkim", "aspf"]
|
|
922
|
+
},
|
|
923
|
+
"total_count": {
|
|
924
|
+
"type": "integer",
|
|
925
|
+
"description": "Total messages covered by the report."
|
|
926
|
+
},
|
|
927
|
+
"dkim_pass_count": { "type": "integer" },
|
|
928
|
+
"spf_pass_count": { "type": "integer" },
|
|
929
|
+
"records": {
|
|
930
|
+
"type": "array",
|
|
931
|
+
"items": { "$ref": "#/definitions/DmarcRecord" }
|
|
932
|
+
}
|
|
933
|
+
},
|
|
934
|
+
"required": [
|
|
935
|
+
"kind",
|
|
936
|
+
"organization",
|
|
937
|
+
"report_id",
|
|
938
|
+
"date_range",
|
|
939
|
+
"policy_published",
|
|
940
|
+
"total_count",
|
|
941
|
+
"dkim_pass_count",
|
|
942
|
+
"spf_pass_count",
|
|
943
|
+
"records"
|
|
944
|
+
],
|
|
945
|
+
"description": "Parsed DMARC aggregate report (RFC 7489). Present as `email.analysis.dmarc_report` on `email.dmarc_report` events."
|
|
946
|
+
},
|
|
662
947
|
"ForwardAnalysis": {
|
|
663
948
|
"type": "object",
|
|
664
949
|
"properties": {
|
|
@@ -80,6 +80,10 @@ def _patch_generated_models() -> None:
|
|
|
80
80
|
|
|
81
81
|
for enum_name in (
|
|
82
82
|
"Code",
|
|
83
|
+
"Event",
|
|
84
|
+
"Type",
|
|
85
|
+
"Category",
|
|
86
|
+
"ClassifiedBy",
|
|
83
87
|
"ForwardVerdict",
|
|
84
88
|
"AuthConfidence",
|
|
85
89
|
"SpfResult",
|
|
@@ -160,7 +164,9 @@ def _patch_generated_models() -> None:
|
|
|
160
164
|
text,
|
|
161
165
|
" ] = None\n\n\nclass Email(BaseModel):\n",
|
|
162
166
|
" ] = None\n\n"
|
|
163
|
-
" @field_validator(\
|
|
167
|
+
" @field_validator(\n"
|
|
168
|
+
" \"spamassassin\", \"forward\", \"bounce\", \"tls_report\", \"dmarc_report\", mode=\"before\"\n"
|
|
169
|
+
" )\n"
|
|
164
170
|
" @classmethod\n"
|
|
165
171
|
" def reject_explicit_null_optional_objects(cls, value):\n"
|
|
166
172
|
" if value is None:\n"
|
|
@@ -28,6 +28,8 @@ def _get_kwargs(
|
|
|
28
28
|
search: str | Unset = UNSET,
|
|
29
29
|
date_from: datetime.datetime | Unset = UNSET,
|
|
30
30
|
date_to: datetime.datetime | Unset = UNSET,
|
|
31
|
+
since: str | Unset = UNSET,
|
|
32
|
+
wait: int | Unset = UNSET,
|
|
31
33
|
|
|
32
34
|
) -> dict[str, Any]:
|
|
33
35
|
|
|
@@ -63,6 +65,10 @@ def _get_kwargs(
|
|
|
63
65
|
json_date_to = date_to.isoformat()
|
|
64
66
|
params["date_to"] = json_date_to
|
|
65
67
|
|
|
68
|
+
params["since"] = since
|
|
69
|
+
|
|
70
|
+
params["wait"] = wait
|
|
71
|
+
|
|
66
72
|
|
|
67
73
|
params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
|
|
68
74
|
|
|
@@ -125,6 +131,8 @@ def sync_detailed(
|
|
|
125
131
|
search: str | Unset = UNSET,
|
|
126
132
|
date_from: datetime.datetime | Unset = UNSET,
|
|
127
133
|
date_to: datetime.datetime | Unset = UNSET,
|
|
134
|
+
since: str | Unset = UNSET,
|
|
135
|
+
wait: int | Unset = UNSET,
|
|
128
136
|
|
|
129
137
|
) -> Response[ErrorResponse | ListEmailsResponse200]:
|
|
130
138
|
""" List inbound emails
|
|
@@ -179,6 +187,8 @@ def sync_detailed(
|
|
|
179
187
|
search (str | Unset):
|
|
180
188
|
date_from (datetime.datetime | Unset):
|
|
181
189
|
date_to (datetime.datetime | Unset):
|
|
190
|
+
since (str | Unset):
|
|
191
|
+
wait (int | Unset):
|
|
182
192
|
|
|
183
193
|
Raises:
|
|
184
194
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -197,6 +207,8 @@ status=status,
|
|
|
197
207
|
search=search,
|
|
198
208
|
date_from=date_from,
|
|
199
209
|
date_to=date_to,
|
|
210
|
+
since=since,
|
|
211
|
+
wait=wait,
|
|
200
212
|
|
|
201
213
|
)
|
|
202
214
|
|
|
@@ -216,6 +228,8 @@ def sync(
|
|
|
216
228
|
search: str | Unset = UNSET,
|
|
217
229
|
date_from: datetime.datetime | Unset = UNSET,
|
|
218
230
|
date_to: datetime.datetime | Unset = UNSET,
|
|
231
|
+
since: str | Unset = UNSET,
|
|
232
|
+
wait: int | Unset = UNSET,
|
|
219
233
|
|
|
220
234
|
) -> ErrorResponse | ListEmailsResponse200 | None:
|
|
221
235
|
""" List inbound emails
|
|
@@ -270,6 +284,8 @@ def sync(
|
|
|
270
284
|
search (str | Unset):
|
|
271
285
|
date_from (datetime.datetime | Unset):
|
|
272
286
|
date_to (datetime.datetime | Unset):
|
|
287
|
+
since (str | Unset):
|
|
288
|
+
wait (int | Unset):
|
|
273
289
|
|
|
274
290
|
Raises:
|
|
275
291
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -289,6 +305,8 @@ status=status,
|
|
|
289
305
|
search=search,
|
|
290
306
|
date_from=date_from,
|
|
291
307
|
date_to=date_to,
|
|
308
|
+
since=since,
|
|
309
|
+
wait=wait,
|
|
292
310
|
|
|
293
311
|
).parsed
|
|
294
312
|
|
|
@@ -302,6 +320,8 @@ async def asyncio_detailed(
|
|
|
302
320
|
search: str | Unset = UNSET,
|
|
303
321
|
date_from: datetime.datetime | Unset = UNSET,
|
|
304
322
|
date_to: datetime.datetime | Unset = UNSET,
|
|
323
|
+
since: str | Unset = UNSET,
|
|
324
|
+
wait: int | Unset = UNSET,
|
|
305
325
|
|
|
306
326
|
) -> Response[ErrorResponse | ListEmailsResponse200]:
|
|
307
327
|
""" List inbound emails
|
|
@@ -356,6 +376,8 @@ async def asyncio_detailed(
|
|
|
356
376
|
search (str | Unset):
|
|
357
377
|
date_from (datetime.datetime | Unset):
|
|
358
378
|
date_to (datetime.datetime | Unset):
|
|
379
|
+
since (str | Unset):
|
|
380
|
+
wait (int | Unset):
|
|
359
381
|
|
|
360
382
|
Raises:
|
|
361
383
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -374,6 +396,8 @@ status=status,
|
|
|
374
396
|
search=search,
|
|
375
397
|
date_from=date_from,
|
|
376
398
|
date_to=date_to,
|
|
399
|
+
since=since,
|
|
400
|
+
wait=wait,
|
|
377
401
|
|
|
378
402
|
)
|
|
379
403
|
|
|
@@ -393,6 +417,8 @@ async def asyncio(
|
|
|
393
417
|
search: str | Unset = UNSET,
|
|
394
418
|
date_from: datetime.datetime | Unset = UNSET,
|
|
395
419
|
date_to: datetime.datetime | Unset = UNSET,
|
|
420
|
+
since: str | Unset = UNSET,
|
|
421
|
+
wait: int | Unset = UNSET,
|
|
396
422
|
|
|
397
423
|
) -> ErrorResponse | ListEmailsResponse200 | None:
|
|
398
424
|
""" List inbound emails
|
|
@@ -447,6 +473,8 @@ async def asyncio(
|
|
|
447
473
|
search (str | Unset):
|
|
448
474
|
date_from (datetime.datetime | Unset):
|
|
449
475
|
date_to (datetime.datetime | Unset):
|
|
476
|
+
since (str | Unset):
|
|
477
|
+
wait (int | Unset):
|
|
450
478
|
|
|
451
479
|
Raises:
|
|
452
480
|
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
@@ -466,5 +494,7 @@ status=status,
|
|
|
466
494
|
search=search,
|
|
467
495
|
date_from=date_from,
|
|
468
496
|
date_to=date_to,
|
|
497
|
+
since=since,
|
|
498
|
+
wait=wait,
|
|
469
499
|
|
|
470
500
|
)).parsed
|
{primitivedotdev-1.3.0 → primitivedotdev-1.4.0}/src/primitive/api/api/functions/create_function.py
RENAMED
|
@@ -121,10 +121,12 @@ def sync_detailed(
|
|
|
121
121
|
each delivery and forwards the `Primitive-Signature` header to
|
|
122
122
|
the handler. Verify the raw request body with
|
|
123
123
|
`PRIMITIVE_WEBHOOK_SECRET` before parsing JSON; after verification
|
|
124
|
-
the request body parses to
|
|
125
|
-
`
|
|
126
|
-
|
|
127
|
-
|
|
124
|
+
the request body parses to a webhook event whose `event` field is
|
|
125
|
+
`email.received` for normal inbound mail, or a machine-mail type
|
|
126
|
+
(`email.bounced`, `email.tls_report`, `email.dmarc_report`,
|
|
127
|
+
`email.dmarc_failure`) for bounces and reports. Code is bundled
|
|
128
|
+
before being uploaded; ship a single self-contained file rather
|
|
129
|
+
than relying on external imports.
|
|
128
130
|
|
|
129
131
|
**Code limits.** `code` is capped at 1 MiB UTF-8. `sourceMap`
|
|
130
132
|
(optional) is capped at 5 MiB UTF-8, stored with each deployment
|
|
@@ -182,10 +184,12 @@ def sync(
|
|
|
182
184
|
each delivery and forwards the `Primitive-Signature` header to
|
|
183
185
|
the handler. Verify the raw request body with
|
|
184
186
|
`PRIMITIVE_WEBHOOK_SECRET` before parsing JSON; after verification
|
|
185
|
-
the request body parses to
|
|
186
|
-
`
|
|
187
|
-
|
|
188
|
-
|
|
187
|
+
the request body parses to a webhook event whose `event` field is
|
|
188
|
+
`email.received` for normal inbound mail, or a machine-mail type
|
|
189
|
+
(`email.bounced`, `email.tls_report`, `email.dmarc_report`,
|
|
190
|
+
`email.dmarc_failure`) for bounces and reports. Code is bundled
|
|
191
|
+
before being uploaded; ship a single self-contained file rather
|
|
192
|
+
than relying on external imports.
|
|
189
193
|
|
|
190
194
|
**Code limits.** `code` is capped at 1 MiB UTF-8. `sourceMap`
|
|
191
195
|
(optional) is capped at 5 MiB UTF-8, stored with each deployment
|
|
@@ -238,10 +242,12 @@ async def asyncio_detailed(
|
|
|
238
242
|
each delivery and forwards the `Primitive-Signature` header to
|
|
239
243
|
the handler. Verify the raw request body with
|
|
240
244
|
`PRIMITIVE_WEBHOOK_SECRET` before parsing JSON; after verification
|
|
241
|
-
the request body parses to
|
|
242
|
-
`
|
|
243
|
-
|
|
244
|
-
|
|
245
|
+
the request body parses to a webhook event whose `event` field is
|
|
246
|
+
`email.received` for normal inbound mail, or a machine-mail type
|
|
247
|
+
(`email.bounced`, `email.tls_report`, `email.dmarc_report`,
|
|
248
|
+
`email.dmarc_failure`) for bounces and reports. Code is bundled
|
|
249
|
+
before being uploaded; ship a single self-contained file rather
|
|
250
|
+
than relying on external imports.
|
|
245
251
|
|
|
246
252
|
**Code limits.** `code` is capped at 1 MiB UTF-8. `sourceMap`
|
|
247
253
|
(optional) is capped at 5 MiB UTF-8, stored with each deployment
|
|
@@ -299,10 +305,12 @@ async def asyncio(
|
|
|
299
305
|
each delivery and forwards the `Primitive-Signature` header to
|
|
300
306
|
the handler. Verify the raw request body with
|
|
301
307
|
`PRIMITIVE_WEBHOOK_SECRET` before parsing JSON; after verification
|
|
302
|
-
the request body parses to
|
|
303
|
-
`
|
|
304
|
-
|
|
305
|
-
|
|
308
|
+
the request body parses to a webhook event whose `event` field is
|
|
309
|
+
`email.received` for normal inbound mail, or a machine-mail type
|
|
310
|
+
(`email.bounced`, `email.tls_report`, `email.dmarc_report`,
|
|
311
|
+
`email.dmarc_failure`) for bounces and reports. Code is bundled
|
|
312
|
+
before being uploaded; ship a single self-contained file rather
|
|
313
|
+
than relying on external imports.
|
|
306
314
|
|
|
307
315
|
**Code limits.** `code` is capped at 1 MiB UTF-8. `sourceMap`
|
|
308
316
|
(optional) is capped at 5 MiB UTF-8, stored with each deployment
|
|
@@ -13,6 +13,8 @@ from typing import cast
|
|
|
13
13
|
from uuid import UUID
|
|
14
14
|
import datetime
|
|
15
15
|
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from ..models.plan_limits import PlanLimits
|
|
16
18
|
|
|
17
19
|
|
|
18
20
|
|
|
@@ -29,6 +31,11 @@ class Account:
|
|
|
29
31
|
id (UUID):
|
|
30
32
|
email (str):
|
|
31
33
|
plan (str):
|
|
34
|
+
limits (PlanLimits): Plan-derived quota limits for an account.
|
|
35
|
+
entitlements (list[str]): Granted org entitlement keys (sorted). A headless caller reads its
|
|
36
|
+
capabilities here — e.g. an emailless agent seeing only
|
|
37
|
+
["send_mail", "send_to_known_addresses"] knows it is reply-only.
|
|
38
|
+
managed_inbox_address (None | str): The managed inbox FQDN to reply as, or null if the org has no managed inbox.
|
|
32
39
|
created_at (datetime.datetime):
|
|
33
40
|
discard_content_on_webhook_confirmed (bool):
|
|
34
41
|
onboarding_completed (bool | Unset):
|
|
@@ -43,6 +50,9 @@ class Account:
|
|
|
43
50
|
id: UUID
|
|
44
51
|
email: str
|
|
45
52
|
plan: str
|
|
53
|
+
limits: PlanLimits
|
|
54
|
+
entitlements: list[str]
|
|
55
|
+
managed_inbox_address: None | str
|
|
46
56
|
created_at: datetime.datetime
|
|
47
57
|
discard_content_on_webhook_confirmed: bool
|
|
48
58
|
onboarding_completed: bool | Unset = UNSET
|
|
@@ -59,12 +69,22 @@ class Account:
|
|
|
59
69
|
|
|
60
70
|
|
|
61
71
|
def to_dict(self) -> dict[str, Any]:
|
|
72
|
+
from ..models.plan_limits import PlanLimits
|
|
62
73
|
id = str(self.id)
|
|
63
74
|
|
|
64
75
|
email = self.email
|
|
65
76
|
|
|
66
77
|
plan = self.plan
|
|
67
78
|
|
|
79
|
+
limits = self.limits.to_dict()
|
|
80
|
+
|
|
81
|
+
entitlements = self.entitlements
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
managed_inbox_address: None | str
|
|
86
|
+
managed_inbox_address = self.managed_inbox_address
|
|
87
|
+
|
|
68
88
|
created_at = self.created_at.isoformat()
|
|
69
89
|
|
|
70
90
|
discard_content_on_webhook_confirmed = self.discard_content_on_webhook_confirmed
|
|
@@ -118,6 +138,9 @@ class Account:
|
|
|
118
138
|
"id": id,
|
|
119
139
|
"email": email,
|
|
120
140
|
"plan": plan,
|
|
141
|
+
"limits": limits,
|
|
142
|
+
"entitlements": entitlements,
|
|
143
|
+
"managed_inbox_address": managed_inbox_address,
|
|
121
144
|
"created_at": created_at,
|
|
122
145
|
"discard_content_on_webhook_confirmed": discard_content_on_webhook_confirmed,
|
|
123
146
|
})
|
|
@@ -142,6 +165,7 @@ class Account:
|
|
|
142
165
|
|
|
143
166
|
@classmethod
|
|
144
167
|
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
168
|
+
from ..models.plan_limits import PlanLimits
|
|
145
169
|
d = dict(src_dict)
|
|
146
170
|
id = UUID(d.pop("id"))
|
|
147
171
|
|
|
@@ -152,6 +176,22 @@ class Account:
|
|
|
152
176
|
|
|
153
177
|
plan = d.pop("plan")
|
|
154
178
|
|
|
179
|
+
limits = PlanLimits.from_dict(d.pop("limits"))
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
entitlements = cast(list[str], d.pop("entitlements"))
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
def _parse_managed_inbox_address(data: object) -> None | str:
|
|
188
|
+
if data is None:
|
|
189
|
+
return data
|
|
190
|
+
return cast(None | str, data)
|
|
191
|
+
|
|
192
|
+
managed_inbox_address = _parse_managed_inbox_address(d.pop("managed_inbox_address"))
|
|
193
|
+
|
|
194
|
+
|
|
155
195
|
created_at = isoparse(d.pop("created_at"))
|
|
156
196
|
|
|
157
197
|
|
|
@@ -245,6 +285,9 @@ class Account:
|
|
|
245
285
|
id=id,
|
|
246
286
|
email=email,
|
|
247
287
|
plan=plan,
|
|
288
|
+
limits=limits,
|
|
289
|
+
entitlements=entitlements,
|
|
290
|
+
managed_inbox_address=managed_inbox_address,
|
|
248
291
|
created_at=created_at,
|
|
249
292
|
discard_content_on_webhook_confirmed=discard_content_on_webhook_confirmed,
|
|
250
293
|
onboarding_completed=onboarding_completed,
|