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:
| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | - | Full-text search query (searches name, description) |
sort | string | name | Sort field (prefix with - for descending) |
limit | integer | 30 | Results per page |
start | integer | 0 | Pagination offset |
Response:
The response is a paginated HAL collection. Library items are returned under _embedded["inf:library"].
{
"_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": {}
}
}
}
]
}
}
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.
[
{
"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": []
}
]
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:
| Parameter | Type | Description |
|---|---|---|
id | string | Library ID or {ownerId}:{slug} natural ID |
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
includeJobAccess | boolean | false | Include libraries accessible via job ownership |
Response:
{
"_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": {}
}
}
}
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:
| Field | Type | Required | Description |
|---|---|---|---|
id | string (UUID) | No | Pre-generated library ID (auto-generated if omitted) |
name | string | Yes | Library name |
description | string | No | Library description |
type | string | Yes | Library driver type: one of local, onedrive, box, github, googledrive |
integrationId | string | No | Existing integration ID (for non-local libraries) |
shared | boolean | No | Enable sharing (default: false) |
data | object | No | Driver-specific configuration data |
readOnly | boolean | No | Create read-only integration (default: true) |
clientId | string | No | OAuth client ID (for cloud integrations) |
clientSecret | string | No | OAuth 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.
{
"name": "Engineering Docs",
"type": "local",
"description": "Shared engineering documentation"
}
{
"_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": {}
}
}
}
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:
| Parameter | Type | Description |
|---|---|---|
id | string | Library ID or {ownerId}:{slug} natural ID |
Request Body:
| Field | Type | Description |
|---|---|---|
name | string | Updated library name |
description | string | Updated description |
data | object | Driver-specific data |
shared | boolean | Enable/disable sharing |
syncInterval | integer | Sync interval in minutes (min: 1) |
Example:
{
"name": "Updated Library Name",
"description": "New description",
"shared": true,
"syncInterval": 120
}
Response:
Returns the updated library.
{
"description": "Shared engineering documentation and runbooks"
}
{
"_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": {}
}
}
}
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:
| Parameter | Type | Description |
|---|---|---|
id | string | Library ID or {ownerId}:{slug} natural ID |
Response:
Responds 200 on success.
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:
| Parameter | Type | Description |
|---|---|---|
id | string | Library ID or natural ID |
Response:
The owning principal (a user or a team), with the user or team embedded.
{
"_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
}
}
}
PUT /api/libraries/{id}/owner
Change the owner of a library.
Authentication: Required
Permissions: Requires library:write permission
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | Library 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.
{
"userId": "annie.larson"
}
{
"_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": {}
}
}
}