Skip to main content

Core CRUD

Basic library creation, retrieval, update, and deletion operations.

GET /api/libraries

Search and filter libraries with pagination.

Authentication: Required

Permissions: Returns libraries owned by or shared with the authenticated user (excludes embedded libraries)

Query Parameters:

ParameterTypeDefaultDescription
qstring-Full-text search query (searches name, description)
sortstringnameSort field (prefix with - for descending)
limitinteger30Results per page
startinteger0Pagination offset

Response:

The response is a paginated HAL collection. Library items are returned under _embedded["inf:library"].

Search and page through librariesGET /api/libraries?q=engineering&limit=10
A paginated HAL collection. q matches name and description. Items are under _embedded["inf:library"].
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/libraries"
}
},
"start": 0,
"count": 1,
"total": 1,
"_embedded": {
"inf:library": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001"
},
"inf:library-share": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/shares/{principalId}",
"templated": true
},
"inf:assistants": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/assistants"
},
"inf:sync": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/_sync"
},
"inf:files": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/files"
},
"inf:account": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/account"
},
"inf:library-owner": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/owner"
},
"inf:library-shares": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/shares"
},
"inf:comments": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/comments"
},
"inf:library-assistant-access": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/assistant-access"
},
"inf:favorite": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/favorite"
},
"inf:library-integration": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/integration"
}
},
"naturalId": "admin:engineering-docs",
"connectionOwner": "admin",
"isLocal": true,
"permissions": {
"assignTags": true,
"changeOwner": true,
"configure": true,
"connect": true,
"edit": true,
"delete": true,
"write": true,
"sync": true,
"rename": true,
"share": true,
"editConnection": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "local",
"name": "Engineering Docs",
"slug": "engineering-docs",
"description": "Shared engineering documentation and runbooks",
"ownerId": "admin",
"data": null,
"folderId": null,
"shared": false,
"assistantAccess": false,
"embedded": false,
"syncedAt": null,
"syncInterval": null,
"snapshotOfId": null,
"chatId": null,
"source": null,
"sourceId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"integration": null,
"_embedded": {
"inf:library-driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/library-drivers/local"
}
},
"id": "local",
"name": "Local",
"defaultSyncInterval": null,
"isLocal": true,
"sync": {}
}
}
}
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.
Embedded Libraries

This endpoint excludes embedded libraries (like App assets or chat-specific libraries). To access embedded libraries, use lookup by ID.


GET /api/libraries-list

Get a complete flat list of readable libraries with minimal pagination.

Authentication: Required

Permissions: Same as GET /api/libraries (excludes embedded libraries)

Response:

A flat array of libraries with tags, sharing, and permissions per library.

List all librariesGET /api/libraries-list
A flat array (not paged) of libraries the caller can read.
Response · 200
[
{
"id": "00000000-0000-4000-8000-000000000001",
"name": "Engineering Docs",
"type": "local",
"description": "Shared engineering documentation and runbooks",
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"shared": false,
"ownerId": "admin",
"folderId": null,
"username": "admin",
"favorite": false,
"scope": null,
"naturalId": "admin:engineering-docs",
"permissions": {
"assignTags": true,
"changeOwner": true,
"configure": false,
"connect": true,
"edit": true,
"delete": true,
"write": true,
"sync": true,
"rename": true,
"share": true,
"editConnection": true
},
"ownerName": "acme Administrator",
"iconUrl": "/images/icons/folder.svg",
"typeName": "Local",
"tags": []
}
]
Captured from the API examples test suite; ids and timestamps are normalized.

Use Case:

This endpoint returns a lightweight list for building library picker UIs or dropdowns.


GET /api/libraries/{id}

Get a single library with full details including driver info, integration, and connection status.

Authentication: Required

Permissions: User must own the library or have read access via share

Path Parameters:

ParameterTypeDescription
idstringLibrary ID or {ownerId}:{slug} natural ID

Query Parameters:

ParameterTypeDefaultDescription
includeJobAccessbooleanfalseInclude libraries accessible via job ownership

Response:

