# AstraCMS Docs: API documentation > Astra CMS: a metadata-driven, Java-based platform that changes continuously without downtime. Architecture, demo videos and deep-dive articles in English and Vietnamese. Public product documentation. Never put API tokens, customer data, or private contracts into AI prompts. API version: Không áp dụng. Content fallback is explicitly labeled per page. ## Machine-readable resources - [OpenAPI 3.1](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/openapi.json): Machine-readable request and response contracts. - [Complete documentation](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/llms-full.txt): All published pages for this company and locale, including Mermaid source. ## Documentation - [Tổng quan](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/overview.md): Tài liệu Astra CMS: vì sao có Astra, cách xây dựng, 22 video demo và 21 bài viết chuyên sâu. [content: vi] - [Vì sao có Astra](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/why-astra.md): English · Tiếng Việt · Về README [content: vi] - [Kiến trúc](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/architecture.md): Một server Quarkus, một DocType engine, PostgreSQL với row-level security; app, Wasm, Seata, Keycloak và worker CDC xung quanh. [content: vi] - [Build-time và Run-time trong Astra](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/build-time-run-time.md): Trong kiến trúc của Astra, việc phân tách giữa Build-time (thời điểm biên dịch/đóng gói) và Run-time (thời điểm hệ thống đang chạy) được thiết kế để giải quyết bài toán cốt lõi: Làm sao để vừa có hiệu năng cực cao của… [content: vi] - [IAM: integrating the Flutter app](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/iam-mobile.md): How the mobile app signs users in to Astra and calls the API. The local stack (make k3d-up) serves the API and the Keycloak login page from one origin, http://localhost:8080 by default. [content: en] - [Overlay và Wasm: tùy biến không fork](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/overlay-wasm.md): Overlay (Lớp phủ tùy biến) trong Astra giống như một tấm kính trong suốt đặt đè lên bản vẽ thiết kế gốc, hoặc giống như cơ chế docker-compose.override.yml / CSS Override mà anh em làm kỹ thuật vẫn dùng: [content: vi] - [Use case 01: công ty chuyển phát nhanh](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/use-case.md): Bản đề xuất triển khai trên nền tảng Astra Platform (Java 25 + Quarkus, DocType Engine Zero-DDL, 3-Tier Plugin Isolation, Apache Seata, Compliance-by-Design) với mô hình Multi-Schema Ownership + Rust CDC (supabase/etl)… [content: vi] - [Video demo](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/videos.md): Toàn bộ video demo bản tiếng Anh và tiếng Việt, kèm bài viết đứng sau mỗi video. [content: vi] - [Kịch bản video](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/video-scripts.md): English version: demo-video-series.en.md. [content: vi] - [Code snippet cho video](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/code-snippets.md): Đi kèm demo-video-series.md. Mỗi mục S1…S12 là phần code để chiếu lên màn hình (hoặc chèn làm overlay) trong video tương ứng. Code được trích từ repository, chỉ rút gọn: … là chỗ lược bớt, comment // ← là chú thích thêm… [content: vi] - [Astra là gì & chạy trong 5 phút](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/quickstart.md): Tóm tắt một câu: Astra là một kernel nghiệp vụ hướng metadata; năm lệnh là bạn có một cụm Kubernetes thật trên laptop, hai công ty chuyển phát đã nạp sẵn dữ liệu và một Desk sinh ra từ các DocType mà các app đóng góp.… [content: vi] - [DocType: từ một file YAML đến API, giao diện và index](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/doctype.md): Tóm tắt một câu: Một DocType là một file YAML; từ đó kernel phục vụ một REST API có validation, Desk dựng form và danh sách, các field projected có expression index tạo online, và mọi DocType được lưu chung trong một… [content: vi] - [Quy tắc nghiệp vụ: hook & validation](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/hooks.md): Tóm tắt một câu: Một quy tắc nghiệp vụ là một CDI bean Java bình thường mà kernel gọi trước mỗi lần ghi DocType của nó, bên trong chính transaction của lần ghi đó, nên khoản cước 73.000 ₫ và các lỗi validation giống hệt… [content: vi] - [Vòng đời chứng từ: Submit, Cancel, Amend](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/lifecycle.md): Tóm tắt một câu: trong Astra, chứng từ đã Submit là bản chốt; muốn sửa thì Cancel (ghi bút toán đảo, không bao giờ sửa dòng cũ) rồi Amend (tạo đúng một bản nháp mới có liên kết), và mỗi bước chạy trong một transaction… [content: vi] - [Vận hành: máy trạng thái bưu kiện](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/ops.md): Tóm tắt một câu: trong Astra, trạng thái của bưu kiện chỉ được đi theo một bảng chuyển trạng thái khai báo trong một Java map duy nhất, mỗi bước chuyển hợp lệ nối thêm một mốc vào scan log mà không người dùng nào ghi… [content: vi] - [CSKH nhìn thấy vận hành](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/care.md): Tóm tắt một câu: khi nhân viên CSKH mở một ticket hỗ trợ gắn với một vận đơn, một hook nâng mức ưu tiên cho các khiếu nại mất hoặc hỏng hàng, đặt hạn SLA và chép trạng thái hiện tại của bưu kiện vào ticket, còn một thẻ… [content: vi] - [Đa thuê bao](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/tenants.md): Tóm tắt một câu: Một máy chủ Astra phục vụ nhiều công ty; kernel quyết định request thuộc tenant nào, mang quyết định đó trong một ScopedValue của Java vào một thiết lập PostgreSQL chỉ sống trong transaction, và… [content: vi] - [Bảo mật fail-closed](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/failclosed.md): Tóm tắt một câu: Nếu kernel được trỏ tới một role PostgreSQL sẽ bỏ qua row-level security (một superuser hoặc một role có BYPASSRLS), nó từ chối khởi động, trước khi bất kỳ migration nào chạy, thay vì lặng lẽ phục vụ dữ… [content: vi] - [Chạy trên Kubernetes](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/k8s.md): Tóm tắt một câu: Astra chạy thành hai replica kernel không trạng thái ngay từ ngày đầu; số chứng từ luôn liên tục và duy nhất giữa các pod vì bộ đếm là một lệnh upsert PostgreSQL dưới khoá dòng, nằm bên trong chính… [content: vi] - [Dành cho developer: viết một app Astra](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/developer.md): Tóm tắt một câu: một app Astra chỉ là Java và YAML bình thường, biên dịch dựa trên một module SPI nhỏ (astra-spi); kernel biến YAML thành lưu trữ, REST, Desk và validation, đồng thời chạy hook của bạn ngay trong… [content: vi] - [Overlay theo tenant](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/overlay.md): Tóm tắt một câu: overlay theo tenant là một file YAML nhỏ, lưu riêng cho từng tenant dưới row-level security, dùng để thêm trường vào DocType của một app hoặc chỉnh một nhóm thuộc tính trường an toàn; nó có hiệu lực… [content: vi] - [Tier 2 Wasm: công thức cước của riêng tenant](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/wasm.md): Tóm tắt một câu: tenant tải công thức tính phí vận chuyển của riêng mình lên dưới dạng một module WebAssembly nằm trong một chứng từ PricingRule bình thường; kernel chạy thử nó trong sandbox thuần Java khi lưu, và khi… [content: vi] - [Keycloak: một danh tính, role theo tenant, quyền theo DocType](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/keycloak.md): Tóm tắt một câu: người dùng đăng nhập một lần bằng Keycloak, role của họ đến từ đường dẫn nhóm Keycloak đã ký /tenants//, còn YAML của từng DocType quyết định các role đó được đọc, tạo, sửa, submit và… [content: vi] - [SAML SSO và SCIM](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/sso.md): Tóm tắt một câu: nhân viên của một doanh nghiệp đăng nhập Astra qua IdP SAML 2.0 của chính công ty mình, do Keycloak làm broker, nhóm bên IdP trở thành role của tenant trong token OIDC, còn hệ thống thư mục của công ty… [content: vi] - [Sổ cái append-only](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/ledger.md): Tóm tắt một câu: chứng từ nghiệp vụ ghi các bút toán kép cân bằng vào một bảng PostgreSQL duy nhất, astraledger, trong cùng transaction với chứng từ; sửa sai bằng bút toán đảo, và một trigger trong database từ chối… [content: vi] - [MCP: agent AI dùng Astra bằng quyền của người dùng](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/mcp.md): Tóm tắt một câu: Astra mở một endpoint MCP duy nhất, /mcp, nơi agent AI đăng nhập bằng đúng token Keycloak của người dùng mà nó phục vụ, nên nó nhận đúng tenant, row-level security và quyền DocType của người đó, còn dữ… [content: vi] - [Rust CDC + Sync-Aware LSN](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/cdc.md): Tóm tắt một câu: Một worker Rust đọc write-ahead log của PostgreSQL và duy trì các bảng replica cho chăm sóc khách hàng, mỗi lần ghi đều báo cho client vị trí WAL của nó (X-Tx-LSN), và một lần đọc replica có yêu cầu vị… [content: vi] - [Seata: một lần submit, ba tài nguyên](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/seata.md): Tóm tắt một câu: Chỉ một dòng YAML, transaction: global, biến việc submit đơn hàng thành một global transaction duy nhất của Apache Seata, trải qua hạn mức công nợ BMS (một nhánh AT trong schema riêng), một chỗ lấy hàng… [content: vi] - [HRM: nhân sự và tiền lương](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/hrm.md): Tóm tắt một câu: Một app tính lương chỉ dùng SPI công khai của Astra và theo mô hình Frappe HRMS: chấm công quyết định ngày công, module Wasm của tenant tính thưởng bưu tá, một Payroll Entry tính song song mọi phiếu… [content: vi] - [STMS: điều phối xe với Timefold + AI copilot](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/stms.md): Tóm tắt một câu: Timefold Solver lập tuyến giao hàng ngay trong kernel của Astra và lập lại từ các tuyến hiện tại khi một xe hỏng, một đơn gấp đến hay giao thông chậm lại; một copilot điều phối biến câu lệnh tiếng Việt… [content: vi] - [Lộ trình: phần còn lại của use-case-01](https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/roadmap.md): Tóm tắt một câu: Video 1 đến 17 và 19 đến 21 cho thấy các lát cắt mỏng của code đang chạy; video này, và bài viết này, liệt kê những gì use case chuyển phát còn thiếu và gắn nhãn Đang phát triển cho từng hạng mục. Nên… [content: vi]