/home/techb158/cosmic.abdallabala.com
Edit: /home/techb158/cosmic.abdallabala.com/openapi.yaml (12691B)
openapi: 3.0.3
info:
title: COSMIC AI-Risk Dashboard API
version: 2.0.0
description: API for the COSMIC AI-Risk Dashboard, including risk scoring, mitigations, deployment gates, reports, OAuth/live PM connectors, role-based access control, and production operations endpoints.
servers:
- url: http://localhost:8090
paths:
/api/health:
get:
summary: Health check
responses:
'200':
description: Service health
/api/ready:
get:
summary: Readiness check for deployment monitoring
responses:
'200':
description: Service is ready
'503':
description: Service is not ready
/api/operations/security:
get:
summary: Get safe security and runtime configuration status
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: Security status
'403':
description: Missing audit read permission
/api/operations/backups:
get:
summary: List database backup manifests
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: Backup manifest list
'403':
description: Missing audit read permission
post:
summary: Create database backup
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'201':
description: Created backup manifest
'403':
description: Missing user write permission
/api/dashboard:
get:
summary: Get default project dashboard
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: Dashboard payload
'403':
description: Missing project read permission
/api/access/me:
get:
summary: Get current actor, role, permissions, users, and roles
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: Current access context
/api/access/permissions:
get:
summary: List available permission keys
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: Permission list
'403':
description: Missing user read permission
/api/access/seed-defaults:
post:
summary: Seed built-in roles and demo users
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: Seeded users and roles
'403':
description: Missing user write permission
/api/users:
get:
summary: List users
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: User list
post:
summary: Create user
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserInput'
responses:
'201':
description: Created user
'403':
description: Missing user write permission
/api/users/{userId}:
get:
summary: Get user
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/UserId'
responses:
'200':
description: User
patch:
summary: Update user
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/UserId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserPatch'
responses:
'200':
description: Updated user
/api/roles:
get:
summary: List roles
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: Role list
post:
summary: Create role
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RoleInput'
responses:
'201':
description: Created role
/api/roles/{roleId}:
get:
summary: Get role
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/RoleId'
responses:
'200':
description: Role
patch:
summary: Update role
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/RoleId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RolePatch'
responses:
'200':
description: Updated role
/api/projects:
get:
summary: List projects
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
responses:
'200':
description: Project list
/api/projects/{projectId}/dashboard:
get:
summary: Get project dashboard
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/ProjectId'
responses:
'200':
description: Dashboard payload
/api/projects/{projectId}/risks:
get:
summary: List project risks
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/ProjectId'
responses:
'200':
description: Risk list
post:
summary: Create risk
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/ProjectId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RiskInput'
responses:
'201':
description: Created risk
'403':
description: Missing risk write permission
/api/risks/{riskId}:
get:
summary: Get risk
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/RiskId'
responses:
'200':
description: Risk
patch:
summary: Update risk
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/RiskId'
responses:
'200':
description: Updated risk
delete:
summary: Delete risk
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/RiskId'
responses:
'200':
description: Deleted risk
'403':
description: Missing risk delete permission
/api/risks/{riskId}/mitigations:
post:
summary: Create mitigation for risk
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/RiskId'
responses:
'201':
description: Created mitigation
/api/mitigations/{mitigationId}:
get:
summary: Get mitigation
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/MitigationId'
responses:
'200':
description: Mitigation
patch:
summary: Update mitigation
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/MitigationId'
responses:
'200':
description: Updated mitigation
delete:
summary: Delete mitigation
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/MitigationId'
responses:
'200':
description: Deleted mitigation
/api/projects/{projectId}/gate/evaluate:
post:
summary: Evaluate and persist deployment gate
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/ProjectId'
responses:
'200':
description: Gate evaluation
/api/gates/{gateId}/decisions:
post:
summary: Record reviewer gate decision
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/GateId'
responses:
'201':
description: Gate decision recorded
/api/projects/{projectId}/reports/{reportName}:
get:
summary: Get or download a project report
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/ProjectId'
- name: reportName
in: path
required: true
schema:
type: string
responses:
'200':
description: Report output
/api/oauth/{provider}/authorize:
get:
summary: Build provider authorization URL
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- name: provider
in: path
required: true
schema:
type: string
enum: [Trello, Jira, Asana, Microsoft Planner]
responses:
'200':
description: Authorization URL and state
/api/integrations/{integrationId}/sync:
post:
summary: Simulate PM integration sync
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/IntegrationId'
responses:
'200':
description: Sync result
/api/integrations/{integrationId}/live/sync:
post:
summary: Run live PM integration sync when enabled
parameters:
- $ref: '#/components/parameters/ActorUserIdHeader'
- $ref: '#/components/parameters/IntegrationId'
responses:
'200':
description: Live sync result
components:
parameters:
ActorUserIdHeader:
name: X-Cosmic-User-Id
in: header
required: false
schema:
type: string
description: Local prototype actor user id used for role-based access control.
ProjectId:
name: projectId
in: path
required: true
schema:
type: string
RiskId:
name: riskId
in: path
required: true
schema:
type: string
MitigationId:
name: mitigationId
in: path
required: true
schema:
type: string
GateId:
name: gateId
in: path
required: true
schema:
type: string
IntegrationId:
name: integrationId
in: path
required: true
schema:
type: string
UserId:
name: userId
in: path
required: true
schema:
type: string
RoleId:
name: roleId
in: path
required: true
schema:
type: string
schemas:
RiskInput:
type: object
required: [title, probability, impact, detectability]
properties:
title:
type: string
dimension:
type: string
enum: [Organizational, Technical, Human]
domain:
type: string
lifecyclePhase:
type: string
probability:
type: integer
minimum: 1
maximum: 5
impact:
type: integer
minimum: 1
maximum: 5
detectability:
type: integer
minimum: 1
maximum: 5
UserInput:
type: object
required: [displayName, email, roleId]
properties:
displayName:
type: string
email:
type: string
roleId:
type: string
active:
type: boolean
UserPatch:
type: object
properties:
displayName:
type: string
email:
type: string
roleId:
type: string
active:
type: boolean
RoleInput:
type: object
required: [name, permissions]
properties:
name:
type: string
permissions:
type: array
items:
type: string
RolePatch:
type: object
properties:
name:
type: string
permissions:
type: array
items:
type: string