Skip to main content

Admin API Endpoints

The admin API contains approximately 60 route handlers across 19 resource groups. All admin endpoints are protected by the withAdminAuth middleware, which verifies both authentication and admin role assignment via database query.

Authentication

Every admin endpoint requires:

  1. A valid JWT session (checked via auth())
  2. An admin role in the user_roles table (checked via isAdmin() from lib/db/roles.ts)

Unauthenticated requests receive a 401 response. Authenticated but non-admin requests receive a 403 response.

Resource Groups

Categories (/api/admin/categories)

Manage content categories with Git-based persistence.

MethodPathDescription
GET/api/admin/categoriesList categories with pagination
POST/api/admin/categoriesCreate a new category
GET/api/admin/categories/allGet all categories (no pagination)
POST/api/admin/categories/gitSync categories with Git repository
POST/api/admin/categories/reorderReorder category positions
GET/api/admin/categories/[id]Get category by ID
PUT/api/admin/categories/[id]Update category
DELETE/api/admin/categories/[id]Delete category

Clients (/api/admin/clients)

Manage client user accounts and profiles.

MethodPathDescription
GET/api/admin/clientsList client profiles with pagination
POST/api/admin/clients/advanced-searchAdvanced client search with filters
POST/api/admin/clients/bulkBulk operations on clients
GET/api/admin/clients/dashboardClient dashboard statistics
GET/api/admin/clients/statsClient aggregate statistics
GET/api/admin/clients/[clientId]Get client profile details
PUT/api/admin/clients/[clientId]Update client profile
DELETE/api/admin/clients/[clientId]Delete client account

Collections (/api/admin/collections)

Manage curated item collections.

MethodPathDescription
GET/api/admin/collectionsList all collections
POST/api/admin/collectionsCreate a new collection
GET/api/admin/collections/[id]Get collection details
PUT/api/admin/collections/[id]Update collection
DELETE/api/admin/collections/[id]Delete collection
GET/api/admin/collections/[id]/itemsList items in a collection
PUT/api/admin/collections/[id]/itemsUpdate collection items

Comments (/api/admin/comments)

Moderate user comments.

MethodPathDescription
GET/api/admin/commentsList comments with moderation filters
GET/api/admin/comments/[id]Get comment details
PUT/api/admin/comments/[id]Update comment (approve/reject)
DELETE/api/admin/comments/[id]Delete comment

Companies (/api/admin/companies)

Manage company profiles linked to items.

MethodPathDescription
GET/api/admin/companiesList companies
POST/api/admin/companiesCreate company
GET/api/admin/companies/[id]Get company details
PUT/api/admin/companies/[id]Update company
DELETE/api/admin/companies/[id]Delete company

Dashboard (/api/admin/dashboard)

Aggregate dashboard analytics.

MethodPathDescription
GET/api/admin/dashboard/statsDashboard summary statistics

Manage featured item highlights.

MethodPathDescription
GET/api/admin/featured-itemsList featured items
POST/api/admin/featured-itemsFeature an item
GET/api/admin/featured-items/[id]Get featured item details
PUT/api/admin/featured-items/[id]Update featured item settings
DELETE/api/admin/featured-items/[id]Remove from featured

Geo Analytics (/api/admin/geo-analytics)

Geographic analytics and visitor distribution data.

MethodPathDescription
GET/api/admin/geo-analyticsGet geographic analytics data

Items (/api/admin/items)

Full item content management.

MethodPathDescription
GET/api/admin/itemsList items with filters and pagination
POST/api/admin/itemsCreate a new item
POST/api/admin/items/bulkBulk item operations (approve, reject, delete)
GET/api/admin/items/statsItem aggregate statistics
GET/api/admin/items/[id]Get item details
PUT/api/admin/items/[id]Update item
DELETE/api/admin/items/[id]Delete item
GET/api/admin/items/[id]/historyGet item audit history
POST/api/admin/items/[id]/reviewSubmit item review (approve/reject)

