# Using the Floating Server

{% hint style="info" %}
The V2 of the Floating Server is currently in an open beta. Please submit any bugs or feedback via our support tickets as we are actively working to resolve them to move to an initial public release in a timely manner.
{% endhint %}

User Management & Role-Based Access

There are 2 user types that interact directly with the Floating Server.

* **Administrators**: manage the server, can activate or deactivate licenses by adding or removing them from the Floating Server, and manage users who can register (check out) to a license.
* **Management Users**: managed by the admins, a user can check out (or "register / unregister") to a license that has been added to the Floating Server, as well as send license and feature consumption data back to the server—typically via a client application.

By default, both admin and user actions require authentication. However, if you set the `DisableUserAuth` value to `false` in the configuration file, authentication is required only for admin actions. All other actions can be performed without authentication.

Each user is added to the server by an admin. The admin sets an initial password and shares it with the user. Upon first login, the user is required to change their password using the API endpoint:

```http
POST /api/v5/auth/change-password
```

{% hint style="info" %}
For a full reference of the API calls that can be made by Administrators and Users, please refer to the Swagger page.
{% endhint %}

Actions that can be performed by an administrator:

* Log in to the floating server:

```http
POST /api/v5/auth/login
```

* Add new user to the floating server:

```http
POST /api/v5/auth/add-user
```

* Remove user:

```http
POST /api/v5/auth/remove-user
```

* Adding and removing license, online, offline and air-gapped.

Online:

```http
POST /api/v5/license
DELETE /api/v5/license/{id}
```

Offline:

```http
// generate offline activation request file
POST /api/v5/license/offline/activation/generate

// upload and activate license file
POST /api/v5/license/offline/activation/upload

// generate offline deactivation request
POST /api/v5/license/offline/deactivation/generate
```

Airgap:

```http
// generate activation code
POST /api/v5/license/airgap/generate

// upload license file and confirmation code to activate license
POST /api/v5/license/airgap/activate

// generate deactivation code
POST /api/v5/license/airgap/deactivate

// deactivate license using confirmation code
POST /api/v5/license/airgap/activate
```

* Adding and removing bundles.

```http
POST /api/v5/bundle
DELETE /api/v5/bundle/{code}
```

* And every action that non-admin users can do.

Actions that can be performed by a user:

Once they have been added by an admin, a user can perform the following actions:

* Register and unregister to licenses and floating features.

```http
POST /api/v5/license/{id}/user/register
POST /api/v5/license/{id}/user/unregister

POST /api/v5/license/{id}/feature/register
POST /api/v5/license/{id}/feature/release
```

* Add license and feature consumption.

```http
POST /api/v5/license/{id}/consumption/add
POST /api/v5/license/{id}/consumption/feature/add
```

A more comprehensive reference for all available endpoints and their functionality is accessible via the Swagger documentation page hosted on the server. Instructions on how to access it are provided later in this document.

JWT Authentication

Every admin or user must:

* Obtain a JWT token via:

```http
POST /api/v5/auth/login
```

* Include this JWT in the `Authorization` header of all requests that require authentication:

```http
Authorization: Bearer <your-jwt-token>
```

Example Floating License Flow

{% stepper %}
{% step %}

### Create the user

Admin creates the user.
{% endstep %}

{% step %}

### Change the password

User logs in and changes their password.
{% endstep %}

{% step %}

### Obtain JWT

User logs in again to obtain a JWT.
{% endstep %}

{% step %}

### Add license

Admin adds the license via:

```http
POST /api/v5/license
```

{% endstep %}

{% step %}

### Register to license

User registers to that license via:

```http
POST /api/v5/license/{id}/register
```

{% endstep %}
{% endstepper %}

Using the User Interface

The Floating Server UI lets you manage licenses: activate and deactivate licenses (online, offline, air‑gapped), trigger synchronizations, update server configuration, and review users registered to licenses and features.

![](/files/83db3421444fe47267f175c2bbeb206be9f6081c)

Licenses page

The Licenses page lists every license that has been added to the server.

What you can do here:

* Add a license: Enter a license key or upload a license file.
* Activate / Deactivate: Perform activation or deactivation:
  * Online: uses the License API directly.
  * Offline / Air‑gapped: see Offline & air‑gapped licensing below.
* View details: Inspect license status, expiry, features, and usage.
* See registered users: View users associated with each license and feature, by clicking on the license.
* Trigger a sync: Push local consumption and pull updates (top right corner).

![](/files/1726c4acf0227c9016f0c16403f9298b1df4e5bf)

Offline & air‑gapped licensing

Use this page when the server cannot reach the License API directly.

![](/files/b37030c2230278705ed9b3ce0e911911716404aa)

![](/files/3ff411e54bad715b48575dc29ea994deb151ac7e)

Configuration page

Adjust server‑level settings that affect synchronization and connectivity.

![](/files/6ed97f1d8ddf109866878ca6933b5b29ba859a78)

Periodic synchronization

The server periodically synchronizes with the License API to keep state consistent.

What happens during sync:

* Sends local consumption data to the License API.
* Pulls license updates (status, features, expirations, usage limits).

How to configure:

* Set the Sync period on the Configuration page.
* Use Sync data (top‑right) to trigger a manual sync at any time, regardless of the schedule.

![](/files/c2f717c06d40f19bdd821fe89407f63cb703d7c7)

Using the Swagger Page

Below is an example using the Add License endpoint on the Swagger interface.

* Fill out the required fields in the request body and click Execute.
* If everything is correct, you will receive the appropriate response.

![](https://api.archbee.com/api/optimize/IJdHyjBlO9LOXOrDnWJTx/xrNzHeA7VjDavZzr0apGw_image.png)

Important: Look for the small lock icon 🔒 (or authorization icon) on the right side of the endpoint.

* Click this icon to provide your JWT token.
* Make sure to paste your token with the Bearer prefix.

![](/files/389c6326ee5dd959e8709d18c099f63cbd6b7e1b)

Using CLI Instead of Swagger

Once you’ve tested the request in Swagger, you can easily switch to using the command line. To do so, copy the equivalent curl command generated by Swagger (you’ll see it below the response section).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.licensespring.com/floating-server/floating-server-v2/using-the-floating-server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
