# Rest API

## Introduction

Does CloudTruth have an API? Of course we do!

The CloudTruth API is the same API used by our SaaS offering. Anything that you can do in our GUI, you can do programmatically via the API.

## Overview

The CloudTruth API is a pretty standard RESTful-like HTTP API. You perform GET, PUT, POST, PATCH and DELETE operations models hosted by our web service. Operations require a JWT or [API Access Token](https://docs.cloudtruth.com/org-management/access-control/access-tokens) in the Authorization header of the call. Parameters are passed to the web service via JSON in the body of the request. Results are returned as JSON structures in the body of the response.

Our complete REST API documentation is automatically generated and can be found here:

{% embed url="<https://api.cloudtruth.io/api/schema/redoc/#section/Authentication>" %}

We also provide an interactive web interface to the API:

{% embed url="<https://api.cloudtruth.io/api/schema/swagger/#/>" %}

## Getting Started

We will start you off with a basic example of a GET operation that will list your CloudTruth Environments. From the [environment\_list](https://api.cloudtruth.io/api/schema/redoc/#operation/environments_list) schema docs we can find the GET request query parameters and typical response.

## environments\_list

<mark style="color:blue;">`GET`</mark> `https://api.cloudtruth.io/api/v1/environments/`

Lists CloudTruth Environments

#### Query Parameters

| Name           | Type    | Description                                    |
| -------------- | ------- | ---------------------------------------------- |
| name           | string  |                                                |
| page           | integer | A page number within the paginated result set, |
| page\_size     | string  | Number of results to return per page.          |
| parent\_\_name | string  |                                                |

{% tabs %}
{% tab title="200 " %}

```
{
    "count": 4,
    "next": null,
    "previous": null,
    "results": [
        {
            "created_at": "2021-07-19T19:22:44.689825Z",
            "description": "The auto-generated default environment.",
            "id": "ad34ea7d-c9cb-473e-93fb-06dc468cacd7",
            "modified_at": "2021-08-02T19:17:28.920832Z",
            "name": "default",
            "parent": null,
            "url": "https://api.cloudtruth.io/api/v1/environments/ad34ea7d-c9cb-473e-93fb-06dc468cacd7/"
        }
```

{% endtab %}
{% endtabs %}

Now you can issue a get request with your API Access token, here is a basic example in Python and Bash to get you going.

{% tabs %}
{% tab title="Python" %}

```python
import requests

token = "Your API Access token"
headers = {'Authorization': f'Api-Key {token}'}
url = "https://api.cloudtruth.io/api/v1/environments/"
response = requests.get(url, headers=headers)
environments = response.json()
print(json.dumps(environments, indent=4, sort_keys=True))
```

{% endtab %}

{% tab title="Bash" %}

```
token="Your API Access token"
curl -s --header "Content-Type: application/json" \
  --header "Authorization: Api-Key ${token}" \
  --request GET \
 https://api.cloudtruth.io/api/v1/environments/
```

{% endtab %}
{% endtabs %}

You can checkout out our repo for a few additional working examples.

{% embed url="<https://github.com/cloudtruth-demo/rest-api-examples>" %}
