> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Search FloorPlans

> Search and list FloorPlan records with filtering, sorting, and pagination.

A **FloorPlan** is a visual diagram representing a single floor of a location. Floor plans are used by admins and customers to get an overview of the space layout, including rooms, desks, and other areas.

Each floor plan belongs to a location (`Business`) and can optionally reference a `FloorPlanLayout` template. A background/tracing image can be uploaded to overlay the drawn areas, and its position and scale can be adjusted independently from the floor plan's own scale.

Once created, floor plan units (FloorPlanDesks) are added to the floor plan to represent individual bookable or non-bookable areas such as offices, dedicated desks, hot desks, and meeting rooms.

## Authentication

<Note>
  This endpoint requires OAuth2 authentication. Include a valid bearer token in the `Authorization` header.
  The authenticated user must be a full unrestricted administrator or have the **`FloorPlan-List`** role.
</Note>

## Query Parameters

### Pagination & Sorting

<ParamField query="page" type="integer" default="1">
  The page number to retrieve.
</ParamField>

<ParamField query="size" type="integer" default="25">
  The number of records per page.
</ParamField>

<ParamField query="orderBy" type="string">
  The property name to sort results by (e.g. `Name`, `CreatedOn`).
</ParamField>

<ParamField query="dir" type="integer">
  Sort direction. `0` for ascending, `1` for descending.
</ParamField>

### Filters

<ParamField query="FloorPlan_Business" type="integer">
  Filter by iD of the location this floor plan belongs to.
</ParamField>

<ParamField query="FloorPlan_Business_Name" type="string">
  Filter by location name.
</ParamField>

<ParamField query="FloorPlan_Business_Currency_Code" type="string">
  Filter by currency code of the location.
</ParamField>

<ParamField query="FloorPlan_FloorPlanLayout" type="integer">
  Filter by iD of the floor plan layout template to apply to this floor plan.
</ParamField>

<ParamField query="FloorPlan_FloorPlanLayout_Name" type="string">
  Filter by floor plan layout name.
</ParamField>

<ParamField query="FloorPlan_Name" type="string">
  Filter by display name of the floor plan (e.g. 'Ground Floor', 'Level 2').
</ParamField>

<ParamField query="FloorPlan_BackgroundImageFileName" type="string">
  Filter by filename of the currently stored background/tracing image.
</ParamField>

<ParamField query="FloorPlan_NewBackgroundImageUrl" type="string">
  Filter by uRL of a new background/tracing image to upload. The image will be fetched and stored when the floor plan is saved.
</ParamField>

<ParamField query="FloorPlan_ClearBackgroundImage" type="boolean">
  Filter by set to true to remove the current background/tracing image from this floor plan.
</ParamField>

<ParamField query="FloorPlan_DisplayBackground" type="boolean">
  Filter by whether the background/tracing image is visible when the floor plan is rendered.
</ParamField>

<ParamField query="FloorPlan_BackgroundScale" type="integer">
  Filter by zoom/scale factor applied to the background/tracing image, expressed as a percentage (e.g. 100 = original size).
</ParamField>

<ParamField query="FloorPlan_PositionX" type="integer">
  Filter by horizontal offset (in pixels) of the background image within the floor plan canvas.
</ParamField>

<ParamField query="FloorPlan_PositionY" type="integer">
  Filter by vertical offset (in pixels) of the background image within the floor plan canvas.
</ParamField>

<ParamField query="FloorPlan_FloorLevel" type="integer">
  Filter by floor number used to order floor plans (e.g. 0 = ground floor, 1 = first floor, -1 = basement).
</ParamField>

<ParamField query="FloorPlan_Scale" type="number">
  Filter by real-world scale of the floor plan, representing how many real-world units correspond to one canvas unit.
</ParamField>

<ParamField query="FloorPlan_Capacity" type="integer">
  Filter by maximum number of people this floor can accommodate at the same time.
</ParamField>

<ParamField query="FloorPlan_ArchilogicUniqueId" type="string">
  Filter by unique identifier used to link this floor plan to a corresponding Archilogic 3D model.
</ParamField>

### Range Filters

<ParamField query="from_FloorPlan_BackgroundScale" type="integer">
  Filter by zoom/scale factor applied to the background/tracing image, expressed as a percentage (e.g. 100 = original size) greater than or equal to this value.
</ParamField>

<ParamField query="to_FloorPlan_BackgroundScale" type="integer">
  Filter by zoom/scale factor applied to the background/tracing image, expressed as a percentage (e.g. 100 = original size) less than or equal to this value.
</ParamField>

<ParamField query="from_FloorPlan_PositionX" type="integer">
  Filter by horizontal offset (in pixels) of the background image within the floor plan canvas greater than or equal to this value.
</ParamField>

<ParamField query="to_FloorPlan_PositionX" type="integer">
  Filter by horizontal offset (in pixels) of the background image within the floor plan canvas less than or equal to this value.
</ParamField>

<ParamField query="from_FloorPlan_PositionY" type="integer">
  Filter by vertical offset (in pixels) of the background image within the floor plan canvas greater than or equal to this value.
</ParamField>

<ParamField query="to_FloorPlan_PositionY" type="integer">
  Filter by vertical offset (in pixels) of the background image within the floor plan canvas less than or equal to this value.
</ParamField>

<ParamField query="from_FloorPlan_FloorLevel" type="integer">
  Filter by floor number used to order floor plans (e.g. 0 = ground floor, 1 = first floor, -1 = basement) greater than or equal to this value.
</ParamField>

