Files
hncb-fusion-deid-demo/fusion/openapi.yaml
Conan Scott 1f8c45fdf2 docs(fusion): add openapi.yaml (tokenize + restore)
OpenAPI 3.0 spec for the de-id transforms with concrete request/response
schemas, both /tokenize and /restore, an x-api-key securityScheme for
backend-direct calls, and both servers (backend custom domain + Fusion listener,
which injects the key).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 14:32:38 +10:00

131 lines
4.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

openapi: 3.0.3
info:
title: HNCB De-identification API (tokenize / restore)
version: 1.0.0
description: |
Ingress/egress transforms for the reversible PII de-identification round trip.
Two access paths:
- **Direct to the backend** (`hncb-deid.apim-apac-demo.com`): the caller MUST send
the `x-api-key` shared secret (this spec's `ApiKeyAuth`).
- **Via Fusion** (the gateway listener): the gateway injects `x-api-key` on the
backend leg, so the portal/UI caller sends only the JSON body — no key. For that
path, treat the security requirement as satisfied by the gateway.
servers:
- url: https://hncb-deid.apim-apac-demo.com
description: Backend (custom domain) — requires x-api-key
- url: https://aus-design.sandbox.fusion.services.axway.com:4443
description: Fusion listener — gateway injects the key; send body only
# Backend-direct requirement. Fusion callers omit the header (the gateway adds it).
security:
- ApiKeyAuth: []
paths:
/tokenize:
post:
summary: Tokenize a query (de-identify PII before it leaves for the cloud)
operationId: tokenizeQuery
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- query
properties:
query:
type: string
example: 請幫我整理王小明最近三個月的理財往來,並給我下次拜訪話術。
responses:
"200":
description: Successful tokenization response
content:
application/json:
schema:
type: object
properties:
deidentified_prompt:
type: string
description: The query with PII replaced by tokens.
example: 請幫我整理CUST_264978最近三個月的理財往來並給我下次拜訪話術。
session_id:
type: string
description: Correlates this request's tokens for later /restore.
example: 9d15023985154d79a477d4e5b8b2c87c
tokens:
type: array
items:
type: object
properties:
token:
type: string
example: CUST_264978
type:
type: string
description: Entity type detected (PERSON, TW_ROC_ID).
example: PERSON
"400":
description: Missing/invalid body (query required)
"401":
description: Unauthorized (missing/invalid API key)
"502":
description: Detector unavailable
/restore:
post:
summary: Restore (detokenize) identity in a tokenized response
operationId: restoreIdentity
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- session_id
- text
properties:
session_id:
type: string
description: The session_id returned by /tokenize.
example: 9d15023985154d79a477d4e5b8b2c87c
text:
type: string
description: Tokenized text (e.g. the agent's answer) to re-identify.
example: 針對客戶 CUST_264978 的保守型投資組合,建議…
responses:
"200":
description: Successful restore response
content:
application/json:
schema:
type: object
properties:
final:
type: string
description: Text with identity re-attached (envelope + inline tokens).
example: |
(客戶:王小明)
針對客戶 王小明 的保守型投資組合,建議…
restored:
type: integer
description: Number of tokens restored for this session.
example: 1
"400":
description: Missing session_id or text
"401":
description: Unauthorized (missing/invalid API key)
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: |
Shared secret (`tokenize_api_key`). Required for direct backend calls;
injected by Fusion on the gateway path.