{"openapi":"3.2.1","info":{"title":"MyanLex API","version":"0.1.0","summary":"Deterministic Myanmar-language text processing","description":"MyanLex exposes the framework-independent language engine through a\nversioned JSON API. All text spans use zero-based, half-open Unicode\ncode-point offsets, never UTF-8 bytes or JavaScript UTF-16 code units.\n\nOperations are explicit: detection never converts, conversion never\nauto-detects, and normalization uses only the documented safe NFC profile.\n\nProtected routes enforce short-window rate limits. Optional organization-wide\nUTC monthly quotas apply to persisted API keys before handler validation.\nA batch reserves one request and all submitted code points. Rejections use\n429 rate_limited or quota_exceeded with Retry-After; unavailable enforcement\nuses 503 service_unavailable. RateLimit headers describe short windows only.\n","license":{"name":"MIT","identifier":"MIT"}},"servers":[{"url":"https://api.myanlex.dev/v1","description":"Production"},{"url":"/v1","description":"Same-origin development or self-hosting"}],"security":[{"bearerApiKey":[]}],"tags":[{"name":"Platform","description":"Session-protected organization onboarding and project management"},{"name":"Health","description":"Service health"},{"name":"Text","description":"Encoding and normalization operations"},{"name":"Burmese","description":"Burmese-specific linguistic operations"},{"name":"Transliteration","description":"Explicit Myanmar-to-Latin schemes"},{"name":"Tokenization","description":"Lossless lexical and script boundaries"},{"name":"Batch","description":"Ordered multi-item text processing with isolated item failures"}],"paths":{"/platform/organizations/{organizationId}/quota":{"get":{"operationId":"getOrganizationQuota","summary":"Read the current organization plan and monthly allowance (usage.read)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Requires a verified member session and the dynamic usage.read permission.\nNo project.read permission or project is required. Non-members receive 404.\nRead-only database snapshot; never creates or consumes a reservation.\nCounts span all organization projects and keys. Disabled enforcement shows\nretained reservations, not uncounted traffic. Null limits/remaining mean\nunlimited. Remaining is clamped to zero after a plan downgrade. Values are\ndecimal strings, not floating-point numbers. This is not billing metering.\n","parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Current UTC calendar-month quota snapshot.","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaReport"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations":{"get":{"operationId":"listOrganizations","summary":"List organizations for the current member","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Requires a verified account session; API keys are not accepted.\nPOST and PATCH require Origin to exactly match AUTH_PUBLIC_URL.\nNon-members receive 404; missing member permissions receive 403.\n","parameters":[{"name":"after","in":"query","description":"Exclusive UUID cursor returned as nextCursor by a prior page.","schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","description":"Maximum results per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"409":{"$ref":"#/components/responses/WorkspaceConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}},"post":{"operationId":"createOrganization","summary":"Create organization and initial membership","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Requires a verified account session; API keys are not accepted.\nPOST and PATCH require Origin to exactly match AUTH_PUBLIC_URL.\nNon-members receive 404; missing member permissions receive 403.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationInput"}}}},"responses":{"201":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"409":{"$ref":"#/components/responses/WorkspaceConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}":{"parameters":[{"name":"organizationId","in":"path","required":true,"description":"Resource UUID; organization membership is checked independently.","schema":{"type":"string","format":"uuid"}}],"get":{"operationId":"getOrganization","summary":"Get organization and current member permissions","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Requires a verified account session; API keys are not accepted.\nPOST and PATCH require Origin to exactly match AUTH_PUBLIC_URL.\nNon-members receive 404; missing member permissions receive 403.\n","responses":{"200":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAccess"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"409":{"$ref":"#/components/responses/WorkspaceConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}/projects":{"parameters":[{"name":"organizationId","in":"path","required":true,"description":"Resource UUID; organization membership is checked independently.","schema":{"type":"string","format":"uuid"}}],"get":{"operationId":"listProjects","summary":"List projects (project.read)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Requires a verified account session; API keys are not accepted.\nPOST and PATCH require Origin to exactly match AUTH_PUBLIC_URL.\nNon-members receive 404; missing member permissions receive 403.\n","parameters":[{"name":"after","in":"query","description":"Exclusive UUID cursor returned as nextCursor by a prior page.","schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","description":"Maximum results per page.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"409":{"$ref":"#/components/responses/WorkspaceConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}},"post":{"operationId":"createProject","summary":"Create project (project.create)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Requires a verified account session; API keys are not accepted.\nPOST and PATCH require Origin to exactly match AUTH_PUBLIC_URL.\nNon-members receive 404; missing member permissions receive 403.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInput"}}}},"responses":{"201":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"409":{"$ref":"#/components/responses/WorkspaceConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}/projects/{projectId}":{"get":{"operationId":"getProject","summary":"Read a project (project.read)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Verified session required. Membership and current dynamic permissions\nare checked on every request. Writes require the configured trusted Origin.\n","responses":{"200":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}},"parameters":[{"name":"organizationId","in":"path","required":true,"description":"Resource UUID; organization membership is checked independently.","schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"description":"Resource UUID; organization membership is checked independently.","schema":{"type":"string","format":"uuid"}}],"patch":{"operationId":"updateProject","summary":"Update project (project.update)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Requires a verified account session; API keys are not accepted.\nPOST and PATCH require Origin to exactly match AUTH_PUBLIC_URL.\nNon-members receive 404; missing member permissions receive 403.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdateInput"}}}},"responses":{"200":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"409":{"$ref":"#/components/responses/WorkspaceConflict"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}/projects/{projectId}/api-keys":{"parameters":[{"name":"organizationId","in":"path","required":true,"description":"Tenant-scoped resource identifier.","schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"description":"Tenant-scoped resource identifier.","schema":{"type":"string","format":"uuid"}}],"get":{"operationId":"listApiKeys","summary":"List project keys (api_key.read)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Verified session required. Membership and current dynamic permissions\nare checked on every request. Writes require the configured trusted Origin.\n","parameters":[{"name":"after","in":"query","description":"Last key UUID from the previous page.","schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","description":"Maximum page size.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}}],"responses":{"200":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}},"post":{"operationId":"createApiKey","summary":"Create a scoped project key (api_key.create)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Verified session required. Membership and current dynamic permissions\nare checked on every request. Writes require the configured trusted Origin.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyInput"}}}},"responses":{"201":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedApiKey"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}/projects/{projectId}/api-keys/{keyId}/revoke":{"parameters":[{"name":"organizationId","in":"path","required":true,"description":"Tenant-scoped resource identifier.","schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"description":"Tenant-scoped resource identifier.","schema":{"type":"string","format":"uuid"}},{"name":"keyId","in":"path","required":true,"description":"Tenant-scoped resource identifier.","schema":{"type":"string","format":"uuid"}}],"post":{"operationId":"revokeApiKey","summary":"Irreversibly revoke a key (api_key.revoke)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Verified session required. Membership and current dynamic permissions\nare checked on every request. Writes require the configured trusted Origin.\n","responses":{"200":{"description":"Successful operation. Responses are private and no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}/projects/{projectId}/usage":{"parameters":[{"name":"organizationId","in":"path","required":true,"description":"Tenant-scoped resource identifier.","schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"description":"Tenant-scoped resource identifier.","schema":{"type":"string","format":"uuid"}}],"get":{"operationId":"getProjectUsage","summary":"Report recorded project usage (usage.read)","tags":["Platform"],"security":[{"accountSession":[]}],"description":"Verified session and current membership/usage.read required; bearer keys\nare not accepted. Inclusive UTC date range, 1–90 days, no future dates,\nearliest 1970-01-01. Supply both dates or neither (last 30 days including\ntoday). Today's bucket is partial. Missing days are zero-filled.\nThis is best-effort recorded usage, not a billing statement. Bootstrap\ntraffic and rejections before the interceptor, including rate limits,\nare excluded. Persistence failures can leave gaps. Batch HTTP requests\ncount once; item failures within successful responses are not HTTP errors.\nSubmitted characters are Unicode code points, including failed requests\nthat reached the interceptor. No submitted text is retained or returned.\nCounter strings preserve exact integer precision. Handler durations exclude\nnetwork, guards and usage persistence. Totals match the returned buckets.\n","parameters":[{"name":"from","in":"query","description":"Inclusive start UTC calendar date; requires the other date.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","description":"Inclusive end UTC calendar date; requires the other date.","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"Recorded usage snapshot; private, no-store.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageReport"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}/projects/{projectId}/playground/execute":{"post":{"tags":["Platform"],"operationId":"executePlayground","summary":"Execute an allowlisted language operation","description":"Current verified session, membership and project permissions are rechecked. Snapshots are user-submitted artifacts, not server attestations.","security":[{"accountSession":[]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundExecution"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundRun"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}/projects/{projectId}/playground/runs":{"post":{"tags":["Platform"],"operationId":"savePlaygroundRun","summary":"Explicitly save a private snapshot","description":"Current verified session, membership and project permissions are rechecked. Snapshots are user-submitted artifacts, not server attestations.","security":[{"accountSession":[]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundSave"}}}},"responses":{"201":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundSavedRun"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"409":{"description":"Save identifier conflict or active saved-run limit exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}},"get":{"tags":["Platform"],"operationId":"listPlaygroundRuns","summary":"List owned unexpired saved runs","description":"Current verified session, membership and project permissions are rechecked. Snapshots are user-submitted artifacts, not server attestations.","security":[{"accountSession":[]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"after","in":"query","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundRunPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/platform/organizations/{organizationId}/projects/{projectId}/playground/runs/{id}":{"get":{"tags":["Platform"],"operationId":"getPlaygroundRun","summary":"Retrieve an owned snapshot without execution","description":"Current verified session, membership and project permissions are rechecked. Snapshots are user-submitted artifacts, not server attestations.","security":[{"accountSession":[]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundSavedRun"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}},"patch":{"tags":["Platform"],"operationId":"renamePlaygroundRun","summary":"Rename an owned snapshot","description":"Current verified session, membership and project permissions are rechecked. Snapshots are user-submitted artifacts, not server attestations.","security":[{"accountSession":[]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundRename"}}}},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundRunMetadata"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}},"delete":{"tags":["Platform"],"operationId":"deletePlaygroundRun","summary":"Delete an owned snapshot","description":"Current verified session, membership and project permissions are rechecked. Snapshots are user-submitted artifacts, not server attestations.","security":[{"accountSession":[]}],"parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaygroundDeleted"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/WorkspaceNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/health/ready":{"get":{"operationId":"getReadiness","summary":"Check readiness to receive traffic","description":"Checks configured PostgreSQL connectivity and the active Redis limiter\nconnection without consuming quota or rate-limit allowance. Unconfigured\ndependencies are skipped. Results are cached for one second. This is not\na schema, permission, SMTP, OAuth or linguistic-correctness check.\n","tags":["Health"],"security":[],"responses":{"200":{"description":"Configured dependencies are reachable.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","const":"ready"}}}}}},"503":{"description":"Starting, shutting down, or a configured dependency is unavailable.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["status"],"properties":{"status":{"type":"string","const":"not_ready"}}}}}}}}},"/health":{"get":{"operationId":"getHealth","summary":"Check service health","tags":["Health"],"security":[],"responses":{"200":{"description":"The service is ready to accept requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}},"500":{"$ref":"#/components/responses/InternalError"}}}},"/text/detect":{"post":{"operationId":"detectText","summary":"Detect Unicode or Zawgyi Myanmar text","description":"Non-Myanmar spans are preserved in the input but omitted from encoding segments.","tags":["Text"],"requestBody":{"$ref":"#/components/requestBodies/TextRequest"},"responses":{"200":{"description":"Conservative encoding detection result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EncodingDetectionResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/text/normalize":{"post":{"operationId":"normalizeText","summary":"Apply safe Unicode normalization","description":"Applies NFC only and does not convert Zawgyi or repair spelling.","tags":["Text"],"requestBody":{"$ref":"#/components/requestBodies/TextRequest"},"responses":{"200":{"description":"Unicode NFC normalization result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NormalizationResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/text/convert":{"post":{"operationId":"convertText","summary":"Convert explicitly between Unicode and Zawgyi","description":"The source encoding must be supplied; the direction is never chosen automatically.\nSet validateSource=true for a conservative preflight. Direction-changing\nrequests return 400 encoding_mixed for mixed evidence, encoding_mismatch\nfor evidence contrary to from, or encoding_uncertain for any unknown\nMyanmar segment. No partial output is returned. Equal directions remain\nexact no-ops. Detection can miss encoding switches inside a run and does\nnot prove linguistic correctness. Omission/false preserves unchecked conversion.\n","tags":["Text"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertTextRequest"}}}},"responses":{"200":{"description":"Explicit encoding conversion result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EncodingConversionResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/syllabify":{"post":{"operationId":"syllabifyText","summary":"Segment Burmese orthographic syllables","description":"Returns written syllable units, not dictionary words.","tags":["Burmese"],"requestBody":{"$ref":"#/components/requestBodies/TextRequest"},"responses":{"200":{"description":"Lossless Burmese orthographic segmentation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyllabificationResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/orthography/validate":{"post":{"operationId":"validateOrthography","summary":"Validate supported Burmese orthographic structure","description":"Structural validation does not claim dictionary spelling correctness.","tags":["Burmese"],"requestBody":{"$ref":"#/components/requestBodies/TextRequest"},"responses":{"200":{"description":"Structural validation result with code-point spans.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrthographyValidationResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/transliterate":{"post":{"operationId":"transliterateText","summary":"Transliterate Myanmar text to Latin","description":"Applies the selected published mapping and preserves unsupported input.","tags":["Transliteration"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransliterateTextRequest"}}}},"responses":{"200":{"description":"Source-preserving transliteration result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransliterationResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/tokenize":{"post":{"operationId":"tokenizeText","summary":"Tokenize mixed Myanmar text","description":"Returns lexical/script units and does not claim dictionary word segmentation.","tags":["Tokenization"],"requestBody":{"$ref":"#/components/requestBodies/TextRequest"},"responses":{"200":{"description":"Lossless tokens and scoped Myanmar/Latin script report.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenizationResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/batch/syllabify":{"post":{"operationId":"batchSyllabify","summary":"Segment multiple texts into Burmese orthographic syllables","description":"Processes items in request order. Invalid Unicode or overlong text\nfails only the affected item. Batch-wide limit violations fail the\nrequest.\n","tags":["Batch"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSyllabifyRequest"}}}},"responses":{"200":{"description":"Ordered syllabification results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSyllabifyResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}},"/batch/transliterate":{"post":{"operationId":"batchTransliterate","summary":"Transliterate multiple Myanmar texts to Latin","description":"Applies one explicit scheme to every item and preserves request order.\nInvalid Unicode or overlong text fails only the affected item.\n","tags":["Batch"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchTransliterateRequest"}}}},"responses":{"200":{"description":"Ordered transliteration results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchTransliterateResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/PlatformUnavailable"}}}}},"components":{"securitySchemes":{"accountSession":{"type":"apiKey","in":"cookie","name":"better-auth.session_token","description":"Better Auth signed HttpOnly session cookie; HTTPS uses the\n__Secure-better-auth.session_token name. Sign in through /api/auth.\nBrowser clients send cookies automatically; do not paste secrets into docs.\n"},"bearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"API-Key","description":"A MyanLex API key supplied as a bearer token."}},"requestBodies":{"TextRequest":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextRequest"}}}}},"responses":{"WorkspaceNotFound":{"description":"The resource does not exist or is not visible to this member.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"WorkspaceConflict":{"description":"The slug is already in use.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"PlatformUnavailable":{"description":"Account authentication, persistence, or limit enforcement is unavailable.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"BadRequest":{"description":"The request body, parameters, or Unicode text is invalid.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Unauthorized":{"description":"The required API key or account session is missing or invalid.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Forbidden":{"description":"Required permissions, email verification, or a trusted Origin are missing.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"PayloadTooLarge":{"description":"Text, item count, batch text, or the HTTP body exceeds its documented limit.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"RateLimited":{"description":"The caller exceeded its short-window allowance (rate_limited), or the\norganization exhausted a monthly allowance (quota_exceeded, persisted API\nkeys only). Retry-After describes the applicable reset. RateLimit headers\nalways describe the short window, not monthly quotas.\n","headers":{"RateLimit-Limit":{"description":"Maximum requests allowed in the current window.","schema":{"type":"integer","minimum":1}},"RateLimit-Remaining":{"description":"Requests remaining in the current window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current window resets.","schema":{"type":"integer","minimum":1}},"Retry-After":{"description":"Seconds until another request should be attempted.","schema":{"type":"integer","minimum":1}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"InternalError":{"description":"An unexpected service error occurred.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"schemas":{"QuotaDimension":{"type":"object","additionalProperties":false,"required":["used","limit","remaining"],"properties":{"used":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"limit":{"type":["string","null"],"pattern":"^(0|[1-9][0-9]*)$"},"remaining":{"type":["string","null"],"pattern":"^(0|[1-9][0-9]*)$"}}},"QuotaReport":{"type":"object","additionalProperties":false,"required":["organizationId","enforcementEnabled","timezone","generatedAt","periodStart","resetsAt","metering","plan","requests","characters"],"properties":{"organizationId":{"type":"string","format":"uuid"},"enforcementEnabled":{"type":"boolean"},"timezone":{"type":"string","const":"UTC"},"generatedAt":{"type":"string","format":"date-time"},"periodStart":{"type":"string","format":"date-time"},"resetsAt":{"type":"string","format":"date-time"},"metering":{"type":"string","const":"admission-reservations"},"plan":{"type":"object","additionalProperties":false,"required":["name","slug","source"],"properties":{"name":{"type":"string"},"slug":{"type":"string"},"source":{"type":"string","enum":["subscription","free"]}}},"requests":{"$ref":"#/components/schemas/QuotaDimension"},"characters":{"$ref":"#/components/schemas/QuotaDimension"}}},"OrganizationInput":{"type":"object","additionalProperties":false,"required":["name","slug"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120,"description":"Whitespace-trimmed display name, including Unicode."},"slug":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}},"ProjectInput":{"type":"object","additionalProperties":false,"required":["name","slug"],"properties":{"name":{"$ref":"#/components/schemas/OrganizationInput/properties/name"},"slug":{"$ref":"#/components/schemas/OrganizationInput/properties/slug"},"environment":{"type":"string","enum":["development","staging","production"],"default":"development"}}},"ProjectUpdateInput":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"name":{"$ref":"#/components/schemas/OrganizationInput/properties/name"},"slug":{"$ref":"#/components/schemas/OrganizationInput/properties/slug"},"environment":{"type":"string","enum":["development","staging","production"]}}},"Organization":{"type":"object","additionalProperties":false,"required":["id","name","slug"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"}}},"OrganizationAccess":{"type":"object","additionalProperties":false,"required":["id","name","slug","permissions"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}}}},"Project":{"type":"object","additionalProperties":false,"required":["id","organizationId","name","slug","environment"],"properties":{"id":{"type":"string","format":"uuid"},"organizationId":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"environment":{"type":"string"}}},"OrganizationPage":{"type":"object","additionalProperties":false,"required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}},"nextCursor":{"type":["string","null"],"format":"uuid"}}},"ProjectPage":{"type":"object","additionalProperties":false,"required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"nextCursor":{"type":["string","null"],"format":"uuid"}}},"ApiKeyInput":{"type":"object","additionalProperties":false,"required":["name","scopes"],"properties":{"name":{"type":"string","minLength":1,"maxLength":120},"scopes":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"string","enum":["api.invoke"]},"description":"Only machine capabilities held by the creating member may be delegated."},"expiresAt":{"type":"string","format":"date-time","description":"Future UTC expiration. Omit for no expiration."}}},"ApiKey":{"type":"object","additionalProperties":false,"required":["id","projectId","name","prefix","scopes","createdAt","lastUsedAt","expiresAt","revokedAt"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"name":{"type":"string"},"prefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":["string","null"],"format":"date-time"},"expiresAt":{"type":["string","null"],"format":"date-time"},"revokedAt":{"type":["string","null"],"format":"date-time"}}},"CreatedApiKey":{"type":"object","additionalProperties":false,"required":["id","projectId","name","prefix","scopes","createdAt","lastUsedAt","expiresAt","revokedAt","secret"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"name":{"type":"string"},"prefix":{"type":"string"},"scopes":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":["string","null"],"format":"date-time"},"expiresAt":{"type":["string","null"],"format":"date-time"},"revokedAt":{"type":["string","null"],"format":"date-time"},"secret":{"type":"string","description":"Returned once at creation. Never returned by list or revoke."}}},"ApiKeyPage":{"type":"object","additionalProperties":false,"required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ApiKey"}},"nextCursor":{"type":["string","null"],"format":"uuid"}}},"UsageMetrics":{"type":"object","additionalProperties":false,"required":["requestCount","errorCount","charactersProcessed","processingTimeMs","averageProcessingTimeMs"],"properties":{"requestCount":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"errorCount":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"charactersProcessed":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"processingTimeMs":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"averageProcessingTimeMs":{"type":["string","null"],"pattern":"^[0-9]+\\.[0-9]{2}$","description":"Weighted handler duration, rounded to two decimals; null when no requests are recorded."}}},"UsageDay":{"type":"object","additionalProperties":false,"required":["date","requestCount","errorCount","charactersProcessed","processingTimeMs","averageProcessingTimeMs"],"properties":{"date":{"type":"string","format":"date"},"requestCount":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"errorCount":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"charactersProcessed":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"processingTimeMs":{"type":"string","pattern":"^(0|[1-9][0-9]*)$"},"averageProcessingTimeMs":{"type":["string","null"],"pattern":"^[0-9]+\\.[0-9]{2}$","description":"Weighted handler duration, rounded to two decimals; null when no requests are recorded."}}},"UsageReport":{"type":"object","additionalProperties":false,"required":["projectId","from","to","timezone","generatedAt","metering","totals","days"],"properties":{"projectId":{"type":"string","format":"uuid"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"timezone":{"type":"string","const":"UTC"},"generatedAt":{"type":"string","format":"date-time"},"metering":{"type":"string","const":"best-effort"},"sources":{"type":"object","additionalProperties":false,"required":["api_key","playground"],"properties":{"api_key":{"$ref":"#/components/schemas/UsageMetrics"},"playground":{"$ref":"#/components/schemas/UsageMetrics"}}},"totals":{"$ref":"#/components/schemas/UsageMetrics"},"days":{"type":"array","minItems":1,"maxItems":90,"items":{"$ref":"#/components/schemas/UsageDay"}}}},"PlaygroundExecution":{"oneOf":[{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"detect"},"payload":{"$ref":"#/components/schemas/TextRequest"}}},{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"normalize"},"payload":{"$ref":"#/components/schemas/TextRequest"}}},{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"convert"},"payload":{"$ref":"#/components/schemas/ConvertTextRequest"}}},{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"syllabify"},"payload":{"$ref":"#/components/schemas/TextRequest"}}},{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"orthography"},"payload":{"$ref":"#/components/schemas/TextRequest"}}},{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"transliterate"},"payload":{"$ref":"#/components/schemas/TransliterateTextRequest"}}},{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"tokenize"},"payload":{"$ref":"#/components/schemas/TextRequest"}}},{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"batch_syllabify"},"payload":{"$ref":"#/components/schemas/BatchSyllabifyRequest"}}},{"type":"object","additionalProperties":false,"required":["operation","payload"],"properties":{"operation":{"type":"string","const":"batch_transliterate"},"payload":{"$ref":"#/components/schemas/BatchTransliterateRequest"}}}]},"PlaygroundRun":{"type":"object","additionalProperties":false,"required":["request","mode","build","elapsedMs","profiles"],"description":"Local runs have no HTTP metadata. Build identifies the source revision; development builds are explicit.","oneOf":[{"required":["result"],"not":{"required":["error"],"properties":{"error":{}}}},{"required":["error"],"not":{"required":["result"],"properties":{"result":{}}}}],"properties":{"request":{"$ref":"#/components/schemas/PlaygroundExecution"},"mode":{"type":"string","enum":["local","api"]},"build":{"type":"string","minLength":1,"maxLength":120},"elapsedMs":{"type":"number","minimum":0},"profiles":{"type":"array","maxItems":1000,"items":{"type":"string","minLength":1,"maxLength":120}},"httpStatus":{"type":"integer","minimum":100,"maximum":599},"requestId":{"type":"string","maxLength":120},"error":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","maxLength":120},"message":{"type":"string","maxLength":1000}}},"result":{"anyOf":[{"$ref":"#/components/schemas/EncodingDetectionResult"},{"$ref":"#/components/schemas/NormalizationResult"},{"$ref":"#/components/schemas/EncodingConversionResult"},{"$ref":"#/components/schemas/SyllabificationResult"},{"$ref":"#/components/schemas/OrthographyValidationResult"},{"$ref":"#/components/schemas/TransliterationResult"},{"$ref":"#/components/schemas/TokenizationResult"},{"$ref":"#/components/schemas/BatchSyllabifyResult"},{"$ref":"#/components/schemas/BatchTransliterateResult"}]}}},"PlaygroundSave":{"type":"object","additionalProperties":false,"required":["id","title","snapshot"],"description":"Complete request maximum 1 MiB. Client UUID permits identical retries. Limit 50 unexpired runs per user across projects; expiry 30 days from database creation time.","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string","minLength":1,"maxLength":120},"snapshot":{"$ref":"#/components/schemas/PlaygroundRun"}}},"PlaygroundRename":{"type":"object","additionalProperties":false,"required":["title"],"properties":{"title":{"type":"string","minLength":1,"maxLength":120}}},"PlaygroundRunMetadata":{"type":"object","additionalProperties":false,"required":["id","title","projectId","createdAt","expiresAt","payloadSize"],"properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string","minLength":1,"maxLength":120},"projectId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"payloadSize":{"type":"integer","minimum":1,"maximum":1048576}}},"PlaygroundSavedRun":{"type":"object","additionalProperties":false,"required":["id","title","projectId","createdAt","expiresAt","payloadSize","snapshot"],"properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string","minLength":1,"maxLength":120},"projectId":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"payloadSize":{"type":"integer","minimum":1,"maximum":1048576},"snapshot":{"$ref":"#/components/schemas/PlaygroundRun"}}},"PlaygroundRunPage":{"type":"object","additionalProperties":false,"required":["items","nextCursor"],"properties":{"items":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/PlaygroundRunMetadata"}},"nextCursor":{"type":["string","null"],"format":"uuid"}}},"PlaygroundDeleted":{"type":"object","additionalProperties":false,"required":["deleted"],"properties":{"deleted":{"type":"boolean","const":true}}},"HealthResponse":{"type":"object","additionalProperties":false,"required":["status","version"],"properties":{"status":{"type":"string","const":"ok"},"version":{"type":"string","description":"Deployed service version."}}},"TextRequest":{"type":"object","additionalProperties":false,"required":["text"],"properties":{"text":{"type":"string","description":"Text beyond 100,000 Unicode code points produces an item-level failure rather than failing the whole batch."}}},"ConvertTextRequest":{"type":"object","additionalProperties":false,"required":["text","from","to"],"properties":{"validateSource":{"type":"boolean","default":false,"examples":[true],"description":"Reject detected mixed, mismatched or uncertain sources before direction-changing conversion. Recommended for pasted text; not an automatic repair or correctness guarantee."},"text":{"type":"string","maxLength":100000},"from":{"$ref":"#/components/schemas/ConversionEncoding"},"to":{"$ref":"#/components/schemas/ConversionEncoding"}}},"TransliterateTextRequest":{"type":"object","additionalProperties":false,"required":["text","scheme"],"properties":{"text":{"type":"string","maxLength":100000},"scheme":{"type":"string","enum":["ala-lc-2011"]}}},"ConversionEncoding":{"type":"string","enum":["unicode","zawgyi"]},"EncodingSegment":{"type":"object","additionalProperties":false,"required":["text","encoding","zawgyiProbability","start","end"],"properties":{"text":{"type":"string"},"encoding":{"type":"string","enum":["unicode","zawgyi","unknown"]},"zawgyiProbability":{"type":["number","null"],"minimum":0,"maximum":1},"start":{"type":"integer","minimum":0},"end":{"type":"integer","minimum":0}}},"EncodingDetectionResult":{"type":"object","additionalProperties":false,"required":["input","encoding","confidence","profile","segments"],"properties":{"input":{"type":"string"},"encoding":{"type":"string","enum":["unicode","zawgyi","mixed","unknown","non_myanmar"]},"confidence":{"type":["number","null"],"minimum":0,"maximum":1},"profile":{"type":"string","const":"zawgyi-unicode-v1"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/EncodingSegment"}}}},"NormalizationResult":{"type":"object","additionalProperties":false,"required":["input","output","changed","profile"],"properties":{"input":{"type":"string"},"output":{"type":"string"},"changed":{"type":"boolean"},"profile":{"type":"string","const":"unicode-nfc"}}},"EncodingConversionResult":{"type":"object","additionalProperties":false,"required":["input","output","from","to","changed","profile"],"properties":{"input":{"type":"string"},"output":{"type":"string"},"from":{"$ref":"#/components/schemas/ConversionEncoding"},"to":{"$ref":"#/components/schemas/ConversionEncoding"},"changed":{"type":"boolean"},"profile":{"type":"string","const":"cldr-zawgyi-v1"}}},"BurmeseSyllableSegment":{"type":"object","additionalProperties":false,"required":["kind","text","start","end"],"properties":{"kind":{"type":"string","enum":["burmese_syllable","separator","non_myanmar","unsupported_myanmar"]},"text":{"type":"string"},"start":{"type":"integer","minimum":0},"end":{"type":"integer","minimum":0}}},"SyllabificationResult":{"type":"object","additionalProperties":false,"required":["input","profile","segments"],"properties":{"input":{"type":"string"},"profile":{"type":"string","const":"burmese-orthographic-v1"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/BurmeseSyllableSegment"}}}},"OrthographyDiagnostic":{"type":"object","additionalProperties":false,"required":["code","severity","message","start","end"],"properties":{"code":{"type":"string","enum":["component_order","dangling_virama","duplicate_component","invalid_syllable_start","orphan_mark","unsupported_myanmar","unsupported_stack_target"]},"severity":{"type":"string","const":"error"},"message":{"type":"string"},"start":{"type":"integer","minimum":0},"end":{"type":"integer","minimum":0}}},"OrthographyValidationResult":{"type":"object","additionalProperties":false,"required":["input","valid","profile","diagnostics"],"properties":{"input":{"type":"string"},"valid":{"type":"boolean"},"profile":{"type":"string","const":"burmese-orthography-v1"},"diagnostics":{"type":"array","items":{"$ref":"#/components/schemas/OrthographyDiagnostic"}}}},"TransliterationSegment":{"type":"object","additionalProperties":false,"required":["kind","input","output","start","end"],"properties":{"kind":{"type":"string","enum":["transliterated","preserved","unsupported"]},"input":{"type":"string"},"output":{"type":"string"},"start":{"type":"integer","minimum":0},"end":{"type":"integer","minimum":0}}},"TransliterationResult":{"type":"object","additionalProperties":false,"required":["input","output","scheme","profile","complete","segments"],"properties":{"input":{"type":"string"},"output":{"type":"string"},"scheme":{"type":"string","enum":["ala-lc-2011"]},"profile":{"type":"string","const":"ala-lc-2011-mapping-v1"},"complete":{"type":"boolean"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/TransliterationSegment"}}}},"TextToken":{"type":"object","additionalProperties":false,"required":["kind","text","script","start","end"],"properties":{"kind":{"type":"string","enum":["burmese_syllable","latin_word","number","punctuation","whitespace","emoji","unsupported_myanmar","other"]},"text":{"type":"string"},"script":{"type":"string","enum":["myanmar","latin","common","unknown"]},"start":{"type":"integer","minimum":0},"end":{"type":"integer","minimum":0}}},"TokenizationResult":{"type":"object","additionalProperties":false,"required":["input","profile","tokens","scripts","mixedScript"],"properties":{"input":{"type":"string"},"profile":{"type":"string","const":"myanmar-script-tokens-v1"},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/TextToken"}},"scripts":{"type":"array","uniqueItems":true,"maxItems":2,"items":{"type":"string","enum":["myanmar","latin"]}},"mixedScript":{"type":"boolean"}}},"BatchItem":{"type":"object","additionalProperties":false,"required":["id","text"],"properties":{"id":{"type":"string","minLength":1,"maxLength":128},"text":{"type":"string","maxLength":100000,"description":"Well-formed Unicode text, limited by Unicode code points."}}},"BatchSyllabifyRequest":{"type":"object","additionalProperties":false,"required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":1000,"items":{"$ref":"#/components/schemas/BatchItem"},"description":"Combined item text is limited to 1,000,000 UTF-8 bytes."}}},"BatchTransliterateRequest":{"type":"object","additionalProperties":false,"required":["items","scheme"],"properties":{"items":{"type":"array","minItems":1,"maxItems":1000,"items":{"$ref":"#/components/schemas/BatchItem"},"description":"Combined item text is limited to 1,000,000 UTF-8 bytes."},"scheme":{"type":"string","enum":["ala-lc-2011"]}}},"BatchItemError":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_unicode","text_too_long"]},"message":{"type":"string"}}},"BatchItemFailure":{"type":"object","additionalProperties":false,"required":["id","success","error"],"properties":{"id":{"type":"string"},"success":{"type":"boolean","const":false},"error":{"$ref":"#/components/schemas/BatchItemError"}}},"BatchSyllabifySuccess":{"type":"object","additionalProperties":false,"required":["id","success","result"],"properties":{"id":{"type":"string"},"success":{"type":"boolean","const":true},"result":{"$ref":"#/components/schemas/SyllabificationResult"}}},"BatchTransliterateSuccess":{"type":"object","additionalProperties":false,"required":["id","success","result"],"properties":{"id":{"type":"string"},"success":{"type":"boolean","const":true},"result":{"$ref":"#/components/schemas/TransliterationResult"}}},"BatchSyllabifyResult":{"type":"object","additionalProperties":false,"required":["results"],"properties":{"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/BatchSyllabifySuccess"},{"$ref":"#/components/schemas/BatchItemFailure"}]}}}},"BatchTransliterateResult":{"type":"object","additionalProperties":false,"required":["results"],"properties":{"results":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/BatchTransliterateSuccess"},{"$ref":"#/components/schemas/BatchItemFailure"}]}}}},"Problem":{"type":"object","additionalProperties":false,"required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri-reference","default":"about:blank"},"title":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"code":{"type":"string","enum":["invalid_request","invalid_unicode","encoding_mixed","encoding_mismatch","encoding_uncertain","text_too_long","batch_empty","batch_too_large","batch_too_many_items","payload_too_large","unauthorized","forbidden","not_found","rate_limited","quota_exceeded","service_unavailable","conflict","internal_error"]},"detail":{"type":"string"},"instance":{"type":"string","format":"uri-reference"},"requestId":{"type":"string"}}}}}}