hypelabs-connect 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hypelabs_connect-0.1.0/.github/workflows/publish.yml +39 -0
- hypelabs_connect-0.1.0/.gitignore +10 -0
- hypelabs_connect-0.1.0/LICENSE +21 -0
- hypelabs_connect-0.1.0/PKG-INFO +68 -0
- hypelabs_connect-0.1.0/README.md +56 -0
- hypelabs_connect-0.1.0/pyproject.toml +22 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/__init__.py +5 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/api_key_authentication_provider.py +17 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/client.py +26 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/announcements/announcements_request_builder.py +75 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/catalog/capabilities/capabilities_request_builder.py +107 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/catalog/catalog_request_builder.py +73 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/catalog/datacenters/datacenters_request_builder.py +113 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/catalog/isps/isps_request_builder.py +113 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/catalog/locations/locations_request_builder.py +108 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/catalog/products/products_request_builder.py +95 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/connect_api_client.py +113 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/authenticate/authenticate_request_builder.py +109 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/authenticate/oauth/oauth_request_builder.py +89 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/authenticate/telegram/telegram_request_builder.py +90 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/customers_request_builder.py +179 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/item/billing/billing_request_builder.py +90 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/item/defaults/defaults_request_builder.py +89 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/item/kyc/kyc_request_builder.py +89 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/item/metadata/metadata_request_builder.py +89 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/item/password/password_request_builder.py +86 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/item/reset_password/reset_password_request_builder.py +81 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/item/send_verification/send_verification_request_builder.py +87 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/customers/item/with_customer_item_request_builder.py +278 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/incidents/incidents_request_builder.py +150 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/incidents/item/dismiss/dismiss_request_builder.py +81 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/incidents/item/metadata/metadata_request_builder.py +89 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/incidents/item/resolve/resolve_request_builder.py +89 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/incidents/item/with_incident_item_request_builder.py +111 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/kiota-lock.json +35 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/announcement.py +93 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/announcement_metadata.py +43 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/announcement_statuses.py +7 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/api_error.py +51 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/api_response.py +78 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/authenticate_customer_o_auth_request.py +70 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/authenticate_customer_request.py +58 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/authenticate_customer_telegram_request.py +50 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/billing_cycles.py +10 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/cancel_order_request.py +54 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/capability.py +90 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/capability_types.py +6 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/create_customer_request.py +85 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/create_incident_request.py +62 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/create_order_request.py +81 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/create_order_response.py +55 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/create_review_request.py +67 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/create_trial_response.py +60 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/customer.py +162 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/customer_auth_response.py +80 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/customer_billing.py +78 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/customer_external_logins.py +46 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/customer_kyc.py +66 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/customer_metadata.py +43 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/datacenter.py +83 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/extend_order_request.py +64 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/extend_order_response.py +55 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/grace_period_policies.py +8 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/incident.py +102 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/incident_metadata.py +43 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/incident_statuses.py +7 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/ip_information.py +99 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/ip_rotation_link_response.py +54 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/isp.py +79 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/location.py +87 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/order.py +149 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/order_criteria.py +92 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/order_intents.py +7 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/order_item.py +77 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/order_item_metadata.py +43 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/order_metadata.py +43 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/order_statuses.py +10 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/password_hash_schemes.py +6 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/patch_customer_billing_request.py +78 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/patch_customer_defaults_request.py +54 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/patch_customer_request.py +50 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/patch_metadata_request.py +57 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/patch_metadata_request_metadata.py +46 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/patch_password_request.py +50 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/patch_proxy_annotation_request.py +54 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/payment_methods.py +9 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/payment_processors.py +8 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/preview_order_request.py +73 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/preview_order_response.py +78 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/pricing_types.py +6 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/product.py +97 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/product_kinds.py +6 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy.py +117 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_credential_response.py +67 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_datacenter.py +55 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_features.py +57 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_ip_rotation_feature.py +54 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_ip_rotation_response.py +54 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_isp.py +59 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_location.py +59 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_options.py +73 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_options_metadata.py +43 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_ping_response.py +62 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/proxy_product.py +66 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/request_details.py +68 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/reset_password_response.py +50 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/resolution_modes.py +6 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/resolve_incident_request.py +54 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/review.py +90 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/review_kyc_request.py +50 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/review_metadata.py +43 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/send_verification_request.py +50 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/trial_order_request.py +73 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/update_customer_request.py +88 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/update_customer_request_external_logins.py +46 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/update_proxy_credentials_request.py +58 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/update_proxy_ip_rotation_request.py +50 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/models/update_proxy_options_request.py +57 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/orders/item/extend/extend_request_builder.py +91 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/orders/item/orders_item_request_builder.py +146 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/orders/item/proxies/proxies_request_builder.py +81 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/orders/orders_request_builder.py +192 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/orders/preview/preview_request_builder.py +90 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/orders/trial/trial_request_builder.py +91 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/annotations/annotations_request_builder.py +79 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/credentials/credentials_request_builder.py +113 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/ip_info/ip_info_request_builder.py +82 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/ip_rotation/ip_rotation_request_builder.py +133 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/ip_rotation/link/link_request_builder.py +75 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/ip_rotation/trigger/trigger_request_builder.py +69 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/options/options_request_builder.py +120 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/ping/ping_request_builder.py +82 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/item/with_proxy_item_request_builder.py +135 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/proxies/proxies_request_builder.py +91 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/reviews/item/approve/approve_request_builder.py +81 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/reviews/item/metadata/metadata_request_builder.py +89 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/reviews/item/with_review_item_request_builder.py +98 -0
- hypelabs_connect-0.1.0/src/hypelabs_connect/generated/reviews/reviews_request_builder.py +138 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
# Publishes the SDK to PyPI when a version tag (e.g. v1.2.3) is pushed.
|
|
4
|
+
# Authentication uses PyPI Trusted Publishing (OIDC) — no long-lived API token is stored.
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
tags:
|
|
8
|
+
- "v*"
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
publish:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
id-token: write # required for GitHub to issue the OIDC token PyPI exchanges
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Setup Python
|
|
22
|
+
uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.12"
|
|
25
|
+
|
|
26
|
+
# Pin the package version to the tag (refs/tags/v1.2.3 -> 1.2.3) so the artifact matches the release.
|
|
27
|
+
- name: Set version from tag
|
|
28
|
+
run: |
|
|
29
|
+
version="${GITHUB_REF_NAME#v}"
|
|
30
|
+
sed -i "s/^version = \".*\"/version = \"${version}\"/" pyproject.toml
|
|
31
|
+
|
|
32
|
+
- name: Build
|
|
33
|
+
run: |
|
|
34
|
+
python -m pip install --upgrade build
|
|
35
|
+
python -m build
|
|
36
|
+
|
|
37
|
+
# No token: the action exchanges the OIDC token and uploads to PyPI.
|
|
38
|
+
- name: Publish to PyPI
|
|
39
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 HypeLabs, LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: hypelabs-connect
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: The Python client for the HypeLabs Connect API.
|
|
5
|
+
Project-URL: Homepage, https://github.com/hypelabs-llc/python-sdk
|
|
6
|
+
Project-URL: Repository, https://github.com/hypelabs-llc/python-sdk
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
Requires-Dist: microsoft-kiota-bundle==1.15.0
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<img src="https://i.imgur.com/NtKvmk2.png" height="100" alt="HypeLabs" />
|
|
15
|
+
</p>
|
|
16
|
+
<h3 align="center">
|
|
17
|
+
HypeLabs Connect SDK
|
|
18
|
+
</h3>
|
|
19
|
+
<p align="center">
|
|
20
|
+
The Python client for the HypeLabs Connect API.
|
|
21
|
+
</p>
|
|
22
|
+
<p align="center">
|
|
23
|
+
<a href="https://pypi.org/project/hypelabs-connect/"><img src="https://img.shields.io/pypi/v/hypelabs-connect?color=3775a9&label=pypi" /></a>
|
|
24
|
+
<a href="https://pypi.org/project/hypelabs-connect/"><img src="https://img.shields.io/pypi/dm/hypelabs-connect?color=3775a9&label=Downloads" /></a>
|
|
25
|
+
<a href="https://connect.hypelabs.network"><img src="https://img.shields.io/badge/API-connect.hypelabs.network-6366f1" /></a>
|
|
26
|
+
<a href="https://learn.microsoft.com/openapi/kiota/"><img src="https://img.shields.io/badge/Generated%20With-Kiota-0078d4" /></a>
|
|
27
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-lightgrey.svg" /></a>
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
## Requirements
|
|
31
|
+
|
|
32
|
+
- Python 3.10 or later
|
|
33
|
+
- A HypeLabs Connect API key (`hl_live_…`)
|
|
34
|
+
|
|
35
|
+
> The client authenticates with an API key, so run it **server-side** (a backend or a job) — never ship your
|
|
36
|
+
> key to a browser or a client app.
|
|
37
|
+
|
|
38
|
+
## Install
|
|
39
|
+
|
|
40
|
+
1. **Add the package:**
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install hypelabs-connect
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
2. **Create your organization** on the [HypeLabs Console](https://console.hypelabs.network/?utm_source=github&utm_medium=readme&utm_campaign=python-sdk) and generate an API key.
|
|
47
|
+
|
|
48
|
+
## Usage
|
|
49
|
+
|
|
50
|
+
Create a client with your API key and call the API. Every call is async and returns typed models.
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
import asyncio
|
|
54
|
+
from hypelabs_connect import create_connect_client
|
|
55
|
+
|
|
56
|
+
client = create_connect_client("hl_live_...")
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
async def main():
|
|
60
|
+
proxies = await client.proxies.get()
|
|
61
|
+
for proxy in proxies or []:
|
|
62
|
+
print(proxy.id)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
asyncio.run(main())
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
The API is authenticated with the `X-Api-Key` header, wired up internally — you never touch the Kiota plumbing.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://i.imgur.com/NtKvmk2.png" height="100" alt="HypeLabs" />
|
|
3
|
+
</p>
|
|
4
|
+
<h3 align="center">
|
|
5
|
+
HypeLabs Connect SDK
|
|
6
|
+
</h3>
|
|
7
|
+
<p align="center">
|
|
8
|
+
The Python client for the HypeLabs Connect API.
|
|
9
|
+
</p>
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://pypi.org/project/hypelabs-connect/"><img src="https://img.shields.io/pypi/v/hypelabs-connect?color=3775a9&label=pypi" /></a>
|
|
12
|
+
<a href="https://pypi.org/project/hypelabs-connect/"><img src="https://img.shields.io/pypi/dm/hypelabs-connect?color=3775a9&label=Downloads" /></a>
|
|
13
|
+
<a href="https://connect.hypelabs.network"><img src="https://img.shields.io/badge/API-connect.hypelabs.network-6366f1" /></a>
|
|
14
|
+
<a href="https://learn.microsoft.com/openapi/kiota/"><img src="https://img.shields.io/badge/Generated%20With-Kiota-0078d4" /></a>
|
|
15
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-lightgrey.svg" /></a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
## Requirements
|
|
19
|
+
|
|
20
|
+
- Python 3.10 or later
|
|
21
|
+
- A HypeLabs Connect API key (`hl_live_…`)
|
|
22
|
+
|
|
23
|
+
> The client authenticates with an API key, so run it **server-side** (a backend or a job) — never ship your
|
|
24
|
+
> key to a browser or a client app.
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
1. **Add the package:**
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
pip install hypelabs-connect
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
2. **Create your organization** on the [HypeLabs Console](https://console.hypelabs.network/?utm_source=github&utm_medium=readme&utm_campaign=python-sdk) and generate an API key.
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
Create a client with your API key and call the API. Every call is async and returns typed models.
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
import asyncio
|
|
42
|
+
from hypelabs_connect import create_connect_client
|
|
43
|
+
|
|
44
|
+
client = create_connect_client("hl_live_...")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
async def main():
|
|
48
|
+
proxies = await client.proxies.get()
|
|
49
|
+
for proxy in proxies or []:
|
|
50
|
+
print(proxy.id)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
asyncio.run(main())
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The API is authenticated with the `X-Api-Key` header, wired up internally — you never touch the Kiota plumbing.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "hypelabs-connect"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "The Python client for the HypeLabs Connect API."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
dependencies = [
|
|
13
|
+
"microsoft-kiota-bundle==1.15.0",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
[project.urls]
|
|
17
|
+
Homepage = "https://github.com/hypelabs-llc/python-sdk"
|
|
18
|
+
Repository = "https://github.com/hypelabs-llc/python-sdk"
|
|
19
|
+
|
|
20
|
+
[tool.hatch.build.targets.wheel]
|
|
21
|
+
packages = ["src/hypelabs_connect"]
|
|
22
|
+
exclude = ["**/.kiota.log", "**/kiota-lock.json"]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from kiota_abstractions.authentication import AuthenticationProvider
|
|
4
|
+
from kiota_abstractions.request_information import RequestInformation
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ApiKeyAuthenticationProvider(AuthenticationProvider):
|
|
8
|
+
"""Authenticates every request with the Connect API's ``X-Api-Key`` header. Kiota calls this before each
|
|
9
|
+
outgoing request; the key is supplied once when the client is created."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, api_key: str) -> None:
|
|
12
|
+
self._api_key = api_key
|
|
13
|
+
|
|
14
|
+
async def authenticate_request(
|
|
15
|
+
self, request: RequestInformation, additional_authentication_context: dict | None = None
|
|
16
|
+
) -> None:
|
|
17
|
+
request.headers.try_add("X-Api-Key", self._api_key)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from kiota_bundle.default_request_adapter import DefaultRequestAdapter
|
|
4
|
+
|
|
5
|
+
from .api_key_authentication_provider import ApiKeyAuthenticationProvider
|
|
6
|
+
from .generated.connect_api_client import ConnectApiClient
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def create_connect_client(api_key: str) -> ConnectApiClient:
|
|
10
|
+
"""The entry point to the HypeLabs Connect API. Create one with your API key and use the fluent request
|
|
11
|
+
builders it returns: ``client.proxies.get()``, ``client.customers.post(...)``, and so on.
|
|
12
|
+
|
|
13
|
+
.. code-block:: python
|
|
14
|
+
|
|
15
|
+
client = create_connect_client("hl_live_...")
|
|
16
|
+
proxies = await client.proxies.get()
|
|
17
|
+
|
|
18
|
+
The request adapter and the ``X-Api-Key`` authentication are wired up internally, so callers never touch
|
|
19
|
+
the generated Kiota plumbing directly.
|
|
20
|
+
|
|
21
|
+
:param api_key: A Connect API key (e.g. ``hl_live_…``).
|
|
22
|
+
"""
|
|
23
|
+
if not api_key or not api_key.strip():
|
|
24
|
+
raise ValueError("An API key is required.")
|
|
25
|
+
adapter = DefaultRequestAdapter(ApiKeyAuthenticationProvider(api_key))
|
|
26
|
+
return ConnectApiClient(adapter)
|
hypelabs_connect-0.1.0/src/hypelabs_connect/generated/announcements/announcements_request_builder.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
|
5
|
+
from kiota_abstractions.base_request_configuration import RequestConfiguration
|
|
6
|
+
from kiota_abstractions.default_query_parameters import QueryParameters
|
|
7
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
|
8
|
+
from kiota_abstractions.method import Method
|
|
9
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
|
10
|
+
from kiota_abstractions.request_information import RequestInformation
|
|
11
|
+
from kiota_abstractions.request_option import RequestOption
|
|
12
|
+
from kiota_abstractions.serialization import Parsable, ParsableFactory
|
|
13
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
14
|
+
from warnings import warn
|
|
15
|
+
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from ..models.announcement import Announcement
|
|
18
|
+
|
|
19
|
+
class AnnouncementsRequestBuilder(BaseRequestBuilder):
|
|
20
|
+
"""
|
|
21
|
+
Builds and executes requests for operations under /announcements
|
|
22
|
+
"""
|
|
23
|
+
def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
|
|
24
|
+
"""
|
|
25
|
+
Instantiates a new AnnouncementsRequestBuilder and sets the default values.
|
|
26
|
+
param path_parameters: The raw url or the url-template parameters for the request.
|
|
27
|
+
param request_adapter: The request adapter to use to execute the requests.
|
|
28
|
+
Returns: None
|
|
29
|
+
"""
|
|
30
|
+
super().__init__(request_adapter, "{+baseurl}/announcements", path_parameters)
|
|
31
|
+
|
|
32
|
+
async def get(self,request_configuration: Optional[RequestConfiguration[QueryParameters]] = None) -> Optional[list[Announcement]]:
|
|
33
|
+
"""
|
|
34
|
+
Returns the published announcements to show in the dashboard, most recent first.
|
|
35
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
|
36
|
+
Returns: Optional[list[Announcement]]
|
|
37
|
+
"""
|
|
38
|
+
request_info = self.to_get_request_information(
|
|
39
|
+
request_configuration
|
|
40
|
+
)
|
|
41
|
+
if not self.request_adapter:
|
|
42
|
+
raise Exception("Http core is null")
|
|
43
|
+
from ..models.announcement import Announcement
|
|
44
|
+
|
|
45
|
+
return await self.request_adapter.send_collection_async(request_info, Announcement, None)
|
|
46
|
+
|
|
47
|
+
def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[QueryParameters]] = None) -> RequestInformation:
|
|
48
|
+
"""
|
|
49
|
+
Returns the published announcements to show in the dashboard, most recent first.
|
|
50
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
|
51
|
+
Returns: RequestInformation
|
|
52
|
+
"""
|
|
53
|
+
request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
|
|
54
|
+
request_info.configure(request_configuration)
|
|
55
|
+
request_info.headers.try_add("Accept", "text/plain;q=0.9")
|
|
56
|
+
return request_info
|
|
57
|
+
|
|
58
|
+
def with_url(self,raw_url: str) -> AnnouncementsRequestBuilder:
|
|
59
|
+
"""
|
|
60
|
+
Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
|
|
61
|
+
param raw_url: The raw URL to use for the request builder.
|
|
62
|
+
Returns: AnnouncementsRequestBuilder
|
|
63
|
+
"""
|
|
64
|
+
if raw_url is None:
|
|
65
|
+
raise TypeError("raw_url cannot be null.")
|
|
66
|
+
return AnnouncementsRequestBuilder(self.request_adapter, raw_url)
|
|
67
|
+
|
|
68
|
+
@dataclass
|
|
69
|
+
class AnnouncementsRequestBuilderGetRequestConfiguration(RequestConfiguration[QueryParameters]):
|
|
70
|
+
"""
|
|
71
|
+
Configuration for the request such as headers, query parameters, and middleware options.
|
|
72
|
+
"""
|
|
73
|
+
warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
|
|
74
|
+
|
|
75
|
+
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
|
5
|
+
from kiota_abstractions.base_request_configuration import RequestConfiguration
|
|
6
|
+
from kiota_abstractions.default_query_parameters import QueryParameters
|
|
7
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
|
8
|
+
from kiota_abstractions.method import Method
|
|
9
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
|
10
|
+
from kiota_abstractions.request_information import RequestInformation
|
|
11
|
+
from kiota_abstractions.request_option import RequestOption
|
|
12
|
+
from kiota_abstractions.serialization import Parsable, ParsableFactory
|
|
13
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
14
|
+
from uuid import UUID
|
|
15
|
+
from warnings import warn
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from ...models.capability import Capability
|
|
19
|
+
|
|
20
|
+
class CapabilitiesRequestBuilder(BaseRequestBuilder):
|
|
21
|
+
"""
|
|
22
|
+
Builds and executes requests for operations under /catalog/capabilities
|
|
23
|
+
"""
|
|
24
|
+
def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
|
|
25
|
+
"""
|
|
26
|
+
Instantiates a new CapabilitiesRequestBuilder and sets the default values.
|
|
27
|
+
param path_parameters: The raw url or the url-template parameters for the request.
|
|
28
|
+
param request_adapter: The request adapter to use to execute the requests.
|
|
29
|
+
Returns: None
|
|
30
|
+
"""
|
|
31
|
+
super().__init__(request_adapter, "{+baseurl}/catalog/capabilities{?datacenterId*,ispId*,locationId*}", path_parameters)
|
|
32
|
+
|
|
33
|
+
async def get(self,request_configuration: Optional[RequestConfiguration[CapabilitiesRequestBuilderGetQueryParameters]] = None) -> Optional[list[Capability]]:
|
|
34
|
+
"""
|
|
35
|
+
Returns the sellable proxy capabilities (title, description, icon) with their stock for the selection.
|
|
36
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
|
37
|
+
Returns: Optional[list[Capability]]
|
|
38
|
+
"""
|
|
39
|
+
request_info = self.to_get_request_information(
|
|
40
|
+
request_configuration
|
|
41
|
+
)
|
|
42
|
+
if not self.request_adapter:
|
|
43
|
+
raise Exception("Http core is null")
|
|
44
|
+
from ...models.capability import Capability
|
|
45
|
+
|
|
46
|
+
return await self.request_adapter.send_collection_async(request_info, Capability, None)
|
|
47
|
+
|
|
48
|
+
def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[CapabilitiesRequestBuilderGetQueryParameters]] = None) -> RequestInformation:
|
|
49
|
+
"""
|
|
50
|
+
Returns the sellable proxy capabilities (title, description, icon) with their stock for the selection.
|
|
51
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
|
52
|
+
Returns: RequestInformation
|
|
53
|
+
"""
|
|
54
|
+
request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
|
|
55
|
+
request_info.configure(request_configuration)
|
|
56
|
+
request_info.headers.try_add("Accept", "text/plain;q=0.9")
|
|
57
|
+
return request_info
|
|
58
|
+
|
|
59
|
+
def with_url(self,raw_url: str) -> CapabilitiesRequestBuilder:
|
|
60
|
+
"""
|
|
61
|
+
Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
|
|
62
|
+
param raw_url: The raw URL to use for the request builder.
|
|
63
|
+
Returns: CapabilitiesRequestBuilder
|
|
64
|
+
"""
|
|
65
|
+
if raw_url is None:
|
|
66
|
+
raise TypeError("raw_url cannot be null.")
|
|
67
|
+
return CapabilitiesRequestBuilder(self.request_adapter, raw_url)
|
|
68
|
+
|
|
69
|
+
@dataclass
|
|
70
|
+
class CapabilitiesRequestBuilderGetQueryParameters():
|
|
71
|
+
"""
|
|
72
|
+
Returns the sellable proxy capabilities (title, description, icon) with their stock for the selection.
|
|
73
|
+
"""
|
|
74
|
+
def get_query_parameter(self,original_name: str) -> str:
|
|
75
|
+
"""
|
|
76
|
+
Maps the query parameters names to their encoded names for the URI template parsing.
|
|
77
|
+
param original_name: The original query parameter name in the class.
|
|
78
|
+
Returns: str
|
|
79
|
+
"""
|
|
80
|
+
if original_name is None:
|
|
81
|
+
raise TypeError("original_name cannot be null.")
|
|
82
|
+
if original_name == "datacenter_id":
|
|
83
|
+
return "datacenterId"
|
|
84
|
+
if original_name == "isp_id":
|
|
85
|
+
return "ispId"
|
|
86
|
+
if original_name == "location_id":
|
|
87
|
+
return "locationId"
|
|
88
|
+
return original_name
|
|
89
|
+
|
|
90
|
+
# Narrow the stock to this datacenter (optional).
|
|
91
|
+
datacenter_id: Optional[UUID] = None
|
|
92
|
+
|
|
93
|
+
# Narrow the stock to this ISP (optional).
|
|
94
|
+
isp_id: Optional[UUID] = None
|
|
95
|
+
|
|
96
|
+
# Narrow the stock to this location (optional).
|
|
97
|
+
location_id: Optional[UUID] = None
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
@dataclass
|
|
101
|
+
class CapabilitiesRequestBuilderGetRequestConfiguration(RequestConfiguration[CapabilitiesRequestBuilderGetQueryParameters]):
|
|
102
|
+
"""
|
|
103
|
+
Configuration for the request such as headers, query parameters, and middleware options.
|
|
104
|
+
"""
|
|
105
|
+
warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
|
|
106
|
+
|
|
107
|
+
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
|
4
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
|
5
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
|
6
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from .capabilities.capabilities_request_builder import CapabilitiesRequestBuilder
|
|
10
|
+
from .datacenters.datacenters_request_builder import DatacentersRequestBuilder
|
|
11
|
+
from .isps.isps_request_builder import IspsRequestBuilder
|
|
12
|
+
from .locations.locations_request_builder import LocationsRequestBuilder
|
|
13
|
+
from .products.products_request_builder import ProductsRequestBuilder
|
|
14
|
+
|
|
15
|
+
class CatalogRequestBuilder(BaseRequestBuilder):
|
|
16
|
+
"""
|
|
17
|
+
Builds and executes requests for operations under /catalog
|
|
18
|
+
"""
|
|
19
|
+
def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
|
|
20
|
+
"""
|
|
21
|
+
Instantiates a new CatalogRequestBuilder and sets the default values.
|
|
22
|
+
param path_parameters: The raw url or the url-template parameters for the request.
|
|
23
|
+
param request_adapter: The request adapter to use to execute the requests.
|
|
24
|
+
Returns: None
|
|
25
|
+
"""
|
|
26
|
+
super().__init__(request_adapter, "{+baseurl}/catalog", path_parameters)
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def capabilities(self) -> CapabilitiesRequestBuilder:
|
|
30
|
+
"""
|
|
31
|
+
The capabilities property
|
|
32
|
+
"""
|
|
33
|
+
from .capabilities.capabilities_request_builder import CapabilitiesRequestBuilder
|
|
34
|
+
|
|
35
|
+
return CapabilitiesRequestBuilder(self.request_adapter, self.path_parameters)
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def datacenters(self) -> DatacentersRequestBuilder:
|
|
39
|
+
"""
|
|
40
|
+
The datacenters property
|
|
41
|
+
"""
|
|
42
|
+
from .datacenters.datacenters_request_builder import DatacentersRequestBuilder
|
|
43
|
+
|
|
44
|
+
return DatacentersRequestBuilder(self.request_adapter, self.path_parameters)
|
|
45
|
+
|
|
46
|
+
@property
|
|
47
|
+
def isps(self) -> IspsRequestBuilder:
|
|
48
|
+
"""
|
|
49
|
+
The isps property
|
|
50
|
+
"""
|
|
51
|
+
from .isps.isps_request_builder import IspsRequestBuilder
|
|
52
|
+
|
|
53
|
+
return IspsRequestBuilder(self.request_adapter, self.path_parameters)
|
|
54
|
+
|
|
55
|
+
@property
|
|
56
|
+
def locations(self) -> LocationsRequestBuilder:
|
|
57
|
+
"""
|
|
58
|
+
The locations property
|
|
59
|
+
"""
|
|
60
|
+
from .locations.locations_request_builder import LocationsRequestBuilder
|
|
61
|
+
|
|
62
|
+
return LocationsRequestBuilder(self.request_adapter, self.path_parameters)
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def products(self) -> ProductsRequestBuilder:
|
|
66
|
+
"""
|
|
67
|
+
The products property
|
|
68
|
+
"""
|
|
69
|
+
from .products.products_request_builder import ProductsRequestBuilder
|
|
70
|
+
|
|
71
|
+
return ProductsRequestBuilder(self.request_adapter, self.path_parameters)
|
|
72
|
+
|
|
73
|
+
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
|
5
|
+
from kiota_abstractions.base_request_configuration import RequestConfiguration
|
|
6
|
+
from kiota_abstractions.default_query_parameters import QueryParameters
|
|
7
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
|
8
|
+
from kiota_abstractions.method import Method
|
|
9
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
|
10
|
+
from kiota_abstractions.request_information import RequestInformation
|
|
11
|
+
from kiota_abstractions.request_option import RequestOption
|
|
12
|
+
from kiota_abstractions.serialization import Parsable, ParsableFactory
|
|
13
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
14
|
+
from uuid import UUID
|
|
15
|
+
from warnings import warn
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from ...models.api_response import ApiResponse
|
|
19
|
+
from ...models.datacenter import Datacenter
|
|
20
|
+
|
|
21
|
+
class DatacentersRequestBuilder(BaseRequestBuilder):
|
|
22
|
+
"""
|
|
23
|
+
Builds and executes requests for operations under /catalog/datacenters
|
|
24
|
+
"""
|
|
25
|
+
def __init__(self,request_adapter: RequestAdapter, path_parameters: Union[str, dict[str, Any]]) -> None:
|
|
26
|
+
"""
|
|
27
|
+
Instantiates a new DatacentersRequestBuilder and sets the default values.
|
|
28
|
+
param path_parameters: The raw url or the url-template parameters for the request.
|
|
29
|
+
param request_adapter: The request adapter to use to execute the requests.
|
|
30
|
+
Returns: None
|
|
31
|
+
"""
|
|
32
|
+
super().__init__(request_adapter, "{+baseurl}/catalog/datacenters?ispId={ispId}&locationId={locationId}&productId={productId}", path_parameters)
|
|
33
|
+
|
|
34
|
+
async def get(self,request_configuration: Optional[RequestConfiguration[DatacentersRequestBuilderGetQueryParameters]] = None) -> Optional[list[Datacenter]]:
|
|
35
|
+
"""
|
|
36
|
+
Returns the available datacenters for a product, location and ISP.
|
|
37
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
|
38
|
+
Returns: Optional[list[Datacenter]]
|
|
39
|
+
"""
|
|
40
|
+
request_info = self.to_get_request_information(
|
|
41
|
+
request_configuration
|
|
42
|
+
)
|
|
43
|
+
from ...models.api_response import ApiResponse
|
|
44
|
+
|
|
45
|
+
error_mapping: dict[str, type[ParsableFactory]] = {
|
|
46
|
+
"404": ApiResponse,
|
|
47
|
+
}
|
|
48
|
+
if not self.request_adapter:
|
|
49
|
+
raise Exception("Http core is null")
|
|
50
|
+
from ...models.datacenter import Datacenter
|
|
51
|
+
|
|
52
|
+
return await self.request_adapter.send_collection_async(request_info, Datacenter, error_mapping)
|
|
53
|
+
|
|
54
|
+
def to_get_request_information(self,request_configuration: Optional[RequestConfiguration[DatacentersRequestBuilderGetQueryParameters]] = None) -> RequestInformation:
|
|
55
|
+
"""
|
|
56
|
+
Returns the available datacenters for a product, location and ISP.
|
|
57
|
+
param request_configuration: Configuration for the request such as headers, query parameters, and middleware options.
|
|
58
|
+
Returns: RequestInformation
|
|
59
|
+
"""
|
|
60
|
+
request_info = RequestInformation(Method.GET, self.url_template, self.path_parameters)
|
|
61
|
+
request_info.configure(request_configuration)
|
|
62
|
+
request_info.headers.try_add("Accept", "application/json")
|
|
63
|
+
return request_info
|
|
64
|
+
|
|
65
|
+
def with_url(self,raw_url: str) -> DatacentersRequestBuilder:
|
|
66
|
+
"""
|
|
67
|
+
Returns a request builder with the provided arbitrary URL. Using this method means any other path or query parameters are ignored.
|
|
68
|
+
param raw_url: The raw URL to use for the request builder.
|
|
69
|
+
Returns: DatacentersRequestBuilder
|
|
70
|
+
"""
|
|
71
|
+
if raw_url is None:
|
|
72
|
+
raise TypeError("raw_url cannot be null.")
|
|
73
|
+
return DatacentersRequestBuilder(self.request_adapter, raw_url)
|
|
74
|
+
|
|
75
|
+
@dataclass
|
|
76
|
+
class DatacentersRequestBuilderGetQueryParameters():
|
|
77
|
+
"""
|
|
78
|
+
Returns the available datacenters for a product, location and ISP.
|
|
79
|
+
"""
|
|
80
|
+
def get_query_parameter(self,original_name: str) -> str:
|
|
81
|
+
"""
|
|
82
|
+
Maps the query parameters names to their encoded names for the URI template parsing.
|
|
83
|
+
param original_name: The original query parameter name in the class.
|
|
84
|
+
Returns: str
|
|
85
|
+
"""
|
|
86
|
+
if original_name is None:
|
|
87
|
+
raise TypeError("original_name cannot be null.")
|
|
88
|
+
if original_name == "isp_id":
|
|
89
|
+
return "ispId"
|
|
90
|
+
if original_name == "location_id":
|
|
91
|
+
return "locationId"
|
|
92
|
+
if original_name == "product_id":
|
|
93
|
+
return "productId"
|
|
94
|
+
return original_name
|
|
95
|
+
|
|
96
|
+
# Identifier of the selected ISP.
|
|
97
|
+
isp_id: Optional[UUID] = None
|
|
98
|
+
|
|
99
|
+
# Identifier of the selected location.
|
|
100
|
+
location_id: Optional[UUID] = None
|
|
101
|
+
|
|
102
|
+
# Identifier of the product being priced.
|
|
103
|
+
product_id: Optional[UUID] = None
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
@dataclass
|
|
107
|
+
class DatacentersRequestBuilderGetRequestConfiguration(RequestConfiguration[DatacentersRequestBuilderGetQueryParameters]):
|
|
108
|
+
"""
|
|
109
|
+
Configuration for the request such as headers, query parameters, and middleware options.
|
|
110
|
+
"""
|
|
111
|
+
warn("This class is deprecated. Please use the generic RequestConfiguration class generated by the generator.", DeprecationWarning)
|
|
112
|
+
|
|
113
|
+
|