jaxl-python 0.0.13__tar.gz → 0.0.16__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.
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/PKG-INFO +18 -8
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/README.md +14 -7
- jaxl_python-0.0.16/docs.sh +8 -0
- jaxl_python-0.0.16/index.md +9 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/__init__.py +16 -51
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/_client.py +5 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/base.py +45 -18
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/__init__.py +1 -1
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/_scm_version.py +2 -2
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/__init__.py +1 -1
- jaxl_python-0.0.16/jaxl/api/client/api/v1/v1_app_organizations_list.py +221 -0
- jaxl_python-0.0.16/jaxl/api/client/api/v1/v1_app_organizations_providers_list.py +269 -0
- jaxl_python-0.0.16/jaxl/api/client/api/v1/v1_calls_retrieve.py +186 -0
- jaxl_python-0.0.16/jaxl/api/client/api/v1/v1_integrations_create.py +176 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/errors.py +1 -1
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/__init__.py +29 -1
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_add_request_request.py +6 -6
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_tts_request_request.py +12 -1
- jaxl_python-0.0.16/jaxl/api/client/models/exotel_auth_request_request.py +90 -0
- jaxl_python-0.0.16/jaxl/api/client/models/integrations_error_response.py +66 -0
- jaxl_python-0.0.16/jaxl/api/client/models/integrations_properties_request.py +101 -0
- jaxl_python-0.0.16/jaxl/api/client/models/integrations_request_provider_enum.py +42 -0
- jaxl_python-0.0.16/jaxl/api/client/models/integrations_request_request.py +102 -0
- jaxl_python-0.0.16/jaxl/api/client/models/integrations_response.py +89 -0
- jaxl_python-0.0.16/jaxl/api/client/models/invalid_provider_request.py +66 -0
- jaxl_python-0.0.16/jaxl/api/client/models/organization.py +121 -0
- jaxl_python-0.0.16/jaxl/api/client/models/organization_preferences.py +53 -0
- jaxl_python-0.0.16/jaxl/api/client/models/organization_provider.py +80 -0
- jaxl_python-0.0.16/jaxl/api/client/models/paginated_organization_list.py +107 -0
- jaxl_python-0.0.16/jaxl/api/client/models/paginated_organization_provider_list.py +107 -0
- jaxl_python-0.0.16/jaxl/api/client/models/shopify_auth_request_request.py +66 -0
- jaxl_python-0.0.16/jaxl/api/client/models/v1_app_organizations_list_status_item.py +21 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/types.py +1 -1
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/accounts.py +3 -2
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/apps.py +29 -5
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/calls.py +66 -1
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/campaigns.py +1 -1
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/members.py +2 -1
- jaxl_python-0.0.16/jaxl/api/resources/orgs.py +63 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/teams.py +2 -1
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl_python.egg-info/PKG-INFO +18 -8
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl_python.egg-info/SOURCES.txt +22 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl_python.egg-info/requires.txt +3 -0
- jaxl_python-0.0.16/mkdocs.yml +10 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/pyproject.toml +1 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/setup.cfg +3 -0
- jaxl_python-0.0.16/setup.gif +0 -0
- jaxl_python-0.0.13/docs.sh +0 -5
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/.github/workflows/sdk.yml +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/.gitignore +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/.isort.cfg +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/.pylintrc +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/.vscode/settings.json +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/LICENSE.md +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/SPECIFICATION.md +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/README.md +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/__init__.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/prompts/example.txt +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/py.typed +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/request_and_confirm_code_then_send_to_phone.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/request_code_and_send_to_phone.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/send_to_phone.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/streaming_aiagent.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/streaming_audio_chunks.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/streaming_speech_segments.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/examples/streaming_transcriptions.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/_sdk.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/cli.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/__init__.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_appusers_me_retrieve.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_calls_add_create.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_calls_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_calls_token_create.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_calls_tts_create.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_calls_usage_retrieve.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_campaign_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_customer_consumables_retrieve.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_devices_attest_create.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_devices_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_ivr_create.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_ivr_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_ivr_options_create.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_ivr_options_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_ivr_options_partial_update.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_kyc_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_messages_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_phonenumbers_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_phonenumbers_partial_update.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v1/v1_phonenumbers_search_retrieve.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v2/__init__.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v2/v2_app_organizations_employees_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v2/v2_app_organizations_groups_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v3/__init__.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/api/v3/v3_orders_subscriptions_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/client.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/address_provider.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/address_provider_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/analytic.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/app_price.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/app_user.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/available_phone_number.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/available_phone_number_capabilities.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/available_phone_number_provider_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_cost.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_location_epoch.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_metadata.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_tag_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_token_request.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_token_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_type_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_usage_by_currency_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_usage_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/call_usage_stats_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/campaign_metadata.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/campaign_metadata_metadata.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/campaign_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/campaign_response_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/campaign_stats.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/campaign_tag.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/can_user_resubscribe_plan.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/canceled_by_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/capabilities.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/connection.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/country.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/cta.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/cta_request.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/currency_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/customer_consumable_total.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/customer_order_subscriptions_serializer_v2.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/customer_order_subscriptions_serializer_v2_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/customer_provider_serializer_v2.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/device.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/device_attestation_error.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/device_attestation_error_reason_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/device_attestation_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/dh_message.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/dh_message_attachment.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/dh_message_reaction.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/dh_message_type_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/direction_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/emoji.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/emoji_reaction.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/id_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/intent_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/iso_country_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/item.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/ivr_collection.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/ivr_collection_request.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/ivr_menu_request.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/ivr_menu_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/ivr_menu_response_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/ivr_options_invalid_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/ivr_options_request.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/ivr_options_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/kyc.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/kyc_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/kyc_upload_metadata.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/location.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/next_or_cta_request.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/order_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/organization_employee.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/organization_employee_preferences.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/organization_employee_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/organization_group_inline.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/organization_group_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_call_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_campaign_response_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_customer_order_subscriptions_serializer_v2_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_device_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_dh_message_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_ivr_menu_response_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_ivr_options_response_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_kyc_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_organization_employee_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_organization_group_response_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/paginated_phone_number_list.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/patched_ivr_options_update_request.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/patched_phone_number_request.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/payment_gateway_fees_info.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/period_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/phone_number.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/phone_number_attributes.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/phone_number_capabilities.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/phone_number_provider_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/phone_number_search_response.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/phone_number_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/plan.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/plan_cancel_info.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/plan_expiry_timestamp.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/plan_expiry_timestamp_type_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/plan_extra_details.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/plan_item.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/plan_type.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/plan_type_cycle.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/platform_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/product_group.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/proof.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/proof_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/provider_status_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/reaction_by.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/rental_currency_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/resource_enum.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/user_agent.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/user_agent_browser.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/user_agent_device.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/user_agent_operating_system.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/user_agent_platform.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/user_identity.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_calls_list_direction.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_campaign_list_status_item.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_customer_consumables_retrieve_currency.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_ivr_list_duration.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_kyc_list_iso_country.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_kyc_list_provider_status_item.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_kyc_list_resource.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_kyc_list_status.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_phonenumbers_list_additional_status_item.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_phonenumbers_list_provider.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_phonenumbers_list_status.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_phonenumbers_search_retrieve_intent.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_phonenumbers_search_retrieve_iso_country_code.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v1_phonenumbers_search_retrieve_resource.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v2_app_organizations_employees_list_status_item.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v3_orders_subscriptions_list_currency.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/client/models/v3_orders_subscriptions_list_status_item.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/py.typed +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/__init__.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/_constants.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/devices.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/ivrs.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/kycs.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/messages.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/notifications.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/payments.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/phones.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl/api/resources/silence.py +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl_python.egg-info/dependency_links.txt +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl_python.egg-info/entry_points.txt +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl_python.egg-info/not-zip-safe +0 -0
- {jaxl_python-0.0.13 → jaxl_python-0.0.16}/jaxl_python.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jaxl-python
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.16
|
|
4
4
|
Summary: Official Python SDK and CLI for interfacing with the Jaxl API. Manage calls, messages, IVRs, devices, teams, payments, campaigns, streaming transcriptions and AI Agents. Built on OpenAPI, it offers both generated API clients and Pythonic wrappers for ease of use.
|
|
5
5
|
Home-page: https://github.com/jaxl-innovations-private-limited/jaxl-python
|
|
6
6
|
Download-URL: https://github.com/jaxl-innovations-private-limited/jaxl-python/archive/main.zip
|
|
@@ -59,6 +59,9 @@ Requires-Dist: autoflake; extra == "dev"
|
|
|
59
59
|
Requires-Dist: pylint==3.3.3; extra == "dev"
|
|
60
60
|
Provides-Extra: docs
|
|
61
61
|
Requires-Dist: pdoc3==0.11.6; extra == "docs"
|
|
62
|
+
Requires-Dist: mkdocs==1.6.1; extra == "docs"
|
|
63
|
+
Requires-Dist: mkdocstrings==0.30.1; extra == "docs"
|
|
64
|
+
Requires-Dist: mkdocstrings-python==1.18.2; extra == "docs"
|
|
62
65
|
Provides-Extra: types
|
|
63
66
|
Requires-Dist: types-python-dateutil; extra == "types"
|
|
64
67
|
Requires-Dist: types-PyYAML==6.0.12.20250915; extra == "types"
|
|
@@ -113,6 +116,7 @@ Use Jaxl from Python code or directly via the `jaxl` command-line tool.
|
|
|
113
116
|
- [Unmute a Participant in an Active Call](#unmute-a-participant-in-an-active-call)
|
|
114
117
|
- [Hold a Participant in an Active Call](#hold-a-participant-in-an-active-call)
|
|
115
118
|
- [Unhold a Participant in an Active Call](#unhold-a-participant-in-an-active-call)
|
|
119
|
+
- [Get call details](#get-call-details)
|
|
116
120
|
- [Receive Call Events via Webhook IVRs](#receive-call-events-via-webhook-ivrs)
|
|
117
121
|
- [Realtime Streaming Audio](#realtime-streaming-audio)
|
|
118
122
|
- [Realtime Streaming Speech Segments](#realtime-streaming-speech-segments)
|
|
@@ -134,12 +138,12 @@ Use Jaxl from Python code or directly via the `jaxl` command-line tool.
|
|
|
134
138
|
|
|
135
139
|
```bash
|
|
136
140
|
jaxl -h
|
|
137
|
-
usage: jaxl [-h] {accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,payments,phones,teams} ...
|
|
141
|
+
usage: jaxl [-h] {accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,orgs,payments,phones,teams} ...
|
|
138
142
|
|
|
139
143
|
Jaxl CLI
|
|
140
144
|
|
|
141
145
|
positional arguments:
|
|
142
|
-
{accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,payments,phones,teams}
|
|
146
|
+
{accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,orgs,payments,phones,teams}
|
|
143
147
|
accounts Manage Accounts
|
|
144
148
|
apps Manage Apps for Webhooks and Streaming audio/speech/transcriptions.
|
|
145
149
|
calls Manage Calls (Domestic & International Cellular, App-to-App)
|
|
@@ -150,6 +154,7 @@ positional arguments:
|
|
|
150
154
|
members Manage Members
|
|
151
155
|
messages Manage Messages (SMS, WA, RCS, Email, App-to-App)
|
|
152
156
|
notifications Manage Notifications (Android, iOS, Web)
|
|
157
|
+
orgs Manage Accounts
|
|
153
158
|
payments Manage Payments
|
|
154
159
|
phones Manage Phones (Landline, Mobile, TollFree)
|
|
155
160
|
teams Manage Teams (Managers, Phones)
|
|
@@ -167,6 +172,8 @@ You will require the following to successfully run `jaxl` command line tool:
|
|
|
167
172
|
|
|
168
173
|
Please visit [Jaxl Business Website](https://business.jaxl.com) or download the [Jaxl Business Android](https://play.google.com/store/apps/details?id=com.jaxl.business) or [Jaxl Business iOS](https://apps.apple.com/app/id6451118240) mobile application to access your credentials and auth tokens.
|
|
169
174
|
|
|
175
|
+
[](https://github.com/jaxl-innovations-private-limited/jaxl-python#setup)
|
|
176
|
+
|
|
170
177
|
Finally, setup following environment variables when trying `jaxl` command line.
|
|
171
178
|
|
|
172
179
|
```bash
|
|
@@ -336,11 +343,8 @@ jaxl calls remove --call-id 1234 --email <someone@mycompany.com>
|
|
|
336
343
|
### Send Text Prompts (TTS) in an Active Call
|
|
337
344
|
|
|
338
345
|
```bash
|
|
339
|
-
jaxl calls
|
|
340
|
-
--prompt "Hello, this text was injected in the middle of an active call"
|
|
341
|
-
--prompt "Yes its possible to pass in multiple prompt flags" \
|
|
342
|
-
--prompt "Use shorter prompt phrases to keep TTS latency low" \
|
|
343
|
-
--prompt "Avoid using excessively large sentences"
|
|
346
|
+
jaxl calls tts --call-id 1234 \
|
|
347
|
+
--prompt "Hello, this text was injected in the middle of an active call"
|
|
344
348
|
```
|
|
345
349
|
|
|
346
350
|
### Play Audio File in an Active Call
|
|
@@ -407,6 +411,12 @@ Unhold an agent in a call
|
|
|
407
411
|
jaxl calls unhold --call-id 1235 --email <someone@mycompany.com>
|
|
408
412
|
```
|
|
409
413
|
|
|
414
|
+
### Get call details
|
|
415
|
+
|
|
416
|
+
```bash
|
|
417
|
+
jaxl calls get --call-id 1234
|
|
418
|
+
```
|
|
419
|
+
|
|
410
420
|
### Receive Call Events via Webhook IVRs
|
|
411
421
|
|
|
412
422
|
Webhook IVRs can be used to programatically control the lifecycle of incoming and outgoing calls.
|
|
@@ -27,6 +27,7 @@ Use Jaxl from Python code or directly via the `jaxl` command-line tool.
|
|
|
27
27
|
- [Unmute a Participant in an Active Call](#unmute-a-participant-in-an-active-call)
|
|
28
28
|
- [Hold a Participant in an Active Call](#hold-a-participant-in-an-active-call)
|
|
29
29
|
- [Unhold a Participant in an Active Call](#unhold-a-participant-in-an-active-call)
|
|
30
|
+
- [Get call details](#get-call-details)
|
|
30
31
|
- [Receive Call Events via Webhook IVRs](#receive-call-events-via-webhook-ivrs)
|
|
31
32
|
- [Realtime Streaming Audio](#realtime-streaming-audio)
|
|
32
33
|
- [Realtime Streaming Speech Segments](#realtime-streaming-speech-segments)
|
|
@@ -48,12 +49,12 @@ Use Jaxl from Python code or directly via the `jaxl` command-line tool.
|
|
|
48
49
|
|
|
49
50
|
```bash
|
|
50
51
|
jaxl -h
|
|
51
|
-
usage: jaxl [-h] {accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,payments,phones,teams} ...
|
|
52
|
+
usage: jaxl [-h] {accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,orgs,payments,phones,teams} ...
|
|
52
53
|
|
|
53
54
|
Jaxl CLI
|
|
54
55
|
|
|
55
56
|
positional arguments:
|
|
56
|
-
{accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,payments,phones,teams}
|
|
57
|
+
{accounts,apps,calls,campaigns,devices,ivrs,kycs,members,messages,notifications,orgs,payments,phones,teams}
|
|
57
58
|
accounts Manage Accounts
|
|
58
59
|
apps Manage Apps for Webhooks and Streaming audio/speech/transcriptions.
|
|
59
60
|
calls Manage Calls (Domestic & International Cellular, App-to-App)
|
|
@@ -64,6 +65,7 @@ positional arguments:
|
|
|
64
65
|
members Manage Members
|
|
65
66
|
messages Manage Messages (SMS, WA, RCS, Email, App-to-App)
|
|
66
67
|
notifications Manage Notifications (Android, iOS, Web)
|
|
68
|
+
orgs Manage Accounts
|
|
67
69
|
payments Manage Payments
|
|
68
70
|
phones Manage Phones (Landline, Mobile, TollFree)
|
|
69
71
|
teams Manage Teams (Managers, Phones)
|
|
@@ -81,6 +83,8 @@ You will require the following to successfully run `jaxl` command line tool:
|
|
|
81
83
|
|
|
82
84
|
Please visit [Jaxl Business Website](https://business.jaxl.com) or download the [Jaxl Business Android](https://play.google.com/store/apps/details?id=com.jaxl.business) or [Jaxl Business iOS](https://apps.apple.com/app/id6451118240) mobile application to access your credentials and auth tokens.
|
|
83
85
|
|
|
86
|
+
[](https://github.com/jaxl-innovations-private-limited/jaxl-python#setup)
|
|
87
|
+
|
|
84
88
|
Finally, setup following environment variables when trying `jaxl` command line.
|
|
85
89
|
|
|
86
90
|
```bash
|
|
@@ -250,11 +254,8 @@ jaxl calls remove --call-id 1234 --email <someone@mycompany.com>
|
|
|
250
254
|
### Send Text Prompts (TTS) in an Active Call
|
|
251
255
|
|
|
252
256
|
```bash
|
|
253
|
-
jaxl calls
|
|
254
|
-
--prompt "Hello, this text was injected in the middle of an active call"
|
|
255
|
-
--prompt "Yes its possible to pass in multiple prompt flags" \
|
|
256
|
-
--prompt "Use shorter prompt phrases to keep TTS latency low" \
|
|
257
|
-
--prompt "Avoid using excessively large sentences"
|
|
257
|
+
jaxl calls tts --call-id 1234 \
|
|
258
|
+
--prompt "Hello, this text was injected in the middle of an active call"
|
|
258
259
|
```
|
|
259
260
|
|
|
260
261
|
### Play Audio File in an Active Call
|
|
@@ -321,6 +322,12 @@ Unhold an agent in a call
|
|
|
321
322
|
jaxl calls unhold --call-id 1235 --email <someone@mycompany.com>
|
|
322
323
|
```
|
|
323
324
|
|
|
325
|
+
### Get call details
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
jaxl calls get --call-id 1234
|
|
329
|
+
```
|
|
330
|
+
|
|
324
331
|
### Receive Call Events via Webhook IVRs
|
|
325
332
|
|
|
326
333
|
Webhook IVRs can be used to programatically control the lifecycle of incoming and outgoing calls.
|
|
@@ -23,8 +23,6 @@ Use Jaxl from Python code or directly via the `jaxl` command-line tool.
|
|
|
23
23
|
- [Assign a Phone Number to IVR by ID](#assign-a-phone-number-to-ivr-by-id)
|
|
24
24
|
- [Place Outgoing Cellular Call with Existing IVR](#place-outgoing-cellular-call-with-existing-ivr)
|
|
25
25
|
- [Place Outgoing Cellular Call with Ad-hoc IVR](#place-outgoing-cellular-call-with-ad-hoc-ivr)
|
|
26
|
-
- [Dial-out Multi-Party Conference between Cellular Numbers](#dial-out-multi-party-conference-between-cellular-numbers)
|
|
27
|
-
- [Dial-out Agent Team and Cellular Numbers](#dial-out-agent-team-and-cellular-numbers)
|
|
28
26
|
- [Dial-out 2-Party Conference with Ad-hoc IVR](#dial-out-2-party-conference-with-ad-hoc-ivr)
|
|
29
27
|
- [Add External Phone Number to an Active Call](#add-external-phone-number-to-an-active-call)
|
|
30
28
|
- [Add Agent to an Active Call](#add-agent-to-an-active-call)
|
|
@@ -122,13 +120,13 @@ This IVR will speak the message and then hangup the call.
|
|
|
122
120
|
|
|
123
121
|
```bash
|
|
124
122
|
jaxl ivrs create \
|
|
125
|
-
--message "Hello, we are calling via Jaxl IVR demo created from CLI" \
|
|
123
|
+
--message "Hello, we are calling via Jaxl IVR demo created from CLI. Will hang up after speaking this message." \
|
|
126
124
|
--hangup
|
|
127
125
|
```
|
|
128
126
|
|
|
129
127
|
### Configure IVR Options
|
|
130
128
|
|
|
131
|
-
This IVR option uses `--next` to send user to another IVR.
|
|
129
|
+
This IVR option uses `--next` to send user to another IVR or to the same IVR for a "repeat this menu" experience.
|
|
132
130
|
|
|
133
131
|
```bash
|
|
134
132
|
jaxl ivrs options configure \
|
|
@@ -138,7 +136,7 @@ jaxl ivrs options configure \
|
|
|
138
136
|
--next <NEXT IVR ID>
|
|
139
137
|
```
|
|
140
138
|
|
|
141
|
-
> Use <IVR ID TO CONFIGURE>
|
|
139
|
+
> Use same value for <IVR ID TO CONFIGURE> and <NEXT IVR ID> to complete the "repeat this menu" experience.
|
|
142
140
|
|
|
143
141
|
One of the CTA key flag must be provided. Allowed CTA keys are:
|
|
144
142
|
|
|
@@ -209,39 +207,6 @@ jaxl calls create \
|
|
|
209
207
|
--option "2=Press 2 for HR department:team=<HR Team ID>
|
|
210
208
|
```
|
|
211
209
|
|
|
212
|
-
## Dial-out Multi-Party Conference between Cellular Numbers
|
|
213
|
-
|
|
214
|
-
Below command will execute the following flow:
|
|
215
|
-
|
|
216
|
-
- Dials out all `--to` participants in parallel
|
|
217
|
-
- Connects them together as they answer the call
|
|
218
|
-
- Ends the call when one but all others have hanged up the call
|
|
219
|
-
|
|
220
|
-
```bash
|
|
221
|
-
jaxl calls create \
|
|
222
|
-
--to "+91<Doctors Number>" \
|
|
223
|
-
--to "+91<Patient Number>" \
|
|
224
|
-
--to "+91<Supervisor Number>" \
|
|
225
|
-
--from "+91<Purchased Jaxl Number>"
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
### Dial-out Agent Team and Cellular Numbers
|
|
229
|
-
|
|
230
|
-
Below command will execute the following flow:
|
|
231
|
-
|
|
232
|
-
- Dials out multiple teams of doctors & patient in parallel
|
|
233
|
-
- Connects the patient with first doctor to pick the call from the teams
|
|
234
|
-
- Doctors are called on their cellular number first (if added on Jaxl app),
|
|
235
|
-
followed by an attempt to call on Jaxl app directly (VoIP).
|
|
236
|
-
- Calling preference can be controlled per agent (doctor) or team to dictate
|
|
237
|
-
whether to use cellular or voip first to connect with a doctor.
|
|
238
|
-
|
|
239
|
-
```bash
|
|
240
|
-
jaxl calls create \
|
|
241
|
-
--to "teams=<Doctors Team ID1>,<Doctors Team ID2>" \
|
|
242
|
-
--to "+91<Patient Number>"
|
|
243
|
-
```
|
|
244
|
-
|
|
245
210
|
### Dial-out 2-Party Conference with Ad-hoc IVR
|
|
246
211
|
|
|
247
212
|
Below command will execute the following flow:
|
|
@@ -407,25 +372,21 @@ jaxl payments consumables total
|
|
|
407
372
|
## Jaxl Python SDK
|
|
408
373
|
|
|
409
374
|
- Jaxl APIs is built upon [OpenAPI specification](https://www.openapis.org/)
|
|
410
|
-
- `jaxl-python` contains following Python modules:
|
|
411
|
-
- `jaxl.api.client`: Generated OpenAPI SDK
|
|
412
|
-
- `jaxl.api.resources`: Wrapper methods written to support `jaxl` CLI
|
|
413
|
-
- `jaxl_api_client`: Helper function to retrieve an instance of `JaxlApiClient`
|
|
414
375
|
|
|
415
376
|
### SDK Example Usage:
|
|
416
377
|
|
|
417
378
|
```python
|
|
418
|
-
from jaxl.api import
|
|
419
|
-
from jaxl.api.client.api.v1 import v1_calls_list
|
|
379
|
+
from jaxl.api import JaxlSDK
|
|
420
380
|
|
|
421
381
|
os.environ.setdefault("JAXL_API_CREDENTIALS", "/path/to/jaxl-api-credentials.json")
|
|
422
382
|
|
|
423
383
|
os.environ.setdefault("JAXL_API_AUTH_TOKEN", "....authentication token...")
|
|
424
384
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
)
|
|
385
|
+
sdk = JaxlSDK()
|
|
386
|
+
|
|
387
|
+
response = sdk.calls.create(to="+91<Callee Number>", from_="+91<Purchased Jaxl Number>", ivr=1234)
|
|
388
|
+
response = sdk.calls.list(currency=2) # 1=USD, 2=INR
|
|
389
|
+
response = sdk.accounts.me()
|
|
429
390
|
```
|
|
430
391
|
|
|
431
392
|
## SDK Documentation
|
|
@@ -444,7 +405,7 @@ python3 -m venv .venv
|
|
|
444
405
|
source .venv/bin/activate
|
|
445
406
|
|
|
446
407
|
# Install
|
|
447
|
-
pip install -e ".[dev]"
|
|
408
|
+
pip install -e ".[dev,docs]"
|
|
448
409
|
|
|
449
410
|
# Generate documentation
|
|
450
411
|
./docs.sh
|
|
@@ -455,9 +416,13 @@ open docs/jaxl/index.html
|
|
|
455
416
|
|
|
456
417
|
## Status
|
|
457
418
|
|
|
458
|
-
[](https://pypi.org/project/jaxl-python/)
|
|
420
|
+
|
|
421
|
+
[](https://pypi.org/project/jaxl-python/)
|
|
422
|
+
|
|
423
|
+
[](https://www.python.org/)
|
|
459
424
|
|
|
460
|
-
[](http://mypy-lang.org/)
|
|
461
426
|
"""
|
|
462
427
|
|
|
463
428
|
from ._client import JaxlApiModule, jaxl_api_client
|
|
@@ -311,6 +311,7 @@ def jaxl_api_client(
|
|
|
311
311
|
module: JaxlApiModule,
|
|
312
312
|
credentials: Optional[ApiCredentials] = None,
|
|
313
313
|
auth_token: Optional[str] = None,
|
|
314
|
+
set_org_id: bool = True,
|
|
314
315
|
) -> "AuthenticatedClient":
|
|
315
316
|
"""Returns JaxlApiClient with auth token and device id preset."""
|
|
316
317
|
attestation = attest()
|
|
@@ -320,6 +321,10 @@ def jaxl_api_client(
|
|
|
320
321
|
assert auth_token is not None, "Missing JAXL_API_AUTH_TOKEN"
|
|
321
322
|
client.set_device_id(attestation["id"])
|
|
322
323
|
client.set_auth_token(auth_token)
|
|
324
|
+
if set_org_id:
|
|
325
|
+
from jaxl.api.resources.orgs import first_org_id
|
|
326
|
+
|
|
327
|
+
client.set_org_id(first_org_id())
|
|
323
328
|
return cast(AuthenticatedClient, client)
|
|
324
329
|
|
|
325
330
|
|
|
@@ -10,16 +10,25 @@ with or without modification, is strictly prohibited.
|
|
|
10
10
|
import json
|
|
11
11
|
import logging
|
|
12
12
|
from enum import Enum
|
|
13
|
-
from typing import
|
|
13
|
+
from typing import (
|
|
14
|
+
Any,
|
|
15
|
+
Awaitable,
|
|
16
|
+
Callable,
|
|
17
|
+
Coroutine,
|
|
18
|
+
Dict,
|
|
19
|
+
List,
|
|
20
|
+
Optional,
|
|
21
|
+
Tuple,
|
|
22
|
+
Union,
|
|
23
|
+
)
|
|
14
24
|
|
|
15
25
|
import requests
|
|
26
|
+
from fastapi import WebSocket
|
|
27
|
+
from fastapi.responses import Response as FastApiResponse
|
|
16
28
|
from pydantic import BaseModel, model_validator
|
|
17
29
|
|
|
18
|
-
from jaxl.api.
|
|
19
|
-
from jaxl.api.
|
|
20
|
-
from jaxl.api.client.models.call_tts_request_request import (
|
|
21
|
-
CallTtsRequestRequest,
|
|
22
|
-
)
|
|
30
|
+
from jaxl.api.client.types import Response
|
|
31
|
+
from jaxl.api.resources.calls import calls_tts
|
|
23
32
|
from jaxl.api.resources.ivrs import IVR_CTA_KEYS
|
|
24
33
|
|
|
25
34
|
|
|
@@ -31,6 +40,7 @@ class JaxlWebhookEvent(Enum):
|
|
|
31
40
|
OPTION = 2
|
|
32
41
|
TEARDOWN = 3
|
|
33
42
|
STREAM = 4
|
|
43
|
+
MARK = 5
|
|
34
44
|
|
|
35
45
|
|
|
36
46
|
class JaxlOrg(BaseModel):
|
|
@@ -58,11 +68,14 @@ class JaxlWebhookRequest(BaseModel):
|
|
|
58
68
|
option: Optional[str]
|
|
59
69
|
# Extra data
|
|
60
70
|
data: Optional[str]
|
|
71
|
+
# Present only with mark event
|
|
72
|
+
mark: Optional[str] = None
|
|
61
73
|
|
|
62
74
|
|
|
63
75
|
class JaxlWebhookResponse(BaseModel):
|
|
64
76
|
prompt: List[str]
|
|
65
77
|
num_characters: Union[int, str]
|
|
78
|
+
mark: Optional[str] = None
|
|
66
79
|
|
|
67
80
|
|
|
68
81
|
class JaxlStreamRequest(BaseModel):
|
|
@@ -113,9 +126,23 @@ class JaxlCtaResponse(BaseModel):
|
|
|
113
126
|
|
|
114
127
|
HANDLER_RESPONSE = Optional[Union[JaxlWebhookResponse, JaxlCtaResponse]]
|
|
115
128
|
|
|
129
|
+
ApiRouteConfig = Tuple[str, List[str], Optional[BaseModel]]
|
|
130
|
+
ApiRouteFunc = Union[
|
|
131
|
+
Callable[[BaseModel], Coroutine[Any, Any, Union[BaseModel, FastApiResponse]]],
|
|
132
|
+
Callable[[], Coroutine[Any, Any, Union[BaseModel, FastApiResponse]]],
|
|
133
|
+
]
|
|
134
|
+
WebsocketRouteFunc = Callable[[WebSocket], Awaitable[None]]
|
|
135
|
+
|
|
116
136
|
|
|
117
137
|
class BaseJaxlApp:
|
|
118
138
|
|
|
139
|
+
# pylint: disable=no-self-use,unused-argument
|
|
140
|
+
def api_routes(self) -> List[Tuple[ApiRouteConfig, ApiRouteFunc]]:
|
|
141
|
+
return []
|
|
142
|
+
|
|
143
|
+
def websocket_routes(self) -> List[Tuple[str, WebsocketRouteFunc]]:
|
|
144
|
+
return []
|
|
145
|
+
|
|
119
146
|
# pylint: disable=no-self-use,unused-argument
|
|
120
147
|
async def handle_configure(self, req: JaxlWebhookRequest) -> HANDLER_RESPONSE:
|
|
121
148
|
"""Invoked when a phone number gets assigned to IVR."""
|
|
@@ -137,6 +164,10 @@ class BaseJaxlApp:
|
|
|
137
164
|
"""Invoked when IVR option is chosen."""
|
|
138
165
|
return None
|
|
139
166
|
|
|
167
|
+
async def handle_mark(self, req: JaxlWebhookRequest) -> HANDLER_RESPONSE:
|
|
168
|
+
"""Invoked once TTS has finished. Only invoked if a marker was provided to tts function"""
|
|
169
|
+
return None
|
|
170
|
+
|
|
140
171
|
# pylint: disable=no-self-use,unused-argument
|
|
141
172
|
async def handle_teardown(self, req: JaxlWebhookRequest) -> HANDLER_RESPONSE:
|
|
142
173
|
"""Invoked when a call ends."""
|
|
@@ -222,15 +253,11 @@ class BaseJaxlApp:
|
|
|
222
253
|
except Exception as exc:
|
|
223
254
|
logger.warning(f"Unable to process ollama response: {exc}, {chunk}")
|
|
224
255
|
|
|
225
|
-
async def tts(
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
json_body=CallTtsRequestRequest(
|
|
234
|
-
prompts=[pro for pro in prompt.split(".") if len(pro.strip()) > 0]
|
|
235
|
-
),
|
|
236
|
-
)
|
|
256
|
+
async def tts(
|
|
257
|
+
self,
|
|
258
|
+
call_id: int,
|
|
259
|
+
prompt: str,
|
|
260
|
+
mark: Optional[str] = None,
|
|
261
|
+
**kwargs: Any,
|
|
262
|
+
) -> Response[Any]:
|
|
263
|
+
return calls_tts({"call_id": call_id, "prompt": prompt, "mark": mark})
|
|
@@ -7,7 +7,7 @@ Redistribution and use in source and binary forms,
|
|
|
7
7
|
with or without modification, is strictly prohibited.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
"""A client library for accessing JAXL API"""
|
|
10
|
+
""" A client library for accessing JAXL API """
|
|
11
11
|
|
|
12
12
|
from .client import AuthenticatedClient, Client
|
|
13
13
|
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Copyright (c) 2010-present by Jaxl Innovations Private Limited.
|
|
3
|
+
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms,
|
|
7
|
+
with or without modification, is strictly prohibited.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from http import HTTPStatus
|
|
11
|
+
from typing import Any, Dict, List, Optional, Union
|
|
12
|
+
|
|
13
|
+
import httpx
|
|
14
|
+
|
|
15
|
+
from ... import errors
|
|
16
|
+
from ...client import AuthenticatedClient, Client
|
|
17
|
+
from ...models.paginated_organization_list import PaginatedOrganizationList
|
|
18
|
+
from ...models.v1_app_organizations_list_status_item import (
|
|
19
|
+
V1AppOrganizationsListStatusItem,
|
|
20
|
+
)
|
|
21
|
+
from ...types import UNSET, Response, Unset
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _get_kwargs(
|
|
25
|
+
*,
|
|
26
|
+
client: AuthenticatedClient,
|
|
27
|
+
limit: Union[Unset, None, int] = UNSET,
|
|
28
|
+
offset: Union[Unset, None, int] = UNSET,
|
|
29
|
+
status: Union[Unset, None, List[V1AppOrganizationsListStatusItem]] = UNSET,
|
|
30
|
+
) -> Dict[str, Any]:
|
|
31
|
+
url = "{}/v1/app/organizations/".format(client.base_url)
|
|
32
|
+
|
|
33
|
+
headers: Dict[str, str] = client.get_headers()
|
|
34
|
+
cookies: Dict[str, Any] = client.get_cookies()
|
|
35
|
+
|
|
36
|
+
params: Dict[str, Any] = {}
|
|
37
|
+
params["limit"] = limit
|
|
38
|
+
|
|
39
|
+
params["offset"] = offset
|
|
40
|
+
|
|
41
|
+
json_status: Union[Unset, None, List[str]] = UNSET
|
|
42
|
+
if not isinstance(status, Unset):
|
|
43
|
+
if status is None:
|
|
44
|
+
json_status = None
|
|
45
|
+
else:
|
|
46
|
+
json_status = []
|
|
47
|
+
for status_item_data in status:
|
|
48
|
+
status_item = status_item_data.value
|
|
49
|
+
|
|
50
|
+
json_status.append(status_item)
|
|
51
|
+
|
|
52
|
+
params["status"] = json_status
|
|
53
|
+
|
|
54
|
+
params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
"method": "get",
|
|
58
|
+
"url": url,
|
|
59
|
+
"headers": headers,
|
|
60
|
+
"cookies": cookies,
|
|
61
|
+
"timeout": client.get_timeout(),
|
|
62
|
+
"params": params,
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _parse_response(
|
|
67
|
+
*, client: Client, response: httpx.Response
|
|
68
|
+
) -> Optional[PaginatedOrganizationList]:
|
|
69
|
+
if response.status_code == HTTPStatus.OK:
|
|
70
|
+
response_200 = PaginatedOrganizationList.from_dict(response.json())
|
|
71
|
+
|
|
72
|
+
return response_200
|
|
73
|
+
if client.raise_on_unexpected_status:
|
|
74
|
+
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
|
|
75
|
+
else:
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _build_response(
|
|
80
|
+
*, client: Client, response: httpx.Response
|
|
81
|
+
) -> Response[PaginatedOrganizationList]:
|
|
82
|
+
return Response(
|
|
83
|
+
status_code=HTTPStatus(response.status_code),
|
|
84
|
+
content=response.content,
|
|
85
|
+
headers=response.headers,
|
|
86
|
+
parsed=_parse_response(client=client, response=response),
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def sync_detailed(
|
|
91
|
+
*,
|
|
92
|
+
client: AuthenticatedClient,
|
|
93
|
+
limit: Union[Unset, None, int] = UNSET,
|
|
94
|
+
offset: Union[Unset, None, int] = UNSET,
|
|
95
|
+
status: Union[Unset, None, List[V1AppOrganizationsListStatusItem]] = UNSET,
|
|
96
|
+
) -> Response[PaginatedOrganizationList]:
|
|
97
|
+
"""API view set for App organization model.
|
|
98
|
+
|
|
99
|
+
Args:
|
|
100
|
+
limit (Union[Unset, None, int]):
|
|
101
|
+
offset (Union[Unset, None, int]):
|
|
102
|
+
status (Union[Unset, None, List[V1AppOrganizationsListStatusItem]]):
|
|
103
|
+
|
|
104
|
+
Raises:
|
|
105
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
106
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
Response[PaginatedOrganizationList]
|
|
110
|
+
"""
|
|
111
|
+
|
|
112
|
+
kwargs = _get_kwargs(
|
|
113
|
+
client=client,
|
|
114
|
+
limit=limit,
|
|
115
|
+
offset=offset,
|
|
116
|
+
status=status,
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
response = httpx.request(
|
|
120
|
+
verify=client.verify_ssl,
|
|
121
|
+
**kwargs,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
return _build_response(client=client, response=response)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def sync(
|
|
128
|
+
*,
|
|
129
|
+
client: AuthenticatedClient,
|
|
130
|
+
limit: Union[Unset, None, int] = UNSET,
|
|
131
|
+
offset: Union[Unset, None, int] = UNSET,
|
|
132
|
+
status: Union[Unset, None, List[V1AppOrganizationsListStatusItem]] = UNSET,
|
|
133
|
+
) -> Optional[PaginatedOrganizationList]:
|
|
134
|
+
"""API view set for App organization model.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
limit (Union[Unset, None, int]):
|
|
138
|
+
offset (Union[Unset, None, int]):
|
|
139
|
+
status (Union[Unset, None, List[V1AppOrganizationsListStatusItem]]):
|
|
140
|
+
|
|
141
|
+
Raises:
|
|
142
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
143
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
144
|
+
|
|
145
|
+
Returns:
|
|
146
|
+
Response[PaginatedOrganizationList]
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
return sync_detailed(
|
|
150
|
+
client=client,
|
|
151
|
+
limit=limit,
|
|
152
|
+
offset=offset,
|
|
153
|
+
status=status,
|
|
154
|
+
).parsed
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
async def asyncio_detailed(
|
|
158
|
+
*,
|
|
159
|
+
client: AuthenticatedClient,
|
|
160
|
+
limit: Union[Unset, None, int] = UNSET,
|
|
161
|
+
offset: Union[Unset, None, int] = UNSET,
|
|
162
|
+
status: Union[Unset, None, List[V1AppOrganizationsListStatusItem]] = UNSET,
|
|
163
|
+
) -> Response[PaginatedOrganizationList]:
|
|
164
|
+
"""API view set for App organization model.
|
|
165
|
+
|
|
166
|
+
Args:
|
|
167
|
+
limit (Union[Unset, None, int]):
|
|
168
|
+
offset (Union[Unset, None, int]):
|
|
169
|
+
status (Union[Unset, None, List[V1AppOrganizationsListStatusItem]]):
|
|
170
|
+
|
|
171
|
+
Raises:
|
|
172
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
173
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
Response[PaginatedOrganizationList]
|
|
177
|
+
"""
|
|
178
|
+
|
|
179
|
+
kwargs = _get_kwargs(
|
|
180
|
+
client=client,
|
|
181
|
+
limit=limit,
|
|
182
|
+
offset=offset,
|
|
183
|
+
status=status,
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
|
187
|
+
response = await _client.request(**kwargs)
|
|
188
|
+
|
|
189
|
+
return _build_response(client=client, response=response)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
async def asyncio(
|
|
193
|
+
*,
|
|
194
|
+
client: AuthenticatedClient,
|
|
195
|
+
limit: Union[Unset, None, int] = UNSET,
|
|
196
|
+
offset: Union[Unset, None, int] = UNSET,
|
|
197
|
+
status: Union[Unset, None, List[V1AppOrganizationsListStatusItem]] = UNSET,
|
|
198
|
+
) -> Optional[PaginatedOrganizationList]:
|
|
199
|
+
"""API view set for App organization model.
|
|
200
|
+
|
|
201
|
+
Args:
|
|
202
|
+
limit (Union[Unset, None, int]):
|
|
203
|
+
offset (Union[Unset, None, int]):
|
|
204
|
+
status (Union[Unset, None, List[V1AppOrganizationsListStatusItem]]):
|
|
205
|
+
|
|
206
|
+
Raises:
|
|
207
|
+
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
|
|
208
|
+
httpx.TimeoutException: If the request takes longer than Client.timeout.
|
|
209
|
+
|
|
210
|
+
Returns:
|
|
211
|
+
Response[PaginatedOrganizationList]
|
|
212
|
+
"""
|
|
213
|
+
|
|
214
|
+
return (
|
|
215
|
+
await asyncio_detailed(
|
|
216
|
+
client=client,
|
|
217
|
+
limit=limit,
|
|
218
|
+
offset=offset,
|
|
219
|
+
status=status,
|
|
220
|
+
)
|
|
221
|
+
).parsed
|