Skip to content

Commit

Permalink
Pulling docs inline with main (#105)
Browse files Browse the repository at this point in the history
Co-authored-by: Olivia Curtis <[email protected]>
Co-authored-by: Malkin0xb <[email protected]>
Co-authored-by: CHOPP3D <[email protected]>
Co-authored-by: Malkin0xb <[email protected]>
  • Loading branch information
5 people authored Aug 22, 2024
1 parent d78bb40 commit b8d81a0
Show file tree
Hide file tree
Showing 105 changed files with 3,512 additions and 147 deletions.
Binary file added docs/.gitbook/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/slogan (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/slogan.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
84 changes: 72 additions & 12 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,81 @@
# 👋 Welcome!!
# ⚔️ Odin's Spear

Working on Broadwork's for 5 years was painful, with its stiff 90’s user interface and all its limitations so when I first saw Odin by [Rev.io](https://www.rev.io/blog/solutions/rev-io-odin-api). I nearly fell off my seat. Those beautiful people brought the solution into the 21st century with a modern user interface, automation, and most of all its API. This made my life so much easier, I was able to build 500 users in one go rather than one by one, I could give users access to manage their own systems, and I could duplicate groups with everything I needed when building new groups for customers. But I still couldn’t easily locate where the alias 0 was assigned and here is where the story of Odins Spear begins.
<figure><img src=".gitbook/assets/logo.png" alt="Odin's Spear Logo"><figcaption></figcaption></figure>

Odin’s web user interface is great but it’s not perfect and it's limited, however, its API is a gift sent from the developer gods over at Rev.io (thank you!). Using the documentation and a few lines of code you can achieve everything you can achieve in the web interface but you are no longer limited to how fast you can operate your keyboard with the power of programming languages like Python. I can create a loop to create 10, 100, 1000, or 10, 000 users, hunt groups, and call centers in seconds or minutes.&#x20;
## Overview

Managing them all becomes a breeze also, let's say a customer has a new user they want to add to all 50 of their hunt groups (if you’ve read this far I’m assuming you know what this is). If you’re using Broadworks then block the day out in your calendar, if you're using Odin’s web portal block the morning out, if you're using Python with the Odin API block 30 minutes out (that’s being generous).&#x20;
Odin's Spear is a Python library designed to streamline and enhance your experience with Odin's API by [Rev.io](https://www.rev.io/blog/solutions/rev-io-odin-api). If you've worked with BroadWorks for years and struggled with its outdated interface and limitations, Odin's API feels like a breath of fresh air—offering a modern user interface, automation, and comprehensive API access.

{% embed url="https://doc.odinapi.net/" %}
Odin's API Documentation
{% endembed %}
With Odin's Spear, managing users, hunt groups, call centers, and other telecom operations becomes significantly easier. This library encapsulates Odin's API functionality, making it accessible, efficient, and user-friendly.

Alas, using the API is not perfect, each time I would write a script to help me achieve these things I was hit with some recurring issues, I would have to find the API call I needed, format the data, design the request, handle any errors that could occur and the list goes on. Each time I was starting fresh and this was frustrating, if only there was a solution that handled my authentication, I could just select the method and pass it the data rather than designing the request, if an error occurs tell me what the issue is, resolve or even handle it for me…
## Features

## Introducing...
- **Bulk User Management:** Create and manage thousands of users, hunt groups, and call centers in minutes.
- **Error Handling:** Automatically manage authentication, request design, and error handling.
- **Advanced Tools:** Features like call flow visualization, group audit reports, and bulk management of telecom entities.
- **Alias Assignment Locator:** The first feature release addresses a long-standing issue by allowing you to easily locate where an alias is assigned within BroadWorks—saving you time and frustration.

<figure><img src=".gitbook/assets/Frame 2.png" alt=""><figcaption></figcaption></figure>
## Why Odin's Spear?

**Odin’s Spear** is a Python library that aims to do exactly that. It will encapsulate the entire functionality of Odin’s API making the use easy, efficient, and accessible. The project is stakeholder lead and all features have come from engineers that have been using Broadworks and now Odin for decades. It will also introduce other features requested such as a graph showing a call flow to a number, a group audit report for all things billable, and bulk management of call centers, hunt groups, and auto attendants. However, it was clear what the first feature had to be. For years now locating where an alias has been assigned on the Broadworks system has brought hosted telephony engineers to their knees. No more. With Odin’s Spears’ very first release (beta) I have addressed this issue making locating an alias a breeze. In 3 lines of code and 1 minute of your time, you can now achieve this once painstaking task, and more features are coming soon!
Working with BroadWorks for over five years was a challenge, with its 90s-style UI and rigid functionality. When Rev.io introduced Odin, with its modern interface and API, it revolutionized how telecom management could be done. However, even with these advancements, some tasks remained cumbersome, like locating alias assignments.

<figure><img src=".gitbook/assets/Frame 5.png" alt=""><figcaption></figcaption></figure>
Odin's Spear is the solution. It simplifies your workflow by automating repetitive tasks, handling errors, and making API interactions as smooth as possible. Whether you're managing 10 users or 10,000, Odin's Spear has you covered.

## 🚀 Getting Started

### Prerequisites

- Python 3.10+
- An Odin account

### Installation

Install Odin's Spear using pip:

```bash
pip install odins-spear
```

### Basic Usage

Here's a simple example to get you started:

```python
from odins_spear.api import API

# Initialize the API with your credentials
my_api = api.Api(base_url="https://base_url/api/vx", username="john.smith", password="ODIN-INSTANCE-1")
my_api.authenticate()

# Locate an alias assignment
alias_info = my_api.scripter.find_alias('ServiceProviderID', 'GroupID', alias=0)
print(alias_info)
```

For more detailed usage and examples, check out our [Documentation](#-documentation).

## 📖 Documentation

We provide extensive documentation to help you get started quickly and take full advantage of Odin's Spear's capabilities:

- [Odin's Spear Documentation](https://docs.jordan-prescott.com/odins_spear)

Odins Official API docs
- [Odin API Documentaion](https://doc.odinapi.net/)

## Contributing

We welcome contributions! If you'd like to contribute, please fork the project, make your changes then submit a pull request.
For issues to work on please see our [project](https://github.com/users/Jordan-Prescott/projects/2).

## License

This project is licensed under the MIT License—see the [LICENSE.md](LICENSE) file for details.

## Support

If you encounter any issues or have questions, feel free to open an issue on GitHub.

## Acknowledgements

Special thanks to the developers at Rev.io for creating the Odin API and to the engineers who provided invaluable feedback and feature suggestions.
92 changes: 72 additions & 20 deletions docs/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,22 @@
* [⚙️ Create API Object](docs/getting-started/create-api-object.md)
* [📦 Standard Methods](docs/methods/README.md)
* [🔢 DNs](docs/methods/dns/README.md)
* [1️⃣ 1️⃣ GET - Group DNs](docs/methods/dns/group-dns.md)
* [2️⃣ 2️⃣ GET - Group DN Search](docs/methods/dns/group-dn-search.md)
* [3️⃣ 3️⃣ GET - Group DN Details](docs/methods/dns/group-dn-details.md)
* [4️⃣ 4️⃣ GET - Service Provider DNs](docs/methods/dns/service-provider-dns.md)
* [5️⃣ 5️⃣ GET - Service Provider DN Search](docs/methods/dns/service-provider-dn-search.md)
* [6️⃣ 6️⃣ GET - System DNs](docs/methods/dns/system-dns.md)
* [7️⃣ 7️⃣ GET - System DN Summary](docs/methods/dns/system-dn-summary.md)
* [8️⃣ 8️⃣ GET - System DN Utilisation](docs/methods/dns/system-dn-utilization.md)
* [1️⃣ 1️⃣ POST - Group DNs](docs/methods/dns/group-dns-1.md)
* [2️⃣ 2️⃣ POST - Group DNs Assign Bulk](docs/methods/dns/group-dns-assign-bulk.md)
* [3️⃣ 3️⃣ POST - Group DNs Unassign Bulk](docs/methods/dns/group-dns-unassign-bulk.md)
* [4️⃣ 4️⃣ POST - Service Provider DNs](docs/methods/dns/service-provider-dns-1.md)
* [1️⃣ 1️⃣ PUT - Group DNs Activate](docs/methods/dns/group-dns-activate.md)
* [1️⃣ 1️⃣ DELETE - Group DNs](docs/methods/dns/group-dns-2.md)
* [2️⃣ 2️⃣ DELETE - Service Provider DNs](docs/methods/dns/service-provider-dns-2.md)
* [1️⃣ GET - Group DNs](docs/methods/dns/group-dns.md)
* [2️⃣ GET - Group DN Search](docs/methods/dns/group-dn-search.md)
* [3️⃣ GET - Group DN Details](docs/methods/dns/group-dn-details.md)
* [4️⃣ GET - Service Provider DNs](docs/methods/dns/service-provider-dns.md)
* [5️⃣ GET - Service Provider DN Search](docs/methods/dns/service-provider-dn-search.md)
* [6️⃣ GET - System DNs](docs/methods/dns/system-dns.md)
* [7️⃣ GET - System DN Summary](docs/methods/dns/system-dn-summary.md)
* [8️⃣ GET - System DN Utilisation](docs/methods/dns/system-dn-utilization.md)
* [1️⃣ POST - Group DNs](docs/methods/dns/group-dns-1.md)
* [2️⃣ POST - Group DNs Assign Bulk](docs/methods/dns/group-dns-assign-bulk.md)
* [3️⃣ POST - Group DNs Unassign Bulk](docs/methods/dns/group-dns-unassign-bulk.md)
* [4️⃣ POST - Service Provider DNs](docs/methods/dns/service-provider-dns-1.md)
* [1️⃣ PUT - Group DNs Activate](docs/methods/dns/group-dns-activate.md)
* [1️⃣ DELETE - Group DNs](docs/methods/dns/group-dns-2.md)
* [2️⃣ DELETE - Service Provider DNs](docs/methods/dns/service-provider-dns-2.md)
* [2️⃣ GET - System DN Search](docs/methods/dns/get-system-dn-search.md)
* [🔑 Password Generate](docs/methods/password-generate/README.md)
* [🔓 GET - Password Generate](docs/methods/password-generate/password-generate.md)
* [🔓 GET - Passwords Generate](docs/methods/password-generate/passwords-generate.md)
Expand All @@ -35,8 +36,10 @@
* [💚 GET - User Registration](docs/methods/registration/user-registration.md)
* [💚 GET - Bulk User Registration](docs/methods/registration/bulk-user-registration.md)
* [🔢 Alternate Numbers](docs/methods/alternate-numbers/README.md)
* [1️⃣ 1️⃣ GET - User Alternate Numbers](docs/methods/alternate-numbers/get-user-alternate-numbers.md)
* [1️⃣ GET - User Alternate Numbers](docs/methods/alternate-numbers/get-user-alternate-numbers.md)
* [📆 Schedules](docs/methods/schedules.md)
* [📆 GET - Group Schedules](docs/methods/schedules/get-group-schedules.md)
* [📆 GET - Group Events](docs/methods/schedules/get-group-events.md)
* [🌊 Trunk Groups](docs/methods/trunk-groups/README.md)
* [📞 GET - Group Trunk Groups Call Capacity](docs/methods/trunk-groups/get-group-trunk-groups-call-capacity.md)
* [☎️ GET - Group Trunk Group](docs/methods/trunk-groups/get-group-trunk-group.md)
Expand All @@ -45,17 +48,58 @@
* [📂 GET - Service Provider Call Capacity Report](docs/methods/trunk-groups/get-service-provider-call-capacity-report.md)
* [📞 PUT - Group Trunk Groups Call Capacity](docs/methods/trunk-groups/put-group-trunk-groups-call-capacity.md)
* [☎️ PUT - Group Trunk Group](docs/methods/trunk-groups/put-group-trunk-group.md)
* [🚿 PUT - Service Provider Trunk Group Call Capacity](docs/methods/trunk-groups/put-service-providers-trunk-group-call-capacity.md)
* [🚿 POST - Group Trunk Group](docs/methods/trunk-groups/post-group-trunk-group.md)
* [🤵 User](docs/methods/user/README.md)
* [🆔 GET - User By ID](docs/methods/user/get-user-by-id.md)
* [👯 GET - Users](docs/methods/user/get-users.md)
* [📮 POST - User](docs/methods/user/post-user.md)
* [👩‍💻 PUT - User](docs/methods/user/put-user.md)
* [👩‍👩‍👧‍👧 PUT - Users Bulk](docs/methods/user/put-users-bulk.md)
* [🔏 PUT - User Portal Passcode](docs/methods/user/put-user-portal-passcode.md)
* [🤝 Groups](docs/methods/groups/README.md)
* [🤝 GET - Service Provider Groups](docs/methods/groups/get-groups.md)
* [🤝 GET - Group Information](docs/methods/groups/get-group.md)
* [🚗 User Call Forwarding](docs/methods/call-forwarding/README.md)
* [🚗 GET - Bulk User Call Forwarding Always](docs/methods/call-forwarding/get-user-call-forwarding-always.md)
* [🚗 GET - User Call Forwarding Always](docs/methods/call-forwarding/get-bulk-call-forwarding-always.md)

* [🚗 GET - Bulk User Call Forwarding Busy](docs/methods/call-forwarding/get-user-call-forwarding-busy.md)
* [🚗 GET - User Call Forwarding Busy](docs/methods/call-forwarding/get-bulk-call-forwarding-busy.md)
* [🚗 GET - Bulk User Call Forwarding Not Reachable](docs/methods/call-forwarding/get-user-call-forwarding-not-reachable.md)
* [🚗 GET - User Call Forwarding Not Reachable](docs/methods/call-forwarding/get-bulk-call-forwarding-not-reachable.md)
* [🚗 GET - Bulk User Call Forwarding No Answer](docs/methods/call-forwarding/get-bulk-call-forwarding-no-answer.md)
* [🚗 GET - User Call Forwarding No Answer](docs/methods/call-forwarding/get-user-call-forwarding-no-answer.md)
* [🚗 GET - User Call Forwarding Selective Criteria](docs/methods/call-forwarding/get-user-call-forwarding-selective-criteria.md)
* [🚗 GET - User Call Forwarding Selective Criterias](docs/methods/call-forwarding/get-user-call-forwarding-selective-criterias.md)
* [🚗 GET - User Call Forwarding Selective](docs/methods/call-forwarding/get-user-call-forwarding-selective.md)
* [🏢️ Service Providers](docs/methods/service-providers/README.md)
* [🏢️ GET - Service Provider](docs/methods/service-providers/get-service-provider.md)
* [🏢️ GET - Service Providers](docs/methods/service-providers/get-service-providers.md)
* [📈 User Reports](docs/methods/reports/README.md)
* [📈 GET - User Report](docs/methods/reports/get-user-report.md)
* [🧾 Call Records](docs/methods/call-records/README.md)
* [🧾 GET - User Stats](docs/methods/call-records/get-call-stats.md)
* [💬 Call Pickup](docs/methods/call-pickup/README.md)
* [🤳 GET - Call Pickup Group User](docs/methods/call-pickup/get-call-pickup-group-user.md)
* [🔑 Authentication](docs/methods/authentication/README.md)
* [🔏 PUT - User Web Authentication Password](docs/methods/authentication/user-web-authentication-password.md)
* [🔏 PUT - User Web Authentication Password](docs/methods/authentication/put-user-web-authentication-password.md)
* [👮‍♀️ PUT - User Authentication Service](docs/methods/authentication/put-user-authentication-service.md)
* [💬 Auto Attendants](docs/methods/auto-attendants/README.md)
* [🟢 PUT - Auto Attendant Status](docs/methods/auto-attendants/auto-attendant-status.md)
* [🍅 PUT - Auto Attendant](docs/methods/auto-attendants/auto-attendant.md)
* [📖 PUT - Auto Attendant Submenu](docs/methods/auto-attendants/auto-attendant-submenu.md)
* [📞 GET - Auto Attendants](docs/methods/auto-attendants/get-auto-attendants.md)
* [🤙🏼 GET - Auto Attendant](docs/methods/auto-attendants/get-auto-attendant.md)
* [📞 Call Centers](docs/methods/call-centers/README.md)
* [🎧 GET - Group Call Centers](docs/methods/call-centers/get-group-call-centers.md)
* [🎧 GET - Group Call Center](docs/methods//call-centers/get-group-call-center.md)
* [👤 GET - User Call Center](docs/methods/call-centers/get-user-call-center.md)
* [📞 GET - Group Call Center Bounced Calls](docs/methods/call-centers/get-group-call-center-bounced-calls.md)
* [📞 GET - Group Call Center Forced Forwarding](docs/methods/call-centers/get-group-call-center-forced-forwarding.md)
* [📞 GET - Group Call Center Overflow](docs/methods/call-centers/get-group-call-center-overflow.md)
* [🆘 GET - Group Call Center Stranded Calls](docs/methods/call-centers/get-group-call-center-stranded-calls.md)
* [🚫 GET - Group Call Center Stranded Calls Unavailable](docs/methods/call-centers/get-group-call-center-stranded-calls-unavailable.md)
* [🟢 PUT - Group Call Center Status](docs/methods/call-centers/group-call-center-status.md)
* [🎧 PUT - Group Call Center](docs/methods/call-centers/group-call-center.md)
* [🎧 PUT - Group Call Center Agents](docs/methods/call-centers/group-call-center-agents.md)
Expand Down Expand Up @@ -88,12 +132,19 @@
* [🎐 PUT - Service Provider Device Type Tag](docs/methods/devices/service-provider-device-type-tag.md)
* [🗃️ POST - Group Device](docs/methods/devices/post-group\_device.md)
* [🍇 Hunt Groups](docs/methods/hunt-groups/README.md)
* [🍇 GET - Group Hunt Groups](docs/methods/hunt-groups/get-group-hunt-groups.md)
* [🍊 GET - Group Hunt Group](docs/methods/hunt-groups/get-group-hunt-group.md)
* [🍐 GET - Group Hunt Group User](docs/methods/hunt-groups/get-group-hunt-group-user.md)
* [🟢 PUT - Group Hunt Groups Status](docs/methods/hunt-groups/group-hunt-groups-status.md)
* [🍏 PUT - Group Hunt Group](docs/methods/hunt-groups/group-hunt-group.md)
* [💯 PUT - Group Hunt Group Weighted Call Distribution](docs/methods/hunt-groups/group-hunt-group-weighted-call-distribution.md)
* [🙋‍♂️ POST - Group Hunt Group](docs/methods/hunt-groups/post-group-hunt-group.md)
* [🍒 Services](docs/methods/services/README.md)
* [🧍 PUT - User Services](docs/methods/services/user-services.md)
* [🧍 Services](docs/methods/services/README.md)
* [🧍 PUT - User Services](docs/methods/services/put-user-services.md)
* [🧍 GET - User Services Assigned](docs/methods/services/get-user-services-assigned.md)
* [🧍 GET - User-Services](docs/methods/services/get-user-services.md)
* [🧍 GET - Group Services Assigned](docs/methods/services/get-group-services-assigned.md)
* [🧍 GET - Group Services](docs/methods/services/get-group-services.md)
* [🛑 Do Not Disturb](docs/methods/do-not-disturb/README.md)
* [🛑 GET - User Do Not Disturb](docs/methods/do-not-disturb/get-user-do-not-disturb.md)
* [🛑 PUT - User Do Not Disturb](docs/methods/do-not-disturb/put-user-do-not-disturb.md)
Expand Down Expand Up @@ -122,6 +173,7 @@
* [🆘 Troubleshooting & FAQ](troubleshooting-and-faq/README.md)
* [🐛 Common Issues](troubleshooting-and-faq/common-issues.md)
* [⁉️ Frequently Asked Questions](troubleshooting-and-faq/frequently-asked-questions/README.md)
* [1️⃣ 1️⃣ Do You Need To Set Up Multiple Loggers For Multiple API Objects? No.](troubleshooting-and-faq/frequently-asked-questions/do-you-need-to-set-up-multiple-loggers-for-multiple-api-objects-no..md)
* [1️⃣ Do You Need To Set Up Multiple Loggers For Multiple API Objects? No.](troubleshooting-and-faq/frequently-asked-questions do-you-need-to-set-up-multiple-loggers-for-multiple-api-objects-no..md)
* [📈 Graphviz Troubleshooting](troubleshooting-and-faq/graphviz-troubleshooting.md)
* [🐛 Bugs and Issues](bugs-and-issues.md)
* [🤙 Contact](contact.md)
2 changes: 1 addition & 1 deletion docs/docs/features/reporter/call-flow/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ api.get.group_hunt_group()
```python
from odin_api import api

my_api= api.Api(base_url="https://base_url/api/vx", username="john.smith", password="ODIN_INSTANCE_1")
my_api = api.Api(base_url="https://base_url/api/vx", username="john.smith", password="ODIN_INSTANCE_1")
my_api.authenticate()

# Generates a call flow chart for the number 123456789.
Expand Down
3 changes: 1 addition & 2 deletions docs/docs/features/reporter/group-users-call-statistics.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ api.get.user_services()
```python
from odins_spear.api import Api

my_api= Api("https://magic.14ip.net/api/v2", "Jordan.Prescott", "MAGIC-US", rate_limit=False)
my_api.logger.set_up_sys_log_handler("123.456.789.112", 48816)
my_api = api.Api(base_url="https://base_url/api/vx", username="john.smith", password="ODIN_INSTANCE_1")
my_api.authenticate()

# Whole day in date range
Expand Down
Loading

0 comments on commit b8d81a0

Please sign in to comment.