Core user data persistence layer. Stores users, roles, preferences (tags, favorites, pins), activity logs, sharing/collaboration (features, shares, locks), integration tools, Langflow accounts, connectors, and languages.
- Tech: NestJS 11, TypeORM, PostgreSQL
- Port: 4000
- Auth: JWT (RS256), API Key, Public
- Database: user-base DB (16 tables)
User Endpoints
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/users?email= | Public | Get user by email |
| GET | /api/v1/users/:id | Public | Get user by ID |
| GET | /api/v1/users/search/:query | Public | Search users |
| GET | /api/v1/users/zitadel/:zitadelUserId | Public | Get by ZITADEL ID |
| POST | /api/v1/users | Public | Create user |
| POST | /api/v1/users/batch | Public | Get multiple by IDs |
| POST | /api/v1/users/zitadel | Public | Create from ZITADEL |
| PATCH | /api/v1/users/:id | Public | Update user |
User Role Endpoints
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/user-role | JWT | List all roles |
| GET | /api/v1/user-role/:id | JWT | Get by ID |
| GET | /api/v1/user-role/user/:userId | Public | Get roles by user |
| POST | /api/v1/user-role | Public | Create role assignment |
| PATCH | /api/v1/user-role/:id | JWT | Update |
| DELETE | /api/v1/user-role/:id | JWT | Delete |
Tag Endpoints
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/tags/user/:userId | Public | Get user's tags |
| POST | /api/v1/tags | Public | Create tag |
| PATCH | /api/v1/tags/:tagId | Public | Update tag |
| DELETE | /api/v1/tags/:tagId | Public | Delete tag |
| POST | /api/v1/tags/tag-entities/:targetType | Public | Get tag entities by type + IDs |
| POST | /api/v1/tags/tag-entities | Public | Create tag-entity link |
| DELETE | /api/v1/tags/tag-entities/:tagEntityId | Public | Delete tag-entity link |
Favorite Endpoints
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/favorites/user/:userId | Public | Get favorites |
| GET | /api/v1/favorites/user/:userId/by-target-type | Public | Filter by target type |
| GET | /api/v1/favorites/user/:userId/by-target-id | Public | Get single favorite by targetId |
| POST | /api/v1/favorites | Public | Create |
| DELETE | /api/v1/favorites | Public | Delete |
| POST | /api/v1/favorites/is-favorited | Public | Check status |
| POST | /api/v1/favorites/counts | JWT | Get counts |
Pin Endpoints
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/pins/user/:userId | Public | Get user's pins |
| POST | /api/v1/pins | Public | Create |
| DELETE | /api/v1/pins/:targetId | Public | Delete |
| POST | /api/v1/pins/is-pinned | Public | Check status |
Activity Log Endpoints
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/activity-logs/user/:userId/recent | Public | Recent logs |
| POST | /api/v1/activity-logs | Public | Create entry |
| PATCH | /api/v1/activity-logs/:activityLogId/hide | Public | Hide entry |
Feature and Sharing Endpoints
Features are shareable resource abstractions. Types: conversation, source (with subtypes: folder, document), agent.
Feature CRUD
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/features/by-type-and-entity | Public | Get by type + entity ID |
| GET | /api/v1/features/:id | Public | Get by ID |
| POST | /api/v1/features | Public | Create |
| POST | /api/v1/features/by-type-and-entities | JWT | Batch get |
Shares
| Method | Path | Auth | Description |
|---|
| POST | /api/v1/features/shares | JWT | Create share |
| POST | /api/v1/features/shares/batch | JWT | Batch create |
| GET | /api/v1/features/:featureId/shares | JWT | Get shares for a feature |
| GET | /api/v1/features/shares/user/:userId | JWT | Shared with user |
| GET | /api/v1/features/shares/:shareId | JWT | Get share by ID |
| PATCH | /api/v1/features/shares/:shareId | JWT | Update role |
| DELETE | /api/v1/features/shares/:shareId | JWT | Revoke |
| DELETE | /api/v1/features/:featureId/shares | JWT | Revoke all shares for a feature |
Link Settings
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/features/:featureId/link-settings | JWT | Get settings |
| PUT | /api/v1/features/:featureId/link-settings | JWT | Update |
| POST | /api/v1/features/link-settings/batch | JWT | Batch get |
Access Control
| Method | Path | Auth | Description |
|---|
| POST | /api/v1/features/check-access | JWT | Check access |
| POST | /api/v1/features/check-access/batch | JWT | Batch check |
Locks
| Method | Path | Auth | Description |
|---|
| POST | /api/v1/features/:featureId/locks | JWT | Acquire lock |
| DELETE | /api/v1/features/:featureId/locks | JWT | Release lock |
| GET | /api/v1/features/:featureId/locks | JWT | Get status |
| DELETE | /api/v1/features/:featureId/locks/force | JWT | Force release |
Lock TTL: 5 minutes by default.
Reference Data Endpoints
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/integrations-tools | Public | List all |
| GET | /api/v1/integrations-tools/by-key/:key | Public | Get by key |
| GET | /api/v1/integrations-tools/enabled/by-key/:key | Public | Get enabled by key |
Langflow Accounts
| Method | Path | Auth | Description |
|---|
| POST | /api/v1/langflow-accounts | Public | Create |
| GET | /api/v1/langflow-accounts/by-user-id/:userId | Public | Get by user |
| GET | /api/v1/langflow-accounts/by-id/:id | Public | Get by ID |
| PUT | /api/v1/langflow-accounts/user/:userId | Public | Update |
Connectors
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/connectors | JWT | List all |
| GET | /api/v1/connectors/paginated | JWT | Paginated list |
| GET | /api/v1/connectors/enabled | JWT | Enabled only |
| GET | /api/v1/connectors/:id | JWT | Get by ID |
| POST | /api/v1/connectors/by-ids | JWT | Get by IDs |
Languages
| Method | Path | Auth | Description |
|---|
| GET | /api/v1/languages | JWT | List all |
| GET | /api/v1/languages/:code | JWT | Get by code |
| POST | /api/v1/languages/by-codes | JWT | Get by codes |
Inter-Service Communication
This service does not call other Jeen services. It is a data layer consumed by user-service and auth-service.