# Fixed Asset Types

Operation ID: `fixedAssetTypes`

Group: Accounting › Asset Management › Fixed Asset Types

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/fixedAssetTypes)

`GET /fixed-asset-types`

Read-only: Reads and returns; changes nothing.

Fixed asset types — the master data a fixed asset is created from, carrying the depreciation defaults it inherits. Both active and inactive types are returned; filter active to populate a picker. [nav: @uicode:fixedAssetType?id={id}]

The fixed asset type collection, with structured filtering, ordering, sparse field selection and cursor pagination in the query string.

```
GET fixed-asset-types?filter[active][eq]=true&filter[groupId][eq]=<id>&sort=name
```

A response is `{ "data": [ … ], "pagination": { "hasMore": …, "nextCursor": … } }`. Page forward by passing the previous `nextCursor` as `page[cursor]`. Page size defaults to 25 and is capped at 100; a larger `page[size]` is clamped to 100 rather than rejected.

**`name` is filterable and orderable here, unlike on most resources.** An asset type name is a classification label chosen by whoever configures the module — 'Machinery', 'Vehicles' — not a person, a counterparty, or physical property, so it is not identifying data that has to stay out of a query string. The filter is exact match; there is no free-text search on this resource.

**Inactive types are returned.** A type is deactivated rather than deleted once assets reference it, so the collection carries both and `active` is filterable: filter `active` when populating a picker, and leave it off when resolving the type a historical asset points at.

**Incremental sync.** `lastModifiedDate` is both filterable and orderable, which is what makes `filter[lastModifiedDate][gte]=…&sort=lastModifiedDate` a complete sync cursor — either half alone is not. It tracks the FixedAssetType row only, so renaming the group a type belongs to does not move it.

**`defaultUsefulLife` is a count of periods, not an amount.** No field on this resource is money, so nothing here carries a currency.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version `v1`. |

## Query surface

- `id` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `name` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `active` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `defaultUsefulLife` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- `groupId` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like
- `lastModifiedDate` — filter by eq, ne, gt, gte, lt, lte, in, notIn, between
- Orderable: id, name, defaultUsefulLife, lastModifiedDate
- Selectable: id, name, active, defaultUsefulLife, groupId, groupName, lastModifiedDate
- `page[size]` — Page size
- `page[cursor]` — Opaque continuation cursor

## Response

`200` Success

Under `data`, an array of fixedAssetTypesRow:

| Field | Type | Required | Filter | Sort | Description |
| --- | --- | --- | --- | --- | --- |
| `id` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | Platform id (a UUID) of the fixed asset type — the public identifier of this record. Example: `"7b2f9d13-4c68-4e51-a0d7-6f39c58e2b4a"`. |
| `name` | string | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | yes | Display name of the fixed asset type, e.g. 'Machinery'. Filterable and orderable by exact match — a type name is a configuration label, not identifying data, so unlike most name fields it is admitted to the query string. There is no free-text matching on it. Example: `"Machinery"`. |
| `active` | boolean \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | no | Whether the type is usable for business users. A type is deactivated rather than deleted once assets reference it, so this collection carries both; filter it to populate a picker. Absent on legacy rows that predate the column, which should be read as active. Example: `true`. |
| `defaultUsefulLife` | number \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | Number of depreciation periods a new asset of this type inherits as its useful life. A whole COUNT of periods, not an amount and not a duration: the depreciation interval that gives it units (monthly, quarterly, yearly) lives on the asset, so this number alone does not say whether it means months or years. Absent when the type sets no default. Example: `60`. |
| `groupId` | string \| null | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`), Pattern (`like`) | no | Platform id (a UUID) of the FixedAssetTypeGroup this type belongs to. Absent on an ungrouped type. That group may itself have a parent group, which this API does not walk. Example: `"2e8c14a9-6b73-4f52-9d01-8a3f7e0c5b26"`. |
| `groupName` | string \| null | no | no | no | Display name of the group named by groupId, carried alongside it so the common grouping needs no second call. Returned but NOT filterable or orderable — filter groupId instead, so one question has one answer. Absent whenever groupId is. Example: `"Plant and Equipment"`. |
| `lastModifiedDate` | date-time | no | Exact (`eq`, `ne`), Range (`gt`, `gte`, `lt`, `lte`, `between`), Any of (`in`, `notIn`) | yes | Instant the fixed asset type record last changed, as ISO 8601 UTC (YYYY-MM-DDTHH:mm:ss.sssZ). Filterable and orderable together, which is what makes filter[lastModifiedDate][gte] plus sort=lastModifiedDate a complete incremental-sync cursor. NOTE it tracks the FixedAssetType row only: renaming the group a type belongs to does not move it. Example: `"2026-08-18T09:14:22.517Z"`. |

```json
{
  "data": [
    {
      "id": "7b2f9d13-4c68-4e51-a0d7-6f39c58e2b4a",
      "name": "Machinery",
      "active": true,
      "defaultUsefulLife": 60,
      "groupId": "2e8c14a9-6b73-4f52-9d01-8a3f7e0c5b26",
      "groupName": "Plant and Equipment",
      "lastModifiedDate": "2026-08-18T09:14:22.517Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "<nextCursor>"
  }
}
```

## Statuses

- `400` — Invalid request or business failure
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
