Initial commit

This commit is contained in:
jade
2026-08-04 21:59:08 +09:00
commit b698c0e8f8
290 changed files with 16715 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"claimNo": {
"type": "string",
"description": "청구번호. CLM 다음 숫자 13자리 형식이다.",
"pattern": "^CLM[0-9]{13}$",
"examples": ["CLM2026070100123"]
},
"contractNo": {
"type": "string",
"description": "계약번호. 숫자 11자리 형식이다.",
"pattern": "^[0-9]{11}$",
"examples": ["10023456789"]
},
"status": {
"type": "string",
"enum": [
"RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED",
"APPROVED", "PAID", "REJECTED", "WITHDRAWN"
]
},
"size": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
}
},
"required": [],
"additionalProperties": false,
"anyOf": [
{ "required": ["claimNo"] },
{ "required": ["contractNo"] }
]
}

View File

@@ -0,0 +1,81 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"description": "Claim search response. This schema intentionally excludes employee identifiers, customer names, contact details, account information, and other PII.",
"properties": {
"resultCode": {
"type": "string",
"enum": ["SUCCESS", "FAILURE"],
"description": "Machine-readable execution result code."
},
"resultLabel": {
"type": "string",
"description": "User-readable label for resultCode."
},
"status": {
"type": "string",
"enum": ["RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED", "APPROVED", "PAID", "REJECTED", "WITHDRAWN"],
"description": "Current claim processing status code."
},
"statusLabel": {
"type": "string",
"description": "User-readable label for status."
},
"approvedAmount": {
"anyOf": [
{ "type": "number", "minimum": 0 },
{ "type": "null" }
],
"description": "Approved amount. It is null before review and must not be interpreted as zero."
},
"rejectionReason": {
"type": ["string", "null"],
"maxLength": 200,
"description": "Has a value only when status is REJECTED. It is null for every other status."
},
"items": {
"type": "array",
"description": "Claim summaries ordered by receivedDate descending. No personally identifiable information is included.",
"items": {
"type": "object",
"properties": {
"status": { "type": "string", "description": "Claim status code." },
"statusLabel": { "type": "string", "description": "User-readable label for status." },
"receivedDate": { "type": "string", "format": "date", "description": "Claim received date." },
"approvedAmount": {
"anyOf": [
{ "type": "number", "minimum": 0 },
{ "type": "null" }
],
"description": "Null before review; do not interpret as zero."
}
},
"required": ["status", "statusLabel", "receivedDate"],
"additionalProperties": false
}
},
"hasMore": {
"type": "boolean",
"description": "True when additional results exist beyond this response."
},
"totalCount": {
"type": "integer",
"minimum": 0,
"description": "Total number of matched claims."
}
},
"required": ["resultCode", "resultLabel", "status", "statusLabel", "items", "hasMore", "totalCount"],
"allOf": [
{
"if": {
"properties": { "status": { "const": "REJECTED" } },
"required": ["status"]
},
"then": {
"properties": { "rejectionReason": { "type": "string", "minLength": 1 } },
"required": ["rejectionReason"]
}
}
],
"additionalProperties": false
}