Get a single libraryGET /api/libraries/admin:engineering-docs
Full library with HAL links to its files, sync, assistants, shares, comments, and favorite.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs"
},
"inf:library-share": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/shares/{principalId}",
"templated": true
},
"inf:assistants": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/assistants"
},
"inf:sync": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/_sync"
},
"inf:files": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/files"
},
"inf:account": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/account"
},
"inf:library-owner": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/owner"
},
"inf:library-shares": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/shares"
},
"inf:comments": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/comments"
},
"inf:library-assistant-access": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/assistant-access"
},
"inf:favorite": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/favorite"
},
"inf:library-integration": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/integration"
}
},
"naturalId": "admin:engineering-docs",
"connectionOwner": "admin",
"isLocal": true,
"permissions": {
"assignTags": true,
"changeOwner": true,
"configure": true,
"connect": true,
"edit": true,
"delete": true,
"write": true,
"sync": true,
"rename": true,
"share": true,
"editConnection": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "local",
"name": "Engineering Docs",
"slug": "engineering-docs",
"description": "Shared engineering documentation",
"ownerId": "admin",
"data": null,
"folderId": null,
"shared": false,
"assistantAccess": false,
"embedded": false,
"syncedAt": null,
"syncInterval": null,
"snapshotOfId": null,
"chatId": null,
"source": null,
"sourceId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"integration": null,
"_embedded": {
"inf:library-driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/library-drivers/local"
}
},
"id": "local",
"name": "Local",
"defaultSyncInterval": null,
"isLocal": true,
"sync": {}
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.
Job Access

Set includeJobAccess=true to include libraries that are referenced in jobs you own, even if you don't directly own or have shares to the library.


POST /api/libraries

Create a new library.

Authentication: Required

Permissions: Requires permission.libraries.create

Request Body:

FieldTypeRequiredDescription
idstring (UUID)NoPre-generated library ID (auto-generated if omitted)
namestringYesLibrary name
descriptionstringNoLibrary description
typestringYesLibrary driver type: one of local, onedrive, box, github, googledrive
integrationIdstringNoExisting integration ID (for non-local libraries)
sharedbooleanNoEnable sharing (default: false)
dataobjectNoDriver-specific configuration data
readOnlybooleanNoCreate read-only integration (default: true)
clientIdstringNoOAuth client ID (for cloud integrations)
clientSecretstringNoOAuth client secret (for cloud integrations)

Example - Local Library:

{
"name": "Team Documents",
"description": "Shared team resources",
"type": "local",
"shared": true
}

Example - Google Drive Library:

{
"name": "Engineering Docs",
"type": "googledrive",
"data": {
"folderId": "1A2B3C4D5E6F7G8H9I0J"
},
"clientId": "123456789-abcdefg.apps.googleusercontent.com",
"clientSecret": "GOCSPX-xyz123abc456",
"readOnly": true
}

Response:

Responds 201 Created with the library and a Location header.

Create a libraryPOST /api/libraries
type is one of local, onedrive, box, github, googledrive. Cloud types also carry connection details. Responds 201 with a Location header.
Request body
{
"name": "Engineering Docs",
"type": "local",
"description": "Shared engineering documentation"
}
Response · 201
{
"_links": {
"self": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001"
},
"inf:library-share": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/shares/{principalId}",
"templated": true
},
"inf:assistants": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/assistants"
},
"inf:sync": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/_sync"
},
"inf:files": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/files"
},
"inf:account": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/account"
},
"inf:library-owner": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/owner"
},
"inf:library-shares": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/shares"
},
"inf:comments": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/comments"
},
"inf:library-assistant-access": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/assistant-access"
},
"inf:favorite": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/favorite"
},
"inf:library-integration": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/integration"
}
},
"naturalId": "admin:engineering-docs",
"connectionOwner": "admin",
"isLocal": true,
"permissions": {
"assignTags": true,
"changeOwner": true,
"configure": true,
"connect": true,
"edit": true,
"delete": true,
"write": true,
"sync": true,
"rename": true,
"share": true,
"editConnection": true
},
"id": "00000000-0000-4000-8000-000000000001",
"assistantAccess": false,
"embedded": false,
"tenant": "acme",
"name": "Engineering Docs",
"type": "local",
"description": "Shared engineering documentation",
"shared": false,
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"ownerId": "admin",
"syncInterval": null,
"slug": "engineering-docs",
"data": null,
"folderId": null,
"syncedAt": null,
"snapshotOfId": null,
"chatId": null,
"source": null,
"sourceId": null,
"_embedded": {
"inf:library-driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/library-drivers/local"
}
},
"id": "local",
"name": "Local",
"defaultSyncInterval": null,
"isLocal": true,
"sync": {}
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.
Integration Creation

