Metadata-Version: 2.1
Name: hsapi-client
Version: 0.9.7
Summary: Headscale API client
License: BSD
Author: Andrea Mistrali
Author-email: andrea@mistrali.pw
Requires-Python: >=3.11,<4.0
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Dist: pydantic (>=2.7.4,<3.0.0)
Requires-Dist: pydantic-settings (>=2.3.4,<3.0.0)
Requires-Dist: requests (>=2.32.3,<3.0.0)
Description-Content-Type: text/markdown

## Headscale API client

This module is a client for Headscale API.
It can manage all the entities of headscale, namely:

- nodes
- users
- routes
- preauthkeys
- apikeys

Wherever it was possible I used python data types, for example `datetime` is used for all the dates, while `int` is used for all IDs;

### Schemas

Using the OpenAPI specs provided by headscale, I converted them to python classes, so you can refer to the Headscale OpenAPI specification in file `headscale.openapi.json` for more details, but I will try to provide a list of classes and methods available.

#### Nodes

Methods:

- `list`: list all the nodes registered on headscale;
- `get`: retrieve a specific node by its ID
- `byUser`: retrieve all the nodes of a user, given the `username`;
- `delete`: deletes a node, by ID;
- `expire`: expire (disconnect) a node, by ID;
- `rename`: rename a node, by ID;
- `move`: assing a nide to a new user;
- `routes`: retrieve all the routes announced by a node;
- `setTags`: set tags for a node;
- `backfillips`: (currently broken in Headscale), fills the nodes table with all the IPs, to be used in rare cases;

Properties:

- `expired`: if the node is expired;
- `expireDate`: when the node is going to expire;

#### Users

Methods:

- `list`: list all users'
- `get`: get a user, by ID;
- `create`: create a new user, given a username;
- `delete`: delete a user, given the username;
- `rename`: rename a user, given the current and the new username;

#### Routes

Methods:

- `list`: get all routes;
- `delete`: deletes a route, given the ID;
- `enable`: enable a route, given the ID;
- `disable`: disable a route given the ID;

### API Keys

Methods:

- `list`: list all the API keys;
- `create`: create a new API key;
- `expire`: invalidates a new API key;
- `delete`: delete an API key;

### PreAuth keys

Methods

- `list`: list all the preauth keys for a user;
- `create`: create a new preauth key for a user;
- `expire`: expires (invalidates) a preauth key for a user;

### Configuration

To be able to access headscale the module needs the URL of the headscale portal and an API key.
These values are provided via environment variables, specifically:

- `HSAPI_SERVER`
- `HSAPI_API_TOKEN`

