![MIT license](https://img.shields.io/badge/licence-MIT-blue.svg)
![Version](https://img.shields.io/badge/version-0.2.5-orange.svg)
![Unstable](https://img.shields.io/badge/status-unstable-red.svg)
# python-voipms
*Added support for sending MMS messages
Python client for v1 of voip.ms REST API using requests >=
2.7.0.
## Getting Started
### Installation
This client is hosted at PyPi under the name `voipms`, to install
it, simply run
`pip install voipms`
### History
- Version 0.2.6 from 03.03.2024
- Fill in all missing documented methods
- Fix bugs:
- parameter collisions with keywords, eg. `filter`, `from`, `range`, `type`, `zip` given non-conflicting names, eg. `filter_id`, `date_from`, `time_range`, `search_type`, `zip_code`
- Version 0.2.5 from 25.03.2022
- Restore `billing_type` param in `dids.set.did_info` since that is now required by the voip.ms REST API
- Version 0.2.4 from 02.03.2022
- Add support for setting `callerid_e164` and `callerid_override` when calling `dids.set.sip_uri`
- Fix bugs:
- Fix `voicemail` commands
- Fix `dids.order` commands
- Tweak `dids.set.did_info` to longer require the `billing_type` param
- Version 0.2.3 from 05.04.2017
- First alpha version of this API
- Up to date with features listed through 20.02.2017
- TODO:
- Code cleanup
- Cleanup of inner references to functions
- Testing all functions
- More validations of input and streamlining how to input dids (only digits or also dids with seperators)
### Initialization
Go to your the voip.ms customer portal go to the API config page (Main Menu > SOAP and REST/JSON API)
- `YOUR_USERNAME` is your voip.ms username
- Set `YOUR_PASSWORD`
- Activate the API
- Set the IP address of your development server
from voipms import VoipMs
client = VoipMs('YOUR_USERNAME', 'YOUR_PASSWORD')
### Examples
# return allowed IPs
client.general.get.ip()
# returns a specific allowed codec
client.accounts.get.allowed_codecs(codec="ulaw")
## API Structure
All endpoints follow the structure listed in the official voip.ms API
v1 documentation. The structure will be listed below and then the
individual methods available after.
VoipMs
+- General
| +- Get
+- Accounts
| +- Create
| +- Delete
| +- Get
| +- Set
+- Calls
| +- Get
+- Clients
| +- Add
| +- Get
| +- Set
+- Dids
| +- Back_order
| +- Cancel
| +- Connect
| +- Delete
| +- Get
| +- Order
| +- Search
| +- Send
| +- Set
| +- Unconnect
+- Fax
| +- Cancel
| +- Delete
| +- Get
| +- Mail
| +- Move
| +- Order
| +- Search
| +- Send
| +- Set
+- Voicemail
| +- Create
| +- Delete
| +- Get
| +- Mark
| +- Move
| +- Send
| +- Set
### General
#### Get
client.general.get.balance(advanced=False)
client.general.get.countries(country=None)
client.general.get.ip()
client.general.get.languages(language=None)
client.general.get.servers_info(server_pop=None)
client.general.get.transaction_history(date_from, date_to)
### Accounts
#### Create
client.accounts.create.sub_account(username, password, protocol, auth_type, device_type,
lock_international, international_route, music_on_hold,
allowed_codecs, dtmf_mode, nat, **kwargs)
#### Delete
client.accounts.delete.sub_account(account_id)
#### Get
client.accounts.get.allowed_codecs(codec=None)
client.accounts.get.auth_types(auth_type=None)
client.accounts.get.device_types(device_type=None)
client.accounts.get.dtmf_modes(dtmf_mode=None)
client.accounts.get.lock_international(lock_international=None)
client.accounts.get.music_on_hold(music_on_hold=None)
client.accounts.get.nat(nat=None)
client.accounts.get.protocols(protocol=None)
client.accounts.get.registration_status(account)
client.accounts.get.report_estimated_hold_time(time_type=None)
client.accounts.get.routes(route=None)
client.accounts.get.sub_accounts(account=None)
#### Set
client.accounts.set.sub_account(account_id, password, auth_type, device_type,
lock_international, international_route, music_on_hold,
allowed_codecs, dtmf_mode, nat, **kwargs)
### Calls
#### Get
client.calls.get.call_accounts(client=None)
client.calls.get.call_billing(self)
client.calls.get.call_types(client=None)
client.calls.get.cdr(date_from, date_to, timezone,
answered=False, noanswer=False, busy=False,
failed=False, **kwargs)
client.calls.get.rates(package, query)
client.calls.get.termination_rates(route, query)
client.calls.get.reseller_cdr(date_from, date_to, client, timezone,
answered=False, noanswer=False, busy=False,
failed=False, **kwargs)
### Clients
#### Add
client.clients.add.charge(client, charge, description=None, test=False)
client.clients.add.client(firstname, lastname, address, city, state, country,
zip_code, phone_number, email, confirm_email, password,
confirm_password, **kwargs)
client.clients.add.payment(client, payment, description=None, test=False)
#### Get
client.clients.get.balance_management(balance_management=None)
client.clients.get.charges(client)
client.clients.get.client_packages(client)
client.clients.get.clients(client=None)
client.clients.get.client_threshold(client)
client.clients.get.deposits(client)
client.clients.get.packages(package=None)
client.clients.get.reseller_balance(client)
#### Set
client.clients.set.client(client, email, password, firstname,
lastname, phone_number, **kwargs)
client.clients.set.client_threshold(client, threshold, email=None)
### Dids
#### Back_order
client.dids.back_order.did_can(quantity, province, ratecenter, routing,
pop, dialtime, cnam, billing_type, **kwargs)
client.dids.back_order.did_usa(quantity, state, ratecenter, routing, pop,
dialtime, cnam, billing_type, **kwargs)
#### Cancel
client.dids.cancel.did(did, **kwargs)
#### Connect
client.dids.connect.did(did, account, monthly, setup, minute, **kwargs)
#### Delete
client.dids.delete.callback(callback)
client.dids.delete.caller_id_filtering(filtering)
client.dids.delete.client(client)
client.dids.delete.disa(disa)
client.dids.delete_sms(sms_id)
client.dids.delete.forwarding(forwarding)
client.dids.delete.ivr(ivr)
client.dids.delete.phonebook(phonebook)
client.dids.delete.queue(queue)
client.dids.delete.recording(recording)
client.dids.delete.ring_group(ringgroup)
client.dids.delete.sip_uri(sipuri)
client.dids.delete.static_member(member, queue)
client.dids.delete.time_condition(timecondition)
#### Get
client.dids.get.callbacks(callback=None)
client.dids.get.caller_id_filtering(filtering=None)
client.dids.get.did_countries(international_type, country_id=None)
client.dids.get.carriers(carrier=None)
client.dids.get.dids_can(province, ratecenter=None)
client.dids.get.dids_info(client=None, did=None)
client.dids.get.dids_international_geographic(country_id)
client.dids.get.dids_international_national(country_id)
client.dids.get.dids_international_toll_free(country_id)
client.dids.get.dids_usa(state, ratecenter=None)
client.dids.get.disas(disa=None)
client.dids.get.forwardings(forwarding=None)
client.dids.get.international_types(international_type=None)
client.dids.get.ivrs(ivr=None)
client.dids.get.join_when_empty_types(join_type=None)
client.dids.get.phonebook(phonebook=None, name=None)
client.dids.get.portability(did)
client.dids.get.provinces()
client.dids.get.queues(queue=None)
client.dids.get.rate_centers_can(province)
client.dids.get.rate_centers_usa(state)
client.dids.get.recordings(recording=None)
client.dids.get.recording_file(recording)
client.dids.get.ring_groups(ringgroup=None)
client.dids.get.ring_strategies(strategy=None)
client.dids.get.sip_uris(sipuri=None)
client.dids.get.sms(**kwargs)
client.dids.get.states()
client.dids.get.static_members(queue, member=None)
client.dids.get.time_conditions(timecondition=None)
client.dids.get.voicemail_setups(voicemailsetup=None)
client.dids.get.voicemail_attachment_formats(email_attachment_format=None)
#### Order
client.dids.order.did(did, routing, pop, dialtime, cnam, billing_type, **kwargs)
client.dids.order.did_international_geographic(location_id, quantity, routing,
pop, dialtime, cnam, billing_type, **kwargs)
client.dids.order.did_international_national(location_id, quantity, routing,
pop, dialtime, cnam, billing_type, **kwargs)
client.dids.order.did_international_toll_free(location_id, quantity, routing, pop,
dialtime, cnam, billing_type, **kwargs)
client.dids.order.did_virtual(digits, routing, pop, dialtime, cnam, billing_type, **kwargs)
client.dids.order.toll_free(did, routing, pop, dialtime, cnam, billing_type, **kwargs)
client.dids.order.vanity(did, routing, pop, dialtime, cnam, billing_type, carrier, **kwargs)
#### Search
client.dids.search.dids_can(search_type, query, province=None)
client.dids.search.dids_usa(search_type, query, state=None)
client.dids.search.toll_free_can_us(search_type=None, query=None)
client.dids.search.toll_free_usa(search_type=None, query=None)
client.dids.search.vanity(search_type, query)
#### Send
client.dids.send.sms(did, dst, message)
client.dids.send.mms(did, dst, message)
#### Set
client.dids.set.callback(description, number, delay_before, response_timeout, digit_timeout, **kwargs)
client.dids.set.caller_id_filtering(callerid, did, routing, **kwargs)
client.dids.set.did_billing_type(did, billing_type)
client.dids.set.did_info(did, routing, pop, dialtime, cnam, billing_type, **kwargs)
client.dids.set.did_pop(did, pop)
client.dids.set.did_routing(did, routing)
client.dids.set.did_voicemail(did, voicemail=None)
client.dids.set.disa(name, pin, digit_timeout, **kwargs)
client.dids.set.forwarding(phone_number, **kwargs)
client.dids.set.ivr(name, recording, timeout, language, voicemailsetup, choices, ivr=None)
client.dids.set.phonebook(name, number, **kwargs)
client.dids.set.queue(queue_name, queue_number, queue_language, priority_weight, report_hold_time_agent,
join_when_empty, leave_when_empty, ring_strategy, ring_inuse, **kwargs)
client.dids.set.recording(file, name, recording=None)
client.dids.set.ring_group(name, members, voicemail, **kwargs)
client.dids.set.sip_uri(uri, **kwargs)
client.dids.set.sms(did, enable, **kwargs)
client.dids.set.static_member(queue, member_name, priority, **kwargs)
client.dids.set.time_condition(name, routing_match, routing_nomatch, starthour, startminute,
endhour, endminute, weekdaystart, weekdayend, timecondition=None)
#### Unconnect
client.dids.unconnect.did(did)
### Fax
#### Cancel
client.fax.cancel.fax_number(fax_id, test=None)
#### Delete
client.fax.delete.fax_message(fax_id, test=None)
client.fax.delete.email_to_fax(fax_id, test=None)
client.fax.delete.fax_folder(folder_id, test=None)
#### Get
client.fax.get.fax_provinces(province=None)
client.fax.get.fax_states(state=None)
client.fax.get.fax_rate_centers_can(province)
client.fax.get.fax_rate_centers_usa(state)
client.fax.get.fax_numbers_info(did=None)
client.fax.get.fax_numbers_portability(did)
client.fax.get.fax_messages(**kwargs)
client.fax.get.fax_message_pdf(fax_id)
client.fax.get.fax_folders()
client.fax.get.email_to_fax(fax_id=None)
#### Mail
client.fax.mail.fax_message_pdf(fax_id, email)
#### Move
client.fax.move_fax_message(fax_id, folder_id, test=None)
#### Order
client.fax.order.fax_number(location, quantity, **kwargs)
#### Set
client.fax.search.fax_area_code_can(area_code)
client.fax.search.fax_area_code_usa(area_code)
#### Send
client.fax.send.fax_message(to_number, from_name, from_number, file, **kwargs)
#### Set
client.fax.set.fax_folder(name, **kwargs)
client.fax.set.email_to_fax(auth_email, from_number_id, security_code, **kwargs)
client.fax.set.fax_number_info(did, **kwargs)
client.fax.set.fax_number_email(did, **kwargs)
client.fax.set.fax_number_url_callback(did, **kwargs)
### Voicemail
#### Create
client.voicemail.create.voicemail(digits, name, password, skip_password, attach_message, delete_message,
say_time, timezone, say_callerid, play_instructions, language, **kwargs)
#### Delete
client.voicemail.delete.messages(mailbox, **kwargs)
client.voicemail.delete.voicemail(mailbox)
#### Get
client.voicemail.get.play_instructions(play_instructions=None)
client.voicemail.get.timezones(timezone=None)
client.voicemail.get.voicemails(mailbox=None)
client.voicemail.get.voicemail_folders(folder=None)
client.voicemail.get.voicemail_message_file(mailbox, folder, message_num)
client.voicemail.get.voicemail_messages(mailbox, **kwargs)
#### Mark
client.voicemail.mark.listened_voicemail_message(mailbox, folder, message_num, listened)
client.voicemail.mark.urgent_voicemail_message(mailbox, folder, message_num, urgent)
#### Move
client.voicemail.move.folder_voicemail_message(mailbox, folder, message_num, new_folder)
#### Send
client.voicemail.send.voicemail_email(mailbox, folder, message_num, email_address)
#### Set
client.voicemail.set.voicemail(mailbox, name, password, skip_password, attach_message, delete_message,
say_time, timezone, say_callerid, play_instructions, language, **kwargs)
## Contributing
* To run tests:
* Install Python 3.7 via [pyenv](https://github.com/pyenv/pyenv)
* Set up [pipenv](https://pipenv.pypa.io/en/latest/)
* Create a `.env` file in the root with credentials for a VoIP.ms account:
```
VOIPMS_USERNAME=
VOIPMS_PASSWORD=
```
* Run `make init` and `make test`
* To deploy a new version:
* Add release notes to README.md
* Increment version
* Commit
* Tag
* Push with tags
* `make clean`
* `make build`
* `make deploy`
## Support
If you are having issues, please let us know or submit a pull request.
## License
The project is licensed under the MIT License.
## Special Thanks
I was highly inspired by the mailchim3 API at https://github.com/charlesthk/python-mailchimp/.
Thanks for your nice code layout!
Raw data
{
"_id": null,
"home_page": "https://github.com/4doom4/python-voipms",
"name": "voipms",
"maintainer": "Maximilian Ebert and Andrew Langemann",
"docs_url": null,
"requires_python": "",
"maintainer_email": "max.ebert@me.com",
"keywords": "voip.ms,voips,api,client,wrapper",
"author": "Maximilian Ebert and Andrew Langemann",
"author_email": "max.ebert@me.com",
"download_url": "https://files.pythonhosted.org/packages/26/59/3fa02518ada33f85476136da493db252cae3dde338a85aa3691566267b93/voipms-0.2.6.tar.gz",
"platform": null,
"description": "![MIT license](https://img.shields.io/badge/licence-MIT-blue.svg)\n![Version](https://img.shields.io/badge/version-0.2.5-orange.svg)\n![Unstable](https://img.shields.io/badge/status-unstable-red.svg)\n\n# python-voipms\n*Added support for sending MMS messages\n\nPython client for v1 of voip.ms REST API using requests >=\n2.7.0.\n\n## Getting Started\n\n### Installation\n\nThis client is hosted at PyPi under the name `voipms`, to install\nit, simply run\n\n`pip install voipms`\n\n### History\n\n- Version 0.2.6 from 03.03.2024\n - Fill in all missing documented methods\n - Fix bugs:\n - parameter collisions with keywords, eg. `filter`, `from`, `range`, `type`, `zip` given non-conflicting names, eg. `filter_id`, `date_from`, `time_range`, `search_type`, `zip_code`\n- Version 0.2.5 from 25.03.2022\n - Restore `billing_type` param in `dids.set.did_info` since that is now required by the voip.ms REST API\n- Version 0.2.4 from 02.03.2022\n - Add support for setting `callerid_e164` and `callerid_override` when calling `dids.set.sip_uri`\n - Fix bugs:\n - Fix `voicemail` commands\n - Fix `dids.order` commands\n - Tweak `dids.set.did_info` to longer require the `billing_type` param\n- Version 0.2.3 from 05.04.2017\n - First alpha version of this API \n - Up to date with features listed through 20.02.2017\n- TODO:\n - Code cleanup\n - Cleanup of inner references to functions\n - Testing all functions\n - More validations of input and streamlining how to input dids (only digits or also dids with seperators)\n\n### Initialization\n\nGo to your the voip.ms customer portal go to the API config page (Main Menu > SOAP and REST/JSON API)\n- `YOUR_USERNAME` is your voip.ms username\n- Set `YOUR_PASSWORD`\n- Activate the API\n- Set the IP address of your development server\n\n from voipms import VoipMs\n\n client = VoipMs('YOUR_USERNAME', 'YOUR_PASSWORD')\n\n\n### Examples\n\n # return allowed IPs\n client.general.get.ip()\n\n # returns a specific allowed codec\n client.accounts.get.allowed_codecs(codec=\"ulaw\")\n\n## API Structure\n\nAll endpoints follow the structure listed in the official voip.ms API\nv1 documentation. The structure will be listed below and then the\nindividual methods available after.\n\n VoipMs\n +- General\n | +- Get\n +- Accounts\n | +- Create\n | +- Delete\n | +- Get\n | +- Set\n +- Calls\n | +- Get\n +- Clients\n | +- Add\n | +- Get\n | +- Set\n +- Dids\n | +- Back_order\n | +- Cancel\n | +- Connect\n | +- Delete\n | +- Get\n | +- Order\n | +- Search\n | +- Send\n | +- Set\n | +- Unconnect\n +- Fax\n | +- Cancel\n | +- Delete\n | +- Get\n | +- Mail\n | +- Move\n | +- Order\n | +- Search\n | +- Send\n | +- Set\n +- Voicemail\n | +- Create\n | +- Delete\n | +- Get\n | +- Mark\n | +- Move\n | +- Send\n | +- Set\n\n### General\n\n#### Get\n\n client.general.get.balance(advanced=False)\n client.general.get.countries(country=None)\n client.general.get.ip()\n client.general.get.languages(language=None)\n client.general.get.servers_info(server_pop=None)\n client.general.get.transaction_history(date_from, date_to)\n\n### Accounts\n\n#### Create\n \n client.accounts.create.sub_account(username, password, protocol, auth_type, device_type,\n lock_international, international_route, music_on_hold,\n allowed_codecs, dtmf_mode, nat, **kwargs)\n\n#### Delete\n\n client.accounts.delete.sub_account(account_id)\n\n#### Get\n\n client.accounts.get.allowed_codecs(codec=None)\n client.accounts.get.auth_types(auth_type=None)\n client.accounts.get.device_types(device_type=None)\n client.accounts.get.dtmf_modes(dtmf_mode=None)\n client.accounts.get.lock_international(lock_international=None)\n client.accounts.get.music_on_hold(music_on_hold=None)\n client.accounts.get.nat(nat=None)\n client.accounts.get.protocols(protocol=None)\n client.accounts.get.registration_status(account)\n client.accounts.get.report_estimated_hold_time(time_type=None)\n client.accounts.get.routes(route=None)\n client.accounts.get.sub_accounts(account=None)\n\n#### Set\n\n client.accounts.set.sub_account(account_id, password, auth_type, device_type,\n lock_international, international_route, music_on_hold,\n allowed_codecs, dtmf_mode, nat, **kwargs)\n\n### Calls\n\n#### Get\n\n client.calls.get.call_accounts(client=None)\n client.calls.get.call_billing(self)\n client.calls.get.call_types(client=None)\n client.calls.get.cdr(date_from, date_to, timezone,\n answered=False, noanswer=False, busy=False,\n failed=False, **kwargs)\n client.calls.get.rates(package, query)\n client.calls.get.termination_rates(route, query)\n client.calls.get.reseller_cdr(date_from, date_to, client, timezone,\n answered=False, noanswer=False, busy=False,\n failed=False, **kwargs)\n\n### Clients\n\n#### Add\n\n client.clients.add.charge(client, charge, description=None, test=False)\n client.clients.add.client(firstname, lastname, address, city, state, country,\n zip_code, phone_number, email, confirm_email, password,\n confirm_password, **kwargs)\n client.clients.add.payment(client, payment, description=None, test=False)\n\n#### Get\n\n client.clients.get.balance_management(balance_management=None)\n client.clients.get.charges(client)\n client.clients.get.client_packages(client)\n client.clients.get.clients(client=None)\n client.clients.get.client_threshold(client)\n client.clients.get.deposits(client)\n client.clients.get.packages(package=None)\n client.clients.get.reseller_balance(client)\n\n#### Set\n\n client.clients.set.client(client, email, password, firstname,\n lastname, phone_number, **kwargs)\n client.clients.set.client_threshold(client, threshold, email=None)\n\n\n### Dids\n\n#### Back_order\n\n client.dids.back_order.did_can(quantity, province, ratecenter, routing, \n pop, dialtime, cnam, billing_type, **kwargs)\n client.dids.back_order.did_usa(quantity, state, ratecenter, routing, pop, \n dialtime, cnam, billing_type, **kwargs)\n\n#### Cancel\n\n client.dids.cancel.did(did, **kwargs)\n\n#### Connect\n\n client.dids.connect.did(did, account, monthly, setup, minute, **kwargs)\n\n#### Delete\n\n client.dids.delete.callback(callback)\n client.dids.delete.caller_id_filtering(filtering)\n client.dids.delete.client(client)\n client.dids.delete.disa(disa)\n client.dids.delete_sms(sms_id)\n client.dids.delete.forwarding(forwarding)\n client.dids.delete.ivr(ivr)\n client.dids.delete.phonebook(phonebook)\n client.dids.delete.queue(queue)\n client.dids.delete.recording(recording)\n client.dids.delete.ring_group(ringgroup)\n client.dids.delete.sip_uri(sipuri)\n client.dids.delete.static_member(member, queue)\n client.dids.delete.time_condition(timecondition)\n\n#### Get\n\n client.dids.get.callbacks(callback=None)\n client.dids.get.caller_id_filtering(filtering=None)\n client.dids.get.did_countries(international_type, country_id=None)\n client.dids.get.carriers(carrier=None)\n client.dids.get.dids_can(province, ratecenter=None)\n client.dids.get.dids_info(client=None, did=None)\n client.dids.get.dids_international_geographic(country_id)\n client.dids.get.dids_international_national(country_id)\n client.dids.get.dids_international_toll_free(country_id)\n client.dids.get.dids_usa(state, ratecenter=None)\n client.dids.get.disas(disa=None)\n client.dids.get.forwardings(forwarding=None)\n client.dids.get.international_types(international_type=None)\n client.dids.get.ivrs(ivr=None)\n client.dids.get.join_when_empty_types(join_type=None)\n client.dids.get.phonebook(phonebook=None, name=None)\n client.dids.get.portability(did)\n client.dids.get.provinces()\n client.dids.get.queues(queue=None)\n client.dids.get.rate_centers_can(province)\n client.dids.get.rate_centers_usa(state)\n client.dids.get.recordings(recording=None)\n client.dids.get.recording_file(recording)\n client.dids.get.ring_groups(ringgroup=None)\n client.dids.get.ring_strategies(strategy=None)\n client.dids.get.sip_uris(sipuri=None)\n client.dids.get.sms(**kwargs)\n client.dids.get.states()\n client.dids.get.static_members(queue, member=None)\n client.dids.get.time_conditions(timecondition=None)\n client.dids.get.voicemail_setups(voicemailsetup=None)\n client.dids.get.voicemail_attachment_formats(email_attachment_format=None)\n\n#### Order\n\n client.dids.order.did(did, routing, pop, dialtime, cnam, billing_type, **kwargs)\n client.dids.order.did_international_geographic(location_id, quantity, routing,\n pop, dialtime, cnam, billing_type, **kwargs)\n client.dids.order.did_international_national(location_id, quantity, routing,\n pop, dialtime, cnam, billing_type, **kwargs)\n client.dids.order.did_international_toll_free(location_id, quantity, routing, pop,\n dialtime, cnam, billing_type, **kwargs)\n client.dids.order.did_virtual(digits, routing, pop, dialtime, cnam, billing_type, **kwargs)\n client.dids.order.toll_free(did, routing, pop, dialtime, cnam, billing_type, **kwargs)\n client.dids.order.vanity(did, routing, pop, dialtime, cnam, billing_type, carrier, **kwargs)\n\n#### Search\n\n client.dids.search.dids_can(search_type, query, province=None)\n client.dids.search.dids_usa(search_type, query, state=None)\n client.dids.search.toll_free_can_us(search_type=None, query=None)\n client.dids.search.toll_free_usa(search_type=None, query=None)\n client.dids.search.vanity(search_type, query)\n\n#### Send\n\n client.dids.send.sms(did, dst, message)\n client.dids.send.mms(did, dst, message)\n\n#### Set\n \n client.dids.set.callback(description, number, delay_before, response_timeout, digit_timeout, **kwargs)\n client.dids.set.caller_id_filtering(callerid, did, routing, **kwargs)\n client.dids.set.did_billing_type(did, billing_type)\n client.dids.set.did_info(did, routing, pop, dialtime, cnam, billing_type, **kwargs)\n client.dids.set.did_pop(did, pop)\n client.dids.set.did_routing(did, routing)\n client.dids.set.did_voicemail(did, voicemail=None)\n client.dids.set.disa(name, pin, digit_timeout, **kwargs)\n client.dids.set.forwarding(phone_number, **kwargs)\n client.dids.set.ivr(name, recording, timeout, language, voicemailsetup, choices, ivr=None)\n client.dids.set.phonebook(name, number, **kwargs)\n client.dids.set.queue(queue_name, queue_number, queue_language, priority_weight, report_hold_time_agent,\n join_when_empty, leave_when_empty, ring_strategy, ring_inuse, **kwargs)\n client.dids.set.recording(file, name, recording=None)\n client.dids.set.ring_group(name, members, voicemail, **kwargs)\n client.dids.set.sip_uri(uri, **kwargs)\n client.dids.set.sms(did, enable, **kwargs)\n client.dids.set.static_member(queue, member_name, priority, **kwargs)\n client.dids.set.time_condition(name, routing_match, routing_nomatch, starthour, startminute,\n endhour, endminute, weekdaystart, weekdayend, timecondition=None)\n\n#### Unconnect\n\n client.dids.unconnect.did(did)\n\n### Fax\n\n#### Cancel\n\n client.fax.cancel.fax_number(fax_id, test=None)\n\n#### Delete\n\n client.fax.delete.fax_message(fax_id, test=None)\n client.fax.delete.email_to_fax(fax_id, test=None)\n client.fax.delete.fax_folder(folder_id, test=None)\n\n#### Get\n\n client.fax.get.fax_provinces(province=None)\n client.fax.get.fax_states(state=None)\n client.fax.get.fax_rate_centers_can(province)\n client.fax.get.fax_rate_centers_usa(state)\n client.fax.get.fax_numbers_info(did=None)\n client.fax.get.fax_numbers_portability(did)\n client.fax.get.fax_messages(**kwargs)\n client.fax.get.fax_message_pdf(fax_id)\n client.fax.get.fax_folders()\n client.fax.get.email_to_fax(fax_id=None)\n\n#### Mail\n\n client.fax.mail.fax_message_pdf(fax_id, email)\n\n#### Move\n\n client.fax.move_fax_message(fax_id, folder_id, test=None)\n\n#### Order\n\n client.fax.order.fax_number(location, quantity, **kwargs)\n\n#### Set\n\n client.fax.search.fax_area_code_can(area_code)\n client.fax.search.fax_area_code_usa(area_code)\n\n#### Send\n\n client.fax.send.fax_message(to_number, from_name, from_number, file, **kwargs)\n\n#### Set\n\n client.fax.set.fax_folder(name, **kwargs)\n client.fax.set.email_to_fax(auth_email, from_number_id, security_code, **kwargs)\n client.fax.set.fax_number_info(did, **kwargs)\n client.fax.set.fax_number_email(did, **kwargs)\n client.fax.set.fax_number_url_callback(did, **kwargs)\n\n### Voicemail\n\n#### Create\n \n client.voicemail.create.voicemail(digits, name, password, skip_password, attach_message, delete_message,\n say_time, timezone, say_callerid, play_instructions, language, **kwargs)\n\n#### Delete\n\n client.voicemail.delete.messages(mailbox, **kwargs)\n client.voicemail.delete.voicemail(mailbox)\n\n#### Get\n\n client.voicemail.get.play_instructions(play_instructions=None)\n client.voicemail.get.timezones(timezone=None)\n client.voicemail.get.voicemails(mailbox=None)\n client.voicemail.get.voicemail_folders(folder=None)\n client.voicemail.get.voicemail_message_file(mailbox, folder, message_num)\n client.voicemail.get.voicemail_messages(mailbox, **kwargs)\n\n#### Mark\n\n client.voicemail.mark.listened_voicemail_message(mailbox, folder, message_num, listened)\n client.voicemail.mark.urgent_voicemail_message(mailbox, folder, message_num, urgent)\n\n#### Move\n\n client.voicemail.move.folder_voicemail_message(mailbox, folder, message_num, new_folder)\n\n#### Send\n\n client.voicemail.send.voicemail_email(mailbox, folder, message_num, email_address)\n\n#### Set\n\n client.voicemail.set.voicemail(mailbox, name, password, skip_password, attach_message, delete_message,\n say_time, timezone, say_callerid, play_instructions, language, **kwargs)\n\n## Contributing\n \n* To run tests:\n * Install Python 3.7 via [pyenv](https://github.com/pyenv/pyenv)\n * Set up [pipenv](https://pipenv.pypa.io/en/latest/)\n * Create a `.env` file in the root with credentials for a VoIP.ms account:\n ```\n VOIPMS_USERNAME=\n VOIPMS_PASSWORD=\n ```\n * Run `make init` and `make test`\n* To deploy a new version:\n * Add release notes to README.md\n * Increment version\n * Commit\n * Tag\n * Push with tags\n * `make clean`\n * `make build`\n * `make deploy`\n\n## Support\n\nIf you are having issues, please let us know or submit a pull request.\n\n## License\n\nThe project is licensed under the MIT License.\n\n## Special Thanks\n\nI was highly inspired by the mailchim3 API at https://github.com/charlesthk/python-mailchimp/.\nThanks for your nice code layout!\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Complete REST API for the voip.ms service",
"version": "0.2.6",
"project_urls": {
"Homepage": "https://github.com/4doom4/python-voipms"
},
"split_keywords": [
"voip.ms",
"voips",
"api",
"client",
"wrapper"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "786a5c9e18635e94d326bd1adee574e6d78eda07339ae6ad7ae9a1c58351f5ce",
"md5": "cc4d350ff5760cd6aeb2efd6be785e4d",
"sha256": "f7949683a558c86be99d5245fbc3699ee79f6d7e667e2fbb066ffc7e76d17228"
},
"downloads": -1,
"filename": "voipms-0.2.6-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "cc4d350ff5760cd6aeb2efd6be785e4d",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 97061,
"upload_time": "2024-03-19T03:52:31",
"upload_time_iso_8601": "2024-03-19T03:52:31.380447Z",
"url": "https://files.pythonhosted.org/packages/78/6a/5c9e18635e94d326bd1adee574e6d78eda07339ae6ad7ae9a1c58351f5ce/voipms-0.2.6-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "26593fa02518ada33f85476136da493db252cae3dde338a85aa3691566267b93",
"md5": "151fb8f0449cd5d82ce3db439b678f43",
"sha256": "ff025c6a7cedc75b651e763fc24caef83098bdf340ea38e865940f35dc90b002"
},
"downloads": -1,
"filename": "voipms-0.2.6.tar.gz",
"has_sig": false,
"md5_digest": "151fb8f0449cd5d82ce3db439b678f43",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 68226,
"upload_time": "2024-03-19T03:52:33",
"upload_time_iso_8601": "2024-03-19T03:52:33.884376Z",
"url": "https://files.pythonhosted.org/packages/26/59/3fa02518ada33f85476136da493db252cae3dde338a85aa3691566267b93/voipms-0.2.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-19 03:52:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "4doom4",
"github_project": "python-voipms",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "voipms"
}