#226 OpenAPI: Tenant & App Management Endpoints (27 endpoints)
Description
Edit## Scope
Document tenant and app management endpoints:
- `api/blueprints/v1/tenant_apps.py` (15 endpoints)
- `api/blueprints/v1/apps.py` (12 endpoints)
## Tenant Apps Endpoints (15)
1. POST /tenant-apps - Register app for tenant
2. GET /tenant-apps - List tenant apps
3. GET /tenant-apps/{id} - Get app details
4. PUT /tenant-apps/{id} - Update app
5. DELETE /tenant-apps/{id} - Unregister app
6. POST /tenant-apps/{id}/enable - Enable app
7. POST /tenant-apps/{id}/disable - Disable app
8. GET /tenant-apps/{id}/config - Get app config
9. PUT /tenant-apps/{id}/config - Update app config
10. GET /tenant-apps/{id}/usage - Get app usage
11. POST /tenant-apps/{id}/reset-usage - Reset usage
12. GET /tenant-apps/available - List available apps
13. GET /tenant-apps/categories - List app categories
14. POST /tenant-apps/bulk-enable - Bulk enable
15. POST /tenant-apps/bulk-disable - Bulk disable
## Apps Endpoints (12)
1. POST /apps - Create app (admin)
2. GET /apps - List all apps
3. GET /apps/{id} - Get app
4. PUT /apps/{id} - Update app
5. DELETE /apps/{id} - Delete app
6. POST /apps/{id}/publish - Publish app
7. POST /apps/{id}/unpublish - Unpublish
8. GET /apps/{id}/versions - List versions
9. POST /apps/{id}/versions - Create version
10. GET /apps/categories - List categories
11. GET /apps/search - Search apps
12. GET /apps/featured - Get featured apps
## Pydantic Models
```python
class TenantAppRegistration(BaseModel):
app_id: str
config: dict = {}
class AppCreateRequest(BaseModel):
name: str
description: str
category: str
icon_url: str | None = None
manifest: dict
class AppResponse(BaseModel):
app_id: str
name: str
description: str
category: str
version: str
is_published: bool
```
## Depends On
- #224 (Infrastructure Setup)
## Acceptance Criteria
- [ ] All 27 endpoints documented
- [ ] Admin vs tenant permissions noted
- [ ] Config schema documented
Comments
Loading comments...
Context
Loading context...
Audit History
View AllLoading audit history...