NAbleAPI


NameNAbleAPI JSON
Version 0.0.8 PyPI version JSON
download
home_pageNone
SummaryNAble Data Extraction API library/wrapper
upload_time2025-01-06 15:42:23
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseNone
keywords nable nsight n-able n-sight solarwinds solar winds
VCS
bugtrack_url
requirements certifi charset-normalizer idna requests urllib3 xmltodict
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # NSight Data Extraction API wrapper/Library

WARNING/NOTE: I wrote all of this based on the N-Able documentation, which says N-Able all over it, but I am now realising this is technically just for N-Sight, not N-Able.  I am in the process of renaming and fixing all of the issues this causes.

This is a Python wrapper/library for the NSight Data Extraction API.  The NSight API returns data in xml format, this tool will convert those to lists and dictionaries for ease of use.

The official API documentation from NSight can be found [here](https://documentation.n-able.com/remote-management/userguide/Content/api_calls.htm). I have tried to keep my naming scheme similar to theirs.

NOTE:  
- This is still in extremely early stages of development, function names may change! 

## Table Of Contents
*I don't know how to make this yet, so it's Coming Soon*


## Installation

```
pip install NAbleAPI
```

## Getting Started

To use the NAble API, you will need to know your region and have an API key.

1. Import the package
2. Get an API key. Follow [these instructions](https://documentation.n-able.com/remote-management/userguide/Content/api_key.htm) to get your API key.
3. Find your region (see below)


### Regions

To find your region, check [this page](https://documentation.n-able.com/remote-management/userguide/Content/determine_url.htm) or view table below. 

Notes: 
- Not all regions have been tested, if your region is marked 'untested' on the table below, please let me know whether it works.
- If your dashboard URL starts with `www2`, assume it is just `www` for the region.
- If there is another abbreviation or country code you would like added, let me know!

| Dashboard URL | Region | Status |
| --- | --- | --- |
| www.am.remote.management | americas, ams | Untested |
| wwwasia.system-monitor.com | asia | Untested |
| www.system-monitor.com | australia, au, aus | Untested |
| wwweurope1.systemmonitor.eu.com | europe, eu | Untested |
| wwwfrance.systemmonitor.eu.com | france, fr | Untested |
| wwwfrance1.systemmonitor.eu.com | france1, fr1 | Untested |
| wwwgermany1.systemmonitor.eu.com | germany, de, deu | Untested |
| wwwireland.systemmonitor.eu.com | ireland, ie, irl | Untested |
| wwwpoland1.systemmonitor.eu.com | poland, pl,pol | Untested |
| www.systemmonitor.co.uk | united kingdom, uk, gb, gbr | **Verified** |
| www.systemmonitor.us | united states, us, usa | Untested |

### Using the package


#### Create a new .py file in the root directory and import the NAble package
```
from NAbleAPI import NAble
```

#### Authenticate with your API key
```
na = NAble('[YOUR REGION]','[YOUR API KEY]')
```

Example

```
na = NAble('uk','f821213a8d3q43843dj39824')
```

(Not a real API key, don't try to use it)


#### Make your first request
Gee it sure would be helpful is there was documentation for the available commands.  Unfortunately, there isn't right now.

Get all your clients

```
myNAbleClients = na.clients()
```


#### Storing your key
It's probably best not to store your API key in your script. Instead, you can create a .env file and use that.

1. Create a new file called `.env` in the root directory
2. Put your API key in it (do not put it in quotes, type exactly as shown below)
```
NABLE_KEY = f821213a8d3q43843dj39824
```
3. Get the key from file
``` 
from NAbleAPI import NAble # Import the NAble package
import os # Import OS package (built into Python, I'm like 99% sure)

NABLE_KEY = os.getenv("NABLE_KEY")

na = NAble('uk',NABLE_KEY)
```

## API Endpoints
The endpoints are grouped by category on NAble's website, so I have done the same below.
I found the names on NAbles site to be a bit long, so I have shortened them a bit. The `Function Name` is what you will use in Python.
I'm doing my best to get them all added!



### Clients, SItes, and Devices 
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/devices.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |
| list_clients | Working | clients() | List all clients |
| list_sites | Working | sites() | List sites for a client |
| list_servers | Working | servers() | list servers at a site |
| list_workstations | Working | workstations() | list workstations at a site |
| list_agentless_assets | Working | agentlessAssets() | List agentless assets at a site |
| list_devices_at_client | Working | clientDevices() | List all workstations or servers for a client |
| list_device_monitoring_details | Working | deviceDetails() | Get details for a single device | 
| add_client | Working | addClient() | Add a client |
| add_site | Working | addSite() | Add a site | 
| get_site_installation_package() | Partially Working | siteInstallPackage | Create/Get a site installation package (returns rawbytes right now) |

### Checks and results
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/checks_and_results.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |
| list_checks | Working | checks() |  List all checks for a device |
| list_failing_checks | Working | failingChecks() | List all failing checks |
| list_check_config | Working | checkConfig() | Get a single checks configuration |
| get_formatted_check_output | Working | formattedCheckOutput() | Get first line of check result |
| list_outages | Working | checks() | List all outages for a device |
| list_performance_history | Untested | performanceHistory() |  Get performance history of a device |
| list_drive_space_history | Working | driveSpaceHistory() |  Get Device Storage History |
| list_exchange_storage_history | Untested | exchangeStorageHistory() | Get Exchange Storage History |
| clear_check | Untested | clearCheck() | Clear a check |
| add_check_note | Working | addNote() | Add note to a check |
| list_templates | Working | templates() | List all server/workstation monitoring templates |

### Anti-Virus Update Check Information
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/api_av_info.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |
| list_supported_av_products | Working | supportedAVs() | Lists supported AVs |
| list_av_definitions | Working | AVDefinitions() | Get definitions for specific AV Product |
| get_av_definition_release_date | Working | AVDefinitionsReleaseDate() | Get release date of specific AV version |
| list_av_history | Working | AVHistory() | List last 60s of AV status (I got 90 though...) |

### List Backup Check History
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/list_backup_history.htmm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |
| list_backup_history | Untested | backupHistory() | Get last 60 days of backup history for device |

### Asset Tracking Information
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/asset_tracking_information.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |
| list_all_hardware | Working | assetHardware() | Get all hardware for an asset |
| list_all_software | Working | assetSoftware() | Get all software for an asset |
| list_license_groups | Working | licenseGroups() | Get software license groups for account |
| list_license_groups | Working | licenseGroupItems() | Get all software license groups for account/tenant |
| list_license_group_items | Working | clientLicenseCount() | Get software in a software license group |
| list_client_license_count | Untested | assetLicensedSoftware() | Get client software license counts |
| list_device_asset_details | Working | assetDetails() | Get asset information from device ID |



### Settings
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/settings.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |
| list_wallchart_settings | Working | wallchartSettings() | Get general wallchart settings |
| list_general_settings | Working | generalSettings() | Get general account settings |

### Patch Management
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/patch_management.htm)

These may be moved to their own subclass in the future!

| Service | Status | Function Name | Description |
| --- | --- | --- | --- |
| patch_list_all | Working | listPatches() | List all patches for a device |
| patch_approve | Working | approvePatches() | Approve patch(es) for a device |
| patch_do_nothing | Working | doNothingPatches() | Do nothing on patch(es) for a device |
| patch_ignore | Working | ignorePatches() | Ignore patch(es) for a device |
| patch_reprocess | Working | reprocessPatches() | Reprocess patch(es) for a device |
| patch_retry | Working | retryPatches() | Retry patch(es) for a device (think this is the same as reprocess) |

### Managed Anti-Virus
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/managed_antivirus2.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |
| mav_quarantine_list | Untested | mavQuarantine() | Get quarantined threats for a device |
| mav_quarantine_release | Untested | mavQuarantineRelease() | Release threat(s) from Managed Antivirus quarantine |
| mav_quarantine_remove | Untested | mavQuarantineRemove() | Remove threat(s) from Managed Antivirus quarantine |
| mav_scan_start | Working | mavScanStart() | Start quick scan on a device |
| mav_scan_pause | Working | mavScanPause() | Pause scan on a device |
| mav_scan_resume | Working | mavScanResume() | Resume/unpause scan on a device |
| mav_scan_cancel | Working | mavScanCancel() | Cancel scan on a device |
| mav_scan_device_list | Working | mavScanList() | Get a list of scans for a device |
| list_mav_scans | Working | mavScans() | Get a list of scans for a device |
| list_mav_threats | Working | mavThreats() | Get the most recent occurence of each threat found on a device |
| list_mav_quarantine | Untested | mavQuarantineList() | ??? |
| mav_definitions_update | Working | mavUpdate() | Update the bitdefender definitions on a device |

### Backup & Recovery
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/api_mob_over.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |

### Run Task Now
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/run_task_now.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |

### List Active Directory Users
Official NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/list_active_directory_users.htm)
| Service | Status | Function Name | Description |
| --- | --- | --- | --- |


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "NAbleAPI",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "NAble, NSight, N-Able, N-Sight, Solarwinds, Solar Winds",
    "author": null,
    "author_email": "Fryan O <FryanO@proton.me>",
    "download_url": "https://files.pythonhosted.org/packages/58/45/0c95cae9cbb963bd46c5bbebfc07bb63dbd5d66881baf7e8049e27f31eb6/nableapi-0.0.8.tar.gz",
    "platform": null,
    "description": "# NSight Data Extraction API wrapper/Library\n\nWARNING/NOTE: I wrote all of this based on the N-Able documentation, which says N-Able all over it, but I am now realising this is technically just for N-Sight, not N-Able.  I am in the process of renaming and fixing all of the issues this causes.\n\nThis is a Python wrapper/library for the NSight Data Extraction API.  The NSight API returns data in xml format, this tool will convert those to lists and dictionaries for ease of use.\n\nThe official API documentation from NSight can be found [here](https://documentation.n-able.com/remote-management/userguide/Content/api_calls.htm). I have tried to keep my naming scheme similar to theirs.\n\nNOTE:  \n- This is still in extremely early stages of development, function names may change! \n\n## Table Of Contents\n*I don't know how to make this yet, so it's Coming Soon*\n\n\n## Installation\n\n```\npip install NAbleAPI\n```\n\n## Getting Started\n\nTo use the NAble API, you will need to know your region and have an API key.\n\n1. Import the package\n2. Get an API key. Follow [these instructions](https://documentation.n-able.com/remote-management/userguide/Content/api_key.htm) to get your API key.\n3. Find your region (see below)\n\n\n### Regions\n\nTo find your region, check [this page](https://documentation.n-able.com/remote-management/userguide/Content/determine_url.htm) or view table below. \n\nNotes: \n- Not all regions have been tested, if your region is marked 'untested' on the table below, please let me know whether it works.\n- If your dashboard URL starts with `www2`, assume it is just `www` for the region.\n- If there is another abbreviation or country code you would like added, let me know!\n\n| Dashboard URL | Region | Status |\n| --- | --- | --- |\n| www.am.remote.management | americas, ams | Untested |\n| wwwasia.system-monitor.com | asia | Untested |\n| www.system-monitor.com | australia, au, aus | Untested |\n| wwweurope1.systemmonitor.eu.com | europe, eu | Untested |\n| wwwfrance.systemmonitor.eu.com | france, fr | Untested |\n| wwwfrance1.systemmonitor.eu.com | france1, fr1 | Untested |\n| wwwgermany1.systemmonitor.eu.com | germany, de, deu | Untested |\n| wwwireland.systemmonitor.eu.com | ireland, ie, irl | Untested |\n| wwwpoland1.systemmonitor.eu.com | poland, pl,pol | Untested |\n| www.systemmonitor.co.uk | united kingdom, uk, gb, gbr | **Verified** |\n| www.systemmonitor.us | united states, us, usa | Untested |\n\n### Using the package\n\n\n#### Create a new .py file in the root directory and import the NAble package\n```\nfrom NAbleAPI import NAble\n```\n\n#### Authenticate with your API key\n```\nna = NAble('[YOUR REGION]','[YOUR API KEY]')\n```\n\nExample\n\n```\nna = NAble('uk','f821213a8d3q43843dj39824')\n```\n\n(Not a real API key, don't try to use it)\n\n\n#### Make your first request\nGee it sure would be helpful is there was documentation for the available commands.  Unfortunately, there isn't right now.\n\nGet all your clients\n\n```\nmyNAbleClients = na.clients()\n```\n\n\n#### Storing your key\nIt's probably best not to store your API key in your script. Instead, you can create a .env file and use that.\n\n1. Create a new file called `.env` in the root directory\n2. Put your API key in it (do not put it in quotes, type exactly as shown below)\n```\nNABLE_KEY = f821213a8d3q43843dj39824\n```\n3. Get the key from file\n``` \nfrom NAbleAPI import NAble # Import the NAble package\nimport os # Import OS package (built into Python, I'm like 99% sure)\n\nNABLE_KEY = os.getenv(\"NABLE_KEY\")\n\nna = NAble('uk',NABLE_KEY)\n```\n\n## API Endpoints\nThe endpoints are grouped by category on NAble's website, so I have done the same below.\nI found the names on NAbles site to be a bit long, so I have shortened them a bit. The `Function Name` is what you will use in Python.\nI'm doing my best to get them all added!\n\n\n\n### Clients, SItes, and Devices \nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/devices.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n| list_clients | Working | clients() | List all clients |\n| list_sites | Working | sites() | List sites for a client |\n| list_servers | Working | servers() | list servers at a site |\n| list_workstations | Working | workstations() | list workstations at a site |\n| list_agentless_assets | Working | agentlessAssets() | List agentless assets at a site |\n| list_devices_at_client | Working | clientDevices() | List all workstations or servers for a client |\n| list_device_monitoring_details | Working | deviceDetails() | Get details for a single device | \n| add_client | Working | addClient() | Add a client |\n| add_site | Working | addSite() | Add a site | \n| get_site_installation_package() | Partially Working | siteInstallPackage | Create/Get a site installation package (returns rawbytes right now) |\n\n### Checks and results\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/checks_and_results.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n| list_checks | Working | checks() |  List all checks for a device |\n| list_failing_checks | Working | failingChecks() | List all failing checks |\n| list_check_config | Working | checkConfig() | Get a single checks configuration |\n| get_formatted_check_output | Working | formattedCheckOutput() | Get first line of check result |\n| list_outages | Working | checks() | List all outages for a device |\n| list_performance_history | Untested | performanceHistory() |  Get performance history of a device |\n| list_drive_space_history | Working | driveSpaceHistory() |  Get Device Storage History |\n| list_exchange_storage_history | Untested | exchangeStorageHistory() | Get Exchange Storage History |\n| clear_check | Untested | clearCheck() | Clear a check |\n| add_check_note | Working | addNote() | Add note to a check |\n| list_templates | Working | templates() | List all server/workstation monitoring templates |\n\n### Anti-Virus Update Check Information\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/api_av_info.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n| list_supported_av_products | Working | supportedAVs() | Lists supported AVs |\n| list_av_definitions | Working | AVDefinitions() | Get definitions for specific AV Product |\n| get_av_definition_release_date | Working | AVDefinitionsReleaseDate() | Get release date of specific AV version |\n| list_av_history | Working | AVHistory() | List last 60s of AV status (I got 90 though...) |\n\n### List Backup Check History\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/list_backup_history.htmm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n| list_backup_history | Untested | backupHistory() | Get last 60 days of backup history for device |\n\n### Asset Tracking Information\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/asset_tracking_information.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n| list_all_hardware | Working | assetHardware() | Get all hardware for an asset |\n| list_all_software | Working | assetSoftware() | Get all software for an asset |\n| list_license_groups | Working | licenseGroups() | Get software license groups for account |\n| list_license_groups | Working | licenseGroupItems() | Get all software license groups for account/tenant |\n| list_license_group_items | Working | clientLicenseCount() | Get software in a software license group |\n| list_client_license_count | Untested | assetLicensedSoftware() | Get client software license counts |\n| list_device_asset_details | Working | assetDetails() | Get asset information from device ID |\n\n\n\n### Settings\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/settings.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n| list_wallchart_settings | Working | wallchartSettings() | Get general wallchart settings |\n| list_general_settings | Working | generalSettings() | Get general account settings |\n\n### Patch Management\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/patch_management.htm)\n\nThese may be moved to their own subclass in the future!\n\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n| patch_list_all | Working | listPatches() | List all patches for a device |\n| patch_approve | Working | approvePatches() | Approve patch(es) for a device |\n| patch_do_nothing | Working | doNothingPatches() | Do nothing on patch(es) for a device |\n| patch_ignore | Working | ignorePatches() | Ignore patch(es) for a device |\n| patch_reprocess | Working | reprocessPatches() | Reprocess patch(es) for a device |\n| patch_retry | Working | retryPatches() | Retry patch(es) for a device (think this is the same as reprocess) |\n\n### Managed Anti-Virus\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/managed_antivirus2.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n| mav_quarantine_list | Untested | mavQuarantine() | Get quarantined threats for a device |\n| mav_quarantine_release | Untested | mavQuarantineRelease() | Release threat(s) from Managed Antivirus quarantine |\n| mav_quarantine_remove | Untested | mavQuarantineRemove() | Remove threat(s) from Managed Antivirus quarantine |\n| mav_scan_start | Working | mavScanStart() | Start quick scan on a device |\n| mav_scan_pause | Working | mavScanPause() | Pause scan on a device |\n| mav_scan_resume | Working | mavScanResume() | Resume/unpause scan on a device |\n| mav_scan_cancel | Working | mavScanCancel() | Cancel scan on a device |\n| mav_scan_device_list | Working | mavScanList() | Get a list of scans for a device |\n| list_mav_scans | Working | mavScans() | Get a list of scans for a device |\n| list_mav_threats | Working | mavThreats() | Get the most recent occurence of each threat found on a device |\n| list_mav_quarantine | Untested | mavQuarantineList() | ??? |\n| mav_definitions_update | Working | mavUpdate() | Update the bitdefender definitions on a device |\n\n### Backup & Recovery\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/api_mob_over.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n\n### Run Task Now\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/run_task_now.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n\n### List Active Directory Users\nOfficial NAble documentation page [here](https://documentation.n-able.com/remote-management/userguide/Content/list_active_directory_users.htm)\n| Service | Status | Function Name | Description |\n| --- | --- | --- | --- |\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "NAble Data Extraction API library/wrapper",
    "version": "0.0.8",
    "project_urls": {
        "Changelog": "https://github.com/ItsJustAGitHubMichealWhosGonnaSeeIt5Ppl/Python-NAbleAPI/blob/main/CHANGELOG.md",
        "Documentation": "https://python-nableapi.readthedocs.io/",
        "Homepage": "https://github.com/ItsJustAGitHubMichealWhosGonnaSeeIt5Ppl/Python-NAbleAPI",
        "Issues": "https://github.com/ItsJustAGitHubMichealWhosGonnaSeeIt5Ppl/Python-NAbleAPI/issues"
    },
    "split_keywords": [
        "nable",
        " nsight",
        " n-able",
        " n-sight",
        " solarwinds",
        " solar winds"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f333bf1d0fce2e74f2976067239ffa730458c44f7af8a2a98ed3a17b53c45985",
                "md5": "a46bc236591b1de6f6f9bb62749679f3",
                "sha256": "0aa1d6e7fe7b7c51bee9fb4f0ad42f419f77ebcce1c04fc838f330c74bf01ef0"
            },
            "downloads": -1,
            "filename": "NAbleAPI-0.0.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a46bc236591b1de6f6f9bb62749679f3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 32134,
            "upload_time": "2025-01-06T15:42:18",
            "upload_time_iso_8601": "2025-01-06T15:42:18.770865Z",
            "url": "https://files.pythonhosted.org/packages/f3/33/bf1d0fce2e74f2976067239ffa730458c44f7af8a2a98ed3a17b53c45985/NAbleAPI-0.0.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "58450c95cae9cbb963bd46c5bbebfc07bb63dbd5d66881baf7e8049e27f31eb6",
                "md5": "86bdd75abf40369b155e495334791430",
                "sha256": "0f987e37a194c8be6cc9301b10301fdb99d6e7273b7f777831139beeb04f34ad"
            },
            "downloads": -1,
            "filename": "nableapi-0.0.8.tar.gz",
            "has_sig": false,
            "md5_digest": "86bdd75abf40369b155e495334791430",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 31995,
            "upload_time": "2025-01-06T15:42:23",
            "upload_time_iso_8601": "2025-01-06T15:42:23.338708Z",
            "url": "https://files.pythonhosted.org/packages/58/45/0c95cae9cbb963bd46c5bbebfc07bb63dbd5d66881baf7e8049e27f31eb6/nableapi-0.0.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-06 15:42:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ItsJustAGitHubMichealWhosGonnaSeeIt5Ppl",
    "github_project": "Python-NAbleAPI",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "certifi",
            "specs": [
                [
                    ">=",
                    "2024.8.30"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    ">=",
                    "3.4.0"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    ">=",
                    "3.10"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.32.3"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    ">=",
                    "2.2.3"
                ]
            ]
        },
        {
            "name": "xmltodict",
            "specs": [
                [
                    ">=",
                    "0.14.2"
                ]
            ]
        }
    ],
    "lcname": "nableapi"
}
        
Elapsed time: 0.36058s