For cloud library types, creating the library also creates an embedded integration with the provided clientId and clientSecret. The integration must then be connected via OAuth (see Integration & Sync).


PUT /api/libraries/{id}

Update an existing library's metadata.

Authentication: Required

Permissions: Requires library:write permission on the target library

Path Parameters:

ParameterTypeDescription
idstringLibrary ID or {ownerId}:{slug} natural ID

Request Body:

FieldTypeDescription
namestringUpdated library name
descriptionstringUpdated description
dataobjectDriver-specific data
sharedbooleanEnable/disable sharing
syncIntervalintegerSync interval in minutes (min: 1)

Example:

{
"name": "Updated Library Name",
"description": "New description",
"shared": true,
"syncInterval": 120
}

Response:

Returns the updated library.

Update a libraryPUT /api/libraries/admin:engineering-docs
Request body
{
"description": "Shared engineering documentation and runbooks"
}
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs"
},
"inf:library-share": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/shares/{principalId}",
"templated": true
},
"inf:assistants": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/assistants"
},
"inf:sync": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/_sync"
},
"inf:files": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/files"
},
"inf:account": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/account"
},
"inf:library-owner": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/owner"
},
"inf:library-shares": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/shares"
},
"inf:comments": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/comments"
},
"inf:library-assistant-access": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/assistant-access"
},
"inf:favorite": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/favorite"
},
"inf:library-integration": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/integration"
}
},
"naturalId": "admin:engineering-docs",
"connectionOwner": "admin",
"isLocal": true,
"permissions": {
"assignTags": true,
"changeOwner": true,
"configure": true,
"connect": true,
"edit": true,
"delete": true,
"write": true,
"sync": true,
"rename": true,
"share": true,
"editConnection": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "local",
"name": "Engineering Docs",
"slug": "engineering-docs",
"description": "Shared engineering documentation and runbooks",
"ownerId": "admin",
"data": null,
"folderId": null,
"shared": false,
"assistantAccess": false,
"embedded": false,
"syncedAt": null,
"syncInterval": null,
"snapshotOfId": null,
"chatId": null,
"source": null,
"sourceId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"integration": null,
"_embedded": {
"inf:library-driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/library-drivers/local"
}
},
"id": "local",
"name": "Local",
"defaultSyncInterval": null,
"isLocal": true,
"sync": {}
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.
Client Credentials

clientId and clientSecret cannot be updated via this endpoint. They are stripped from the payload for security.


DELETE /api/libraries/{id}

Delete a library and all its files.

Authentication: Required

Permissions: Requires library:delete permission on the target library

Path Parameters:

ParameterTypeDescription
idstringLibrary ID or {ownerId}:{slug} natural ID

Response:

Responds 200 on success.

Delete a libraryDELETE /api/libraries/admin:temp-library
Permanently removes the library and its file index.
Response · 200 · no body
Captured from the API examples test suite; ids and timestamps are normalized.
Cascade Delete

Deleting a library permanently removes all files, snapshots, shares, and assistant associations. This action cannot be undone.


GET /api/libraries/{id}/owner

Get the current owner of a library.

Authentication: Required

Path Parameters:

ParameterTypeDescription
idstringLibrary ID or natural ID

Response:

The owning principal (a user or a team), with the user or team embedded.

