tractatus/docs/api/openapi.yaml
TheFlow 8ada623bbf feat: add comprehensive OpenAPI 3.0 specification
- Created openapi.yaml (1,621 lines, 46KB)
- Documents all API endpoints with full schemas
- Authentication, Documents, Governance Services, Audit, Admin
- Added OpenAPI download link to api-reference.html
- Deployed to production

Task 12 (API Documentation) - OpenAPI spec complete
2025-10-12 11:09:39 +13:00

1621 lines
46 KiB
YAML

openapi: 3.0.3
info:
title: Tractatus Framework API
version: 1.0.0
description: |
REST API for the Tractatus Framework - an architectural AI safety framework implementing structural governance for agentic AI systems.
**Key Features:**
- Instruction persistence and classification
- Cross-reference validation (prevents training pattern override)
- Boundary enforcement (separates technical from values decisions)
- Context pressure monitoring (multi-factor session health)
- Metacognitive verification (AI self-checks for scope creep)
- Comprehensive audit logging
**Security:** Most endpoints require JWT authentication with admin role.
**Rate Limiting:**
- Login endpoint: 5 attempts per 15 minutes per IP
- General API: 100 requests per 15 minutes per IP
contact:
name: Tractatus Framework
email: john.stroh.nz@pm.me
url: https://agenticgovernance.digital
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: https://agenticgovernance.digital/api
description: Production server
- url: http://localhost:9000/api
description: Development server
tags:
- name: Authentication
description: User authentication and session management
- name: Documents
description: Framework documentation endpoints
- name: Governance Services
description: Core AI safety framework services (admin only)
- name: Audit
description: Audit logging and analytics (admin only)
- name: Admin
description: System administration and moderation (admin only)
paths:
# ==================== Authentication ====================
/auth/login:
post:
tags:
- Authentication
summary: User login
description: |
Authenticate with email and password to receive a JWT access token.
**Rate Limiting:** 5 attempts per 15 minutes per IP address.
operationId: login
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- email
- password
properties:
email:
type: string
format: email
example: admin@tractatus.local
password:
type: string
format: password
example: tractatus2025
responses:
'200':
description: Login successful
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
token:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
user:
$ref: '#/components/schemas/User'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
description: Too many login attempts
content:
application/json:
schema:
type: object
properties:
error:
type: string
example: Too many login attempts from this IP. Please try again in 15 minutes.
/auth/me:
get:
tags:
- Authentication
summary: Get current user
description: Retrieve the authenticated user's profile information
operationId: getCurrentUser
security:
- BearerAuth: []
responses:
'200':
description: User profile retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
user:
$ref: '#/components/schemas/User'
'401':
$ref: '#/components/responses/Unauthorized'
/auth/logout:
post:
tags:
- Authentication
summary: User logout
description: |
Logout the current user. This logs the event on the server side.
The client should remove the JWT token from storage.
operationId: logout
security:
- BearerAuth: []
responses:
'200':
description: Logout successful
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
message:
type: string
example: Logged out successfully
'401':
$ref: '#/components/responses/Unauthorized'
# ==================== Documents ====================
/documents:
get:
tags:
- Documents
summary: List all documents
description: Retrieve a paginated list of all published framework documents
operationId: listDocuments
parameters:
- name: page
in: query
schema:
type: integer
default: 1
- name: limit
in: query
schema:
type: integer
default: 50
- name: quadrant
in: query
description: Filter by quadrant
schema:
type: string
enum: [STRATEGIC, OPERATIONAL, TACTICAL, SYSTEM, STOCHASTIC]
responses:
'200':
description: Documents retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
documents:
type: array
items:
$ref: '#/components/schemas/Document'
pagination:
$ref: '#/components/schemas/Pagination'
post:
tags:
- Documents
summary: Create document (admin)
description: Create a new framework document
operationId: createDocument
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DocumentInput'
responses:
'201':
description: Document created successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
document:
$ref: '#/components/schemas/Document'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/documents/search:
get:
tags:
- Documents
summary: Search documents
description: Full-text search across all framework documents
operationId: searchDocuments
parameters:
- name: q
in: query
required: true
description: Search query
schema:
type: string
example: boundary enforcement
responses:
'200':
description: Search results retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
results:
type: array
items:
$ref: '#/components/schemas/Document'
count:
type: integer
example: 5
/documents/archived:
get:
tags:
- Documents
summary: List archived documents
description: Retrieve all archived documents
operationId: listArchivedDocuments
responses:
'200':
description: Archived documents retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
documents:
type: array
items:
$ref: '#/components/schemas/Document'
/documents/{identifier}:
get:
tags:
- Documents
summary: Get document by ID or slug
description: Retrieve a single document by MongoDB ObjectId or URL slug
operationId: getDocument
parameters:
- name: identifier
in: path
required: true
description: Document ID or slug
schema:
type: string
example: 27027-incident-analysis
responses:
'200':
description: Document retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
document:
$ref: '#/components/schemas/Document'
'404':
$ref: '#/components/responses/NotFound'
put:
tags:
- Documents
summary: Update document (admin)
description: Update an existing document
operationId: updateDocument
security:
- BearerAuth: []
parameters:
- name: identifier
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DocumentInput'
responses:
'200':
description: Document updated successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
document:
$ref: '#/components/schemas/Document'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
delete:
tags:
- Documents
summary: Delete document (admin)
description: Delete a document (soft delete - archives it)
operationId: deleteDocument
security:
- BearerAuth: []
parameters:
- name: identifier
in: path
required: true
schema:
type: string
responses:
'200':
description: Document deleted successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
message:
type: string
example: Document archived successfully
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
# ==================== Governance Services ====================
/governance:
get:
tags:
- Governance Services
summary: Get framework status
description: |
Retrieve the current status of all governance framework components.
**Admin Only** - Contains sensitive runtime data.
operationId: getFrameworkStatus
security:
- BearerAuth: []
responses:
'200':
description: Framework status retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/FrameworkStatus'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/governance/status:
get:
tags:
- Governance Services
summary: Get detailed governance status
description: |
Retrieve detailed status including component health, instruction counts, and system uptime.
**Admin Only**
operationId: getDetailedGovernanceStatus
security:
- BearerAuth: []
responses:
'200':
description: Detailed status retrieved successfully
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/FrameworkStatus'
- type: object
properties:
uptime:
type: number
description: Server uptime in seconds
example: 86400.5
environment:
type: string
example: production
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/governance/classify:
post:
tags:
- Governance Services
summary: Classify instruction
description: |
Test the InstructionPersistenceClassifier service by classifying a text instruction.
Returns: quadrant, persistence level, temporal scope, verification requirements, reasoning, and confidence score.
**Admin Only**
operationId: classifyInstruction
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- text
properties:
text:
type: string
example: Always use MongoDB on port 27027
context:
type: object
properties:
source:
type: string
example: user
session_id:
type: string
example: sess_123
responses:
'200':
description: Classification successful
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
classification:
$ref: '#/components/schemas/InstructionClassification'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/governance/validate:
post:
tags:
- Governance Services
summary: Validate action
description: |
Test the CrossReferenceValidator service by validating a proposed action against instruction history.
Detects conflicts, training pattern overrides (27027 failure mode), and provides validation status.
**Admin Only**
operationId: validateAction
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- action
properties:
action:
type: object
properties:
type:
type: string
example: database_change
description:
type: string
example: Change MongoDB port from 27027 to 27017
impact:
type: string
example: System configuration change
context:
type: object
properties:
messages:
type: array
items:
type: object
responses:
'200':
description: Validation complete
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
validation:
$ref: '#/components/schemas/ValidationResult'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/governance/enforce:
post:
tags:
- Governance Services
summary: Test boundary enforcement
description: |
Test the BoundaryEnforcer service by checking if an action crosses into values territory.
Identifies privacy, ethics, sovereignty, and strategic direction decisions requiring human approval.
**Admin Only**
operationId: enforceBounda ry
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- action
properties:
action:
type: object
properties:
type:
type: string
example: content_moderation
description:
type: string
example: Decide which user comments to hide
context:
type: object
responses:
'200':
description: Boundary enforcement check complete
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
enforcement:
$ref: '#/components/schemas/BoundaryEnforcement'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/governance/pressure:
post:
tags:
- Governance Services
summary: Analyze context pressure
description: |
Test the ContextPressureMonitor service by analyzing session health across multiple factors.
Returns pressure level (NORMAL/ELEVATED/HIGH/CRITICAL/DANGEROUS) and individual factor scores.
**Admin Only**
operationId: analyzePressure
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
context:
type: object
properties:
tokenUsage:
type: integer
example: 50000
tokenBudget:
type: integer
example: 200000
messageCount:
type: integer
example: 20
errorCount:
type: integer
example: 2
complexityScore:
type: number
example: 0.6
responses:
'200':
description: Pressure analysis complete
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
pressure:
$ref: '#/components/schemas/PressureAnalysis'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/governance/verify:
post:
tags:
- Governance Services
summary: Metacognitive verification
description: |
Test the MetacognitiveVerifier service by performing AI self-checks on proposed actions.
Detects scope creep, misalignment, and provides confidence scoring with alternatives.
**Admin Only**
operationId: verifyAction
security:
- BearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- action
properties:
action:
type: object
properties:
type:
type: string
example: feature_implementation
description:
type: string
example: Add user authentication system
steps:
type: array
items:
type: string
reasoning:
type: object
properties:
justification:
type: string
example: Required for secure user management
context:
type: object
responses:
'200':
description: Verification complete
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
verification:
$ref: '#/components/schemas/MetacognitiveVerification'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
# ==================== Audit ====================
/audit/audit-logs:
get:
tags:
- Audit
summary: Get audit logs
description: |
Retrieve audit logs with filtering and pagination.
**Admin Only**
operationId: getAuditLogs
security:
- BearerAuth: []
parameters:
- name: page
in: query
schema:
type: integer
default: 1
- name: limit
in: query
schema:
type: integer
default: 50
- name: action
in: query
description: Filter by action type
schema:
type: string
- name: userId
in: query
description: Filter by user ID
schema:
type: string
- name: startDate
in: query
description: Filter by start date (ISO 8601)
schema:
type: string
format: date-time
- name: endDate
in: query
description: Filter by end date (ISO 8601)
schema:
type: string
format: date-time
responses:
'200':
description: Audit logs retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
logs:
type: array
items:
$ref: '#/components/schemas/AuditLog'
pagination:
$ref: '#/components/schemas/Pagination'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/audit/audit-analytics:
get:
tags:
- Audit
summary: Get audit analytics
description: |
Retrieve aggregated analytics on audit logs (action counts, user activity, trends).
**Admin Only**
operationId: getAuditAnalytics
security:
- BearerAuth: []
parameters:
- name: startDate
in: query
description: Start date for analytics period (ISO 8601)
schema:
type: string
format: date-time
- name: endDate
in: query
description: End date for analytics period (ISO 8601)
schema:
type: string
format: date-time
responses:
'200':
description: Analytics retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
analytics:
type: object
properties:
totalLogs:
type: integer
example: 1250
actionBreakdown:
type: object
additionalProperties:
type: integer
example:
login: 450
document_create: 120
document_update: 380
classify: 200
validate: 100
topUsers:
type: array
items:
type: object
properties:
userId:
type: string
email:
type: string
count:
type: integer
timeline:
type: array
items:
type: object
properties:
date:
type: string
format: date
count:
type: integer
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
# ==================== Admin ====================
/admin/moderation:
get:
tags:
- Admin
summary: List moderation queue
description: |
Retrieve items pending moderation.
**Admin or Moderator role required**
operationId: getModerationQueue
security:
- BearerAuth: []
parameters:
- name: status
in: query
schema:
type: string
enum: [pending, approved, rejected, escalated]
default: pending
- name: page
in: query
schema:
type: integer
default: 1
- name: limit
in: query
schema:
type: integer
default: 50
responses:
'200':
description: Moderation queue retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
items:
type: array
items:
$ref: '#/components/schemas/ModerationItem'
pagination:
$ref: '#/components/schemas/Pagination'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/admin/moderation/{id}:
get:
tags:
- Admin
summary: Get moderation item
description: |
Retrieve a single moderation item by ID.
**Admin or Moderator role required**
operationId: getModerationItem
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Moderation item retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
item:
$ref: '#/components/schemas/ModerationItem'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/admin/moderation/{id}/review:
post:
tags:
- Admin
summary: Review moderation item
description: |
Approve, reject, or escalate a moderation item.
**Admin or Moderator role required**
operationId: reviewModerationItem
security:
- BearerAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- action
properties:
action:
type: string
enum: [approve, reject, escalate]
example: approve
notes:
type: string
example: Content meets guidelines
responses:
'200':
description: Review completed successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
item:
$ref: '#/components/schemas/ModerationItem'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/admin/stats:
get:
tags:
- Admin
summary: Get system statistics
description: |
Retrieve overall system statistics (users, documents, submissions, moderation queue).
**Admin or Moderator role required**
operationId: getSystemStats
security:
- BearerAuth: []
responses:
'200':
description: Statistics retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
stats:
type: object
properties:
users:
type: object
properties:
total:
type: integer
example: 125
admins:
type: integer
example: 3
moderators:
type: integer
example: 5
documents:
type: object
properties:
total:
type: integer
example: 45
published:
type: integer
example: 42
archived:
type: integer
example: 3
moderation:
type: object
properties:
pending:
type: integer
example: 12
approved:
type: integer
example: 380
rejected:
type: integer
example: 45
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/admin/activity:
get:
tags:
- Admin
summary: Get activity log
description: |
Retrieve recent admin activity (last 100 actions).
**Admin role required**
operationId: getActivityLog
security:
- BearerAuth: []
parameters:
- name: limit
in: query
schema:
type: integer
default: 100
maximum: 500
responses:
'200':
description: Activity log retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
activities:
type: array
items:
type: object
properties:
timestamp:
type: string
format: date-time
userId:
type: string
email:
type: string
action:
type: string
example: document_update
details:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
# ==================== Components ====================
components:
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: |
JWT token obtained from /api/auth/login endpoint.
Include in Authorization header: `Authorization: Bearer <token>`
schemas:
User:
type: object
properties:
_id:
type: string
example: 68e3a6fb21af2fd194bf4b50
email:
type: string
format: email
example: admin@tractatus.local
role:
type: string
enum: [admin, moderator, user]
example: admin
created_at:
type: string
format: date-time
Document:
type: object
properties:
_id:
type: string
example: 67890abc12345def67890abc
title:
type: string
example: Introduction to the Tractatus Framework
slug:
type: string
example: introduction-to-tractatus
quadrant:
type: string
enum: [STRATEGIC, OPERATIONAL, TACTICAL, SYSTEM, STOCHASTIC]
example: STRATEGIC
content_markdown:
type: string
description: Document content in Markdown format
content_html:
type: string
description: Auto-generated HTML from Markdown
status:
type: string
enum: [draft, published, archived]
default: published
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
created_by:
type: string
description: User ID
DocumentInput:
type: object
required:
- title
- slug
- quadrant
- content_markdown
properties:
title:
type: string
example: Core Concepts of the Tractatus Framework
slug:
type: string
pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
example: core-concepts
quadrant:
type: string
enum: [STRATEGIC, OPERATIONAL, TACTICAL, SYSTEM, STOCHASTIC]
example: OPERATIONAL
content_markdown:
type: string
description: Document content in Markdown format
status:
type: string
enum: [draft, published, archived]
default: published
FrameworkStatus:
type: object
properties:
success:
type: boolean
example: true
components:
type: object
properties:
InstructionPersistenceClassifier:
type: string
enum: [ACTIVE, INACTIVE, ERROR]
example: ACTIVE
CrossReferenceValidator:
type: string
enum: [ACTIVE, INACTIVE, ERROR]
example: ACTIVE
BoundaryEnforcer:
type: string
enum: [ACTIVE, INACTIVE, ERROR]
example: ACTIVE
ContextPressureMonitor:
type: string
enum: [ACTIVE, INACTIVE, ERROR]
example: ACTIVE
MetacognitiveVerifier:
type: string
enum: [ACTIVE, INACTIVE, ERROR]
example: ACTIVE
instructions:
type: object
properties:
total:
type: integer
example: 28
HIGH:
type: integer
example: 27
MEDIUM:
type: integer
example: 1
LOW:
type: integer
example: 0
pressure:
type: object
properties:
level:
type: string
enum: [NORMAL, ELEVATED, HIGH, CRITICAL, DANGEROUS]
example: NORMAL
score:
type: number
example: 0.033
InstructionClassification:
type: object
properties:
quadrant:
type: string
enum: [STRATEGIC, OPERATIONAL, TACTICAL, SYSTEM, STOCHASTIC]
example: SYSTEM
persistence:
type: string
enum: [HIGH, MEDIUM, LOW]
example: HIGH
temporal_scope:
type: string
enum: [SESSION, PROJECT, PERMANENT]
example: PROJECT
verification_required:
type: string
enum: [MANDATORY, RECOMMENDED, OPTIONAL]
example: MANDATORY
reasoning:
type: string
example: Port configuration affects system infrastructure
confidence:
type: number
format: float
minimum: 0
maximum: 1
example: 0.95
ValidationResult:
type: object
properties:
status:
type: string
enum: [PASS, WARN, BLOCK]
example: BLOCK
conflicts:
type: array
items:
type: object
properties:
instruction_id:
type: string
text:
type: string
example: Always use MongoDB on port 27027
severity:
type: string
enum: [CRITICAL, HIGH, MEDIUM, LOW]
example: CRITICAL
trainingOverride:
type: boolean
example: true
description: True if action appears to override training patterns (27027 failure mode)
recommendation:
type: string
example: Action conflicts with HIGH persistence instruction (inst_002). Recommend maintaining port 27027.
BoundaryEnforcement:
type: object
properties:
status:
type: string
enum: [ALLOW, BLOCK, ESCALATE]
example: BLOCK
boundary:
type: string
enum: [PRIVACY, ETHICS, SOVEREIGNTY, STRATEGIC]
example: ETHICS
description: Which values boundary was crossed
reasoning:
type: string
example: Content moderation decisions involve ethical judgments about acceptable speech
alternatives:
type: array
items:
type: string
example:
- Define clear content policy guidelines
- Implement automated flagging system
- Escalate to human moderators for final decision
requiresHuman:
type: boolean
example: true
PressureAnalysis:
type: object
properties:
level:
type: string
enum: [NORMAL, ELEVATED, HIGH, CRITICAL, DANGEROUS]
example: NORMAL
score:
type: number
format: float
minimum: 0
maximum: 1
example: 0.25
factors:
type: object
properties:
tokenPressure:
type: number
example: 0.25
description: Token usage / budget
messagePressure:
type: number
example: 0.15
description: Message count / threshold
errorPressure:
type: number
example: 0.1
description: Error rate
complexityPressure:
type: number
example: 0.6
description: Task complexity score
instructionVolume:
type: number
example: 0.28
description: Active instruction density
recommendation:
type: string
example: Session health is normal. Continue work.
triggerHandoff:
type: boolean
example: false
description: True if pressure warrants session handoff
MetacognitiveVerification:
type: object
properties:
decision:
type: string
enum: [PROCEED, REVIEW, BLOCK]
example: PROCEED
confidence:
type: number
format: float
minimum: 0
maximum: 1
example: 0.85
concerns:
type: array
items:
type: string
example:
- Consider rate limiting for authentication endpoints
alternatives:
type: array
items:
type: object
properties:
description:
type: string
pros:
type: array
items:
type: string
cons:
type: array
items:
type: string
scopeCreep:
type: boolean
example: false
description: True if action appears to exceed original scope
alignment:
type: object
properties:
strategic:
type: number
example: 0.9
operational:
type: number
example: 0.85
tactical:
type: number
example: 0.8
AuditLog:
type: object
properties:
_id:
type: string
timestamp:
type: string
format: date-time
userId:
type: string
email:
type: string
format: email
action:
type: string
example: document_create
resource:
type: string
example: documents
resourceId:
type: string
details:
type: object
ipAddress:
type: string
example: 192.168.1.100
userAgent:
type: string
ModerationItem:
type: object
properties:
_id:
type: string
type:
type: string
enum: [case_submission, media_inquiry, comment]
example: case_submission
status:
type: string
enum: [pending, approved, rejected, escalated]
example: pending
submittedAt:
type: string
format: date-time
content:
type: object
reviewedBy:
type: string
description: User ID of reviewer
reviewedAt:
type: string
format: date-time
reviewNotes:
type: string
Pagination:
type: object
properties:
page:
type: integer
example: 1
limit:
type: integer
example: 50
total:
type: integer
example: 250
pages:
type: integer
example: 5
Error:
type: object
properties:
error:
type: string
example: Bad Request
message:
type: string
example: Missing required field 'text'
details:
type: object
description: Additional error details (optional)
responses:
BadRequest:
description: Bad Request - Invalid input
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Bad Request
message: Missing required field 'text'
Unauthorized:
description: Unauthorized - Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Unauthorized
message: Authentication required. Please provide a valid JWT token.
Forbidden:
description: Forbidden - Insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Forbidden
message: Admin role required for this endpoint
NotFound:
description: Not Found - Resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Not Found
message: Document not found
security:
- BearerAuth: []