{"id":1180,"date":"2025-10-09T07:17:42","date_gmt":"2025-10-09T00:17:42","guid":{"rendered":"https:\/\/portal-atlasx.cdg.co.th\/home\/docs\/atlasx-web-service-v8-0\/whats-new\/whats-new-in-7\/"},"modified":"2026-03-27T08:35:31","modified_gmt":"2026-03-27T01:35:31","slug":"whats-new-in-axws-8","status":"publish","type":"docs","link":"https:\/\/portal-atlasx.cdg.co.th\/home\/docs\/axws\/whats-new\/whats-new-in-axws-8\/","title":{"rendered":"What&#8217;s new in AtlasX 8"},"content":{"rendered":"\n<div class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h4 class=\"wp-block-heading\">\ud83d\udd10 \u0e22\u0e01\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e14\u0e49\u0e27\u0e22 Session-based Authentication \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a Web Client<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23 Login \u0e41\u0e1a\u0e1a Session-based Authentication \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a Web Client \u0e42\u0e14\u0e22\u0e40\u0e09\u0e1e\u0e32\u0e30<\/li>\n\n\n\n<li>\u0e40\u0e01\u0e47\u0e1a Session ID \u0e44\u0e27\u0e49\u0e43\u0e19 HttpOnly Cookie \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e01\u0e32\u0e23\u0e16\u0e39\u0e01\u0e02\u0e42\u0e21\u0e22 Token \u0e08\u0e32\u0e01\u0e1d\u0e31\u0e48\u0e07 Frontend<\/li>\n\n\n\n<li>\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 Session Timeout \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e2d\u0e32\u0e22\u0e38 Session (Sliding Expiration)<\/li>\n\n\n\n<li>\u0e41\u0e22\u0e01\u0e41\u0e19\u0e27\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23 Auth \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 Web Client (Session-based) \u0e41\u0e25\u0e30 API Client \/ Mobile (Token-based \u0e40\u0e0a\u0e48\u0e19 JWT)<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">\u0e41\u0e01\u0e49\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e2d\u0e30\u0e44\u0e23<\/h5>\n\n\n\n<ul class=\"wp-block-list is-style-checkmark-list\">\n<li>\u0e25\u0e14\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e08\u0e32\u0e01 XSS \u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e02\u0e42\u0e21\u0e22 JWT \u0e08\u0e32\u0e01 localStorage \u0e44\u0e14\u0e49<\/li>\n\n\n\n<li>\u0e41\u0e22\u0e01\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Web \u0e01\u0e31\u0e1a API \u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e02\u0e36\u0e49\u0e19\u0e15\u0e32\u0e21 use case<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img decoding=\"async\" src=\"https:\/\/portal-atlasx.cdg.co.th\/share\/Portal%20Docs\/axws\/axws-session-based-auth-diagram.png\" alt=\"\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h4 class=\"wp-block-heading\">\ud83d\udee1\ufe0f \u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01 API \u0e14\u0e49\u0e27\u0e22 Policy-Based Authorization<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e08\u0e32\u0e01\u0e41\u0e19\u0e27\u0e04\u0e34\u0e14 \u201c\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e41\u0e25\u0e49\u0e27\u0e40\u0e23\u0e35\u0e22\u0e01 API \u0e44\u0e14\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u201d \u2192 \u0e40\u0e1b\u0e47\u0e19 \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e40\u0e0a\u0e34\u0e07\u0e19\u0e42\u0e22\u0e1a\u0e32\u0e22 (Policy-Based Authorization)<\/li>\n\n\n\n<li>\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14 Policy \u0e15\u0e32\u0e21:\n<ul class=\"wp-block-list\">\n<li>Role (\u0e40\u0e0a\u0e48\u0e19 Admin, Manager, User)<\/li>\n\n\n\n<li>Permission (\u0e40\u0e0a\u0e48\u0e19 order.read, order.create)<\/li>\n\n\n\n<li>Claim \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e40\u0e0a\u0e34\u0e07\u0e18\u0e38\u0e23\u0e01\u0e34\u0e08<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u0e1a\u0e31\u0e07\u0e04\u0e31\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e17\u0e38\u0e01 Endpoint \u0e15\u0e32\u0e21\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e43\u0e19 Framework<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">\u0e41\u0e01\u0e49\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e2d\u0e30\u0e44\u0e23<\/h5>\n\n\n\n<ul class=\"wp-block-list is-style-checkmark-list\">\n<li>\u0e1b\u0e34\u0e14\u0e0a\u0e48\u0e2d\u0e07\u0e42\u0e2b\u0e27\u0e48\u0e14\u0e49\u0e32\u0e19 Security \u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48\u0e25\u0e47\u0e2d\u0e01\u0e2d\u0e34\u0e19\u0e41\u0e25\u0e49\u0e27\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e23\u0e35\u0e22\u0e01 API \u0e40\u0e01\u0e34\u0e19\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c<\/li>\n\n\n\n<li>\u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19 logic \u0e40\u0e0a\u0e47\u0e04\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e23\u0e30\u0e08\u0e31\u0e14\u0e01\u0e23\u0e30\u0e08\u0e32\u0e22\u0e43\u0e19\u0e41\u0e15\u0e48\u0e25\u0e30 service<\/li>\n\n\n\n<li>\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e43\u0e19\u0e2d\u0e19\u0e32\u0e04\u0e15\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e01\u0e49\u0e42\u0e04\u0e49\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e21\u0e32\u0e01<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers cbp-highlight-hover\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>    &#91;HttpGet(\"userinfo-test\")&#93;\n    &#91;AxAuthorize(\"UM-01\", \"view\")&#93;\n    public async Task&lt;IActionResult> GetUser()\n    {\n        var claims = User.Claims\n           .Select(c => new { c.Value, c.Type })\n           .ToList();\n\n        return Ok(claims);\n    }<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">    &#91;<\/span><span style=\"color: #4EC9B0\">HttpGet<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;userinfo-test&quot;<\/span><span style=\"color: #D4D4D4\">)&#93;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">    &#91;<\/span><span style=\"color: #4EC9B0\">AxAuthorize<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #CE9178\">&quot;UM-01&quot;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&quot;view&quot;<\/span><span style=\"color: #D4D4D4\">)&#93;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">public<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">async<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4EC9B0\">Task<\/span><span style=\"color: #D4D4D4\">&lt;<\/span><span style=\"color: #4EC9B0\">IActionResult<\/span><span style=\"color: #D4D4D4\">&gt; <\/span><span style=\"color: #DCDCAA\">GetUser<\/span><span style=\"color: #D4D4D4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">var<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #9CDCFE\">claims<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #9CDCFE\">User<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">Claims<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">           .<\/span><span style=\"color: #DCDCAA\">Select<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">c<\/span><span style=\"color: #D4D4D4\"> =&gt; <\/span><span style=\"color: #569CD6\">new<\/span><span style=\"color: #D4D4D4\"> { <\/span><span style=\"color: #9CDCFE\">c<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">Value<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #9CDCFE\">c<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #9CDCFE\">Type<\/span><span style=\"color: #D4D4D4\"> })<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">           .<\/span><span style=\"color: #DCDCAA\">ToList<\/span><span style=\"color: #D4D4D4\">();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #C586C0\">return<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #DCDCAA\">Ok<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #9CDCFE\">claims<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h4 class=\"wp-block-heading\">\ud83e\udde9 \u0e1b\u0e23\u0e31\u0e1a\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e43\u0e2b\u0e49\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a Microservices Architecture<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0e41\u0e22\u0e01\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e40\u0e1b\u0e47\u0e19 Service \u0e15\u0e32\u0e21 Domain (\u0e40\u0e0a\u0e48\u0e19 Auth Service, User Service, API Gateway)<\/li>\n\n\n\n<li>\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e49:\n<ul class=\"wp-block-list\">\n<li>Deploy \u0e41\u0e22\u0e01\u0e44\u0e14\u0e49<\/li>\n\n\n\n<li>Scale \u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e42\u0e2b\u0e25\u0e14\u0e07\u0e32\u0e19<\/li>\n\n\n\n<li>\u0e21\u0e35\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e17\u0e38\u0e01 Service<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">\u0e41\u0e01\u0e49\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e2d\u0e30\u0e44\u0e23<\/h5>\n\n\n\n<ul class=\"wp-block-list is-style-checkmark-list\">\n<li>\u0e41\u0e01\u0e49\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e02\u0e2d\u0e07 Monolith \u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02\u0e19\u0e34\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e15\u0e49\u0e2d\u0e07 Deploy \u0e17\u0e31\u0e49\u0e07\u0e23\u0e30\u0e1a\u0e1a<\/li>\n\n\n\n<li>\u0e25\u0e14\u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e21\u0e35 Service \u0e43\u0e14 Service \u0e2b\u0e19\u0e36\u0e48\u0e07\u0e25\u0e48\u0e21<\/li>\n\n\n\n<li>\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e15\u0e34\u0e1a\u0e42\u0e15\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e25\u0e30\u0e17\u0e35\u0e21\u0e43\u0e19\u0e23\u0e30\u0e22\u0e30\u0e22\u0e32\u0e27 (\u0e17\u0e35\u0e21\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e22\u0e01\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49)<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>AtlasX\/\n\u251c\u2500\u2500 AtlasX.Administrative\/    # \ud83c\udfe2 Service \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e40\u0e0a\u0e48\u0e19 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e25\u0e47\u0e2d\u0e01\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e23\u0e30\u0e1a\u0e1a \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e19\n\u251c\u2500\u2500 AtlasX.Gateway\/           # \ud83d\udeaa \u0e17\u0e32\u0e07\u0e40\u0e02\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01 (Reverse Proxy) \u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e41\u0e08\u0e01\u0e08\u0e48\u0e32\u0e22 Request \u0e41\u0e25\u0e30\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Cross-cutting concerns\n\u251c\u2500\u2500 AtlasX.Identity\/          # \ud83d\udd10 \u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e15\u0e31\u0e27\u0e15\u0e19 (Authentication &amp; Authorization) \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Users \u0e41\u0e25\u0e30 Sessions\n\u251c\u2500\u2500 Shared\/                   # \ud83d\udce6 Project \u0e01\u0e25\u0e32\u0e07\u0e17\u0e35\u0e48\u0e23\u0e27\u0e21 DTOs, Constants \u0e41\u0e25\u0e30 Interfaces \u0e17\u0e35\u0e48\u0e17\u0e38\u0e01 Service \u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\n\u251c\u2500\u2500 .env                      # \ud83d\udcc4 \u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e01\u0e47\u0e1a Environment Variables (\u0e40\u0e0a\u0e48\u0e19 Connection Strings, Secret Keys) *\u0e2b\u0e49\u0e32\u0e21 Push \u0e02\u0e36\u0e49\u0e19 Git\n\u251c\u2500\u2500 .gitignore                # \ud83d\udeab \u0e23\u0e30\u0e1a\u0e38\u0e44\u0e1f\u0e25\u0e4c\/\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49 Git \u0e15\u0e34\u0e14\u0e15\u0e32\u0e21 (\u0e40\u0e0a\u0e48\u0e19 \/bin, \/obj, .env)\n\u251c\u2500\u2500 AtlasX.Web.Service.slnx   # \ud83d\udee0\ufe0f \u0e44\u0e1f\u0e25\u0e4c Solution (Format \u0e43\u0e2b\u0e21\u0e48) \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e1b\u0e34\u0e14\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19 Visual Studio\n\u251c\u2500\u2500 Directory.Build.props     # \u2699\ufe0f \u0e44\u0e1f\u0e25\u0e4c\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 Build settings \u0e41\u0e25\u0e30 Version \u0e02\u0e2d\u0e07 NuGet Packages \u0e41\u0e1a\u0e1a\u0e23\u0e27\u0e21\u0e28\u0e39\u0e19\u0e22\u0e4c\n\u251c\u2500\u2500 global.json               # \ud83d\udccc \u0e23\u0e30\u0e1a\u0e38\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e02\u0e2d\u0e07 .NET SDK \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1e\u0e31\u0e12\u0e19\u0e32 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e17\u0e35\u0e21\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1a\u0e19\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\n\u2514\u2500\u2500 nuget.config              # \ud83d\uded2 \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e02\u0e2d\u0e07 Package (\u0e40\u0e0a\u0e48\u0e19 Private NuGet Feed \u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17)<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">AtlasX\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 AtlasX.Administrative\/    # \ud83c\udfe2 Service \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e40\u0e0a\u0e48\u0e19 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e25\u0e47\u0e2d\u0e01\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e23\u0e30\u0e1a\u0e1a \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e19<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 AtlasX.Gateway\/           # \ud83d\udeaa \u0e17\u0e32\u0e07\u0e40\u0e02\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01 (Reverse Proxy) \u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e41\u0e08\u0e01\u0e08\u0e48\u0e32\u0e22 Request \u0e41\u0e25\u0e30\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Cross-cutting concerns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 AtlasX.Identity\/          # \ud83d\udd10 \u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e15\u0e31\u0e27\u0e15\u0e19 (Authentication &amp; Authorization) \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 Users \u0e41\u0e25\u0e30 Sessions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 Shared\/                   # \ud83d\udce6 Project \u0e01\u0e25\u0e32\u0e07\u0e17\u0e35\u0e48\u0e23\u0e27\u0e21 DTOs, Constants \u0e41\u0e25\u0e30 Interfaces \u0e17\u0e35\u0e48\u0e17\u0e38\u0e01 Service \u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 .env                      # \ud83d\udcc4 \u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e01\u0e47\u0e1a Environment Variables (\u0e40\u0e0a\u0e48\u0e19 Connection Strings, Secret Keys) *\u0e2b\u0e49\u0e32\u0e21 Push \u0e02\u0e36\u0e49\u0e19 Git<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 .gitignore                # \ud83d\udeab \u0e23\u0e30\u0e1a\u0e38\u0e44\u0e1f\u0e25\u0e4c\/\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49 Git \u0e15\u0e34\u0e14\u0e15\u0e32\u0e21 (\u0e40\u0e0a\u0e48\u0e19 \/bin, \/obj, .env)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 AtlasX.Web.Service.slnx   # \ud83d\udee0\ufe0f \u0e44\u0e1f\u0e25\u0e4c Solution (Format \u0e43\u0e2b\u0e21\u0e48) \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e1b\u0e34\u0e14\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e19 Visual Studio<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 Directory.Build.props     # \u2699\ufe0f \u0e44\u0e1f\u0e25\u0e4c\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 Build settings \u0e41\u0e25\u0e30 Version \u0e02\u0e2d\u0e07 NuGet Packages \u0e41\u0e1a\u0e1a\u0e23\u0e27\u0e21\u0e28\u0e39\u0e19\u0e22\u0e4c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u251c\u2500\u2500 global.json               # \ud83d\udccc \u0e23\u0e30\u0e1a\u0e38\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e02\u0e2d\u0e07 .NET SDK \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e1e\u0e31\u0e12\u0e19\u0e32 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e17\u0e35\u0e21\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1a\u0e19\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\u2514\u2500\u2500 nuget.config              # \ud83d\uded2 \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e02\u0e2d\u0e07 Package (\u0e40\u0e0a\u0e48\u0e19 Private NuGet Feed \u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e34\u0e29\u0e31\u0e17)<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h4 class=\"wp-block-heading\">\ud83d\udd11 \u0e41\u0e22\u0e01 Credential \u0e41\u0e25\u0e30\u0e04\u0e2d\u0e19\u0e1f\u0e34\u0e01\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e08\u0e32\u0e01 appsettings \u0e21\u0e32\u0e2d\u0e22\u0e39\u0e48 .env<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0e22\u0e49\u0e32\u0e22 credential \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e40\u0e0a\u0e48\u0e19 Database, API Key, Secret) \u0e08\u0e32\u0e01 appsettings \u0e44\u0e1b\u0e44\u0e27\u0e49\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c .env<\/li>\n\n\n\n<li>\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e42\u0e2b\u0e25\u0e14 Secret \u0e08\u0e32\u0e01 Environment Variable<\/li>\n\n\n\n<li>\u0e41\u0e22\u0e01 Config \u0e15\u0e32\u0e21 Environment (Dev \/ Staging \/ Production) \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">\u0e41\u0e01\u0e49\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e2d\u0e30\u0e44\u0e23<\/h5>\n\n\n\n<ul class=\"wp-block-list is-style-checkmark-list\">\n<li>\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19 Secret \u0e2b\u0e25\u0e38\u0e14\u0e02\u0e36\u0e49\u0e19 Git \u0e2b\u0e23\u0e37\u0e2d\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e23\u0e4c\u0e43\u0e19\u0e17\u0e35\u0e21\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e31\u0e49\u0e07\u0e43\u0e08<\/li>\n\n\n\n<li>\u0e25\u0e14\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e14\u0e49\u0e32\u0e19 Security \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e31\u0e48\u0e27\u0e44\u0e2b\u0e25\u0e02\u0e2d\u0e07 Source Code<\/li>\n\n\n\n<li>\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 Deploy \u0e17\u0e33\u0e44\u0e14\u0e49\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e41\u0e25\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19<\/li>\n<\/ul>\n\n\n\n<p>\u274c \u0e41\u0e1a\u0e1a\u0e40\u0e14\u0e34\u0e21 (Deprecated):<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>    \"Database\": {\n      \"DefaultDataSource\": \"Default\",\n      \"DataSource\": {\n        \"Default\": {\n          \"ConnectionString\": \"...\",\n          \"UserId\": \"testuser\",\n          \"Password\": \"T3$tP@ssw0rd\",\n          \"Provider\": \"MSSQL\"\n        }\n      }\n    },<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #CE9178\">&quot;Database&quot;<\/span><span style=\"color: #D4D4D4\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #9CDCFE\">&quot;DefaultDataSource&quot;<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;Default&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      <\/span><span style=\"color: #9CDCFE\">&quot;DataSource&quot;<\/span><span style=\"color: #D4D4D4\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #9CDCFE\">&quot;Default&quot;<\/span><span style=\"color: #D4D4D4\">: {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">&quot;ConnectionString&quot;<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;...&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">&quot;UserId&quot;<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;testuser&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">&quot;Password&quot;<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;T3$tP@ssw0rd&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #9CDCFE\">&quot;Provider&quot;<\/span><span style=\"color: #D4D4D4\">: <\/span><span style=\"color: #CE9178\">&quot;MSSQL&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    },<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u2705 \u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48 (v8 Standard):<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># DataSource\nDataSource__Provider=ORACLE\nDataSource__ConnectionString=...\n\nDataSource__Local__Provider=MSSQL\nDataSource__Local__ConnectionString=...<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\"># DataSource<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">DataSource__Provider=ORACLE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">DataSource__ConnectionString=...<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">DataSource__Local__Provider=MSSQL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">DataSource__Local__ConnectionString=...<\/span><\/span><\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"featured_media":0,"parent":1179,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"nav_title":"","positive":"","negative":"","footnotes":""},"docs_category":[],"class_list":["post-1180","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/1180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/comments?post=1180"}],"version-history":[{"count":77,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/1180\/revisions"}],"predecessor-version":[{"id":4212,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/1180\/revisions\/4212"}],"up":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/1179"}],"wp:attachment":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/media?parent=1180"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs_category?post=1180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}