Workspaces
A workspace is the top-level container for your resources, members, and billing. Every instance, disk, SSH key, and floating IP belongs to exactly one workspace. You can belong to multiple workspaces through invites, each with its own role.
Search workspaces
/v1/workspacesSearch workspacesLists all workspaces you have access to, newest first, with pagination.
Query parameters
| Name | Type | Description |
|---|---|---|
name | string | Filter by workspace name |
Plus the shared pagination parameters. Returns a paged list of workspace summaries, each carrying id, name, and your access_level in that workspace.
curl https://api.galaxygate.net/v1/workspaces \
-H "Authorization: Bearer $GALAXYGATE_TOKEN" \
-A 'curl/8.5'Create a workspace
/v1/workspacesCreate a workspaceCreates a new workspace. The authenticated user becomes its OWNER.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Workspace name, 4-32 characters |
curl -X POST https://api.galaxygate.net/v1/workspaces \
-H "Authorization: Bearer $GALAXYGATE_TOKEN" \
-H "Content-Type: application/json" \
-A 'curl/8.5' \
-d '{ "name": "my-workspace" }'Returns the full workspace object.
Fetch a workspace
/v1/workspaces/{id}Fetch a workspacePath parameters
| Name | Type | Description |
|---|---|---|
id | integer | Workspace ID |
Returns the full workspace object including id, name, owner, and flags.
Update a workspace
/v1/workspaces/{id}Update workspace settingsUpdates workspace settings. All fields are optional; send only what you are changing.
Renaming (name) requires the OWNER role. Enabling mfa_required also requires OWNER and will be rejected unless every existing member already has two-factor authentication enabled.
Path parameters
| Name | Type | Description |
|---|---|---|
id | integer | Workspace ID |
Request body
| Field | Type | Description |
|---|---|---|
name | string | Rename the workspace (4-32 characters). Requires OWNER. |
mfa_required | boolean | Require all members to have 2FA before they can access the workspace. Requires OWNER. |
disable_ssh_password | boolean | Disable SSH password authentication on instances when SSH keys are present |
Returns the updated workspace object.
Fetch quota usage
/v1/workspaces/{wid}/quotaFetch workspace quotaReturns the current limits for the workspace.
Path parameters
| Name | Type | Description |
|---|---|---|
wid | integer | Workspace ID |
Returns a quota object with the following fields:
| Field | Type | Description |
|---|---|---|
max_instances | integer | Maximum number of instances |
max_ssh_keys | integer | Maximum number of SSH keys |
max_vpcs | integer | Maximum number of VPCs |
max_floating_ipv4 | integer | Maximum number of IPv4 floating IPs |
max_floating_ipv6 | integer | Maximum number of IPv6 floating IPs |
max_floating_ips | integer | Total floating IP limit |
max_storage_bytes | integer | Total disk storage limit in bytes |
iso_count | integer | Maximum number of custom ISOs |
iso_storage_bytes | integer | Total ISO storage limit in bytes |
firewall_rules_per_ip | integer | Maximum number of firewall rules per floating IP |
Fetch topology
/v1/workspaces/{wid}/topologyFetch workspace topologyReturns all resources needed to render the workspace topology graph in a single call: instances, floating IPs, VPCs, dediboxes, and network load balancers with their associations.
Path parameters
| Name | Type | Description |
|---|---|---|
wid | integer | Workspace ID |
Returns a topology object:
| Field | Type | Description |
|---|---|---|
instances | object[] | Slim instance views with id, name, online, plan, and state |
ips | object[] | Floating IPs with id, instance_id, address, and protected |
vpcs | object[] | VPCs in the workspace |
dediboxes | object[] | Dediboxes in the workspace |
net_balancers | object[] | Network load balancers with their member associations |
Invites
Workspace membership is managed through invites. Creating an invite sends an email containing a single-use code to the specified address. The recipient redeems the code with POST /v1/invites to gain access. Invites expire after seven days if not accepted. Invites can carry the VIEWER, EDITOR, or ADMINISTRATOR access level; OWNER is not assignable through an invite.
Managing invites (creating, patching, deleting) requires the Administrator role. You cannot assign an access level equal to or higher than your own.
Search workspace invites
/v1/workspaces/{wid}/invitesSearch workspace invitesLists invites on a workspace with pagination.
Path parameters
| Name | Type | Description |
|---|---|---|
wid | integer | Workspace ID |
Query parameters
| Name | Type | Description |
|---|---|---|
id | integer[] | Filter to specific invite IDs |
user | integer[] | Filter by creator user ID |
target | integer[] | Filter by the user ID that accepted the invite |
email | string | Filter by email address |
access_level | string | Filter by access level (VIEWER, EDITOR, ADMINISTRATOR) |
Plus the shared pagination parameters. Returns a paged list of invite objects.
Create an invite
/v1/workspaces/{wid}/invitesCreate a workspace inviteCreates an invite and sends an email containing the single-use code to email. The code is also returned in the response. Requires the Administrator role.
Path parameters
| Name | Type | Description |
|---|---|---|
wid | integer | Workspace ID |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
email | string | yes | Email address the invite is addressed to |
access_level | string | yes | Access level to grant: VIEWER, EDITOR, or ADMINISTRATOR. Must be lower than your own level. |
Returns 201 Created with the invite object, including the code field.
Look up a pending invite by code
/v1/invites/lookupLook up a pending invite by codeResolves a pending invite from its code so the workspace name and creator can be shown before sign-up or login. Returns 404 once the invite has been accepted or has expired. This endpoint does not require authentication.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
code | string | yes | Invite code from the invitation email |
Returns an invite detail view with id, user, email, workspace, expires, and access_level. The code field is not echoed back.
Accept an invite
/v1/invitesAccept an inviteRedeems an invite code and adds the authenticated user as a member of the workspace. Returns an error if the code is expired, already accepted, or was addressed to a different email address.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | Invite code from the invitation email |
Returns the accepted invite object.
Fetch an invite
/v1/invites/{id}Fetch an invitePath parameters
| Name | Type | Description |
|---|---|---|
id | integer | Invite ID |
Returns the invite object.
Update an invite
/v1/invites/{id}Update an inviteChanges the access level of a pending invite. Requires the Administrator role. You cannot change the level to one equal to or higher than your own, and you cannot edit your own invite.
Path parameters
| Name | Type | Description |
|---|---|---|
id | integer | Invite ID |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
access_level | string | yes | New access level: VIEWER, EDITOR, or ADMINISTRATOR |
Returns the updated invite object.
Delete an invite
/v1/invites/{id}Delete an inviteDeletes the invite, immediately revoking the member's access to the workspace if the invite had already been accepted. Requires the Administrator role. An invite cannot be deleted if it is the last membership record for the workspace.
Path parameters
| Name | Type | Description |
|---|---|---|
id | integer | Invite ID |
Returns 202 Accepted with an empty body.