Skip to content

Commit

Permalink
Merge branch 'feature/billing-api' of https://github.com/phoenixnap/p…
Browse files Browse the repository at this point in the history
…ython-sdk-bmc into feature/billing-api
  • Loading branch information
sokoli1 committed Feb 7, 2024
2 parents fe44f34 + 5a94780 commit d2ae946
Show file tree
Hide file tree
Showing 89 changed files with 12,543 additions and 0 deletions.
38 changes: 38 additions & 0 deletions pnap_billing_api/.github/workflows/python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# NOTE: This file is auto generated by OpenAPI Generator.
# URL: https://openapi-generator.tech
#
# ref: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: pnap_billing_api Python package

on: [push, pull_request]

jobs:
build:

runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]

steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f test-requirements.txt ]; then pip install -r test-requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pytest
86 changes: 86 additions & 0 deletions pnap_billing_api/.openapi-generator/FILES
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
.github/workflows/python.yml
README.md
docs/ApplicableDiscounts.md
docs/BandwidthDetails.md
docs/BandwidthRecord.md
docs/BillingConfigurationsApi.md
docs/ConfigurationDetails.md
docs/DiscountDetails.md
docs/Error.md
docs/LocationAvailabilityDetail.md
docs/LocationEnum.md
docs/OperatingSystemDetails.md
docs/OperatingSystemRecord.md
docs/PriceUnitEnum.md
docs/PricingPlan.md
docs/Product.md
docs/ProductAvailability.md
docs/ProductCategoryEnum.md
docs/ProductsApi.md
docs/ProductsGet200ResponseInner.md
docs/PublicSubnetDetails.md
docs/PublicSubnetRecord.md
docs/RatedUsageApi.md
docs/RatedUsageGet200ResponseInner.md
docs/RatedUsageRecord.md
docs/Reservation.md
docs/ReservationAutoRenewDisableRequest.md
docs/ReservationInvoicingModelEnum.md
docs/ReservationModelEnum.md
docs/ReservationRequest.md
docs/ReservationsApi.md
docs/ServerDetails.md
docs/ServerProduct.md
docs/ServerProductMetadata.md
docs/ServerRecord.md
docs/StorageDetails.md
docs/StorageRecord.md
docs/ThresholdConfigurationDetails.md
pnap_billing_api/__init__.py
pnap_billing_api/api/__init__.py
pnap_billing_api/api/billing_configurations_api.py
pnap_billing_api/api/products_api.py
pnap_billing_api/api/rated_usage_api.py
pnap_billing_api/api/reservations_api.py
pnap_billing_api/api_client.py
pnap_billing_api/api_response.py
pnap_billing_api/configuration.py
pnap_billing_api/exceptions.py
pnap_billing_api/models/__init__.py
pnap_billing_api/models/applicable_discounts.py
pnap_billing_api/models/bandwidth_details.py
pnap_billing_api/models/bandwidth_record.py
pnap_billing_api/models/configuration_details.py
pnap_billing_api/models/discount_details.py
pnap_billing_api/models/error.py
pnap_billing_api/models/location_availability_detail.py
pnap_billing_api/models/location_enum.py
pnap_billing_api/models/operating_system_details.py
pnap_billing_api/models/operating_system_record.py
pnap_billing_api/models/price_unit_enum.py
pnap_billing_api/models/pricing_plan.py
pnap_billing_api/models/product.py
pnap_billing_api/models/product_availability.py
pnap_billing_api/models/product_category_enum.py
pnap_billing_api/models/products_get200_response_inner.py
pnap_billing_api/models/public_subnet_details.py
pnap_billing_api/models/public_subnet_record.py
pnap_billing_api/models/rated_usage_get200_response_inner.py
pnap_billing_api/models/rated_usage_record.py
pnap_billing_api/models/reservation.py
pnap_billing_api/models/reservation_auto_renew_disable_request.py
pnap_billing_api/models/reservation_invoicing_model_enum.py
pnap_billing_api/models/reservation_model_enum.py
pnap_billing_api/models/reservation_request.py
pnap_billing_api/models/server_details.py
pnap_billing_api/models/server_product.py
pnap_billing_api/models/server_product_metadata.py
pnap_billing_api/models/server_record.py
pnap_billing_api/models/storage_details.py
pnap_billing_api/models/storage_record.py
pnap_billing_api/models/threshold_configuration_details.py
pnap_billing_api/py.typed
pnap_billing_api/rest.py
pyproject.toml
requirements.txt
setup.py
1 change: 1 addition & 0 deletions pnap_billing_api/.openapi-generator/VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7.2.0
181 changes: 181 additions & 0 deletions pnap_billing_api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
# pnap-billing-api
Automate your infrastructure billing with the Bare Metal Cloud Billing API. Reserve your server instances to
ensure guaranteed resource availability for 12, 24, and 36 months. Retrieve your server’s rated usage for a
given period and enable or disable auto-renewals.<br>
<br>
<span class='pnap-api-knowledge-base-link'>
Knowledge base articles to help you can be found
<a href='https://phoenixnap.com/kb/phoenixnap-bare-metal-cloud-billing-models' target='_blank'>here</a>
</span><br>
<br>
<b>All URLs are relative to (https://api.phoenixnap.com/billing/v1/)</b>


This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:

- API version: 0.1
- Package version: 1.0.0
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
For more information, please visit [https://phoenixnap.com/](https://phoenixnap.com/)

## Requirements.

Python 3.7+

## Installation & Usage
### pip install

You can install this package directly from the [Python Package Index](https://pypi.org/) using:

```sh
$ pip install pnap_billing_api
```

Then import the package:
```python
import pnap_billing_api
```

### Setuptools

Install via [Setuptools](http://pypi.python.org/pypi/setuptools).

```sh
python setup.py install --user
```
(or `sudo python setup.py install` to install the package for all users)

Then import the package:
```python
import pnap_billing_api
```

```python

import time
import pnap_billing_api
from pnap_billing_api.rest import ApiException
from pprint import pprint

# Defining the host is optional and defaults to https://api.phoenixnap.com/billing/v1
# See configuration.py for a list of all supported configuration parameters.
configuration = pnap_billing_api.Configuration(
host = "https://api.phoenixnap.com/billing/v1"
)

# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.

configuration.access_token = os.environ["ACCESS_TOKEN"]


# Enter a context with an instance of the API client
with pnap_billing_api.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = pnap_billing_api.BillingConfigurationsApi(api_client)

try:
# Retrieves billing configuration associated with the authenticated account.
api_response = api_instance.account_billing_configuration_me_get()
print("The response of BillingConfigurationsApi->account_billing_configuration_me_get:\n")
pprint(api_response)
except ApiException as e:
print("Exception when calling BillingConfigurationsApi->account_billing_configuration_me_get: %s\n" % e)

```

To generate a token using the [python-keycloak](https://pypi.org/project/python-keycloak/) library:
```python
from keycloak import KeycloakOpenID

clientId = "YOUR_CLIENT_ID"
clientSecret = "YOUR_CLIENT_SECRET"
serverUrl = "https://auth.phoenixnap.com/auth/"
realmName = "BMC"
grantType = "client_credentials"

keycloakOpenId = KeycloakOpenID(server_url=serverUrl,
realm_name=realmName,
client_id=clientId,
client_secret_key=clientSecret)

ACCESS_TOKEN = keycloakOpenId.token(grant_type=grantType)['access_token']


## Documentation for API Endpoints

All URIs are relative to *https://api.phoenixnap.com/billing/v1*

Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*BillingConfigurationsApi* | [**account_billing_configuration_me_get**](docs/BillingConfigurationsApi.md#account_billing_configuration_me_get) | **GET** /account-billing-configurations/me | Retrieves billing configuration associated with the authenticated account.
*ProductsApi* | [**product_availability_get**](docs/ProductsApi.md#product_availability_get) | **GET** /product-availability | List all Product availabilities.
*ProductsApi* | [**products_get**](docs/ProductsApi.md#products_get) | **GET** /products | List all Products.
*RatedUsageApi* | [**rated_usage_get**](docs/RatedUsageApi.md#rated_usage_get) | **GET** /rated-usage | List the rated usage.
*RatedUsageApi* | [**rated_usage_month_to_date_get**](docs/RatedUsageApi.md#rated_usage_month_to_date_get) | **GET** /rated-usage/month-to-date | List the rated usage records for the current calendar month.
*ReservationsApi* | [**reservations_get**](docs/ReservationsApi.md#reservations_get) | **GET** /reservations | List all Reservations.
*ReservationsApi* | [**reservations_post**](docs/ReservationsApi.md#reservations_post) | **POST** /reservations | Create a reservation.
*ReservationsApi* | [**reservations_reservation_id_actions_auto_renew_disable_post**](docs/ReservationsApi.md#reservations_reservation_id_actions_auto_renew_disable_post) | **POST** /reservations/{reservationId}/actions/auto-renew/disable | Disable auto-renewal for reservation by id.
*ReservationsApi* | [**reservations_reservation_id_actions_auto_renew_enable_post**](docs/ReservationsApi.md#reservations_reservation_id_actions_auto_renew_enable_post) | **POST** /reservations/{reservationId}/actions/auto-renew/enable | Enable auto-renewal for unexpired reservation by reservation id.
*ReservationsApi* | [**reservations_reservation_id_actions_convert_post**](docs/ReservationsApi.md#reservations_reservation_id_actions_convert_post) | **POST** /reservations/{reservationId}/actions/convert | Convert reservation pricing model by reservation ID.
*ReservationsApi* | [**reservations_reservation_id_get**](docs/ReservationsApi.md#reservations_reservation_id_get) | **GET** /reservations/{reservationId} | Get a reservation.


## Documentation For Models

- [ApplicableDiscounts](docs/ApplicableDiscounts.md)
- [BandwidthDetails](docs/BandwidthDetails.md)
- [BandwidthRecord](docs/BandwidthRecord.md)
- [ConfigurationDetails](docs/ConfigurationDetails.md)
- [DiscountDetails](docs/DiscountDetails.md)
- [Error](docs/Error.md)
- [LocationAvailabilityDetail](docs/LocationAvailabilityDetail.md)
- [LocationEnum](docs/LocationEnum.md)
- [OperatingSystemDetails](docs/OperatingSystemDetails.md)
- [OperatingSystemRecord](docs/OperatingSystemRecord.md)
- [PriceUnitEnum](docs/PriceUnitEnum.md)
- [PricingPlan](docs/PricingPlan.md)
- [Product](docs/Product.md)
- [ProductAvailability](docs/ProductAvailability.md)
- [ProductCategoryEnum](docs/ProductCategoryEnum.md)
- [ProductsGet200ResponseInner](docs/ProductsGet200ResponseInner.md)
- [PublicSubnetDetails](docs/PublicSubnetDetails.md)
- [PublicSubnetRecord](docs/PublicSubnetRecord.md)
- [RatedUsageGet200ResponseInner](docs/RatedUsageGet200ResponseInner.md)
- [RatedUsageRecord](docs/RatedUsageRecord.md)
- [Reservation](docs/Reservation.md)
- [ReservationAutoRenewDisableRequest](docs/ReservationAutoRenewDisableRequest.md)
- [ReservationInvoicingModelEnum](docs/ReservationInvoicingModelEnum.md)
- [ReservationModelEnum](docs/ReservationModelEnum.md)
- [ReservationRequest](docs/ReservationRequest.md)
- [ServerDetails](docs/ServerDetails.md)
- [ServerProduct](docs/ServerProduct.md)
- [ServerProductMetadata](docs/ServerProductMetadata.md)
- [ServerRecord](docs/ServerRecord.md)
- [StorageDetails](docs/StorageDetails.md)
- [StorageRecord](docs/StorageRecord.md)
- [ThresholdConfigurationDetails](docs/ThresholdConfigurationDetails.md)


<a id="documentation-for-authorization"></a>
## Documentation For Authorization


Authentication schemes defined for the API:
<a id="OAuth2"></a>
### OAuth2

- **Type**: OAuth
- **Flow**: application
- **Authorization URL**:
- **Scopes**:
- **bmc**: Grants full access to bmc-api.
- **bmc.read**: Grants read only access to bmc-api.


## Author

support@phoenixnap.com

31 changes: 31 additions & 0 deletions pnap_billing_api/docs/ApplicableDiscounts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# ApplicableDiscounts

Represents the applicable discount details for a product, including the discounted price and discount information.

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**discounted_price** | **float** | The price of the product after applying a discount. | [optional]
**discount_details** | [**List[DiscountDetails]**](DiscountDetails.md) | | [optional]

## Example

```python
from pnap_billing_api.models.applicable_discounts import ApplicableDiscounts

# TODO update the JSON string below
json = "{}"
# create an instance of ApplicableDiscounts from a JSON string
applicable_discounts_instance = ApplicableDiscounts.from_json(json)
# print the JSON string representation of the object
print ApplicableDiscounts.to_json()

# convert the object into a dict
applicable_discounts_dict = applicable_discounts_instance.to_dict()
# create an instance of ApplicableDiscounts from a dict
applicable_discounts_form_dict = applicable_discounts.from_dict(applicable_discounts_dict)
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


33 changes: 33 additions & 0 deletions pnap_billing_api/docs/BandwidthDetails.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# BandwidthDetails

Details of the bandwidth associated with this rated usage record.

## Properties

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**ingress_gb** | **float** | The amount of GB consumed in ingress (IN). |
**egress_gb** | **float** | The amount of GB consumed in egress (OUT). |
**package_quantity** | **float** | Package size per month. | [optional]
**package_unit** | **str** | Package size unit. | [optional]

## Example

```python
from pnap_billing_api.models.bandwidth_details import BandwidthDetails

# TODO update the JSON string below
json = "{}"
# create an instance of BandwidthDetails from a JSON string
bandwidth_details_instance = BandwidthDetails.from_json(json)
# print the JSON string representation of the object
print BandwidthDetails.to_json()

# convert the object into a dict
bandwidth_details_dict = bandwidth_details_instance.to_dict()
# create an instance of BandwidthDetails from a dict
bandwidth_details_form_dict = bandwidth_details.from_dict(bandwidth_details_dict)
```
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)


Loading

0 comments on commit d2ae946

Please sign in to comment.