{"openapi":"3.1.0","info":{"title":"ShinrAI PII API","description":"PII detection and reversible replacement. Unit: 1 record = 1.000 characters. Authenticate with `Authorization: Bearer <api key>`.","version":"1.0.0"},"paths":{"/console/login":{"post":{"tags":["console"],"summary":"Login","operationId":"login_console_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/console/session":{"get":{"tags":["console"],"summary":"Session","operationId":"session_console_session_get","parameters":[{"name":"t","in":"query","required":true,"schema":{"type":"string","title":"T"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/console/logout":{"post":{"tags":["console"],"summary":"Logout","operationId":"logout_console_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/console/me":{"get":{"tags":["console"],"summary":"Me","operationId":"me_console_me_get","parameters":[{"name":"refresh","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Refresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/console/usage":{"get":{"tags":["console"],"summary":"Usage","operationId":"usage_console_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/console/keys":{"post":{"tags":["console"],"summary":"Create Key","operationId":"create_key_console_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/console/keys/{kid}":{"delete":{"tags":["console"],"summary":"Revoke Key","operationId":"revoke_key_console_keys__kid__delete","parameters":[{"name":"kid","in":"path","required":true,"schema":{"type":"integer","title":"Kid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/console/checkout/b2b":{"post":{"tags":["console"],"summary":"Checkout B2B","operationId":"checkout_b2b_console_checkout_b2b_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/console/portal":{"get":{"tags":["console"],"summary":"Portal","operationId":"portal_console_portal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hooks/revenuecat":{"post":{"tags":["hooks"],"summary":"Revenuecat Hook","operationId":"revenuecat_hook_hooks_revenuecat_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hooks/stripe":{"post":{"tags":["hooks"],"summary":"Stripe Hook","operationId":"stripe_hook_hooks_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/healthz":{"get":{"tags":["ops"],"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/readyz":{"get":{"tags":["ops"],"summary":"Readyz","operationId":"readyz_readyz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/metrics":{"get":{"tags":["ops"],"summary":"Metrics","operationId":"metrics_metrics_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/admin/cache/invalidate":{"post":{"tags":["ops"],"summary":"Admin Invalidate","operationId":"admin_invalidate_admin_cache_invalidate_post","parameters":[{"name":"app_user_id","in":"query","required":true,"schema":{"type":"string","title":"App User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/journal":{"get":{"tags":["ops"],"summary":"Admin Journal","operationId":"admin_journal_admin_journal_get","parameters":[{"name":"app_user_id","in":"query","required":true,"schema":{"type":"string","title":"App User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/webhook-events":{"get":{"tags":["ops"],"summary":"Admin Events","operationId":"admin_events_admin_webhook_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/flush":{"post":{"tags":["ops"],"summary":"Admin Flush","operationId":"admin_flush_admin_flush_post","parameters":[{"name":"app_user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analyze":{"post":{"tags":["api"],"summary":"Analyze","operationId":"analyze_v1_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/redact":{"post":{"tags":["api"],"summary":"Redact","operationId":"redact_v1_redact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedactRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["api"],"summary":"Models","operationId":"models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/usage":{"get":{"tags":["api"],"summary":"Usage","operationId":"usage_v1_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AnalyzeRequest":{"properties":{"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"texts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Texts"},"model":{"type":"string","title":"Model","default":"shinrai-latest"},"tier":{"anyOf":[{"type":"string","enum":["standard","realtime","batch"]},{"type":"null"}],"title":"Tier"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","default":0.7},"merge_persons":{"type":"boolean","title":"Merge Persons","default":true}},"type":"object","title":"AnalyzeRequest"},"CheckoutRequest":{"properties":{"product_id":{"type":"string","title":"Product Id"}},"type":"object","required":["product_id"],"title":"CheckoutRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeyRequest":{"properties":{"label":{"type":"string","maxLength":24,"title":"Label","default":"default"}},"type":"object","title":"KeyRequest"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"LoginRequest"},"RedactRequest":{"properties":{"text":{"type":"string","title":"Text"},"model":{"type":"string","title":"Model","default":"shinrai-latest"},"tier":{"anyOf":[{"type":"string","enum":["standard","realtime","batch"]},{"type":"null"}],"title":"Tier"},"mode":{"type":"string","enum":["replace","mask","label"],"title":"Mode","default":"replace"},"mask_char":{"type":"string","maxLength":1,"minLength":1,"title":"Mask Char","default":"*"},"threshold":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Threshold","default":0.7},"known_replacements":{"additionalProperties":{"type":"string"},"type":"object","title":"Known Replacements"},"reserved_replacements":{"items":{"type":"string"},"type":"array","title":"Reserved Replacements"}},"type":"object","required":["text"],"title":"RedactRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}