<ParamField query="to_FloorPlan_FloorLevel" type="integer">
  Filter by floor number used to order floor plans (e.g. 0 = ground floor, 1 = first floor, -1 = basement) less than or equal to this value.
</ParamField>

<ParamField query="from_FloorPlan_Scale" type="number">
  Filter by real-world scale of the floor plan, representing how many real-world units correspond to one canvas unit greater than or equal to this value.
</ParamField>

<ParamField query="to_FloorPlan_Scale" type="number">
  Filter by real-world scale of the floor plan, representing how many real-world units correspond to one canvas unit less than or equal to this value.
</ParamField>

<ParamField query="from_FloorPlan_Capacity" type="integer">
  Filter by maximum number of people this floor can accommodate at the same time greater than or equal to this value.
</ParamField>

<ParamField query="to_FloorPlan_Capacity" type="integer">
  Filter by maximum number of people this floor can accommodate at the same time less than or equal to this value.
</ParamField>

<ParamField query="from_FloorPlan_CreatedOn" type="string">
  Filter records created on or after this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_FloorPlan_CreatedOn" type="string">
  Filter records created on or before this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_FloorPlan_UpdatedOn" type="string">
  Filter records updated on or after this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_FloorPlan_UpdatedOn" type="string">
  Filter records updated on or before this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

## Code Examples

### Simple listing

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/sys/floorplans?page=1&size=15&orderBy=Name&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/sys/floorplans?' + new URLSearchParams({
      page: 1,
      size: 15,
      orderBy: 'Name',
      dir: 1 // Ascending
    }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/sys/floorplans',
      params={
          'page': 1,
          'size': 15,
          'orderBy': 'Name',
          'dir': 0 // Ascending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

### Filtering by Name

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/sys/floorplans?FloorPlan_Name=example-value&orderBy=Name&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/sys/floorplans?' + new URLSearchParams({
      FloorPlan_Name: 'example-value',
      orderBy: 'Name',
      dir: 1
    }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/sys/floorplans',
      params={
          'FloorPlan_Name': 'example-value',
          'orderBy': 'Name',
          'dir': 0 // Ascending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

### Range filters

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/sys/floorplans?from_FloorPlan_UpdatedOn=2025-01-01T00:00&to_FloorPlan_UpdatedOn=2025-12-31T23:59&orderBy=UpdatedOn&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/sys/floorplans?' + new URLSearchParams({
      from_FloorPlan_UpdatedOn: '2025-01-01T00:00',
      to_FloorPlan_UpdatedOn: '2025-12-31T23:59',
      orderBy: 'UpdatedOn',
      dir: 1 // Descending
     }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/sys/floorplans',
      params={
          'from_FloorPlan_UpdatedOn': '2025-01-01T00:00',
          'to_FloorPlan_UpdatedOn': '2025-12-31T23:59',
          'orderBy': 'UpdatedOn',
          'dir': 1 // Descending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="Records" type="FloorPlan[]">
  The list of FloorPlan records matching the query. See the [Get one FloorPlan](/rest-api/sys/get-floorplans-by-id) endpoint for the full list of properties returned for each record.
</ResponseField>

<ResponseField name="CurrentPage" type="integer">
  Current page number.
</ResponseField>

<ResponseField name="CurrentPageSize" type="integer">
  Number of records per page.
</ResponseField>

<ResponseField name="CurrentOrderField" type="string">
  The field used for sorting.
</ResponseField>

<ResponseField name="CurrentSortDirection" type="integer">
  The sort direction (`0` = ascending, `1` = descending).
</ResponseField>

<ResponseField name="FirstItem" type="integer">
  Index of the first item on the current page.
</ResponseField>

<ResponseField name="LastItem" type="integer">
  Index of the last item on the current page.
</ResponseField>

<ResponseField name="TotalItems" type="integer">
  Total number of matching records across all pages.
</ResponseField>

<ResponseField name="TotalPages" type="integer">
  Total number of pages.
</ResponseField>

<ResponseField name="HasNextPage" type="boolean">
  Whether there is a next page of results.
</ResponseField>

<ResponseField name="HasPreviousPage" type="boolean">
  Whether there is a previous page of results.
</ResponseField>

```json Example Response theme={null}
{
  "Records": [
    {
      "BusinessId": 0,
      "BusinessName": null,
      "BusinessCurrencyCode": null,
      "FloorPlanLayoutId": null,
      "FloorPlanLayoutName": null,
      "Name": "",
      "BackgroundImageFileName": null,
      "NewBackgroundImageUrl": null,
      "ClearBackgroundImageFile": null,
      "DisplayBackground": false,
      "BackgroundScale": 0,
      "PositionX": 0,
      "PositionY": 0,
      "FloorLevel": 0,
      "Scale": 0,
      "Capacity": null,
      "ArchilogicUniqueId": null,
      "Id": 87654321,
      "UpdatedOn": "2025-01-15T10:30:00Z",
      "CreatedOn": "2025-01-10T08:00:00Z",
      "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "UpdatedBy": "admin@example.com",
      "IsNew": false,
      "SystemId": null,
      "ToStringText": "FloorPlan Example",
      "LocalizationDetails": null,
      "CustomFields": null
    }
  ],
  "CurrentPageSize": 15,
  "CurrentPage": 1,
  "CurrentOrderField": "Name",
  "CurrentSortDirection": 1,
  "FirstItem": 1,
  "HasNextPage": false,
  "HasPreviousPage": false,
  "LastItem": 1,
  "PageNumber": 1,
  "PageSize": 15,
  "TotalItems": 1,
  "TotalPages": 1
}
```
