Metadata-Version: 2.4
Name: pnap_bmc_api
Version: 2.3.0
Summary: Bare Metal Cloud API
Home-page: 
Author: PhoenixNAP Team
Author-email: PhoenixNAP Team <support@phoenixnap.com>
License: Apache 2.0
Project-URL: Repository, https://github.com/GIT_USER_ID/GIT_REPO_ID
Keywords: OpenAPI,OpenAPI-Generator,Bare Metal Cloud API
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: urllib3<3.0.0,>=2.1.0
Requires-Dist: python-dateutil>=2.8.2
Requires-Dist: pydantic>=2
Requires-Dist: typing-extensions>=4.7.1
Dynamic: author

# pnap-bmc-api
Create, power off, power on, reset, reboot, or shut down your server with the Bare Metal Cloud API. 
Deprovision servers, get or edit SSH key details, assign public IPs, assign servers to networks and a lot more. 
Manage your infrastructure more efficiently using just a few simple API calls.<br>
<br>
<span class='pnap-api-knowledge-base-link'>
Knowledge base articles to help you can be found
<a href='https://phoenixnap.com/kb/how-to-deploy-bare-metal-cloud-server' target='_blank'>here</a>
</span><br>
<br>
<b>All URLs are relative to (https://api.phoenixnap.com/bmc/v1/)</b>


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

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

## Requirements.

Python 3.9+

## Installation & Usage
### pip install

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

```sh
$ pip install pnap_bmc_api
```

Then import the package:
```python
import pnap_bmc_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_bmc_api
```

### Tests

Execute `pytest` to run the tests.

## Getting Started

Please follow the [installation procedure](#installation--usage) and then run the following:

```python

import pnap_bmc_api
from pnap_bmc_api.rest import ApiException
from pprint import pprint

# Defining the host is optional and defaults to https://api.phoenixnap.com/bmc/v1
# See configuration.py for a list of all supported configuration parameters.
configuration = pnap_bmc_api.Configuration(
    host = "https://api.phoenixnap.com/bmc/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_bmc_api.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = pnap_bmc_api.QuotasApi(api_client)

    try:
        # List quotas
        api_response = api_instance.quotas_get()
        print("The response of QuotasApi->quotas_get:\n")
        pprint(api_response)
    except ApiException as e:
        print("Exception when calling QuotasApi->quotas_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/bmc/v1*

Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*QuotasApi* | [**quotas_get**](docs/QuotasApi.md#quotas_get) | **GET** /quotas | List quotas
*QuotasApi* | [**quotas_quota_id_actions_request_edit_post**](docs/QuotasApi.md#quotas_quota_id_actions_request_edit_post) | **POST** /quotas/{quotaId}/actions/request-edit | Request quota limit change.
*QuotasApi* | [**quotas_quota_id_get**](docs/QuotasApi.md#quotas_quota_id_get) | **GET** /quotas/{quotaId} | Get a quota.
*SSHKeysApi* | [**ssh_keys_get**](docs/SSHKeysApi.md#ssh_keys_get) | **GET** /ssh-keys | List SSH Keys.
*SSHKeysApi* | [**ssh_keys_post**](docs/SSHKeysApi.md#ssh_keys_post) | **POST** /ssh-keys | Create SSH Key.
*SSHKeysApi* | [**ssh_keys_ssh_key_id_delete**](docs/SSHKeysApi.md#ssh_keys_ssh_key_id_delete) | **DELETE** /ssh-keys/{sshKeyId} | Delete SSH Key.
*SSHKeysApi* | [**ssh_keys_ssh_key_id_get**](docs/SSHKeysApi.md#ssh_keys_ssh_key_id_get) | **GET** /ssh-keys/{sshKeyId} | Get SSH Key.
*SSHKeysApi* | [**ssh_keys_ssh_key_id_put**](docs/SSHKeysApi.md#ssh_keys_ssh_key_id_put) | **PUT** /ssh-keys/{sshKeyId} | Edit SSH Key.
*ServersApi* | [**delete_private_network**](docs/ServersApi.md#delete_private_network) | **DELETE** /servers/{serverId}/network-configuration/private-network-configuration/private-networks/{privateNetworkId} | Removes the server from private network.
*ServersApi* | [**servers_get**](docs/ServersApi.md#servers_get) | **GET** /servers | List servers.
*ServersApi* | [**servers_post**](docs/ServersApi.md#servers_post) | **POST** /servers | Create new server.
*ServersApi* | [**servers_server_id_actions_deprovision_post**](docs/ServersApi.md#servers_server_id_actions_deprovision_post) | **POST** /servers/{serverId}/actions/deprovision | Deprovision a server.
*ServersApi* | [**servers_server_id_actions_power_off_post**](docs/ServersApi.md#servers_server_id_actions_power_off_post) | **POST** /servers/{serverId}/actions/power-off | Power off server.
*ServersApi* | [**servers_server_id_actions_power_on_post**](docs/ServersApi.md#servers_server_id_actions_power_on_post) | **POST** /servers/{serverId}/actions/power-on | Power on server.
*ServersApi* | [**servers_server_id_actions_provision_post**](docs/ServersApi.md#servers_server_id_actions_provision_post) | **POST** /servers/{serverId}/actions/provision | Provision server.
*ServersApi* | [**servers_server_id_actions_reboot_post**](docs/ServersApi.md#servers_server_id_actions_reboot_post) | **POST** /servers/{serverId}/actions/reboot | Reboot server.
*ServersApi* | [**servers_server_id_actions_reserve_post**](docs/ServersApi.md#servers_server_id_actions_reserve_post) | **POST** /servers/{serverId}/actions/reserve | Reserve server.
*ServersApi* | [**servers_server_id_actions_reset_post**](docs/ServersApi.md#servers_server_id_actions_reset_post) | **POST** /servers/{serverId}/actions/reset | Reset server.
*ServersApi* | [**servers_server_id_actions_shutdown_post**](docs/ServersApi.md#servers_server_id_actions_shutdown_post) | **POST** /servers/{serverId}/actions/shutdown | Shutdown server.
*ServersApi* | [**servers_server_id_actions_transfer_reservation**](docs/ServersApi.md#servers_server_id_actions_transfer_reservation) | **POST** /servers/{serverId}/actions/transfer-reservation | Transfer server reservation.
*ServersApi* | [**servers_server_id_delete**](docs/ServersApi.md#servers_server_id_delete) | **DELETE** /servers/{serverId} | Delete server.
*ServersApi* | [**servers_server_id_get**](docs/ServersApi.md#servers_server_id_get) | **GET** /servers/{serverId} | Get server.
*ServersApi* | [**servers_server_id_ip_blocks_ip_block_id_delete**](docs/ServersApi.md#servers_server_id_ip_blocks_ip_block_id_delete) | **DELETE** /servers/{serverId}/network-configuration/ip-block-configurations/ip-blocks/{ipBlockId} | Unassign IP Block from Server.
*ServersApi* | [**servers_server_id_ip_blocks_post**](docs/ServersApi.md#servers_server_id_ip_blocks_post) | **POST** /servers/{serverId}/network-configuration/ip-block-configurations/ip-blocks | Assign IP Block to Server.
*ServersApi* | [**servers_server_id_patch**](docs/ServersApi.md#servers_server_id_patch) | **PATCH** /servers/{serverId} | Patch a Server.
*ServersApi* | [**servers_server_id_private_networks_patch**](docs/ServersApi.md#servers_server_id_private_networks_patch) | **PATCH** /servers/{serverId}/network-configuration/private-network-configuration/private-networks/{privateNetworkId} | Updates the server&#39;s private network&#39;s IP addresses
*ServersApi* | [**servers_server_id_private_networks_post**](docs/ServersApi.md#servers_server_id_private_networks_post) | **POST** /servers/{serverId}/network-configuration/private-network-configuration/private-networks | Adds the server to a private network.
*ServersApi* | [**servers_server_id_public_networks_delete**](docs/ServersApi.md#servers_server_id_public_networks_delete) | **DELETE** /servers/{serverId}/network-configuration/public-network-configuration/public-networks/{publicNetworkId} | Removes the server from the Public Network
*ServersApi* | [**servers_server_id_public_networks_patch**](docs/ServersApi.md#servers_server_id_public_networks_patch) | **PATCH** /servers/{serverId}/network-configuration/public-network-configuration/public-networks/{publicNetworkId} | Updates the server&#39;s public network&#39;s IP addresses.
*ServersApi* | [**servers_server_id_public_networks_post**](docs/ServersApi.md#servers_server_id_public_networks_post) | **POST** /servers/{serverId}/network-configuration/public-network-configuration/public-networks | Adds the server to a Public Network.
*ServersApi* | [**servers_server_id_tags_put**](docs/ServersApi.md#servers_server_id_tags_put) | **PUT** /servers/{serverId}/tags | Overwrite tags assigned for Server.


## Documentation For Models

 - [ActionResult](docs/ActionResult.md)
 - [DeleteResult](docs/DeleteResult.md)
 - [DeleteSshKeyResult](docs/DeleteSshKeyResult.md)
 - [Error](docs/Error.md)
 - [EsxiDatastoreConfiguration](docs/EsxiDatastoreConfiguration.md)
 - [EsxiOsConfiguration](docs/EsxiOsConfiguration.md)
 - [GpuConfiguration](docs/GpuConfiguration.md)
 - [IpBlocksConfiguration](docs/IpBlocksConfiguration.md)
 - [NetworkConfiguration](docs/NetworkConfiguration.md)
 - [OsConfiguration](docs/OsConfiguration.md)
 - [OsConfigurationCloudInit](docs/OsConfigurationCloudInit.md)
 - [OsConfigurationMap](docs/OsConfigurationMap.md)
 - [OsConfigurationMapEsxi](docs/OsConfigurationMapEsxi.md)
 - [OsConfigurationMapProxmox](docs/OsConfigurationMapProxmox.md)
 - [OsConfigurationNetrisController](docs/OsConfigurationNetrisController.md)
 - [OsConfigurationNetrisSoftgate](docs/OsConfigurationNetrisSoftgate.md)
 - [OsConfigurationWindows](docs/OsConfigurationWindows.md)
 - [PrivateNetworkConfiguration](docs/PrivateNetworkConfiguration.md)
 - [PublicNetworkConfiguration](docs/PublicNetworkConfiguration.md)
 - [Quota](docs/Quota.md)
 - [QuotaEditLimitRequest](docs/QuotaEditLimitRequest.md)
 - [QuotaEditLimitRequestDetails](docs/QuotaEditLimitRequestDetails.md)
 - [RelinquishIpBlock](docs/RelinquishIpBlock.md)
 - [ReservationTransferDetails](docs/ReservationTransferDetails.md)
 - [ResetResult](docs/ResetResult.md)
 - [Server](docs/Server.md)
 - [ServerCreate](docs/ServerCreate.md)
 - [ServerIpBlock](docs/ServerIpBlock.md)
 - [ServerNetworkUpdate](docs/ServerNetworkUpdate.md)
 - [ServerPatch](docs/ServerPatch.md)
 - [ServerPrivateNetwork](docs/ServerPrivateNetwork.md)
 - [ServerProvision](docs/ServerProvision.md)
 - [ServerPublicNetwork](docs/ServerPublicNetwork.md)
 - [ServerReserve](docs/ServerReserve.md)
 - [ServerReset](docs/ServerReset.md)
 - [SshKey](docs/SshKey.md)
 - [SshKeyCreate](docs/SshKeyCreate.md)
 - [SshKeyUpdate](docs/SshKeyUpdate.md)
 - [StorageConfiguration](docs/StorageConfiguration.md)
 - [StorageConfigurationRootPartition](docs/StorageConfigurationRootPartition.md)
 - [TagAssignment](docs/TagAssignment.md)
 - [TagAssignmentRequest](docs/TagAssignmentRequest.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
