An open API service indexing awesome lists of open source software.

https://github.com/hetzner-cloud-php/client

☁️ Plug 'n play PHP client for Hetzner's Cloud API.
https://github.com/hetzner-cloud-php/client

api client hetzner-cloud php sdk

Last synced: 5 months ago
JSON representation

☁️ Plug 'n play PHP client for Hetzner's Cloud API.

Awesome Lists containing this project

README

          


logo

packgist downloads
tests ci
packgist downloads
packgist downloads

## Hetzner Cloud PHP

A PHP client for the Hetzner Cloud API. The goal of this project is to provide an easy-to-use and framework agnostic PHP
PHP client for projects and applications interacting with Hetzner Cloud. Some use cases might include:

- Getting metrics for all servers within a project
- Programmatically creating firewalls
- Searching for available datacenters

## Table of Contents

- [Getting started](#getting-started)
- [Usage](#usage)
- [Database](#database)
- [Firewalls](#firewalls)
- [Servers](#servers)

## Getting started

The client is available as a composer packager that can be installed in any project using composer:

```bash
composer require hetzner-cloud-php/client
```

Since the client is compatible with any PSR-18 HTTP client, any commonly used HTTP client can be used thanks
to our dependency on `php-http/discovery`. Once both dependencies have been installed, you may start interaction
with [Hetzner Cloud API](https://docs.hetzner.cloud/):

```php
/** @var string $apiKey */
$apiKey = $_ENV['HETZNER_CLOUD_API_KEY'];
$client = HetznerCloud::client($apiKey);

// Create a server
$response = $createdServer = $client->servers()->createServer([
'name' => 'test-server',
'server_type' => 'cpx11',
'image' => 'ubuntu-24.04',
]);

echo $response->server->name; // 'test-server'
```

For a comprehensive set of examples, take a look at the [examples](/examples) directory.

## Usage

### Datacenters

#### Get all datacenters

Gets a list of available datacenters.

```php
$response = $client->datacenters()->getDatacenters(sort: 'name:desc');

echo $response->datacenters // array
echo $response->meta // Meta::class
echo $response->toArray() // ['datacenter' => ['id' => 42, ...], 'meta' => [...]]
```

#### Get a datacenter

Gets a single datacenter.

```php
$response = $client->datacenters()->getDatacenter(42);

echo $response->datacenter // Datacenter::class
echo $response->toArray() // ['datacenter' => ['id' => 42, ...], 'error' => null]
```

### `Firewalls`

#### Get a firewall

Retrieves a single firewall for a project.

```php
$response = $client->firewalls()->getFirewall(1337);
$response->firewall; // Firewall::class
$response->toArray(); // ['firewall' => ['id => 1337', ...]]
```

#### Get firewalls

Retrieves all firewalls for a project, with a few optional query parameters.

```php
$response = $client->firewalls()->getFirewalls(name: 'coolify', labelSelector: 'foo');
$response->firewalls; // array

foreach ($response->firewalls as $firewall) {
$firewall->id;
$firewall->name;
// ...
}

$response->toArray(); // ['firewalls' => [...], 'meta' => [...]]
```