Get a library’s ownerGET /api/libraries/admin:engineering-docs/owner
The owning principal (a user or a team), with the user or team embedded.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/libraries/admin%3Aengineering-docs/owner"
}
},
"id": "admin",
"userId": "admin",
"teamId": null,
"tenant": "acme",
"_embedded": {
"inf:user": {
"_links": {
"self": {
"href": "https://informer.example.com/api/users/admin"
},
"inf:memberships": {
"href": "https://informer.example.com/api/users/admin/memberships"
},
"inf:avatar-upload": {
"href": "https://informer.example.com/api/users/admin/_upload/{uploadId}/avatar-upload",
"templated": true
},
"inf:password": {
"href": "https://informer.example.com/api/users/admin/password"
},
"inf:feed": {
"href": "https://informer.example.com/api/users/admin/feed"
},
"inf:viewed-feed": {
"href": "https://informer.example.com/api/users/admin/_markFeedViewed"
},
"inf:superuser": {
"href": "https://informer.example.com/api/users/admin/superuser"
}
},
"permissions": {
"changeDomain": false,
"changeProfile": true,
"changePassword": true,
"delete": false,
"edit": true,
"reassign": true,
"superuser": true,
"enable": true,
"changeTheme": true,
"lock": true,
"setGlobalPermissions": true,
"manageLogin": true
},
"domain": "local",
"username": "admin",
"displayName": "acme Administrator",
"familyName": "Administrator",
"givenName": "acme",
"middleName": null,
"email": null,
"data": null,
"superuser": true,
"timezone": "America/New_York",
"settings": {
"log": {
"log": false,
"info": false,
"warn": false,
"debug": false,
"error": true,
"remote": false
}
},
"enabled": true,
"source": null,
"sourceId": null,
"lastViewedFeed": null,
"tenant": "acme",
"globalPermissions": {
"ai": false,
"jobCreation": true,
"viewAllTeams": true,
"viewAllUsers": true,
"painlessScriptCreation": true
},
"userFields": {},
"locked": false,
"lockedAt": null,
"loginAttempts": 0,
"passwordSetAt": "2026-01-15T16:20:00.000Z",
"passwordExpiresAt": "2026-01-15T16:20:00.000Z",
"forgotPasswordRequestTime": null,
"mfa": null,
"mfaConfig": {},
"aiMessage": null,
"aiConsent": false,
"hasSharedDatasources": false,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"initials": "NA",
"colorIndex": 4,
"avatarColor": {
"background": "#81C784",
"text": "#1B5E20"
},
"managesPassword": true
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

PUT /api/libraries/{id}/owner

Change the owner of a library.

Authentication: Required

Permissions: Requires library:write permission

Path Parameters:

ParameterTypeDescription
idstringLibrary ID or natural ID

Request Body:

A principal lookup. Use { "userId": "<username>" } to assign to a user, or { "teamId": "<team-id>" } to assign to a team.

{
"userId": "annie.larson"
}

Response:

Responds 200 with the updated library and a Location header.

Reassign a library’s ownerPUT /api/libraries/admin:engineering-docs/owner
Body is a principal lookup: { userId } to assign to a user, or { teamId } to assign to a team. Responds 200 with a Location header.
Request body
{
"userId": "annie.larson"
}
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001"
},
"inf:library-share": {
"href": "https://informer.example.com/api/libraries/annie.larson%3Aengineering-docs/shares/{principalId}",
"templated": true
},
"inf:assistants": {
"href": "https://informer.example.com/api/libraries/annie.larson%3Aengineering-docs/assistants"
},
"inf:sync": {
"href": "https://informer.example.com/api/libraries/annie.larson%3Aengineering-docs/_sync"
},
"inf:files": {
"href": "https://informer.example.com/api/libraries/annie.larson%3Aengineering-docs/files"
},
"inf:account": {
"href": "https://informer.example.com/api/libraries/annie.larson%3Aengineering-docs/account"
},
"inf:library-owner": {
"href": "https://informer.example.com/api/libraries/annie.larson%3Aengineering-docs/owner"
},
"inf:library-shares": {
"href": "https://informer.example.com/api/libraries/annie.larson%3Aengineering-docs/shares"
},
"inf:comments": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/comments"
},
"inf:library-assistant-access": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/assistant-access"
},
"inf:favorite": {
"href": "https://informer.example.com/api/libraries/annie.larson%3Aengineering-docs/favorite"
},
"inf:library-integration": {
"href": "https://informer.example.com/api/libraries/00000000-0000-4000-8000-000000000001/integration"
}
},
"naturalId": "annie.larson:engineering-docs",
"connectionOwner": "annie.larson",
"isLocal": true,
"permissions": {
"assignTags": true,
"changeOwner": true,
"configure": false,
"connect": true,
"edit": true,
"delete": true,
"write": true,
"sync": true,
"rename": true,
"share": true,
"editConnection": true
},
"id": "00000000-0000-4000-8000-000000000001",
"type": "local",
"name": "Engineering Docs",
"slug": "engineering-docs",
"description": "Shared engineering documentation and runbooks",
"ownerId": "annie.larson",
"data": null,
"folderId": null,
"shared": false,
"assistantAccess": false,
"embedded": false,
"syncedAt": null,
"syncInterval": null,
"snapshotOfId": null,
"chatId": null,
"source": null,
"sourceId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"integration": null,
"_embedded": {
"inf:library-driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/library-drivers/local"
}
},
"id": "local",
"name": "Local",
"defaultSyncInterval": null,
"isLocal": true,
"sync": {}
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.