165 lines
4.4 KiB
YAML
165 lines
4.4 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: CLAN Visibility Guard API
|
|
version: 1.0.0
|
|
description: Visibility policy checks and sensitivity classification for CLAN/ZHOS.
|
|
servers:
|
|
- url: http://clan-visibility-guard:8112
|
|
tags:
|
|
- name: health
|
|
- name: visibility
|
|
paths:
|
|
/health:
|
|
get:
|
|
tags: [health]
|
|
summary: Service health check
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/HealthResponse"
|
|
/visibility/check_downgrade:
|
|
post:
|
|
tags: [visibility]
|
|
summary: Check if requested visibility downgrade is allowed
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/VisibilityCheckRequest"
|
|
responses:
|
|
"200":
|
|
description: Downgrade check result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/VisibilityCheckResponse"
|
|
"400":
|
|
description: Invalid visibility level
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
/visibility/classify:
|
|
post:
|
|
tags: [visibility]
|
|
summary: Classify text sensitivity and recommend level
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClassifyRequest"
|
|
responses:
|
|
"200":
|
|
description: Classification result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ClassifyResponse"
|
|
/visibility/redact_for_level:
|
|
post:
|
|
tags: [visibility]
|
|
summary: Redact text for target visibility level
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/RedactRequest"
|
|
responses:
|
|
"200":
|
|
description: Redaction result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/RedactResponse"
|
|
"400":
|
|
description: Invalid visibility level
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorResponse"
|
|
|
|
components:
|
|
schemas:
|
|
VisibilityLevel:
|
|
type: string
|
|
enum: [public, interclan, incircle, soulsafe, sacred]
|
|
HealthResponse:
|
|
type: object
|
|
required: [status, service]
|
|
properties:
|
|
status:
|
|
type: string
|
|
example: ok
|
|
service:
|
|
type: string
|
|
example: clan-visibility-guard
|
|
ErrorResponse:
|
|
type: object
|
|
required: [detail]
|
|
properties:
|
|
detail:
|
|
oneOf:
|
|
- type: string
|
|
- type: object
|
|
VisibilityCheckRequest:
|
|
type: object
|
|
required: [current_level, requested_level]
|
|
properties:
|
|
current_level:
|
|
$ref: "#/components/schemas/VisibilityLevel"
|
|
requested_level:
|
|
$ref: "#/components/schemas/VisibilityLevel"
|
|
VisibilityCheckResponse:
|
|
type: object
|
|
required: [allowed, reason, current_level, requested_level]
|
|
properties:
|
|
allowed:
|
|
type: boolean
|
|
reason:
|
|
type: string
|
|
enum: [ok, downgrade_requires_consent]
|
|
current_level:
|
|
$ref: "#/components/schemas/VisibilityLevel"
|
|
requested_level:
|
|
$ref: "#/components/schemas/VisibilityLevel"
|
|
ClassifyRequest:
|
|
type: object
|
|
required: [text]
|
|
properties:
|
|
text:
|
|
type: string
|
|
ClassifyResponse:
|
|
type: object
|
|
required: [recommended_level, sensitivity_flags]
|
|
properties:
|
|
recommended_level:
|
|
$ref: "#/components/schemas/VisibilityLevel"
|
|
sensitivity_flags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
RedactRequest:
|
|
type: object
|
|
required: [text, target_level]
|
|
properties:
|
|
text:
|
|
type: string
|
|
target_level:
|
|
$ref: "#/components/schemas/VisibilityLevel"
|
|
RedactResponse:
|
|
type: object
|
|
required: [target_level, redacted_text, changed]
|
|
properties:
|
|
target_level:
|
|
$ref: "#/components/schemas/VisibilityLevel"
|
|
redacted_text:
|
|
type: string
|
|
changed:
|
|
type: boolean
|