canonical: https://jentic.com/apis/flexopus.com/flexopus

# Flexopus API

The Flexopus API provides programmatic access to a hybrid workplace booking platform that covers desks, meeting rooms, parking spaces, and other shared resources. It exposes endpoints for managing users, organizational groups, buildings, locations, bookable assets, and bookings, plus an events feed for tracking activity across a tenant. Each customer runs the API on their own subdomain, so requests are scoped to a single Flexopus instance.

## For AI agents

Book hybrid-workplace desks, rooms, and parking spaces, and read occupancy and event data from a tenant's Flexopus instance.

## Scope

Does not handle video conferencing, payroll, or building access control - use for hybrid-workplace desk, room, and parking-space booking only.

## Capabilities

- Reserve desks, rooms, and parking spaces on behalf of named users or by email lookup
- Read live and historical bookings for a building, location, or individual bookable asset
- Query current occupancy across all bookables in a location for floor-plan visualization
- Import and export user rosters in bulk for HR-system synchronization
- List groups and buildings to drive workspace navigation in chat or assistant front-ends
- Stream today's office events to power arrival notifications and visitor workflows

## Use cases

### Hybrid-work desk booking assistant

Employees use a chat or voice assistant to reserve desks, rooms, or parking spaces without opening the Flexopus web app. The assistant calls `/api/v1/bookings` to create the reservation and `/api/v1/locations/{location_id}/bookables/occupancy` to suggest a floor with availability, then confirms the booking with the user. This collapses a multi-click flow into a single sentence.

Example prompt: Reserve any free desk on the 3rd floor of the London office for tomorrow 09:00-17:00 for the authenticated user

### Office occupancy reporting

Operations and facilities teams pull bookings and occupancy data into BI dashboards to track which floors and buildings are actually being used. The `/api/v1/buildings/{building_id}/bookings` and `/api/v1/locations/{location_id}/bookables/occupancy` endpoints return the raw activity needed to plan space contracts, identify under-used zones, and right-size the real estate footprint.

Example prompt: Pull yesterday's booking counts for every building and write the results to a CSV grouped by location

### HR system user synchronization

When an HRIS adds, updates, or removes employees, those changes propagate into Flexopus through `/api/v1/users/import` and `/api/v1/users/export.` The bulk endpoints keep the workspace booking directory in sync with the source-of-truth identity system, which prevents stranded accounts and broken bookings when staff turn over.

Example prompt: Import a CSV of 50 new joiners and disable any user not present in the source export

### AI agent meeting-room scheduler

An AI scheduling agent receives a request such as 'book the team a room with a whiteboard for Thursday 2pm' and uses Flexopus to find an eligible bookable, create the booking, and add attendees. Through Jentic the agent searches by intent rather than browsing the 20-endpoint API surface, so the same scheduling skill works across multiple Flexopus tenants.

Example prompt: Find a bookable room with capacity 8 in the Berlin building, reserve it for Thursday 14:00-15:00, and add three named attendees

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/api/v1/bookings` | Create a new desk, room, or parking booking |
| GET | `/api/v1/bookings/{id}` | Retrieve a specific booking |
| GET | `/api/v1/locations/{location_id}/bookables/occupancy` | Get live occupancy for all bookables in a location |
| GET | `/api/v1/buildings/{building_id}/bookings` | List bookings for a building |
| POST | `/api/v1/users/import` | Bulk import users into the tenant |
| GET | `/api/v1/events/today` | List events happening in the office today |
| GET | `/api/v1/users/by-email/{user_email}/bookings` | List bookings for a user looked up by email |

## Key resources

- **Users** — Look up, import, and export users in the tenant's directory
- **Bookings** — Create, list, and cancel desk, room, and parking-space reservations
- **Bookables** — Read configured bookable assets and live occupancy by location
- **Locations** — Buildings and locations that scope bookings and occupancy queries
- **Events** — Read events including today's office activity feed
- **Groups** — Organizational groups used for permissioning and reporting

## Why Jentic

- **Setup:** Wiring the Flexopus API by hand means setting its bearer auth, resolving the per-tenant subdomain into the base URL, and spreading calls across 20 desk, room, and parking endpoints with your own retries. Through Jentic you install once, import Flexopus from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Flexopus creates bookings from request bodies and its subdomain fixes the tenant rather than pinning one owned resource, so limit the agent to the operations it needs, such as reading occupancy or a user's bookings, and leave booking creation or user imports out of the allowed set unless required. You choose which of the 20 operations it may call.
- **Credential handling:** Your Flexopus token is stored once, encrypted, by your own Jentic One instance and injected with the tenant base URL at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'book a meeting room' or 'check desk occupancy', and Jentic returns the matching Flexopus operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Calendly API** — Calendly schedules the meeting time while Flexopus reserves the physical room
- **Google Calendar API** — Google Calendar holds the invite while Flexopus holds the room reservation
- **Zoom Meetings API** — Zoom hosts virtual meeting rooms instead of reserving physical workspace

## FAQ

### What authentication does the Flexopus API use?

The Flexopus API uses HTTP bearer tokens. Through Jentic the bearer token is held in the encrypted vault and injected into the Authorization header at execution time, so the agent never sees the raw secret.

### Can I book a desk with the Flexopus API?

Yes. POST to `/api/v1/bookings` with the bookable identifier and time window to reserve a desk, room, or parking space. Reservations can be created on behalf of any user the token has rights over.

### How do I look up a colleague's bookings by email?

Call GET `/api/v1/users/by-email/{user_email}/bookings.` This is useful when an assistant only knows the user's email rather than their internal Flexopus ID.

### What are the rate limits for the Flexopus API?

Flexopus does not document a fixed quota in the spec. Limits are applied per tenant and per token, so handle 429 responses by backing off using the Retry-After header.

### How do I create a desk booking with the Flexopus API through Jentic?

Search Jentic for 'book a desk', load the schema for POST `/api/v1/bookings`, and execute the call with the bookable_id and time window. Install with pip install jentic and run it through Jentic One, the self-hosted execution layer.

### Does the Flexopus API support multiple offices?

Yes. Each Flexopus tenant runs on its own subdomain configured via the {flexopus-domain} server variable, and bookings are scoped to buildings and locations within that tenant.

### Can I limit what my agent is allowed to do with the Flexopus API?

Yes. Because you run Jentic One yourself, your own rules decide which of the 20 Flexopus operations the agent may call and which credential it uses. You can allow read-only calls such as GET `/api/v1/locations/{location_id}/bookables/occupancy` or GET `/api/v1/users/by-email/{user_email}/bookings` while leaving out booking creation on POST `/api/v1/bookings` and bulk changes like POST `/api/v1/users/import.` The bearer token is stored once by your instance and injected with the tenant subdomain at execution time, so the agent only ever exercises the operations you permit.
