# pnap-tag-api
Tags are case-sensitive key-value pairs that simplify resource management. The Tag Manager API allows you to create
and manage such tags to later assign them to related resources in your Bare Metal Cloud (through the respective
resource apis) in order to group and categorize them.<br>
<br>
<span class='pnap-api-knowledge-base-link'>
Knowledge base articles to help you can be found
<a href='https://phoenixnap.com/kb/bmc-server-management-via-api#server-tag-manager-api' target='_blank'>here</a>
</span><br>
<br>
<b>All URLs are relative to (https://api.phoenixnap.com/tag-manager/v1/)</b>


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

- API version: 1.0
- Package version: 2.0.1
- 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_tag_api
```

Then import the package:
```python
import pnap_tag_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_tag_api
```

```python

import time
import pnap_tag_api
from pnap_tag_api.rest import ApiException
from pprint import pprint

# Defining the host is optional and defaults to https://api.phoenixnap.com/tag-manager/v1
# See configuration.py for a list of all supported configuration parameters.
configuration = pnap_tag_api.Configuration(
    host = "https://api.phoenixnap.com/tag-manager/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_tag_api.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = pnap_tag_api.TagsApi(api_client)
    name = 'env' # str | Query a tag by its name. (optional)

    try:
        # List tags.
        api_response = api_instance.tags_get(name=name)
        print("The response of TagsApi->tags_get:\n")
        pprint(api_response)
    except ApiException as e:
        print("Exception when calling TagsApi->tags_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/tag-manager/v1*

Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
*TagsApi* | [**tags_get**](docs/TagsApi.md#tags_get) | **GET** /tags | List tags.
*TagsApi* | [**tags_post**](docs/TagsApi.md#tags_post) | **POST** /tags | Create a Tag.
*TagsApi* | [**tags_tag_id_delete**](docs/TagsApi.md#tags_tag_id_delete) | **DELETE** /tags/{tagId} | Delete a Tag.
*TagsApi* | [**tags_tag_id_get**](docs/TagsApi.md#tags_tag_id_get) | **GET** /tags/{tagId} | Get a Tag.
*TagsApi* | [**tags_tag_id_patch**](docs/TagsApi.md#tags_tag_id_patch) | **PATCH** /tags/{tagId} | Modify a Tag.


## Documentation For Models

 - [DeleteResult](docs/DeleteResult.md)
 - [Error](docs/Error.md)
 - [ResourceAssignment](docs/ResourceAssignment.md)
 - [Tag](docs/Tag.md)
 - [TagCreate](docs/TagCreate.md)
 - [TagUpdate](docs/TagUpdate.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**: 
 - **tags**: Grants full access to tags-api.
 - **tags.read**: Grants read only access to tags-api.


## Author

support@phoenixnap.com