Location Index (/api/admin/location-index)

Manage geographic location search indexing.

MethodPathDescription
POST/api/admin/location-indexRebuild location search index

Admin navigation configuration.

MethodPathDescription
GET/api/admin/navigationGet navigation structure
PUT/api/admin/navigationUpdate navigation

Notifications (/api/admin/notifications)

Admin notification management.

MethodPathDescription
GET/api/admin/notificationsList admin notifications
POST/api/admin/notifications/mark-all-readMark all notifications as read
POST/api/admin/notifications/[id]/readMark single notification as read

Reports (/api/admin/reports)

Content report management and moderation.

MethodPathDescription
GET/api/admin/reportsList content reports
GET/api/admin/reports/statsReport statistics
GET/api/admin/reports/[id]Get report details
PUT/api/admin/reports/[id]Update report status (resolve, dismiss)

Roles (/api/admin/roles)

Role and permission management for RBAC.

MethodPathDescription
GET/api/admin/rolesList roles with pagination
POST/api/admin/rolesCreate a new role
GET/api/admin/roles/activeGet active roles only
GET/api/admin/roles/statsRole statistics
GET/api/admin/roles/[id]Get role details
PUT/api/admin/roles/[id]Update role
DELETE/api/admin/roles/[id]Delete role (soft delete)
GET/api/admin/roles/[id]/permissionsGet role permissions
PUT/api/admin/roles/[id]/permissionsUpdate role permissions

Settings (/api/admin/settings)

Application settings management.

MethodPathDescription
GET/api/admin/settingsGet all settings
PUT/api/admin/settingsUpdate settings
GET/api/admin/settings/map-statusGet map feature status

Sponsor advertisement moderation.

MethodPathDescription
GET/api/admin/sponsor-adsList sponsor ads
GET/api/admin/sponsor-ads/[id]Get ad details
PUT/api/admin/sponsor-ads/[id]Update ad
POST/api/admin/sponsor-ads/[id]/approveApprove sponsor ad
POST/api/admin/sponsor-ads/[id]/rejectReject sponsor ad
POST/api/admin/sponsor-ads/[id]/cancelCancel sponsor ad

Tags (/api/admin/tags)

Content tag management.

MethodPathDescription
GET/api/admin/tagsList tags with pagination
POST/api/admin/tagsCreate a new tag
GET/api/admin/tags/allGet all tags (no pagination)
GET/api/admin/tags/[id]Get tag details
PUT/api/admin/tags/[id]Update tag
DELETE/api/admin/tags/[id]Delete tag

Twenty CRM (/api/admin/twenty-crm)

CRM integration configuration and testing.

MethodPathDescription
GET/api/admin/twenty-crm/configGet CRM configuration
PUT/api/admin/twenty-crm/configUpdate CRM configuration
POST/api/admin/twenty-crm/test-connectionTest CRM connection

Users (/api/admin/users)

Admin user management.

MethodPathDescription
GET/api/admin/usersList users with pagination
POST/api/admin/usersCreate a new user
GET/api/admin/users/statsUser statistics
GET/api/admin/users/check-emailCheck email availability
GET/api/admin/users/check-usernameCheck username availability
GET/api/admin/users/[id]Get user details
PUT/api/admin/users/[id]Update user
DELETE/api/admin/users/[id]Delete user

Common Patterns

Bulk Operations

Several resources support bulk operations via POST with an array of IDs:

POST /api/admin/items/bulk
{
"action": "approve",
"ids": ["item-1", "item-2", "item-3"]
}

Statistics Endpoints

Most resource groups include a /stats endpoint returning aggregate counts:

GET /api/admin/items/stats
{
"success": true,
"data": {
"total": 1250,
"published": 980,
"pending": 120,
"rejected": 50,
"draft": 100
}
}

Audit History

Items support audit history tracking via the /[id]/history endpoint, recording who made changes and when.