Spaces

Workspaces ("spaces") are the top-level container in InfoLobby. Every table and record belongs to a space. An API key can be scoped to specific spaces — see Authentication.

List spaces

GET /api/spaces/list

Returns all spaces the API key has access to.

Request

curl https://infolobby.com/api/spaces/list \
  -H "Authorization: Bearer il_live_..."

Response

[
  {
    "id": 42,
    "name": "Sales CRM",
    "role": 1,
    "member_count": 6,
    "account": "Acme Inc",
    "ownacc": true,
    "settings": {}
  }
]

list and get return different shapeslist is the workspace as it appears in your sidebar (membership-oriented), while get returns the workspace record itself (storage-oriented). Use get when you need integration_id, database_name, or files_int_id.

Get a single space

GET /api/space/<space_id>/get

Example

curl https://infolobby.com/api/space/42/get \
  -H "Authorization: Bearer il_live_..."

Response

{
  "id": 42,
  "account_id": 7,
  "name": "Sales CRM",
  "integration_id": 12,
  "database_name": "ws_sales_crm",
  "files_int_id": 3,
  "folder_name": "sales-crm",
  "settings": {}
}

Errors

Status When
403 Key is not whitelisted for the requested space
500 Space does not exist or is not owned by the account

Workspace management endpoints

Available to unrestricted account keys only. A key created with one or more workspaces ticked is scoped to those workspaces and cannot create, update, or delete any workspace. To use the endpoints below, create the API key with all workspaces unchecked. Personal keys (il_user_) cannot use these endpoints under any circumstances.

Create a workspace

POST /api/spaces/create

Request body

Field Type Required Notes
name string yes Display name
integration_id int no ID of a MySQL integration owned by the account. Omit to use included managed MySQL.
database_name string no MySQL database name to provision tables in. Required with integration_id; inferred for managed defaults.
files_int_id int no ID of an FTP/S3 integration. Omit with managed MySQL to use included managed S3.
folder_name string no Subfolder under the file integration (S3 prefix is auto-applied if configured)
settings_icon string no Icon identifier
settings_color string no Hex color (e.g. #86EFAC)

Example

curl -X POST https://infolobby.com/api/spaces/create \
  -H "Authorization: Bearer il_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"Sales CRM","integration_id":12,"database_name":"crm"}'

To create a workspace on the included managed database and storage:

curl -X POST https://infolobby.com/api/spaces/create \
  -H "Authorization: Bearer il_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"Sales CRM"}'

Errors

Status When
403 Key is restricted to specific workspaces (cannot create new ones)
500 Workspace limit reached, invalid integration, or invalid parameters

Update a workspace

POST /api/space/<space_id>/update

Request body

Same shape as create, except integration_id and database_name cannot be changed. Pass name plus any settings to modify.

Storage fields are co-required on a managed workspace. If the workspace uses the managed database, an update sent by its owner must also carry files_int_id naming managed storage — otherwise it fails with Managed database must be used with managed storage. In practice, read the workspace with space/<id>/get first and send back files_int_id alongside your changes.

Example

curl -X POST https://infolobby.com/api/space/42/update \
  -H "Authorization: Bearer il_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"Sales CRM (renamed)","settings_color":"#86EFAC"}'

Delete a workspace

POST /api/space/<space_id>/delete

Deletes the workspace, all tables, members, and history. Irreversible.

curl -X POST https://infolobby.com/api/space/42/delete \
  -H "Authorization: Bearer il_live_..."

Workspace members

Account keys can manage members for workspaces in scope. Personal API keys cannot use these endpoints. Mutating endpoints require a writable key and admin access to the workspace.

Role ids:

Role ID
Admin 1
Read & Write 2
Read Only 3

List members

GET /api/space/<space_id>/members/list
curl https://infolobby.com/api/space/42/members/list \
  -H "Authorization: Bearer il_live_..."

Invite or add members

POST /api/space/<space_id>/members/invite

If the email already belongs to an InfoLobby user, that user is added directly. Otherwise an invite is created.

Field Type Required Notes
emails string yes One or more email addresses
role int no Defaults to Read & Write (2)
curl -X POST https://infolobby.com/api/space/42/members/invite \
  -H "Authorization: Bearer il_live_..." \
  -H "Content-Type: application/json" \
  -d '{"emails":"alex@example.com","role":2}'

Returns {"ok": true, "invited": <n>}. Addresses are validated — a malformed one is rejected with Invalid email address: <value> and nothing is invited.

Change member role

POST /api/space/<space_id>/members/changeRole
curl -X POST https://infolobby.com/api/space/42/members/changeRole \
  -H "Authorization: Bearer il_live_..." \
  -H "Content-Type: application/json" \
  -d '{"emailAddress":"alex@example.com","role":3}'

Returns {"ok": true, "changed": <n>}changed is 0 when the address is not a member of the workspace, so the call was a no-op.

Remove member

POST /api/space/<space_id>/members/remove
curl -X POST https://infolobby.com/api/space/42/members/remove \
  -H "Authorization: Bearer il_live_..." \
  -H "Content-Type: application/json" \
  -d '{"emailAddress":"alex@example.com"}'

Returns {"ok": true, "removed": <n>}removed is 0 when the address was not a member, so the call was a no-op.

Resend invite

POST /api/space/<space_id>/members/resend_invite
curl -X POST https://infolobby.com/api/space/42/members/resend_invite \
  -H "Authorization: Bearer il_live_..." \
  -H "Content-Type: application/json" \
  -d '{"emailAddress":"alex@example.com"}'

Reorder tables in a workspace

POST /api/space/<space_id>/reorderTables

Request body

Field Type Required Notes
order int[] yes Table IDs in the desired display order
curl -X POST https://infolobby.com/api/space/42/reorderTables \
  -H "Authorization: Bearer il_live_..." \
  -H "Content-Type: application/json" \
  -d '{"order":[101,103,102]}'

Returns {"ok": true, "count": <n>}. Every id must be a table in this workspace; otherwise the call fails with Unknown table id for this workspace: <ids> and the order is left unchanged.