diff --git a/docs.json b/docs.json
index 44a64f824..76f764df7 100644
--- a/docs.json
+++ b/docs.json
@@ -1,296 +1,463 @@
{
- "$schema": "https://mintlify.com/docs.json",
"theme": "maple",
+ "$schema": "https://mintlify.com/docs.json",
"name": "Mintlify",
"colors": {
"primary": "#0D9373",
"light": "#55D799",
"dark": "#0D9373"
},
+ "logo": {
+ "light": "/logo/light.svg",
+ "dark": "/logo/dark.svg",
+ "href": "https://mintlify.com"
+ },
"favicon": "/favicon.svg",
+ "api": {
+ "mdx": {
+ "auth": {
+ "method": "bearer"
+ }
+ }
+ },
+ "navbar": {
+ "links": [
+ {
+ "label": "Community",
+ "href": "https://mintlify.com/community"
+ }
+ ],
+ "primary": {
+ "type": "button",
+ "label": "Get Started",
+ "href": "https://mintlify.com/start"
+ }
+ },
"navigation": {
- "dropdowns": [
+ "languages": [
{
- "dropdown": "Getting Started",
- "icon": "book",
- "description": "Set up your documentation",
- "groups": [
+ "language": "en",
+ "dropdowns": [
{
- "group": "Getting Started",
- "pages": [
- "quickstart",
- {
- "group": "Editing",
- "icon": "pen-paintbrush",
- "pages": ["development", "web-editor"]
- },
- "settings/global",
+ "dropdown": "Getting Started",
+ "icon": "book",
+ "description": "Set up your documentation",
+ "groups": [
{
- "group": "Navigation",
- "icon": "map",
+ "group": "Getting Started",
"pages": [
- "navigation/overview",
- "navigation/pages",
- "navigation/divisions",
- "navigation/versions",
- "navigation/localization"
- ]
- },
- "themes",
- "migration"
- ]
- },
- {
- "group": "Writing Content",
- "pages": [
- "page",
- "text",
- "image-embeds",
- "list-table",
- "code",
- "reusable-snippets"
- ]
- },
- {
- "group": "API References",
- "pages": [
- "api-playground/overview",
- {
- "group": "OpenAPI",
- "icon": "brackets-curly",
- "pages": [
- "api-playground/openapi/setup",
- "api-playground/openapi/writing-openapi",
- "api-playground/openapi/advanced-features"
- ]
- },
- {
- "group": "MDX",
- "icon": "markdown",
- "pages": [
- "api-playground/mdx/configuration",
- "api-playground/mdx/authentication"
+ "quickstart",
+ {
+ "group": "Editing",
+ "icon": "pen-paintbrush",
+ "pages": [
+ "development",
+ "web-editor"
+ ]
+ },
+ "settings/global",
+ {
+ "group": "Navigation",
+ "icon": "map",
+ "pages": [
+ "navigation/overview",
+ "navigation/pages",
+ "navigation/divisions",
+ "navigation/versions",
+ "navigation/localization"
+ ]
+ },
+ "themes",
+ "migration"
]
},
- "api-playground/troubleshooting"
- ]
- },
- {
- "group": "Configurations",
- "pages": [
- "settings/custom-domain",
- "settings/seo",
- "settings/llms",
- "settings/custom-scripts",
- "settings/broken-links",
- "settings/github",
- "settings/gitlab",
- "settings/ci",
- "settings/preview-deployments"
- ]
- },
- {
- "group": "Advanced",
- "pages": [
{
- "group": "Custom Subdirectory",
- "icon": "folder",
+ "group": "Writing Content",
"pages": [
- "advanced/subpath/cloudflare",
- "advanced/subpath/route53-cloudfront",
- "advanced/subpath/vercel"
+ "page",
+ "text",
+ "image-embeds",
+ "list-table",
+ "code",
+ "reusable-snippets"
]
},
{
- "group": "Auth & Personalization",
- "icon": "user-lock",
+ "group": "API References",
"pages": [
- "settings/authentication-personalization/authentication",
- "settings/authentication-personalization/partial-authentication",
- "settings/authentication-personalization/personalization",
- "settings/authentication-personalization/authentication-vs-personalization",
+ "api-playground/overview",
{
- "group": "Authentication Setup",
+ "group": "OpenAPI",
+ "icon": "brackets-curly",
"pages": [
- "settings/authentication-personalization/authentication-setup/choosing-a-handshake",
- "settings/authentication-personalization/authentication-setup/password",
- "settings/authentication-personalization/authentication-setup/jwt",
- "settings/authentication-personalization/authentication-setup/oauth",
- "settings/authentication-personalization/authentication-setup/mintlify"
+ "api-playground/openapi/setup",
+ "api-playground/openapi/writing-openapi",
+ "api-playground/openapi/advanced-features"
]
},
{
- "group": "Personalization Setup",
+ "group": "MDX",
+ "icon": "markdown",
"pages": [
- "settings/authentication-personalization/personalization-setup/choosing-a-handshake",
- "settings/authentication-personalization/personalization-setup/shared-session",
- "settings/authentication-personalization/personalization-setup/jwt",
- "settings/authentication-personalization/personalization-setup/oauth"
+ "api-playground/mdx/configuration",
+ "api-playground/mdx/authentication"
]
},
- "settings/authentication-personalization/sending-data"
+ "api-playground/troubleshooting"
]
},
{
- "group": "Dashboard Access",
- "icon": "house-lock",
+ "group": "Configurations",
"pages": [
- "advanced/dashboard/sso",
- "advanced/dashboard/permissions"
+ "settings/custom-domain",
+ "settings/seo",
+ "settings/llms",
+ "settings/custom-scripts",
+ "settings/broken-links",
+ "settings/github",
+ "settings/gitlab",
+ "settings/ci",
+ "settings/preview-deployments"
]
},
{
- "group": "Model Context Protocol",
- "icon": "server",
- "pages": ["advanced/mcp/quickstart", "advanced/mcp/generate"]
- },
- {
- "group": "REST API",
- "icon": "brackets-curly",
+ "group": "Advanced",
"pages": [
- "advanced/rest-api/overview",
{
- "group": "Updates",
+ "group": "Custom Subdirectory",
+ "icon": "folder",
+ "pages": [
+ "advanced/subpath/cloudflare",
+ "advanced/subpath/route53-cloudfront",
+ "advanced/subpath/vercel"
+ ]
+ },
+ {
+ "group": "Auth & Personalization",
+ "icon": "user-lock",
+ "pages": [
+ "settings/authentication-personalization/authentication",
+ "settings/authentication-personalization/partial-authentication",
+ "settings/authentication-personalization/personalization",
+ "settings/authentication-personalization/authentication-vs-personalization",
+ {
+ "group": "Authentication Setup",
+ "pages": [
+ "settings/authentication-personalization/authentication-setup/choosing-a-handshake",
+ "settings/authentication-personalization/authentication-setup/password",
+ "settings/authentication-personalization/authentication-setup/jwt",
+ "settings/authentication-personalization/authentication-setup/oauth",
+ "settings/authentication-personalization/authentication-setup/mintlify"
+ ]
+ },
+ {
+ "group": "Personalization Setup",
+ "pages": [
+ "settings/authentication-personalization/personalization-setup/choosing-a-handshake",
+ "settings/authentication-personalization/personalization-setup/shared-session",
+ "settings/authentication-personalization/personalization-setup/jwt",
+ "settings/authentication-personalization/personalization-setup/oauth"
+ ]
+ },
+ "settings/authentication-personalization/sending-data"
+ ]
+ },
+ {
+ "group": "Dashboard Access",
+ "icon": "house-lock",
+ "pages": [
+ "advanced/dashboard/sso",
+ "advanced/dashboard/permissions"
+ ]
+ },
+ {
+ "group": "Model Context Protocol",
+ "icon": "server",
"pages": [
- "advanced/rest-api/update/trigger",
- "advanced/rest-api/update/status"
+ "advanced/mcp/quickstart",
+ "advanced/mcp/generate"
]
},
{
- "group": "Chat API",
+ "group": "REST API",
+ "icon": "brackets-curly",
"pages": [
- "advanced/rest-api/chat/create-topic",
- "advanced/rest-api/chat/generate-message"
+ "advanced/rest-api/overview",
+ {
+ "group": "Updates",
+ "pages": [
+ "advanced/rest-api/update/trigger",
+ "advanced/rest-api/update/status"
+ ]
+ },
+ {
+ "group": "Chat API",
+ "pages": [
+ "advanced/rest-api/chat/create-topic",
+ "advanced/rest-api/chat/generate-message"
+ ]
+ }
]
}
]
}
]
- }
- ]
- },
- {
- "dropdown": "Components",
- "icon": "block-brick",
- "description": "Component library",
- "groups": [
+ },
{
- "group": "Components",
- "pages": [
- "content/components/accordions",
- "content/components/accordion-groups",
- "content/components/callouts",
- "content/components/cards",
- "content/components/card-groups",
- "content/components/code",
- "content/components/code-groups",
- "content/components/frames",
- "content/components/icons",
- "content/components/mermaid-diagrams",
- "content/components/steps",
- "content/components/tabs",
- "content/components/tooltips",
- "content/components/update"
+ "dropdown": "Components",
+ "icon": "block-brick",
+ "description": "Component library",
+ "groups": [
+ {
+ "group": "Components",
+ "pages": [
+ "content/components/accordions",
+ "content/components/accordion-groups",
+ "content/components/callouts",
+ "content/components/cards",
+ "content/components/card-groups",
+ "content/components/code",
+ "content/components/code-groups",
+ "content/components/frames",
+ "content/components/icons",
+ "content/components/mermaid-diagrams",
+ "content/components/steps",
+ "content/components/tabs",
+ "content/components/tooltips",
+ "content/components/update"
+ ]
+ },
+ {
+ "group": "API Components",
+ "pages": [
+ "content/components/params",
+ "content/components/responses",
+ "content/components/expandables",
+ "content/components/sticky-examples"
+ ]
+ }
+ ]
+ },
+ {
+ "dropdown": "Integrations",
+ "icon": "plug",
+ "description": "Connect your providers",
+ "groups": [
+ {
+ "group": "Analytics",
+ "pages": [
+ "integrations/analytics/overview",
+ "integrations/analytics/amplitude",
+ "integrations/analytics/clearbit",
+ "integrations/analytics/fathom",
+ "integrations/analytics/google-analytics",
+ "integrations/analytics/google-tag-manager",
+ "integrations/analytics/heap",
+ "integrations/analytics/hotjar",
+ "integrations/analytics/koala",
+ "integrations/analytics/logrocket",
+ "integrations/analytics/mixpanel",
+ "integrations/analytics/pirsch",
+ "integrations/analytics/plausible",
+ "integrations/analytics/posthog",
+ "integrations/analytics/segment"
+ ]
+ },
+ {
+ "group": "SDKs",
+ "pages": [
+ "integrations/sdks/speakeasy",
+ "integrations/sdks/stainless"
+ ]
+ },
+ {
+ "group": "Support",
+ "pages": [
+ "integrations/support/overview",
+ "integrations/support/intercom",
+ "integrations/support/front"
+ ]
+ },
+ {
+ "group": "Privacy",
+ "pages": [
+ "integrations/privacy/overview",
+ "integrations/privacy/osano"
+ ]
+ }
]
},
{
- "group": "API Components",
- "pages": [
- "content/components/params",
- "content/components/responses",
- "content/components/expandables",
- "content/components/sticky-examples"
+ "dropdown": "Changelog",
+ "icon": "list-timeline",
+ "description": "Updates and changes",
+ "groups": [
+ {
+ "group": "Changelog",
+ "pages": [
+ "changelog/overview"
+ ]
+ }
]
}
]
},
{
- "dropdown": "Integrations",
- "icon": "plug",
- "description": "Connect your providers",
- "groups": [
+ "language": "id",
+ "dropdowns": [
{
- "group": "Analytics",
- "pages": [
- "integrations/analytics/overview",
- "integrations/analytics/amplitude",
- "integrations/analytics/clearbit",
- "integrations/analytics/fathom",
- "integrations/analytics/google-analytics",
- "integrations/analytics/google-tag-manager",
- "integrations/analytics/heap",
- "integrations/analytics/hotjar",
- "integrations/analytics/koala",
- "integrations/analytics/logrocket",
- "integrations/analytics/mixpanel",
- "integrations/analytics/pirsch",
- "integrations/analytics/plausible",
- "integrations/analytics/posthog",
- "integrations/analytics/segment"
+ "dropdown": "Getting Started",
+ "icon": "book",
+ "description": "Set up your documentation",
+ "groups": [
+ {
+ "group": "Getting Started",
+ "pages": [
+ "id/quickstart",
+ "id/settings/global",
+ "id/themes",
+ "id/migration"
+ ]
+ },
+ {
+ "group": "Writing Content",
+ "pages": [
+ "id/page",
+ "id/text",
+ "id/image-embeds",
+ "id/list-table",
+ "id/code",
+ "id/reusable-snippets"
+ ]
+ },
+ {
+ "group": "API References",
+ "pages": [
+ "id/api-playground/overview",
+ "id/api-playground/troubleshooting"
+ ]
+ },
+ {
+ "group": "Configurations",
+ "pages": [
+ "id/settings/custom-domain",
+ "id/settings/seo",
+ "id/settings/llms",
+ "id/settings/custom-scripts",
+ "id/settings/broken-links",
+ "id/settings/github",
+ "id/settings/gitlab",
+ "id/settings/ci",
+ "id/settings/preview-deployments"
+ ]
+ },
+ {
+ "group": "Advanced",
+ "pages": []
+ }
]
},
{
- "group": "SDKs",
- "pages": [
- "integrations/sdks/speakeasy",
- "integrations/sdks/stainless"
+ "dropdown": "Components",
+ "icon": "block-brick",
+ "description": "Component library",
+ "groups": [
+ {
+ "group": "Components",
+ "pages": [
+ "id/content/components/accordions",
+ "id/content/components/accordion-groups",
+ "id/content/components/callouts",
+ "id/content/components/cards",
+ "id/content/components/card-groups",
+ "id/content/components/code",
+ "id/content/components/code-groups",
+ "id/content/components/frames",
+ "id/content/components/icons",
+ "id/content/components/mermaid-diagrams",
+ "id/content/components/steps",
+ "id/content/components/tabs",
+ "id/content/components/tooltips",
+ "id/content/components/update"
+ ]
+ },
+ {
+ "group": "API Components",
+ "pages": [
+ "id/content/components/params",
+ "id/content/components/responses",
+ "id/content/components/expandables",
+ "id/content/components/sticky-examples"
+ ]
+ }
]
},
{
- "group": "Support",
- "pages": [
- "integrations/support/overview",
- "integrations/support/intercom",
- "integrations/support/front"
+ "dropdown": "Integrations",
+ "icon": "plug",
+ "description": "Connect your providers",
+ "groups": [
+ {
+ "group": "Analytics",
+ "pages": [
+ "id/integrations/analytics/overview",
+ "id/integrations/analytics/amplitude",
+ "id/integrations/analytics/clearbit",
+ "id/integrations/analytics/fathom",
+ "id/integrations/analytics/google-analytics",
+ "id/integrations/analytics/google-tag-manager",
+ "id/integrations/analytics/heap",
+ "id/integrations/analytics/hotjar",
+ "id/integrations/analytics/koala",
+ "id/integrations/analytics/logrocket",
+ "id/integrations/analytics/mixpanel",
+ "id/integrations/analytics/pirsch",
+ "id/integrations/analytics/plausible",
+ "id/integrations/analytics/posthog",
+ "id/integrations/analytics/segment"
+ ]
+ },
+ {
+ "group": "SDKs",
+ "pages": [
+ "id/integrations/sdks/speakeasy",
+ "id/integrations/sdks/stainless"
+ ]
+ },
+ {
+ "group": "Support",
+ "pages": [
+ "id/integrations/support/overview",
+ "id/integrations/support/intercom",
+ "id/integrations/support/front"
+ ]
+ },
+ {
+ "group": "Privacy",
+ "pages": [
+ "id/integrations/privacy/overview",
+ "id/integrations/privacy/osano"
+ ]
+ }
]
},
{
- "group": "Privacy",
- "pages": [
- "integrations/privacy/overview",
- "integrations/privacy/osano"
+ "dropdown": "Changelog",
+ "icon": "list-timeline",
+ "description": "Updates and changes",
+ "groups": [
+ {
+ "group": "Changelog",
+ "pages": [
+ "id/changelog/overview"
+ ]
+ }
]
}
]
- },
- {
- "dropdown": "Changelog",
- "icon": "list-timeline",
- "description": "Updates and changes",
- "groups": [
- {
- "group": "Changelog",
- "pages": ["changelog/overview"]
- }
- ]
}
]
},
- "logo": {
- "light": "/logo/light.svg",
- "dark": "/logo/dark.svg",
- "href": "https://mintlify.com"
- },
- "api": {
- "mdx": {
- "auth": {
- "method": "bearer"
- }
- }
- },
- "navbar": {
- "links": [
- {
- "label": "Community",
- "href": "https://mintlify.com/community"
- }
- ],
- "primary": {
- "type": "button",
- "label": "Get Started",
- "href": "https://mintlify.com/start"
- }
- },
"footer": {
"socials": {
"x": "https://x.com/mintlify",
@@ -373,6 +540,11 @@
}
},
"contextual": {
- "options": ["copy", "view", "chatgpt", "claude"]
+ "options": [
+ "copy",
+ "view",
+ "chatgpt",
+ "claude"
+ ]
}
-}
+}
\ No newline at end of file
diff --git a/id/advanced/dashboard/permissions.mdx b/id/advanced/dashboard/permissions.mdx
new file mode 100644
index 000000000..0d83eacf8
--- /dev/null
+++ b/id/advanced/dashboard/permissions.mdx
@@ -0,0 +1,16 @@
+---
+title: Izin Editor
+description: Izinkan lebih banyak anggota tim Anda untuk memperbarui docs
+---
+
+Anggota tim yang membuat docs awal Anda akan memiliki akses pembaruan ke docs Anda, selama mereka melakukan push ke repo dokumentasi Anda dengan akun GitHub yang sama yang digunakan saat mendaftar untuk Mintlify.
+
+Jika editor lain mencoba memperbarui docs saat menggunakan paket gratis, Anda akan melihat peringatan dalam pemeriksaan git commit Anda.
+
+
+
+
+
+Dalam detail peringatan pemeriksaan git, Anda akan menemukan tautan untuk meningkatkan paket Anda. Anda juga dapat meningkatkan paket Anda di [dashboard](https://dashboard.mintlify.com) untuk mengaktifkan editor tak terbatas untuk memperbarui docs Anda. Setelah Anda meningkatkan paket, picu pembaruan manual atau push perubahan lain untuk menerapkan pembaruan Anda.
+
+Pelajari lebih lanjut tentang harga kami [di sini](https://mintlify.com/pricing).
diff --git a/id/advanced/dashboard/sso.mdx b/id/advanced/dashboard/sso.mdx
new file mode 100644
index 000000000..0c93b1712
--- /dev/null
+++ b/id/advanced/dashboard/sso.mdx
@@ -0,0 +1,105 @@
+---
+title: Single Sign-On (SSO)
+description: Sesuaikan cara tim Anda dapat masuk ke dasbor admin Anda
+---
+
+Gunakan single sign-on ke dasbor Anda melalui SAML dan OIDC. Jika Anda menggunakan Okta atau Google Workspace, kami memiliki dokumentasi khusus penyedia untuk mengatur SSO, tetapi jika Anda menggunakan penyedia lain, silakan hubungi kami!
+
+
+ Fungsi SSO tersedia pada paket Enterprise kami.[Hubungi
+ kami](https://mintlify.com/enterprise) untuk mempelajari lebih lanjut!
+
+
+## Okta
+
+
+
+
+
+ Di bawah `Applications`, klik untuk membuat integrasi aplikasi baru menggunakan SAML 2.0.
+
+
+
+ Masukkan yang berikut:
+
+ * URL single sign-on (disediakan oleh Mintlify)
+ * URI Audiens (disediakan oleh Mintlify)
+ * Format ID Nama: `EmailAddress`
+ * Pernyataan Atribut:
+ | Nama | Format nama | Nilai |
+ | ----------- | ----------- | ---------------- |
+ | `firstName` | Dasar | `user.firstName` |
+ | `lastName` | Dasar | `user.lastName` |
+
+
+
+ Setelah aplikasi diatur, navigasi ke tab sign-on dan kirimkan URL metadata kepada kami.
+ Kami akan mengaktifkan koneksi dari sisi kami menggunakan informasi ini.
+
+
+
+
+
+
+
+ Di bawah `Applications`, klik untuk membuat integrasi aplikasi baru menggunakan OIDC.
+ Anda harus memilih `Web Application` tipe aplikasi.
+
+
+
+ Pilih tipe grant kode otorisasi dan masukkan URI Pengalihan yang disediakan oleh Mintlify.
+
+
+
+ Setelah aplikasi diatur, navigasi ke tab Umum dan temukan ID klien & rahasia klien.
+ Mohon berikan kami informasi ini secara aman, bersama dengan URL instansi Okta Anda (misalnya `.okta.com`). Anda dapat mengirimkan ini melalui layanan seperti 1Password atau SendSafely.
+
+
+
+
+
+## Google Workspace
+
+
+
+
+
+ Di bawah `Web and mobile apps`, pilih `Add custom SAML app` dari `Add app` dropdown.
+
+
+ 
+
+
+
+
+ Salin URL SSO, ID Entitas, dan sertifikat x509 yang disediakan dan kirimkan ke tim Mintlify.
+
+
+ 
+
+
+
+
+ Pada halaman detail Penyedia layanan, masukkan yang berikut:
+
+ * URL ACS (disediakan oleh Mintlify)
+ * ID Entitas (disediakan oleh Mintlify)
+ * Format ID Nama: `EMAIL`
+ * ID Nama: `Basic Information > Primary email`
+
+
+ 
+
+
+ Pada halaman berikutnya, masukkan pernyataan atribut berikut:
+
+ | Atribut Direktori Google | Atribut Aplikasi |
+ | ------------------------ | ---------------- |
+ | `First name` | `firstName` |
+ | `Last name` | `lastName` |
+
+ Setelah langkah ini selesai dan pengguna ditugaskan ke aplikasi, beri tahu tim kami dan kami akan mengaktifkan SSO untuk akun Anda!
+
+
+
+
diff --git a/id/advanced/mcp/generate.mdx b/id/advanced/mcp/generate.mdx
new file mode 100644
index 000000000..4ca45a7ae
--- /dev/null
+++ b/id/advanced/mcp/generate.mdx
@@ -0,0 +1,42 @@
+---
+title: MCP Generator
+description: Pelajari cara menyiapkan Server MCP Anda sendiri
+icon: 'text-size'
+---
+
+
+ Halaman ini didedikasikan untuk menyiapkan Server MCP Anda sendiri. Jika Anda mencari informasi tentang penggunaan Server Mintlify MCP, silakan merujuk ke
+ [Menginstal dan menggunakan Server Mintlify MCP](/advanced/mcp/quickstart) halaman.
+
+
+## Memulai
+
+Jalankan `npm i @mintlify/mcp` untuk menginstal `@mintlify/mcp` CLI.
+
+Di [dasbor](https://dashboard.mintlify.com/products/mcp) pergi ke `MCP Server`, di halaman ini alihkan untuk melihat perintah instalasi unik Anda. Ini adalah perintah untuk menginstal Server MCP Anda dengan `@mintlify/mcp` CLI.
+
+
+ Pastikan untuk mengalihkan akses OpenAPI untuk memungkinkan server MCP mengakses **semua**
+ endpoint dalam spesifikasi OpenAPI Anda.
+
+
+## Memulai server MCP secara lokal
+
+
+
+ Jalankan perintah berikut untuk menginstal server:
+
+ ```bash
+ npx @mintlify/mcp add [your subdomain]
+ ```
+
+
+
+ Jika API Anda memerlukan token autentikasi, beri tahu pelanggan akhir Anda untuk mendapatkannya dan menerapkannya ketika diberikan respons ini: `> What is the Authorization
+ (basic token)?` Jika tidak, Anda dapat melewati langkah ini.
+
+
+
+ Anda sekarang dapat menjalankan: `bash npm --prefix ~/.mcp/[your subdomain] start `
+
+
diff --git a/id/advanced/mcp/quickstart.mdx b/id/advanced/mcp/quickstart.mdx
new file mode 100644
index 000000000..340c296e0
--- /dev/null
+++ b/id/advanced/mcp/quickstart.mdx
@@ -0,0 +1,97 @@
+---
+title: Quickstart
+description: Menghasilkan server MCP untuk membantu menghubungkan produk Anda ke LLM
+---
+
+## Pendahuluan
+
+MCP Generator adalah alat CLI yang menghasilkan server MCP berdasarkan dokumentasi perusahaan Anda & spesifikasi OpenAPI jika tersedia. Ini mengambil dokumentasi Anda dan spesifikasi OpenAPI dan menghasilkan server MCP yang dapat digunakan dengan klien MCP apa pun. MCP Generator disampaikan melalui[paket npm](https://www.npmjs.com/package/mcp) dan menghasilkan server MCP yang dapat digunakan dengan klien MCP apa pun.
+
+Mintlify memungkinkan Anda membuat server MCP yang memungkinkan alat AI berinteraksi dengan dokumentasi Anda dalam skenario kunci berikut:
+
+1. **Docs Q\&A**, mirip dengan AI Chat kami. Ini secara otomatis diaktifkan untuk dokumentasi Anda, tidak diperlukan pengaturan.
+2. **Kueri API real-time**, jika Anda memiliki spesifikasi OpenAPI, buka`Mintlify Dashboard > Products > MCP Server` dan klik toggle untuk mengaktifkan spesifikasi OpenAPI Anda.
+
+
+ Dengan mengaktifkan toggle OpenAPI, Anda mengizinkan server MCP untuk mengakses
+ **semua** endpoint dalam spesifikasi OpenAPI Anda.
+
+
+## Instal server MCP
+
+
+ Halaman ini didedikasikan untuk Server MCP Mintlify. Jika Anda mencari informasi tentang cara menghasilkan MCP Anda, silakan lihat halaman[MCP Generator](/advanced/mcp/generate).
+
+
+## Contoh instalasi dengan server MCP Mintlify
+
+Untuk menggunakan server MCP Mintlify Anda akan memerlukan[kunci API](https://mintlify.com/docs/advanced/rest-api/overview#authentication) dari akun Mintlify Anda. Jika Anda belum memilikinya, navigasikan ke`Settings > API Keys > Chat API Key` dan buat kunci baru.
+
+## Mulai server MCP secara lokal
+
+
+
+ Jalankan perintah berikut untuk menginstal server:
+
+ ```bash
+ npx @mintlify/mcp add mintlify
+ ```
+
+
+
+ Respons berikut akan diberikan setelah menjalankan perintah sebelumnya:
+
+ ```
+ > What is the Authorization (basic token)?
+ ```
+
+ Menggunakan kunci chat API Anda, salin token autentikasi dan tempelkan ke dalam CLI.
+
+
+
+ Anda sekarang dapat menjalankan:
+
+ ```bash
+ npm --prefix ~/.mcp/mintlify start
+ ```
+
+
+
+## Gunakan server Anda dengan Claude
+
+
+ Unduh[Aplikasi Desktop Claude](https://claude.ai/download)
+
+
+Setelah Anda menginstal Aplikasi Desktop Claude, ikuti langkah-langkah berikut:
+
+
+
+
+
+ Tambahkan yang berikut ke`claude_desktop_config.json`:
+
+ ```json
+ {
+ "mcpServers": {
+ "mintlify": {
+ "command": "npm",
+ "args": [
+ "--prefix",
+ "~/.mcp/mintlify",
+ "start"
+ ]
+ }
+ }
+ }
+ ```
+
+
+
+ Jika Anda mengkliknya, Anda akan melihat MCP Tools yang tersedia di server Anda.
+
+
+ 
+
+
+
diff --git a/id/advanced/rest-api/chat/create-topic.mdx b/id/advanced/rest-api/chat/create-topic.mdx
new file mode 100644
index 000000000..dc00663e3
--- /dev/null
+++ b/id/advanced/rest-api/chat/create-topic.mdx
@@ -0,0 +1,3 @@
+---
+openapi: POST /chat/topic
+---
diff --git a/id/advanced/rest-api/chat/generate-message.mdx b/id/advanced/rest-api/chat/generate-message.mdx
new file mode 100644
index 000000000..b1cdbbb37
--- /dev/null
+++ b/id/advanced/rest-api/chat/generate-message.mdx
@@ -0,0 +1,3 @@
+---
+openapi: POST /chat/message
+---
diff --git a/id/advanced/rest-api/overview.mdx b/id/advanced/rest-api/overview.mdx
new file mode 100644
index 000000000..79c09718f
--- /dev/null
+++ b/id/advanced/rest-api/overview.mdx
@@ -0,0 +1,38 @@
+---
+title: Overview
+---
+
+## Memicu Pembaruan
+
+Anda dapat memanfaatkan REST API untuk memicu pembaruan secara terprogram saat diinginkan.
+
+
+ Meskipun kasus penggunaan utama akan menjadi memicu pembaruan, kami akan menambahkan lebih banyak
+ fungsionalitas ke API seiring waktu. Beri tahu kami apa lagi yang ingin Anda lihat di
+ [komunitas kami](https://mintlify.com/community)!
+
+
+## Autentikasi
+
+Anda dapat menghasilkan kunci API melalui
+[dasbor](https://dashboard.mintlify.com/settings/organization/api-keys). Kunci API tersebut terkait dengan seluruh organisasi dan dapat digunakan di berbagai deployment.
+
+
+
+
+
+## Kunci API Admin
+
+Kunci API Admin digunakan untuk sebagian besar API. Ini digunakan untuk memicu pembaruan melalui [endpoint Pembaruan](/advanced/rest-api/update/trigger).
+
+## Kunci API Chat
+
+API Chat memungkinkan Anda untuk menyematkan pengalaman chat AI yang didasarkan pada dokumentasi Anda dan terus diperbarui ke dalam aplikasi pilihan Anda.
+
+Respons mencakup kutipan sehingga Anda dapat mengarahkan pengguna ke tempat yang tepat untuk mendapatkan bantuan.
+
+
+ Token API Chat adalah token publik yang dapat direferensikan dalam kode frontend Anda sedangkan kunci API adalah token sisi server yang harus dijaga kerahasiaannya.
+
+
+Sekarang Anda memiliki kunci API, lihat [contoh](https://github.com/mintlify/discovery-api-example) kami untuk cara menggunakan API untuk AI chat. Anda juga dapat melihat versi yang sudah di-deploy di [chat.mintlify.com](https://chat.mintlify.com).
diff --git a/id/advanced/rest-api/update/status.mdx b/id/advanced/rest-api/update/status.mdx
new file mode 100644
index 000000000..0bc6efc18
--- /dev/null
+++ b/id/advanced/rest-api/update/status.mdx
@@ -0,0 +1,3 @@
+---
+openapi: GET /project/update-status/{statusId}
+---
diff --git a/id/advanced/rest-api/update/trigger.mdx b/id/advanced/rest-api/update/trigger.mdx
new file mode 100644
index 000000000..8d47fe1e6
--- /dev/null
+++ b/id/advanced/rest-api/update/trigger.mdx
@@ -0,0 +1,3 @@
+---
+openapi: POST /project/update/{projectId}
+---
diff --git a/id/advanced/subpath/cloudflare.mdx b/id/advanced/subpath/cloudflare.mdx
new file mode 100644
index 000000000..06dba438f
--- /dev/null
+++ b/id/advanced/subpath/cloudflare.mdx
@@ -0,0 +1,75 @@
+---
+title: Cloudflare
+description: Host dokumentasi di subpath /docs menggunakan Cloudflare Workers
+---
+
+## Buat Cloudflare Worker
+
+Navigasi ke`Workers & Pages > Create application > Create worker`. Anda akan melihat tampilan berikut di mana Anda dapat membuat worker Cloudflare baru.
+
+
+
+
+
+
+ Perlu diingat: Jika penyedia DNS Anda adalah Cloudflare, Anda tidak boleh menggunakan proxying untuk record CNAME
+
+
+### Tambahkan domain kustom
+
+Setelah worker dibuat, klik`Configure worker`. Navigasi ke worker
+`Settings > Triggers`. Klik pada`Add Custom Domain` untuk menambahkan domain yang Anda inginkan ke dalam daftar - kami menyarankan Anda menambahkan kedua versi dengan dan tanpa`www.`
+ditambahkan ke domain.
+
+
+
+
+
+Jika Anda mengalami kesulitan dalam mengatur subdirektori kustom,
+[hubungi tim dukungan kami](mailto:sales@mintlify.com) dan kami akan membantu Anda melalui proses peningkatan hosting Anda dengan kami.
+
+### Edit Skrip Worker
+
+Klik pada`Edit Code` dan tambahkan skrip berikut ke dalam kode worker.
+
+
+
+
+
+
+ Edit`DOCS_URL` dengan mengganti`[SUBDOMAIN]` dengan subdomain unik Anda dan`CUSTOM_URL` dengan URL dasar situs web Anda.
+
+
+```javascript
+addEventListener("fetch", (event) => {
+ event.respondWith(handleRequest(event.request));
+});
+
+async function handleRequest(request) {
+ try {
+ const urlObject = new URL(request.url);
+ // If the request is to the docs subdirectory
+ if (/^\/docs/.test(urlObject.pathname)) {
+ // Then Proxy to Mintlify
+ const DOCS_URL = "[SUBDOMAIN].mintlify.dev";
+ const CUSTOM_URL = "[YOUR_DOMAIN]";
+
+ let url = new URL(request.url);
+ url.hostname = DOCS_URL;
+
+ let proxyRequest = new Request(url, request);
+
+ proxyRequest.headers.set("Host", DOCS_URL);
+ proxyRequest.headers.set("X-Forwarded-Host", CUSTOM_URL);
+ proxyRequest.headers.set("X-Forwarded-Proto", "https");
+
+ return await fetch(proxyRequest);
+ }
+ } catch (error) {
+ // if no action found, play the regular request
+ return await fetch(request);
+ }
+}
+```
+
+Klik pada`Deploy` dan tunggu perubahan tersebar (bisa memakan waktu hingga beberapa jam).
diff --git a/id/advanced/subpath/route53-cloudfront.mdx b/id/advanced/subpath/route53-cloudfront.mdx
new file mode 100644
index 000000000..1acebeab1
--- /dev/null
+++ b/id/advanced/subpath/route53-cloudfront.mdx
@@ -0,0 +1,137 @@
+---
+title: AWS Route 53 dan Cloudfront
+sidebarTitle: AWS
+description: Host dokumentasi di subdirektori /docs menggunakan layanan AWS
+---
+
+## Membuat Distribusi Cloudfront
+
+Navigasi ke [Cloudfront](https://aws.amazon.com/cloudfront) di dalam konsol AWS dan klik pada `Create distribution`
+
+
+ 
+
+
+Untuk domain Origin, masukkan `[SUBDOMAIN].mintlify.dev` dimana `[SUBDOMAIN]` adalah subdomain unik proyek. Klik pada `Use: [SUBDOMAIN].mintlify.dev`
+
+
+
+Untuk **Kunci cache dan permintaan asal**, pilih `Caching Optimized`.
+
+
+ 
+
+
+Dan untuk **Firewall Aplikasi Web (WAF)**, aktifkan perlindungan keamanan
+
+
+ 
+
+
+Pengaturan lainnya harus default. Klik `Create distribution`.
+
+## Tambahkan Origin Default
+
+Setelah membuat distribusi, navigasi ke tab `Origins`.
+
+
+
+Kita ingin menemukan URL staging yang mencerminkan domain utama (example.com). Ini sangat bervariasi tergantung pada bagaimana halaman landing Anda dihosting.
+
+
+ Misalnya, jika halaman landing Anda dihosting di Webflow, Anda dapat menggunakan URL staging Webflow. URL tersebut akan terlihat seperti `.webflow.io`.
+
+ Jika Anda menggunakan Vercel, Anda menggunakan domain `.vercel.app` yang tersedia untuk setiap proyek.
+
+
+
+ Jika Anda tidak yakin bagaimana cara mendapatkan URL staging untuk halaman landing Anda, [hubungi
+ dukungan](mailto:support@mintlify.com) dan kami dengan senang hati akan membantu
+
+
+Setelah Anda memiliki URL staging, untuk kami misalnya adalah [mintlify-landing-page.vercel.app](https://mintlify-landing-page.vercel.app), buat Origin baru dan tambahkan sebagai **Domain asal**.
+
+
+ 
+
+
+Pada tahap ini, Anda seharusnya memiliki dua Origin - satu dengan `[SUBDOMAIN].mintlify.app` dan yang lainnya dengan URL staging.
+
+## Atur Perilaku
+
+Perilaku di Cloudfront memungkinkan kontrol atas logika subpath. Secara umum, kita ingin membuat logika berikut.
+
+* **Jika pengguna mengakses /docs**, pergi ke `[SUBDOMAIN].mintlify.dev`
+* **Jika pengguna mengakses halaman lain**, pergi ke halaman landing saat ini
+
+Kita akan membuat tiga perilaku dengan mengklik tombol `Create behavior`.
+
+### `/docs/*`
+
+Perilaku pertama harus memiliki **Pola path** berupa `/docs/*` dengan **Origin dan grup origin** mengarah ke `.mintlify.dev` URL (dalam kasus kami `acme.mintlify.dev`)
+
+
+
+Untuk **Kebijakan cache**, pilih `CachingOptimized` dan buat perilaku.
+
+### `/docs`
+
+Perilaku kedua harus sama dengan yang pertama tetapi dengan **Pola path** berupa `/docs` dan **Origin dan grup origin** mengarah ke `.mintlify.dev` URL yang sama.
+
+
+
+### `Default (*)`
+
+Terakhir, kita akan mengedit perilaku `Default (*)`.
+
+
+ 
+
+
+Kita akan mengubah **Origin dan grup origin** perilaku default ke URL staging (dalam kasus kami `mintlify-landing-page.vercel.app`).
+
+
+ 
+
+
+Klik pada `Save changes`.
+
+## Pratinjau Distribusi
+
+Sekarang Anda dapat menguji apakah distribusi Anda telah diatur dengan benar dengan membuka tab `General` dan mengunjungi URL **Nama domain distribusi**.
+
+
+ 
+
+
+Semua halaman harus mengarah ke halaman utama Anda, tetapi jika Anda menambahkan`/docs` ke URL, Anda seharusnya melihatnya mengarah ke instance dokumentasi Mintlify.
+
+## Menghubungkannya dengan Route53
+
+Sekarang, kita akan membawa fungsionalitas distribusi Cloudfront ke domain utama Anda.
+
+
+ Untuk bagian ini, Anda juga dapat merujuk ke panduan resmi AWS tentang[Mengkonfigurasi Amazon Route 53 untuk mengarahkan lalu lintas ke distribusi CloudFront](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html#routing-to-cloudfront-distribution-config)
+
+
+Navigasi ke[Route53](https://aws.amazon.com/route53) di dalam konsol AWS, dan klik ke`Hosted zone` untuk domain utama Anda. Klik pada`Create record`
+
+
+ 
+
+
+Alihkan`Alias` dan kemudian**Arahkan lalu lintas ke** pilihan`Alias to CloudFront distribution`.
+
+
+ 
+
+
+Klik`Create records`.
+
+
+ Anda mungkin perlu menghapus catatan A yang ada jika saat ini ada.
+
+
+Dan voila! Anda seharusnya dapat memiliki dokumentasi Anda yang disajikan di`/docs` untuk domain utama Anda.
diff --git a/id/advanced/subpath/vercel.mdx b/id/advanced/subpath/vercel.mdx
new file mode 100644
index 000000000..afc127c41
--- /dev/null
+++ b/id/advanced/subpath/vercel.mdx
@@ -0,0 +1,27 @@
+---
+title: Vercel
+description: Host dokumentasi di subpath /docs menggunakan Vercel
+---
+
+## Konfigurasi vercel.json
+
+Untuk meng-host dokumentasi Anda di subpath kustom menggunakan Vercel, Anda perlu menambahkan konfigurasi berikut ke berkas `vercel.json` Anda.
+
+```json
+{
+ "rewrites": [
+ {
+ "source": "/docs",
+ "destination": "https://[subdomain].mintlify.dev/docs"
+ },
+ {
+ "source": "/docs/:match*",
+ "destination": "https://[subdomain].mintlify.dev/docs/:match*"
+ }
+ ]
+}
+```
+
+
+ Untuk informasi lebih lanjut, Anda juga dapat merujuk ke panduan resmi Vercel tentang rewrites: [Konfigurasi Proyek: Rewrites](https://vercel.com/docs/projects/project-configuration#rewrites)
+
diff --git a/id/api-playground/mdx/authentication.mdx b/id/api-playground/mdx/authentication.mdx
new file mode 100644
index 000000000..ec0d0a871
--- /dev/null
+++ b/id/api-playground/mdx/authentication.mdx
@@ -0,0 +1,87 @@
+---
+title: Authentication
+description: Anda dapat mengatur parameter autentikasi agar pengguna dapat menggunakan kunci API mereka yang sebenarnya.
+---
+
+## Mengaktifkan Autentikasi
+
+Anda dapat menambahkan metode autentikasi ke docs.json untuk mengaktifkannya di setiap halaman atau Anda dapat mengaturnya berdasarkan halaman tertentu.
+
+Metode autentikasi halaman akan menggantikan docs.json jika keduanya diatur.
+
+### Token Bearer
+
+
+ ```json docs.json
+ "api": {
+ "mdx": {
+ "auth": {
+ "method": "bearer"
+ }
+ }
+ }
+ ```
+
+ ```md Page Metadata
+ ---
+ title: "Your page title"
+ authMethod: "bearer"
+ ---
+ ```
+
+
+### Autentikasi Dasar
+
+
+ ```json docs.json
+ "api": {
+ "mdx": {
+ "auth": {
+ "method": "basic"
+ }
+ }
+ }
+ ```
+
+ ```md Page Metadata
+ ---
+ title: "Your page title"
+ authMethod: "basic"
+ ---
+ ```
+
+
+### Kunci API
+
+
+ ```json docs.json
+ "api": {
+ "mdx": {
+ "auth": {
+ "method": "key",
+ "name": "x-api-key"
+ }
+ }
+ }
+ ```
+
+ ```md Page Metadata
+ ---
+ title: "Your page title"
+ authMethod: "key"
+ ---
+ ```
+
+
+### Tidak Ada
+
+Metode autentikasi "none" berguna untuk menonaktifkan autentikasi pada endpoint tertentu setelah mengatur default di docs.json.
+
+
+ ```md Page Metadata
+ ---
+ title: "Your page title"
+ authMethod: "none"
+ ---
+ ```
+
diff --git a/id/api-playground/mdx/configuration.mdx b/id/api-playground/mdx/configuration.mdx
new file mode 100644
index 000000000..115e21a0a
--- /dev/null
+++ b/id/api-playground/mdx/configuration.mdx
@@ -0,0 +1,70 @@
+---
+title: MDX Setup
+description: Menghasilkan halaman dokumentasi untuk endpoint API Anda menggunakan MDX
+---
+
+Mintlify memungkinkan Anda untuk mendefinisikan endpoint API Anda menggunakan kombinasi dari`docs.json` konfigurasi, bidang metadata MDX, dan komponen``. Dari endpoint yang didefinisikan, kami menghasilkan playground API, contoh permintaan, dan contoh respons.
+
+
+
+ Dalam file`docs.json` Anda, definisikan URL dasar dan metode autentikasi:
+
+ ```json
+ "api": {
+ "mdx": {
+ "server": "https://mintlify.com/api", // string array for multiple base URLs
+ "auth": {
+ "method": "key",
+ "name": "x-api-key" // options: bearer, basic, key.
+ }
+ }
+ }
+ ```
+
+ Jika Anda tidak ingin menampilkan playground API, Anda tidak perlu menyertakan tipe autentikasi. Sembunyikan playground dengan bidang berikut:
+
+ ```json
+ "api": {
+ "playground": {
+ "display": "none"
+ }
+ }
+ ```
+
+ Temukan daftar lengkap konfigurasi API[di sini](/settings/global#param-api).
+
+
+
+ Setiap halaman endpoint API harus memiliki file MDX yang sesuai. Di bagian atas setiap file, definisikan:
+
+ ```md
+ ---
+ title: 'Create new user'
+ api: 'POST https://api.mintlify.com/user'
+ ---
+ ```
+
+ Anda dapat menentukan parameter path dengan menambahkan nama parameter ke path, dibungkus dengan`{}`:
+
+ ```bash
+ https://api.example.com/v1/endpoint/{userId}
+ ```
+
+
+ Jika Anda memiliki`server` dikonfigurasi di[docs.json](/settings/global), Anda dapat menggunakan path relatif seperti`/v1/endpoint`.
+
+
+ Anda juga dapat mengganti mode tampilan yang didefinisikan secara global untuk playground API per halaman dengan menambahkan`playground` di bagian atas file MDX:
+
+ ```md
+ ---
+ title: 'Create new user'
+ api: 'POST https://api.mintlify.com/user'
+ playground: 'none'
+ ```
+
+
+
+ Tambahkan halaman endpoint Anda ke sidebar dengan menambahkan path ke`navigation` field di `docs.json`. Pelajari lebih lanjut tentang menyusun dokumen Anda [di sini](/settings/navigation).
+
+
diff --git a/id/api-playground/openapi/advanced-features.mdx b/id/api-playground/openapi/advanced-features.mdx
new file mode 100644
index 000000000..4e5450573
--- /dev/null
+++ b/id/api-playground/openapi/advanced-features.mdx
@@ -0,0 +1,139 @@
+---
+title: Fitur Lanjutan
+description: Dukungan untuk fitur OpenAPI lanjutan
+---
+
+OpenAPI 3 memiliki beberapa fitur lanjutan untuk mendeskripsikan API yang kompleks. Berikut cara Anda dapat menggunakannya dengan Mintlify.
+
+## `oneOf`, `anyOf`, `allOf`
+
+Untuk tipe data kompleks, OpenAPI menyediakan kata kunci `oneOf`, `anyOf`, dan `allOf` yang memungkinkan Anda menggabungkan skema dengan cara tertentu. Anda dapat membaca lebih lanjut tentang kata kunci ini di [dokumentasi Swagger](https://swagger.io/docs/specification/data-models/oneof-anyof-allof-not/), tetapi intinya:
+
+* `oneOf` berfungsi seperti operator "exclusive-or"
+* `anyOf` berfungsi seperti operator "or"
+* `allOf` berfungsi seperti operator "and"
+
+Kata kunci `oneOf` dan `anyOf` diperlakukan sama. Kami menemukan bahwa ketika orang menggunakan `oneOf`, mereka sering *bermaksud* `anyOf` - dan seringkali tidak ada perbedaan yang berarti bagi pengguna.
+
+Kata kunci `not` saat ini tidak didukung.
+
+### Menggabungkan skema dengan `allOf`
+
+Mintlify melakukan beberapa pra-pemrosesan pada dokumen OpenAPI Anda untuk menampilkan kombinasi kompleks ini dengan cara yang mudah dibaca. Misalnya, ketika Anda menggabungkan dua skema objek dengan `allOf`, Mintlify menggabungkan properti keduanya menjadi satu objek. Ini menjadi sangat berguna ketika memanfaatkan [OpenAPI yang dapat digunakan kembali `components`](https://swagger.io/docs/specification/components/).
+
+```yaml
+org_with_users:
+ allOf:
+ - $ref: '#/components/schemas/Org'
+ - type: object
+ properties:
+ users:
+ type: array
+ description: An array containing all users in the organization
+...
+components:
+ schemas:
+ Org:
+ type: object
+ properties:
+ id:
+ type: string
+ description: The ID of the organization
+```
+
+
+
+
+ ID dari organisasi
+
+
+
+ Array yang berisi semua pengguna dalam organisasi
+
+
+
+
+### Menyediakan opsi dengan `oneOf` dan `anyOf`
+
+Ketika Anda menggunakan `oneOf` atau `anyOf`, Mintlify menampilkan opsi dalam kontainer bertab. Untuk memberikan nama yang membantu pada opsi Anda, pastikan untuk memberikan setiap subskema bidang `title`. Misalnya, berikut cara Anda mungkin menampilkan dua jenis alamat pengiriman yang berbeda:
+
+```yaml
+delivery_address:
+ oneOf:
+ - title: StreetAddress
+ type: object
+ properties:
+ address_line_1:
+ type: string
+ description: The street address of the recipient
+ ...
+ - title: POBox
+ type: object
+ properties:
+ box_number:
+ type: string
+ description: The number of the PO Box
+ ...
+```
+
+
+
+
+
+
+ Alamat jalan dari tempat tinggal
+
+
+
+
+
+ Nomor PO Box
+
+
+
+
+
+
+## `x-codeSamples`
+
+Jika pengguna Anda berinteraksi dengan API menggunakan SDK daripada langsung melalui permintaan jaringan, Anda dapat menambahkan contoh kode ke dokumen OpenAPI Anda, dan Mintlify akan menampilkannya di halaman OpenAPI Anda. Anda dapat mendefinisikan contoh kode Anda menggunakan`x-codeSamples` ekstensi. Properti ini dapat ditambahkan dalam metode permintaan apa pun, dan memiliki skema berikut:
+
+
+ Bahasa dari contoh kode.
+
+
+
+ Label untuk contoh. Ini berguna ketika menyediakan beberapa contoh untuk satu endpoint.
+
+
+
+ Kode sumber dari contoh.
+
+
+Berikut adalah contoh beberapa contoh kode untuk aplikasi pelacakan tanaman, yang memiliki alat CLI Bash dan SDK JavaScript.
+
+```yaml
+paths:
+ /plants:
+ get:
+ ...
+ x-codeSamples:
+ - lang: bash
+ label: List all unwatered plants
+ source: |
+ planter list -u
+ - lang: javascript
+ label: List all unwatered plants
+ source: |
+ const planter = require('planter');
+ planter.list({ unwatered: true });
+ - lang: bash
+ label: List all potted plants
+ source: |
+ planter list -p
+ - lang: javascript
+ label: List all potted plants
+ source: |
+ const planter = require('planter');
+ planter.list({ potted: true });
+```
diff --git a/id/api-playground/openapi/setup.mdx b/id/api-playground/openapi/setup.mdx
new file mode 100644
index 000000000..07ba21b84
--- /dev/null
+++ b/id/api-playground/openapi/setup.mdx
@@ -0,0 +1,148 @@
+---
+title: Pengaturan OpenAPI
+description: Referensikan endpoint OpenAPI di halaman dokumen Anda
+---
+
+## Tambahkan file spesifikasi OpenAPI
+
+Untuk mendeskripsikan endpoint Anda dengan OpenAPI, pastikan Anda memiliki dokumen OpenAPI yang valid dalam format JSON atau YAML yang mengikuti[spesifikasi OpenAPI](https://swagger.io/specification/). Dokumen Anda harus
+mengikuti spesifikasi OpenAPI 3.0+.
+Untuk memvalidasi spesifikasi OpenAPI Anda, gunakan [CLI](https://www.npmjs.com/package/mintlify) kami dan jalankan perintah ini: `mintlify openapi-check `
+
+## Isi otomatis halaman API
+
+Cara tercepat untuk memulai dengan OpenAPI adalah menambahkan bidang `openapi` ke tab dalam `docs.json`. Bidang ini dapat berisi path ke dokumen OpenAPI dalam repo dokumen Anda, atau URL dari dokumen OpenAPI yang dihosting. Mintlify akan secara otomatis menghasilkan halaman untuk setiap operasi OpenAPI dan menempatkannya dalam tab.
+
+**Contoh dengan Tab:**
+
+```json {5}
+"navigation": {
+ "tabs": [
+ {
+ "tab": "API Reference",
+ "openapi": "https://petstore3.swagger.io/api/v3/openapi.json"
+ }
+ ]
+}
+```
+
+
+
+**Contoh dengan Grup:**
+
+```json {8-11}
+"navigation": {
+ "tabs": [
+ {
+ "tab": "API Reference",
+ "groups": [
+ {
+ "group": "Endpoints",
+ "openapi": {
+ "source": "/path/to/openapi-1.json",
+ "directory": "api-reference"
+ }
+ }
+ ]
+ }
+ ]
+}
+```
+
+Bidang direktori bersifat opsional. Jika tidak ditentukan, file akan ditempatkan di **api-reference** folder dari repo docs.
+
+Saat menggunakan opsi ini, metadata untuk halaman yang dihasilkan akan memiliki nilai default berikut:
+
+* `title`: Bidang `summary` dari operasi OpenAPI, jika ada. Jika tidak, judul yang dihasilkan dari metode HTTP dan endpoint.
+
+* `description`: Bidang `description` dari operasi OpenAPI, jika ada.
+
+* `version`: Nilai `version` dari anchor atau tab, jika ada.
+
+Ada beberapa skenario di mana perilaku default tidak mencukupi. Jika Anda membutuhkan lebih banyak kustomisasi, Anda dapat membuat halaman MDX untuk operasi OpenAPI Anda, dan memodifikasinya seperti halaman MDX lainnya.
+
+## Membuat file MDX untuk halaman API
+
+Jika Anda ingin menyesuaikan metadata halaman, menambahkan konten tambahan, menghilangkan operasi OpenAPI tertentu, atau mengatur ulang halaman OpenAPI dalam navigasi Anda, Anda akan memerlukan halaman MDX untuk setiap operasi. Berikut adalah [contoh halaman OpenAPI MDX](https://github.com/mindsdb/mindsdb/blob/main/docs/rest/databases/create-databases.mdx) dari [MindsDB](https://docs.mindsdb.com/rest/databases/create-databases).
+
+
+
+### Menentukan file secara manual
+
+Anda selalu dapat membuat halaman MDX secara manual, dan mereferensikan operasi OpenAPI dalam metadata halaman menggunakan bidang `openapi`.
+
+
+
+Dengan menggunakan referensi OpenAPI, nama, deskripsi, parameter, respons, dan playground API akan secara otomatis dihasilkan dari dokumen OpenAPI.
+
+Jika Anda memiliki beberapa file OpenAPI, sertakan path ke file OpenAPI untuk memastikan Mintlify menemukan dokumen OpenAPI yang benar. Ini tidak diperlukan jika Anda hanya memiliki satu file OpenAPI - itu akan secara otomatis mendeteksi file OpenAPI Anda.
+
+Jika Anda ingin mereferensikan file OpenAPI eksternal menggunakan metode ini, berikan URL file dalam docs.json. Lihat [di sini](https://mintlify.com/docs/settings/global#param-source-4) untuk format yang benar.
+
+
+ ```md Example
+ ---
+ title: "Get users"
+ openapi: "/path/to/openapi-1.json GET /users"
+ ---
+ ```
+
+ ```md Format
+ ---
+ title: "title of the page"
+ openapi: openapi-file-path method path
+ ---
+ ```
+
+
+
+ Dalam kebanyakan kasus, metode dan path harus cocok persis dengan metode dan path yang ditentukan dalam dokumen OpenAPI. Jika endpoint tidak ada dalam file OpenAPI, halaman akan kosong.
+
+ Untuk webhook, ganti metode (misalnya "POST") dengan "webhook" (tidak case sensitive) dan metode yang benar akan dihasilkan.
+
+
+### Menghasilkan file secara otomatis
+
+Untuk dokumen OpenAPI yang besar, membuat satu halaman MDX untuk setiap operasi OpenAPI bisa memakan banyak waktu. Untuk memudahkan, kami membuat scraper halaman OpenAPI lokal.
+
+Mintlify kami [scraper](https://www.npmjs.com/package/@mintlify/scraping)
+menghasilkan file MDX secara otomatis untuk endpoint OpenAPI Anda.
+
+Setiap halaman yang dihasilkan akan sesuai dengan operasi OpenAPI di bawah bagian "paths" dari skema OpenAPI. Jika dokumen OpenAPI Anda versi 3.1+, scraper juga akan menghasilkan halaman untuk webhook di bawah bagian "webhooks" dari skema OpenAPI.
+
+```bash
+npx @mintlify/scraping@latest openapi-file
+```
+
+Tambahkan `-o` flag untuk menentukan folder untuk mengisi file. Jika folder tidak ditentukan, file akan diisi di direktori kerja.
+
+```bash
+npx @mintlify/scraping@latest openapi-file -o api-reference
+```
+
+Pelajari lebih lanjut tentang paket scraping kami [di sini](https://www.npmjs.com/package/@mintlify/scraping).
+
+Scraper akan menghasilkan array dari
+[Entri Navigasi](/settings/global#structure) yang berisi file OpenAPI MDX Anda. Anda dapat menambahkan entri ini ke Navigasi yang ada, atau mengatur ulang dan menambahkan file ke navigasi Anda secara manual.
+
+
+ Jika dokumen OpenAPI Anda tidak valid, file tidak akan dihasilkan secara otomatis.
+
+
+## Membuat file MDX untuk skema OpenAPI
+
+Mintlify juga memungkinkan Anda untuk membuat halaman individual untuk setiap skema OpenAPI yang didefinisikan dalam bidang `components.schemas` dokumen OpenAPI:
+
+
+ ```md Example
+ ---
+ openapi-schema: OrderItem
+ ---
+ ```
+
+ ```md Format
+ ---
+ openapi-schema: "schema-key"
+ ---
+ ```
+
diff --git a/id/api-playground/openapi/writing-openapi.mdx b/id/api-playground/openapi/writing-openapi.mdx
new file mode 100644
index 000000000..4a0173977
--- /dev/null
+++ b/id/api-playground/openapi/writing-openapi.mdx
@@ -0,0 +1,33 @@
+---
+title: Menulis OpenAPI
+description: Gunakan fitur OpenAPI untuk meningkatkan dokumentasi Anda
+---
+
+## Mendeskripsikan API Anda
+
+Ada banyak alat bagus online untuk mempelajari dan membuat dokumen OpenAPI. Berikut adalah favorit kami:
+
+* [Panduan OpenAPI Swagger](https://swagger.io/docs/specification/about/) untuk membiasakan diri dengan sintaks OpenAPI
+* [Spesifikasi OpenAPI v3.1.0](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md) untuk semua detail tentang spesifikasi OpenAPI terbaru
+* [Validator Swagger & OpenAPI](https://editor.swagger.io/) untuk debug dokumen OpenAPI Anda
+* [Editor Swagger](https://editor.swagger.io/) untuk melihat contoh dalam aksi
+
+
+ Panduan OpenAPI Swagger adalah untuk OpenAPI v3.0, tetapi hampir semua informasi berlaku untuk v3.1. Untuk informasi lebih lanjut tentang perbedaan antara v3.0 dan v3.1, lihat [postingan blog OpenAPI](https://www.openapis.org/blog/2021/02/16/migrating-from-openapi-3-0-to-3-1-0).
+
+
+## Menentukan URL untuk API Anda
+
+Dalam dokumen OpenAPI, endpoint API yang berbeda ditentukan oleh jalurnya, seperti `/users/{id}`, atau mungkin hanya `/`. Untuk menentukan URL dasar tempat jalur ini harus ditambahkan, OpenAPI menyediakan bidang `servers`. Bidang ini diperlukan untuk menggunakan beberapa fitur Mintlify seperti API Playground. Baca cara mengkonfigurasi bidang `servers` di [dokumentasi Swagger](https://swagger.io/docs/specification/api-host-and-base-path/).
+
+API Playground akan menggunakan URL server ini untuk menentukan ke mana mengirim permintaan. Jika beberapa server ditentukan, dropdown akan muncul untuk memungkinkan beralih antar server. Jika tidak ada server yang disediakan, API Playground akan menggunakan mode sederhana, karena tidak ada cara untuk mengirim permintaan.
+
+Jika endpoint berbeda dalam API Anda ada di URL yang berbeda, Anda dapat [mengganti bidang server](https://swagger.io/docs/specification/api-host-and-base-path/#:~:text=%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%2D%20southeastasia-,Overriding%20Servers,-The%20global%20servers) untuk path atau operasi tertentu.
+
+## Menentukan autentikasi
+
+Hampir semua API memerlukan beberapa metode autentikasi. OpenAPI menyediakan `securitySchemes` bidang untuk mendefinisikan metode autentikasi yang digunakan di seluruh API Anda, dengan konfigurasi sederhana untuk jenis autentikasi yang paling umum - [Basic](https://swagger.io/docs/specification/authentication/basic-authentication/), [Bearer](https://swagger.io/docs/specification/authentication/bearer-authentication/), dan [API Keys](https://swagger.io/docs/specification/authentication/api-keys/). Untuk menerapkan metode autentikasi ini ke endpoint Anda, OpenAPI menggunakan `security` bidang. Sintaks untuk mendefinisikan dan menerapkan autentikasi agak tidak intuitif, jadi pastikan untuk memeriksa [dokumentasi dan contoh Swagger](https://swagger.io/docs/specification/authentication/) tentang topik ini.
+
+Deskripsi API dan API Playground akan menambahkan bidang autentikasi berdasarkan konfigurasi keamanan dalam dokumen OpenAPI Anda.
+
+Jika endpoint yang berbeda dalam API Anda memerlukan metode autentikasi yang berbeda, Anda dapat [mengganti bidang keamanan](https://swagger.io/docs/specification/authentication/#:~:text=you%20can%20apply%20them%20to%20the%20whole%20API%20or%20individual%20operations%20by%20adding%20the%20security%20section%20on%20the%20root%20level%20or%20operation%20level%2C%20respectively.) untuk operasi tertentu.
diff --git a/id/api-playground/overview.mdx b/id/api-playground/overview.mdx
new file mode 100644
index 000000000..869711c9e
--- /dev/null
+++ b/id/api-playground/overview.mdx
@@ -0,0 +1,13 @@
+---
+title: Playground
+description: Memungkinkan pengguna untuk berinteraksi dengan API Anda
+openapi: POST /project/update/{projectId}
+hideApiMarker: true
+icon: play
+---
+
+API playground adalah lingkungan interaktif untuk membuat permintaan dan mempratinjau endpoint API.
+
+
+ Pembuatan halaman API secara otomatis dengan OpenAPI akan secara otomatis menghasilkan API playground. Baca lebih lanjut tentang penggunaan OpenAPI[di sini](/api-playground/openapi).
+
diff --git a/id/api-playground/troubleshooting.mdx b/id/api-playground/troubleshooting.mdx
new file mode 100644
index 000000000..33c83427e
--- /dev/null
+++ b/id/api-playground/troubleshooting.mdx
@@ -0,0 +1,72 @@
+---
+title: Pemecahan Masalah
+description: Masalah umum dengan Referensi API
+icon: triangle-exclamation
+---
+
+Halaman API itu rumit. Akibatnya, ada banyak hal yang bisa salah.
+Berikut adalah daftar masalah umum yang sering kami lihat dialami pelanggan:
+
+
+
+ Dalam skenario ini, kemungkinan Mintlify tidak dapat menemukan dokumen OpenAPI Anda,
+ atau dokumen OpenAPI Anda tidak valid.
+
+ Menjalankan `mintlify dev` secara lokal seharusnya mengungkapkan beberapa masalah ini.
+
+ Untuk memverifikasi dokumen OpenAPI Anda akan lulus validasi:
+
+ 1. Kunjungi [validator ini](https://editor.swagger.io/)
+ 2. Beralih ke tab "Validate text"
+ 3. Tempel dokumen OpenAPI Anda
+ 4. Klik "Validate it!"
+
+ Jika kotak teks yang muncul di bawah memiliki batas hijau, dokumen Anda telah lulus validasi.
+ Ini adalah paket validasi yang sama persis yang digunakan Mintlify untuk memvalidasi dokumen OpenAPI, jadi jika dokumen Anda
+ lulus validasi di sini, ada kemungkinan besar masalahnya ada di tempat lain.
+
+ Selain itu, Mintlify tidak mendukung OpenAPI 2.0. Jika dokumen Anda menggunakan versi spesifikasi ini,
+ Anda mungkin mengalami masalah ini. Anda dapat mengkonversi dokumen Anda di [editor.swagger.io](https://editor.swagger.io/) (di bawah Edit > Convert to OpenAPI 3):
+
+
+
+
+
+
+
+ Ini biasanya disebabkan oleh kesalahan penulisan`openapi` field dalam metadata halaman. Pastikan metode HTTP dan path cocok persis dengan metode HTTP dan path dalam dokumen OpenAPI.
+
+ Berikut contoh bagaimana sesuatu bisa salah:
+
+ ```md get-user.mdx
+ ---
+ openapi: "GET /users/{id}/"
+ ---
+ ```
+
+ ```yaml openapi.yaml
+ paths:
+ "/users/{id}":
+ get: ...
+ ```
+
+ Perhatikan bahwa path di`openapi` field memiliki garis miring di akhir, sedangkan path di dokumen OpenAPI tidak.
+
+ Masalah umum lainnya adalah kesalahan penulisan nama file. Jika Anda menentukan dokumen OpenAPI tertentu di`openapi` field, pastikan nama filenya benar. Misalnya, jika Anda memiliki dua dokumen OpenAPI`openapi/v1.json` dan`openapi/v2.json`, metadata Anda mungkin terlihat seperti ini:
+
+ ```md api-reference/v1/users/get-user.mdx
+ ---
+ openapi: "v1 GET /users/{id}"
+ ---
+ ```
+
+
+
+ Jika Anda memiliki domain kustom yang dikonfigurasi, ini bisa jadi masalah dengan reverse proxy Anda. Secara default, permintaan yang dibuat melalui API Playground dimulai dengan permintaan`POST` ke path
+ `/api/request` pada situs dokumentasi. Jika reverse proxy Anda dikonfigurasi untuk hanya mengizinkan`GET`
+ permintaan, maka semua permintaan ini akan gagal. Untuk memperbaikinya, konfigurasikan reverse proxy Anda untuk mengizinkan`POST` permintaan ke`/api/request` path.
+
+ Atau, jika reverse proxy Anda mencegah Anda menerima`POST` permintaan, Anda dapat mengonfigurasi Mintlify untuk mengirim permintaan langsung ke backend Anda dengan`api.playground.disableProxy`
+ pengaturan di`docs.json`, seperti dijelaskan[di sini](/settings/global#api-configurations). Ini mungkin mengharuskan Anda mengonfigurasi CORS di server Anda, karena permintaan ini sekarang akan datang langsung dari browser pengguna Anda.
+
+
diff --git a/id/changelog/overview.mdx b/id/changelog/overview.mdx
new file mode 100644
index 000000000..ec355b265
--- /dev/null
+++ b/id/changelog/overview.mdx
@@ -0,0 +1,392 @@
+---
+title: Pembaruan Produk
+description: Pembaruan dan peningkatan baru
+mode: center
+---
+
+
+ ## Generator server MCP
+
+ Menghasilkan server MCP sehingga aplikasi AI dapat berinteraksi dengan dokumentasi atau API Anda. Konten tertulis secara otomatis dihasilkan sebagai server MCP, dan Anda dapat menghasilkan server MCP dari spesifikasi OpenAPI Anda dengan satu klik.
+ Lihat [dokumentasi tentang memulai dengan MCP.](/advanced/mcp/quickstart.mdx)
+
+ ## mcpt: registri untuk server MCP
+
+ Temukan 105+ server MCP di [mcpt](https://www.mcpt.com). Direktori ini mencakup server resmi dan server dari basis pelanggan kami sendiri.
+
+ ## Peningkatan
+
+ * Tag pembaruan changelog sehingga pengguna akhir dapat memfilter pembaruan
+ * Sonnet-3.7 didukung untuk AI Chat. Konfigurasikan model pilihan Anda melalui dasbor
+ * Ubah nama deployment Anda langsung di pengaturan dasbor
+
+ ## Perbaikan bug
+
+ * Gambar OG diperbaiki
+ * Memperbaiki inkonsistensi gaya ikon untuk jangkar tanpa kontainer
+ * Meningkatkan detail gaya batas dasbor untuk responsivitas mobile-tablet-desktop
+ * Menampilkan contoh kode bahkan dalam mode sederhana untuk API playground
+ * Mendukung pintasan "command + k" untuk pencarian di editor web
+ * Blok kode dalam callout memperluas untuk mengisi lebar area callout
+
+
+
+ ## Skema Konfigurasi Baru`docs.json`
+
+ Kami telah memperkenalkan `docs.json` skema sebagai pengganti `mint.json`, untuk mendukung versi multi-level yang lebih baik, pemahaman visual yang lebih mudah, dan terminologi yang lebih konsisten. Untuk informasi lebih lanjut tentang apa yang berubah, [lihat blog kami](https://mintlify.com/blog/refactoring-mint-json-into-docs-json).
+
+ Upgrade dari `mint.json` ke `docs.json` dengan langkah-langkah berikut:
+
+ 1. Pastikan CLI Anda adalah versi terbaru
+
+ ```
+ npm i mintlify@latest -g
+ ```
+
+ 1. Di repositori docs Anda, jalankan
+
+ ```
+ mintlify upgrade
+ ```
+
+ 1. Hapus file mint.json lama Anda dan push perubahan Anda
+
+ ## Pemeriksaan CI
+
+ Secara otomatis periksa docs Anda untuk menemukan tautan yang rusak, menemukan masalah ejaan dan tata bahasa, atau menerapkan gaya penulisan dengan konfigurasi Vale Anda sendiri. Pelajari lebih lanjut di [dokumentasi](settings/ci).
+
+ ## Dukungan .md untuk LLM
+
+ Semua halaman dokumentasi sekarang secara otomatis tersedia sebagai file Markdown biasa—cukup tambahkan `.md` ke URL. Ini memudahkan LLM untuk mengambil halaman individual dari dokumentasi Anda.
+
+ ## Tema Tambahan
+
+ Tema [pra-bangun](/themes) baru untuk memodifikasi tampilan & nuansa docs Anda. Konfigurasikan melalui [file docs.json](/settings/global).
+
+ Sekarang tersedia:
+
+ * Maple
+ * Palm
+ * Willow
+
+ ## Peningkatan lainnya
+
+ * [Panduan Penulisan Teknis:](https://mintlify.com/guides/introduction)Praktik terbaik untuk menulis dokumentasi teknis, termasuk riset audiens, jenis konten, dan tips penulisan.
+ * [Komponen dropdown](/navigation/divisions#dropdowns): Mengatur navigasi dengan dropdown, selain tab dan jangkar.
+ * [Perbaikan sintaks AI](https://x.com/ricardonunez_io/status/1892334887644123192): Editor web akan menangkap jika ada kesalahan parsing dan menggunakan AI untuk menyarankan perbaikan.
+
+
+
+ ## Peningkatan Asisten AI
+
+ * UI baru dengan halaman chat khusus & prompt yang telah diisi
+ * Peningkatan stabilitas, misalnya perbaikan bug pengeditan file yang salah atau tidak ada file sama sekali
+ * Pengetahuan yang lebih kuat untuk menambah & mengedit komponen
+ * Peningkatan pengeditan file mint.json
+
+ ## Autentikasi Parsial
+
+ Sesuaikan akses ke setiap halaman atau bagian konten tergantung pada izin pengguna. Mendukung koneksi dengan sistem autentikasi Anda sendiri.
+
+ ## API Playground yang Diperbarui
+
+ Kami telah memperbarui desain dan kinerja [API Playground](/api-playground/). Pembaruan meliputi:
+
+ * Ekspansi detail yang lebih mudah untuk gambaran umum sebuah field
+ * Desain bersarang yang lebih intuitif, misalnya menambah atau menghapus item
+ * Waktu respons yang lebih cepat
+
+ ## Peningkatan Kualitas
+
+ * Dukungan untuk memerlukan autentikasi untuk mengakses deployment preview
+
+
+
+ ## Autentikasi
+
+
+ 
+
+
+ Buat dokumentasi menjadi privat dengan mengatur autentikasi melalui JWT, OAuth, atau kata sandi universal. Dengan privasi ini, Anda dapat membuat basis pengetahuan internal atau mencegah pesaing melihat dokumentasi Anda.
+
+
+
+ ## Asisten AI
+
+
+ 
+
+
+ Sekarang Anda dapat meminta AI untuk membuat perubahan pada dokumentasi Anda, dengan konteks dari semua dokumentasi yang ada. Ketik prompt dan asisten akan mengusulkan perubahan dengan menghasilkan pull request.
+
+ ## Peningkatan Integrasi GitLab
+
+ Kami telah meningkatkan dukungan kami untuk sinkronisasi dengan GitLab, seperti mengaktifkan pembaruan otomatis dan deployment preview. Lihat [dokumentasi tentang GitLab](/settings/gitlab) untuk memulai.
+
+ ## Editor Web
+
+
+ 
+
+
+ Kami telah memperbarui editor web kami sehingga sekarang Anda dapat memperbarui dokumentasi dengan pengalaman WYSIWYG lengkap, sambil tetap sinkron dengan markdown.
+
+ Lihat [dokumentasi tentang memulai dengan Editor Web](/web-editor).
+
+ ## Dukungan /llms.txt
+
+
+ 
+
+
+ Semua instansi dokumentasi sekarang secara otomatis di-host di /llms.txt dan /llms-full.txt sehingga LLM dapat dengan mudah mengambil dokumentasi Anda. Untuk informasi lebih lanjut, baca [dokumentasi tentang standar llms.txt yang baru](https://llmstxt.org)
+
+ ## Lokalisasi
+
+ Sekarang Anda dapat melokalisasi dokumentasi Anda yang beroperasi mirip dengan versi. Tambahkan `locale` ke versi dan konten tetap di Mintlify seperti "Apakah halaman ini membantu?" juga akan sesuai dengan lokal.
+
+ ### Peningkatan Kualitas
+
+ * Mengembalikan hasil obrolan & pencarian berdasarkan versi yang sedang dibaca pengguna
+ * Mengautentikasi pengguna dengan OAuth, selain JWT atau token Shared Session.
+
+
+
+ ## Changelog
+
+ Meluncurkan [Komponen Update](/content/components/update) untuk mempermudah menampilkan dan melaporkan pembaruan (seperti ini) kepada pengguna Anda.
+
+
+ 
+
+
+ ## Penyorotan Baris Kode
+
+ Sekarang Anda dapat menyorot baris kode dalam dokumentasi Anda untuk menekankan dan menarik perhatian ke bagian penting dengan menambahkan komentar khusus setelah pengidentifikasi bahasa. Gunakan kurung kurawal `{}` dan tentukan nomor baris atau rentang yang dipisahkan dengan koma.
+
+ ```javascript Line Highlighting Example {1,3-5}
+ const greeting = "Hello, World!";
+ function sayHello() {
+ console.log(greeting);
+ }
+ sayHello();
+ ```
+
+ ````md
+ ```javascript Line Highlighting Example {1,3-5}
+ const greeting = "Hello, World!";
+ function sayHello() {
+ console.log(greeting);
+ }
+ sayHello();
+ ```
+ ````
+
+ ## Blok kode mode terang
+
+ Blok kode sekarang memiliki varian mode terang yang dapat diaktifkan dengan menambahkan berikut ke `mint.json`:
+
+ ```json
+ "codeBlock": {
+ "mode": "auto"
+ }
+ ```
+
+ ## Footer Lanjutan
+
+
+ 
+
+
+ Sekarang Anda dapat menambahkan lebih banyak tautan ke footer standar. Peningkatan ini memberikan konsistensi yang lebih baik antara halaman landing dan dokumentasi, atau kustomisasi yang lebih besar jika Anda ingin menyoroti halaman tertentu seperti sosial media atau log status.
+
+ ## Filter pencarian berdasarkan pengguna saat ini
+
+ Ketika personalisasi diaktifkan, hasil pencarian sekarang difilter berdasarkan pengguna yang sedang login sehingga mereka hanya melihat konten yang relevan.
+
+ ## Prompt Kustom untuk AI Chat
+
+ Sekarang Anda dapat menyesuaikan prompt untuk AI chat. Silakan hubungi [dukungan](mailto:sales@mintlify.com) jika Anda ingin menyesuaikan prompt.
+
+ ## Peningkatan Dashboard
+
+ * Menambahkan kemampuan untuk mengubah domain kustom menjadi /docs langsung melalui pengaturan dashboard.
+ * Menggabungkan halaman login dan signup untuk mengurangi friksi dan kebingungan.
+ * Mengimplementasikan alur login discovery sehingga pengguna yang menjadi anggota beberapa organisasi sekarang dapat beralih di antara mereka.
+ * Menambahkan login dengan Google OAuth
+ * Menambahkan kemampuan untuk menambah deployment baru melalui pengaturan dashboard.
+
+ ## Perbaikan Bug
+
+ * Sekarang dapat menggunakan garis miring di awal dalam navigasi.
+ * Sekarang dapat mengedit file CSS & JS di editor web.
+ * Memperbaiki `suggestEdit` yang tidak muncul meskipun diaktifkan.
+ * Memperbaiki navigasi keyboard untuk Pencarian dan Chat sehingga sekarang Anda dapat menggunakan tombol panah atas dan bawah untuk menavigasi hasil.
+ * Tidak mengizinkan mesin pencari untuk merayapi halaman yang dilindungi user-auth.
+ * Memvalidasi ulang cache ketika organisasi dihapus.
+ * Kami sekarang menggunakan parser OpenAPI Scalar untuk mengurai definisi OpenAPI yang meningkatkan kinerja, memperbaiki masalah penguraian, dan menampilkan pesan kesalahan yang lebih baik.
+ * Deskripsi tingkat atas sekarang didukung dalam halaman referensi API yang dibuat secara otomatis dari definisi OpenAPI.
+ * Menambahkan dukungan gaya in-line untuk ikon
+ * Memperbaiki pop-in dari CSS kustom di dokumentasi.
+ * Menampilkan gaya kode inline dengan benar bersama dengan tautan.
+ * Mempertahankan posisi scroll saat Anda mengklik tombol kembali di browser.
+
+
+
+ ## Font Kustom
+
+
+ 
+
+
+ Personalisasi font dokumentasi Anda dengan font Anda sendiri yang dihosting di CDN atau dengan memilih dari Google fonts untuk mencocokkan dokumentasi dengan brand Anda.
+
+ ## Gambar dalam komponen Card
+
+ Tambahkan `img` properti ke card untuk menampilkan gambar di bagian atas card. Pelajari lebih lanjut tentang ini [di sini](/content/components/cards#image-card).
+
+ ## Pembaruan Kinerja Kecepatan
+
+
+ 
+
+
+ Untuk proyek besar (\~3.000 file), langkah pengunduhan untuk pembaruan dokumentasi sekarang \~440x lebih cepat - pengurangan waktu 99,8%. Secara keseluruhan, pengunduhan file selama pembaruan sekarang \~5,5x lebih cepat - pengurangan waktu 81,8%.
+
+ ## Peningkatan SEO
+
+
+ 
+
+
+ Kami telah memperbaiki tata letak dokumentasi kami baik untuk mobile maupun desktop agar lebih ramah SEO - termasuk menambahkan tag aria yang tepat ke elemen navbar dan toggle.
+
+ ## Peningkatan Dashboard
+
+ * Migrasi router aplikasi di dashboard.
+ * Analitik pencarian sekarang tersedia di dashboard.
+ * Fungsi hapus organisasi telah ditambahkan ke dashboard.
+ * Meluncurkan UI koneksi GitLab.
+ * Memperbaiki data analitik yang tidak tepat.
+ * Add-on sekarang dapat dibeli langsung melalui dashboard.
+
+ ## Perbaikan Bug
+
+ * Memperbaiki bug di mana bar atas tidak akan meregang ke lebar layar ketika dalam mode kustom dan tata letak sidebar adalah `sidenav`.
+ * Memperbaiki posisi relatif widget AI.
+
+ ## Lainnya
+
+ * **Pemecahan masalah untuk halaman API**: Halaman API bisa rumit jadi kami mencantumkan masalah umum untuk membantu Anda menyelesaikannya dengan cepat —[Baca dokumentasi](/api-playground/troubleshooting)
+
+
+
+ ## Halaman Referensi OpenAPI
+
+ * Endpoint yang didefinisikan oleh OpenAPI yang kompleks dan rekursif sekarang 98% lebih kecil.
+ * Kami sekarang menampilkan[additionalProperties](https://swagger.io/docs/specification/data-models/dictionaries/)di halaman OpenAPI.
+
+ ## Unggah File di API Playground
+
+ Secara default, permintaan API playground diproxy oleh Mintlify. Sekarang Anda dapat menggunakan`disableProxy` untuk menonaktifkan perilaku ini dan mendukung jenis permintaan seperti unggahan file.
+
+ * [Pelajari lebih lanjut tentang konfigurasi API](/settings/global#api-configurations)
+
+ ## Peningkatan SEO Mobile
+
+ Kami telah memperbaiki tata letak mobile dari dokumentasi kami agar lebih ramah SEO - termasuk menambahkan tag aria yang tepat ke elemen.
+
+ ## Formulir Dukungan
+
+ Kami menambahkan formulir dukungan yang lebih detail ke dashboard Mintlify. Anda sekarang dapat mengirimkan formulir untuk menghubungi kami.
+
+ ## Perbaikan Bug
+
+ * Memperbaiki bug untuk fungsi integrasi Segment.
+ * Kami sekarang menampilkan pesan kesalahan yang lebih rinci untuk izin GitHub saat berinteraksi dengan editor.
+ * Memperbaiki bug di mana navigasi tidak akan memperluas dengan benar ketika tautan langsung digunakan.
+
+
+
+ ## Widget AI
+
+
+ 
+
+
+ Untuk `Pro` pengguna, kami memperkenalkan Mintlify Widget, sebuah ekstensi dari dokumentasi Anda untuk menjawab pertanyaan pengguna Anda kapan dan di mana mereka bertanya. Anda dapat menambahkan chatbot bertenaga AI ini ke halaman web mana pun: halaman landing Anda, di dalam produk Anda, atau di halaman dokumentasi Anda yang ada.
+
+ * [Baca pengumuman blog](https://mintlify.com/blog/widget)
+
+ ## Paket Pro
+
+ Kami juga memperbarui paket harga kami untuk kustomisasi dan skala yang lebih baik.
+
+ * [Baca pengumuman blog](https://mintlify.com/blog/pro-plan)
+
+ ## Sinkronisasi Contoh Kode API Playground
+
+ Saat Anda menjelajahi dokumentasi API, contoh kode yang dipilih sekarang tersinkronisasi di seluruh halaman Anda.
+
+ ## Wawasan
+
+ Saat ini dalam beta, fitur ini merangkum pertanyaan dan pola umum pengguna menjadi laporan yang mudah dicerna dengan saran bertenaga AI tentang cara meningkatkan produk Anda.
+
+
+
+ ## Sorotan Minggu Peluncuran
+
+ * Tema: Sesuaikan gaya Anda dengan tema yang telah dikonfigurasi sebelumnya. Cukup tambahkan tema Quill, Prism, atau Venus ke file `mint.json` Anda dan itu akan memperbarui gaya dokumentasi Anda.
+ * Pencarian V2: langsung kueri deskripsi endpoint OpenAPI dan judul untuk mencapai halaman Referensi API, hapus halaman tersembunyi dari pencarian, dan nikmati UI searchbar kami yang diperbarui.
+ * Percabangan Editor Web: buat cabang di editor web kami tanpa IDE.
+ * Personalisasi Pengguna: autentikasi pengguna dengan Shared Session atau JWT sehingga Anda dapat menampilkan konten yang disesuaikan, seperti pra-mengisi kunci API atau menampilkan konten spesifik untuk pelanggan.
+ * Peningkatan Otomatisasi OpenAPI: untuk mengisi otomatis halaman API Playground, Anda dapat menambahkan`openapi` bidang ke objek dalam array tabs atau anchors di mint.json.
+
+
+
+ ## Okta SSO
+
+ Kami sekarang mendukung sign-on melalui Okta SAML dan OIDC.
+
+ ## Mintlify REST API
+
+ Secara programatik memicu pembaruan ke dokumentasi Anda.
+
+
+
+ ## Mode kustom
+
+ Tambahkan konfigurasi ke metadata untuk menghapus semua elemen kecuali bar atas.
+ Contoh penggunaan:
+
+ * Buat pengaturan halaman landing global kustom dengan komponen kustom
+ * Tambahkan video layar penuh atau galeri gambar
+ * Sematkan elemen demo iFrame kustom untuk menambahkan interaktivitas ke dokumentasi Anda
+
+ Lihat[dokumentasi Mode Kustom](/page#custom-mode).
+
+
+
+ ## Mintlify MDX untuk VSCode
+
+ Panggil cuplikan komponen dan callout pra-bangun kami tanpa meninggalkan VSCode.[Instal ekstensinya di sini](https://marketplace.visualstudio.com/items?itemName=mintlify.mintlify-snippets).
+
+
+
+ ## Peningkatan Kualitas
+
+ * Peningkatan Dashboard: lihat log pembaruan untuk melihat apa yang berubah dan status pembaruan, beralih antara proyek Mintlify untuk mengelola deployment
+ * Versi dengan tab sepenuhnya didukung
+ * Pengalihan wildcard sekarang didukung
+ * Deteksi Error CLI: kami sekarang menunjukkan posisi frontmatter yang tidak valid ketika ada masalah parsing selama pengembangan lokal
+
+
+
+ ## Sorotan Minggu Peluncuran
+
+ * Preview Deployment: Ketika Anda membuat pull request, kami akan menghasilkan tautan unik yang menunjukkan preview langsung tentang bagaimana dokumentasi Anda terlihat di prod. Anda dapat membagikan tautan ini dengan rekan tim.
+ * Snippets V2: Kami sekarang mendukung komponen yang dapat digunakan kembali sepenuhnya dan variabel untuk snippets.
+ * Mesin MDX Open-source: Kami telah mengekspos dua API—getCompiledMdx dan MDXComponent—sehingga Anda dapat mengakses markdown Mintlify dan penyorotan sintaks kode.[Kontribusi untuk proyek](https://github.com/mintlify/mdx) sangat dipersilakan.
+ * Wawasan AI Chat: Segmentasi riwayat chat berdasarkan tanggal dan tingkatkan kuota AI Chat dari dashboard, dan lihat seberapa sering query tertentu muncul.
+
diff --git a/id/code.mdx b/id/code.mdx
new file mode 100644
index 000000000..f87be7b79
--- /dev/null
+++ b/id/code.mdx
@@ -0,0 +1,39 @@
+---
+title: Blok Kode
+description: Menampilkan kode inline dan blok kode
+icon: code
+---
+
+## Dasar
+
+### Kode Inline
+
+Untuk menandai `word` atau `phrase` sebagai kode, apit dengan tanda kutip balik (\`).
+
+```
+To denote a `word` or `phrase` as code, enclose it in backticks (`).
+```
+
+### Blok Kode
+
+Gunakan [blok kode yang dibatasi](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) dengan mengapit kode dalam tiga tanda kutip balik dan ikuti tanda kutip awal dengan bahasa pemrograman dari potongan kode Anda untuk mendapatkan penyorotan sintaks. Secara opsional, Anda juga dapat menulis nama kode Anda setelah bahasa pemrograman.
+
+```java HelloWorld.java
+class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+}
+```
+
+````md
+```java HelloWorld.java
+class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+}
+```
+````
+
+Kunjungi [halaman Code Block](/content/components/code) untuk dokumentasi lebih detail.
diff --git a/id/content/components/accordion-groups.mdx b/id/content/components/accordion-groups.mdx
new file mode 100644
index 000000000..cf2e3f836
--- /dev/null
+++ b/id/content/components/accordion-groups.mdx
@@ -0,0 +1,58 @@
+---
+title: Grup Akordeon
+description: Mengelompokkan beberapa akordeon dalam satu tampilan.
+icon: table-rows
+---
+
+Cukup tambahkan``di sekitar komponen``yang ada.
+
+
+
+ Anda dapat menempatkan komponen lain di dalam Akordeon.
+
+ ```java HelloWorld.java
+ class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+ }
+ ```
+
+
+
+ Lihat dokumentasi[Accordion](/content/components/accordions)untuk semua props yang didukung.
+
+
+
+ Lihat dokumentasi[Accordion](/content/components/accordions)untuk semua props yang didukung.
+
+
+
+
+ ````jsx Accordion Group Example
+
+
+ You can put other components inside Accordions.
+
+ ```java HelloWorld.java
+ class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+ }
+ ```
+
+
+
+
+ Check out the [Accordion](/content/components/accordions) docs for all the supported props.
+
+
+
+ Check out the [Accordion](/content/components/accordions) docs for all the supported props.
+
+
+ ````
+
+
+`AccordionGroup`tidak memiliki props apapun.
diff --git a/id/content/components/accordions.mdx b/id/content/components/accordions.mdx
new file mode 100644
index 000000000..4f0f81458
--- /dev/null
+++ b/id/content/components/accordions.mdx
@@ -0,0 +1,39 @@
+---
+title: Accordions
+description: Komponen dropdown untuk mengalihkan konten
+icon: square-caret-down
+---
+
+
+ Anda dapat menempatkan konten apa pun di sini. Lihat[AccordionGroup](/content/components/accordion-groups) jika Anda ingin mengelompokkan beberapa Accordion menjadi satu tampilan.
+
+
+
+ ```jsx Accordion Example
+
+ You can put any content in here.
+
+ ```
+
+
+## Props
+
+
+ Judul dalam pratinjau Accordion.
+
+
+
+ Detail di bawah judul dalam pratinjau Accordion.
+
+
+
+ Apakah Accordion terbuka secara default.
+
+
+
+ Sebuah [ikon Font Awesome](https://fontawesome.com/icons), [ikon Lucide](https://lucide.dev/icons), atau kode SVG
+
+
+
+ Salah satu dari "regular", "solid", "light", "thin", "sharp-solid", "duotone", atau "brands"
+
diff --git a/id/content/components/callouts.mdx b/id/content/components/callouts.mdx
new file mode 100644
index 000000000..1b7eecbc2
--- /dev/null
+++ b/id/content/components/callouts.mdx
@@ -0,0 +1,45 @@
+---
+title: Callout Boxes
+description: Gunakan callout untuk menambahkan konteks yang menarik perhatian ke konten Anda
+icon: circle-exclamation
+---
+
+### Callout Catatan
+
+Ini menambahkan catatan dalam konten
+
+```jsx
+This adds a note in the content
+```
+
+### Callout Peringatan
+
+Ini memberikan peringatan untuk diperhatikan
+
+```jsx
+This raises a warning to watch out for
+```
+
+### Callout Info
+
+Ini menarik perhatian pada informasi penting
+
+```jsx
+This draws attention to important information
+```
+
+### Callout Tips
+
+Ini menyarankan tips yang berguna
+
+```jsx
+This suggests a helpful tip
+```
+
+### Callout Centang
+
+Ini memberi kita status tercentang
+
+```jsx
+This brings us a checked status
+```
diff --git a/id/content/components/card-groups.mdx b/id/content/components/card-groups.mdx
new file mode 100644
index 000000000..5200147e8
--- /dev/null
+++ b/id/content/components/card-groups.mdx
@@ -0,0 +1,50 @@
+---
+title: Grup Kartu
+description: Menampilkan kartu berdampingan dalam format grid
+icon: rectangles-mixed
+---
+
+Komponen`CardGroup`memungkinkan Anda mengelompokkan beberapa`Card`komponen bersama. Ini paling sering digunakan untuk menempatkan beberapa kartu pada kolom yang sama.
+
+
+
+ Tidak ada seorang pun yang mencintai penderitaan karena penderitaan itu sendiri
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco
+
+
+
+ Excepteur sint occaecat cupidatat non proident
+
+
+
+
+ ```jsx Card Group Example
+
+
+ Neque porro quisquam est qui dolorem ipsum quia dolor sit amet
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit
+
+
+ Ut enim ad minim veniam, quis nostrud exercitation ullamco
+
+
+ Excepteur sint occaecat cupidatat non proident
+
+
+ ```
+
+
+## Props
+
+
+ Jumlah kolom per baris
+
diff --git a/id/content/components/cards.mdx b/id/content/components/cards.mdx
new file mode 100644
index 000000000..b85e33347
--- /dev/null
+++ b/id/content/components/cards.mdx
@@ -0,0 +1,71 @@
+---
+title: Kartu
+description: Sorot poin utama atau tautan dengan ikon yang dapat disesuaikan
+icon: rectangle
+---
+
+
+ Ini adalah cara menggunakan kartu dengan ikon dan tautan. Mengklik kartu ini
+ membawa Anda ke halaman Grup Kartu.
+
+
+
+ ```jsx Card Example
+
+ This is how you use a card with an icon and a link. Clicking on this card
+ brings you to the Card Group page.
+
+ ```
+
+ ```jsx Image Card Example
+
+ Here is an example of a card with an image
+
+ ```
+
+
+### Kartu Horizontal
+
+Tambahkan `horizontal` properti ke kartu untuk membuatnya ditampilkan secara horizontal.
+
+
+ Ini adalah contoh kartu horizontal
+
+
+### Kartu Gambar
+
+Tambahkan `img` properti ke kartu untuk menampilkan gambar di bagian atas kartu.
+
+
+ Ini adalah contoh kartu dengan gambar
+
+
+## Props
+
+
+ Judul kartu
+
+
+
+ Sebuah [Font Awesome icon](https://fontawesome.com/icons), [Lucide icon](https://lucide.dev/icons), atau kode SVG dalam `icon={}`
+
+
+
+ Salah satu dari `regular`, `solid`, `light`, `thin`, `sharp-solid`, `duotone`, `brands`
+
+
+
+ Warna ikon dalam kode hex
+
+
+
+ URL yang akan dinavigasi pengguna saat mengklik kartu
+
+
+
+ Membuat kartu lebih ringkas dan horizontal
+
+
+
+ URL atau path lokal ke gambar untuk ditampilkan di bagian atas kartu
+
diff --git a/id/content/components/code-groups.mdx b/id/content/components/code-groups.mdx
new file mode 100644
index 000000000..af6d352d6
--- /dev/null
+++ b/id/content/components/code-groups.mdx
@@ -0,0 +1,52 @@
+---
+title: Grup Kode
+description: Komponen CodeGroup memungkinkan Anda menggabungkan blok kode dalam tampilan
+ yang dipisahkan oleh tab
+icon: rectangle-code
+---
+
+Anda perlu membuat [Blok Kode](/content/components/code) kemudian tambahkan `` komponen di sekitarnya. Setiap Blok Kode harus memiliki nama file karena kita menggunakan nama tersebut untuk tombol tab.
+
+Lihat di bawah ini untuk contoh hasil akhir.
+
+
+ ```javascript helloWorld.js
+ console.log("Hello World");
+ ```
+
+ ```python hello_world.py
+ print('Hello World!')
+ ```
+
+ ```java HelloWorld.java
+ class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+ }
+ ```
+
+
+
+ ````md Code Group Example
+
+
+ ```javascript helloWorld.js
+ console.log("Hello World");
+ ```
+
+ ```python hello_world.py
+ print('Hello World!')
+ ```
+
+ ```java HelloWorld.java
+ class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+ }
+ ```
+
+
+ ````
+
diff --git a/id/content/components/code.mdx b/id/content/components/code.mdx
new file mode 100644
index 000000000..ab348e7d9
--- /dev/null
+++ b/id/content/components/code.mdx
@@ -0,0 +1,199 @@
+---
+title: Blok Kode
+description: Menampilkan kode dengan penyorotan sintaks opsional
+icon: code
+---
+
+
+ ````md Code Block Example
+ ```javascript Code Block Example
+ const hello = "world";
+ ```
+ ````
+
+
+## Blok Kode Dasar
+
+Gunakan [blok kode berpagar](https://www.markdownguide.org/extended-syntax/#fenced-code-blocks) dengan mengapit kode dalam tiga tanda kutip.
+
+```
+helloWorld();
+```
+
+````md
+```
+helloWorld();
+```
+````
+
+## Penyorotan Sintaks
+
+Letakkan nama bahasa pemrograman Anda setelah tiga tanda kutip untuk mendapatkan penyorotan sintaks.
+
+Kami menggunakan [Prism](https://prismjs.com/#supported-languages) untuk penyorotan sintaks. [Uji Coba Prism](https://prismjs.com/test.html#language=markup) mencantumkan semua bahasa yang didukung.
+
+```java
+class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+}
+```
+
+````md
+```java
+class HelloWorld {
+ public static void main(String[] args) {
+ System.out.println("Hello, World!");
+ }
+}
+```
+````
+
+## Nama
+
+Tambahkan judul setelah bahasa pemrograman untuk menetapkan nama contoh kode Anda. Teksnya bisa apa saja selama dalam satu baris.
+
+```javascript Code Block Example
+const hello = "world";
+```
+
+````md Code Block Example
+```javascript Code Block Example
+const hello = "world";
+```
+````
+
+## Penyorotan Baris
+
+Sorot baris tertentu dalam blok kode Anda dengan menambahkan komentar khusus setelah pengenal bahasa. Gunakan kurung kurawal `{}` dan tentukan nomor baris atau rentang yang dipisahkan dengan koma.
+
+```javascript Line Highlighting Example {1,3-5}
+const greeting = "Hello, World!";
+function sayHello() {
+ console.log(greeting);
+}
+sayHello();
+```
+
+````md
+```javascript Line Highlighting Example {1,3-5}
+const greeting = "Hello, World!";
+function sayHello() {
+ console.log(greeting);
+}
+sayHello();
+```
+````
+
+## Dapat Diperluas
+
+Jika Anda memiliki blok kode yang panjang dan `[expandable]` setelah judul Anda untuk membuatnya dapat ditutup dan diperluas.
+
+```python library.py [expandable]
+from datetime import datetime, timedelta
+from typing import Dict, List, Optional
+from dataclasses import dataclass
+
+@dataclass
+class Book:
+ title: str
+ author: str
+ isbn: str
+ checked_out: bool = False
+ due_date: Optional[datetime] = None
+
+class Library:
+ def __init__(self):
+ self.books: Dict[str, Book] = {}
+ self.checkouts: Dict[str, List[str]] = {} # patron -> list of ISBNs
+
+ def add_book(self, book: Book) -> None:
+ if book.isbn in self.books:
+ raise ValueError(f"Book with ISBN {book.isbn} already exists")
+ self.books[book.isbn] = book
+
+ def checkout_book(self, isbn: str, patron: str, days: int = 14) -> None:
+ if patron not in self.checkouts:
+ self.checkouts[patron] = []
+
+ book = self.books.get(isbn)
+ if not book:
+ raise ValueError("Book not found")
+
+ if book.checked_out:
+ raise ValueError("Book is already checked out")
+
+ if len(self.checkouts[patron]) >= 3:
+ raise ValueError("Patron has reached checkout limit")
+
+ book.checked_out = True
+ book.due_date = datetime.now() + timedelta(days=days)
+ self.checkouts[patron].append(isbn)
+
+ def return_book(self, isbn: str) -> float:
+ book = self.books.get(isbn)
+ if not book or not book.checked_out:
+ raise ValueError("Book not found or not checked out")
+
+ late_fee = 0.0
+ if datetime.now() > book.due_date:
+ days_late = (datetime.now() - book.due_date).days
+ late_fee = days_late * 0.50
+
+ book.checked_out = False
+ book.due_date = None
+
+ # Remove from patron's checkouts
+ for patron, books in self.checkouts.items():
+ if isbn in books:
+ books.remove(isbn)
+ break
+
+ return late_fee
+
+ def search(self, query: str) -> List[Book]:
+ query = query.lower()
+ return [
+ book for book in self.books.values()
+ if query in book.title.lower() or query in book.author.lower()
+ ]
+
+def main():
+ library = Library()
+
+ # Add some books
+ books = [
+ Book("The Hobbit", "J.R.R. Tolkien", "978-0-261-10295-4"),
+ Book("1984", "George Orwell", "978-0-452-28423-4"),
+ ]
+
+ for book in books:
+ library.add_book(book)
+
+ # Checkout and return example
+ library.checkout_book("978-0-261-10295-4", "patron123")
+ late_fee = library.return_book("978-0-261-10295-4")
+ print(f"Late fee: ${late_fee:.2f}")
+
+if __name__ == "__main__":
+ main()
+```
+
+````md
+```javascript Expandable Example [expandable]
+const greeting = "Hello, World!";
+function sayHello() {
+ console.log(greeting);
+}
+sayHello();
+```
+````
+
+## Grup Kode
+
+Ingin menampilkan beberapa contoh kode dalam satu kotak kode? Lihat dokumentasi Grup Kode:
+
+
+ Baca referensi untuk komponen Grup Kode
+
diff --git a/id/content/components/expandables.mdx b/id/content/components/expandables.mdx
new file mode 100644
index 000000000..6dcd89fc3
--- /dev/null
+++ b/id/content/components/expandables.mdx
@@ -0,0 +1,44 @@
+---
+title: Dapat Diperluas
+description: Toggle untuk menampilkan properti bersarang.
+icon: caret-down
+---
+
+
+
+
+ Nama lengkap pengguna
+
+
+
+ Apakah pengguna berusia di atas 21 tahun
+
+
+
+
+
+ ```jsx Expandable Example
+
+
+
+ The full name of the user
+
+
+
+ Whether the user is over 21 years old
+
+
+
+ ```
+
+
+## Props
+
+
+ Nama objek yang Anda tampilkan. Digunakan untuk menghasilkan teks "Show NAME" dan
+ "Hide NAME".
+
+
+
+ Atur ke true untuk menampilkan komponen dalam keadaan terbuka saat halaman dimuat.
+
diff --git a/id/content/components/frames.mdx b/id/content/components/frames.mdx
new file mode 100644
index 000000000..ec178c928
--- /dev/null
+++ b/id/content/components/frames.mdx
@@ -0,0 +1,39 @@
+---
+title: Frames
+description: Gunakan komponen Frame untuk membungkus gambar atau komponen lain dalam wadah.
+icon: frame
+---
+
+Frame sangat membantu jika Anda ingin memusatkan gambar.
+
+
+
+
+
+## Keterangan
+
+Anda dapat menambahkan konteks tambahan ke gambar menggunakan `caption` opsional.
+
+
+
+
+
+## Props
+
+
+ Teks keterangan opsional untuk ditampilkan di tengah di bawah komponen Anda.
+
+
+
+ ```jsx Frame
+
+
+
+ ```
+
+ ```jsx Frame with Captions
+
+
+
+ ```
+
diff --git a/id/content/components/icons.mdx b/id/content/components/icons.mdx
new file mode 100644
index 000000000..c82f354bd
--- /dev/null
+++ b/id/content/components/icons.mdx
@@ -0,0 +1,42 @@
+---
+title: Ikon
+description: Gunakan ikon [Font Awesome](https://fontawesome.com/icons) atau
+ [Lucide](https://lucide.dev/icons) di mana saja dalam dokumen
+icon: icons
+---
+
+
+
+
+ ```jsx Icon Example
+
+ ```
+
+
+## Ikon Inline
+
+Ikon akan ditempatkan secara inline ketika digunakan dalam paragraf.
+
+```markdown Inline Icon Example
+ The documentation you want, effortlessly
+```
+
+ Dokumentasi yang Anda inginkan, tanpa usaha
+
+## Props
+
+
+ Sebuah [Font Awesome](https://fontawesome.com/icons) ikon
+
+
+
+ Salah satu dari `regular`, `solid`, `light`, `thin`, `sharp-solid`, `duotone`, `brands`
+
+
+
+ Warna ikon dalam kode hex (misalnya, `#FF5733`)
+
+
+
+ Ukuran ikon dalam piksel
+
diff --git a/id/content/components/mermaid-diagrams.mdx b/id/content/components/mermaid-diagrams.mdx
new file mode 100644
index 000000000..37d9336dd
--- /dev/null
+++ b/id/content/components/mermaid-diagrams.mdx
@@ -0,0 +1,71 @@
+---
+title: Diagram Mermaid
+description: Menampilkan diagram menggunakan Mermaid
+icon: diagram-project
+---
+
+
+ ````md Mermaid Flowchart Example
+ ```mermaid
+ flowchart LR
+ subgraph subgraph1
+ direction TB
+ top1[top] --> bottom1[bottom]
+ end
+ subgraph subgraph2
+ direction TB
+ top2[top] --> bottom2[bottom]
+ end
+ %% ^ These subgraphs are identical, except for the links to them:
+
+ %% Link *to* subgraph1: subgraph1 direction is maintained
+ outside --> subgraph1
+ %% Link *within* subgraph2:
+ %% subgraph2 inherits the direction of the top-level graph (LR)
+ outside ---> top2
+ ```
+ ````
+
+
+[Mermaid](https://mermaid.js.org/)memungkinkan Anda membuat diagram visual menggunakan teks dan kode.
+
+```mermaid
+ flowchart LR
+ subgraph subgraph1
+ direction TB
+ top1[top] --> bottom1[bottom]
+ end
+ subgraph subgraph2
+ direction TB
+ top2[top] --> bottom2[bottom]
+ end
+ %% ^ These subgraphs are identical, except for the links to them:
+
+ %% Link *to* subgraph1: subgraph1 direction is maintained
+ outside --> subgraph1
+ %% Link *within* subgraph2:
+ %% subgraph2 inherits the direction of the top-level graph (LR)
+ outside ---> top2
+```
+
+Anda dapat membuat hal-hal berikut menggunakan diagram Mermaid:
+
+* Diagram Alur
+* Diagram Urutan
+* Diagram Kelas
+* Diagram Status
+* Diagram Hubungan Entitas
+* Perjalanan Pengguna
+* dan lainnya
+
+Untuk daftar lengkap diagram yang didukung oleh Mermaid, kunjungi[situs web mereka](https://mermaid.js.org/).
+
+## Sintaks untuk diagram Mermaid
+
+Untuk membuat diagram alur, Anda dapat menulis diagram alur Mermaid di dalam blok kode Mermaid.
+
+````md
+```mermaid
+// Your mermaid code block here
+```
+````
diff --git a/id/content/components/params.mdx b/id/content/components/params.mdx
new file mode 100644
index 000000000..43d9ed14b
--- /dev/null
+++ b/id/content/components/params.mdx
@@ -0,0 +1,69 @@
+---
+title: Bidang Parameter
+description: Atur parameter path, query, dan body
+icon: text-size
+---
+
+`ParamField` komponen membantu mendefinisikan parameter untuk API atau SDK Anda. Menambahkan ParamField akan secara otomatis menambahkan [API Playground](/api-playground/overview).
+
+
+ Contoh bidang parameter
+
+
+
+ ```jsx Path Example
+
+ An example of a parameter field
+
+ ```
+
+ ```jsx Query Example
+
+ The filtering command used to sort through the users
+
+ ```
+
+ ```jsx Body Example
+
+ The age of the user. Cannot be less than 0
+
+ ```
+
+
+## Props
+
+
+ Apakah itu parameter query, path, body, atau header diikuti dengan nama
+
+
+
+ Tipe yang diharapkan dari nilai parameter
+
+ Mendukung `number`, `string`, `bool`, `object`.
+
+ Array dapat didefinisikan menggunakan akhiran `[]`. Sebagai contoh `string[]`.
+
+
+
+ Menunjukkan apakah parameter diperlukan
+
+
+
+ Menunjukkan apakah parameter sudah usang
+
+
+
+ Nilai default yang digunakan oleh server jika permintaan tidak menyediakan nilai
+
+
+
+ Nilai yang akan digunakan untuk menginisialisasi playground
+
+
+
+ Teks placeholder untuk input di playground
+
+
+
+ Deskripsi parameter (markdown diaktifkan)
+
diff --git a/id/content/components/responses.mdx b/id/content/components/responses.mdx
new file mode 100644
index 000000000..7c093bee7
--- /dev/null
+++ b/id/content/components/responses.mdx
@@ -0,0 +1,37 @@
+---
+title: Response Fields
+description: Menampilkan nilai respons API
+icon: message
+---
+
+Komponen `` dirancang untuk mendefinisikan nilai pengembalian dari API. Banyak dokumentasi juga menggunakan `` pada halaman ketika Anda perlu mendaftar tipe sesuatu.
+
+
+ Contoh response field
+
+
+
+ ```jsx ResponseField Example
+
+ A response field example
+
+ ```
+
+
+## Props
+
+
+ Nama dari nilai respons.
+
+
+
+ Tipe yang diharapkan dari nilai respons
+
+
+
+ Nilai default.
+
+
+
+ Tampilkan "required" di samping nama field.
+
diff --git a/id/content/components/steps.mdx b/id/content/components/steps.mdx
new file mode 100644
index 000000000..7cb0bd28a
--- /dev/null
+++ b/id/content/components/steps.mdx
@@ -0,0 +1,73 @@
+---
+title: Steps
+description: Urutkan konten menggunakan komponen Steps
+icon: arrow-progress
+---
+
+Steps adalah cara terbaik untuk menampilkan serangkaian tindakan atau peristiwa kepada pengguna Anda. Anda dapat menambahkan sebanyak mungkin langkah yang diinginkan.
+
+
+
+ Ini adalah instruksi atau konten yang hanya berkaitan dengan langkah pertama.
+
+
+
+ Ini adalah instruksi atau konten yang hanya berkaitan dengan langkah kedua.
+
+
+
+ Ini adalah instruksi atau konten yang hanya berkaitan dengan langkah ketiga.
+
+
+
+
+ ```jsx Steps Example
+
+
+ These are instructions or content that only pertain to the first step.
+
+
+ These are instructions or content that only pertain to the second step.
+
+
+ These are instructions or content that only pertain to the third step.
+
+
+ ```
+
+
+## Props Steps
+
+
+ Sebuah daftar `Step` komponen.
+
+
+
+ Ukuran judul langkah. Salah satu dari`p`, `h2` dan `h3`.
+
+
+## Props Langkah Individual
+
+
+ Konten langkah baik sebagai teks biasa, atau komponen.
+
+
+
+ Sebuah [Font Awesome icon](https://fontawesome.com/icons), [Lucide icon](https://lucide.dev/icons), atau kode SVG dalam `icon={}`
+
+
+
+ Salah satu dari `regular`, `solid`, `light`, `thin`, `sharp-solid`, `duotone`, `brands`
+
+
+
+ Judul adalah teks utama untuk langkah dan muncul di sebelah indikator.
+
+
+
+ Nomor langkah.
+
+
+
+ Ukuran judul langkah. Salah satu dari `p`, `h2` dan `h3`.
+
diff --git a/id/content/components/sticky-examples.mdx b/id/content/components/sticky-examples.mdx
new file mode 100644
index 000000000..8c853e58f
--- /dev/null
+++ b/id/content/components/sticky-examples.mdx
@@ -0,0 +1,44 @@
+---
+title: Contoh Kode Sidebar
+description: Menampilkan blok kode di kanan atas halaman pada perangkat desktop
+icon: sidebar-flip
+---
+
+The `` dan `` menempelkan blok kode di kanan atas halaman bahkan saat Anda menggulir. Komponen ini berfungsi di semua halaman bahkan jika Anda tidak menggunakan API playground.
+
+`` dan `` tampil seperti blok kode biasa di perangkat mobile.
+
+## Contoh Request
+
+The `` komponen bekerja mirip dengan [CodeGroup](/content/components/code-groups), tetapi menampilkan konten request di sidebar kanan. Dengan demikian, Anda dapat menempatkan beberapa blok kode di dalam ``.
+
+Harap tetapkan nama pada setiap blok kode yang Anda tempatkan di dalam RequestExample.
+
+
+ ````md RequestExample Example
+
+
+ ```bash Request
+ curl --request POST \
+ --url https://dog-api.kinduff.com/api/facts
+ ```
+
+
+ ````
+
+
+## Contoh Response
+
+The `` komponen sama dengan `` tetapi akan muncul di bawahnya.
+
+
+ ````md ResponseExample Example
+
+
+ ```json Response
+ { "status": "success" }
+ ```
+
+
+ ````
+
diff --git a/id/content/components/tabs.mdx b/id/content/components/tabs.mdx
new file mode 100644
index 000000000..1c0212f5c
--- /dev/null
+++ b/id/content/components/tabs.mdx
@@ -0,0 +1,43 @@
+---
+title: Tab
+description: Beralih konten menggunakan komponen Tab
+icon: window-restore
+---
+
+Anda dapat menambahkan tab sebanyak yang Anda inginkan.
+
+
+
+ ☝️ Selamat datang di konten yang hanya dapat Anda lihat di dalam Tab pertama.
+
+
+
+ ✌️ Ini adalah konten yang hanya ada di dalam Tab kedua.
+
+
+
+ 💪 Ini adalah konten yang hanya ada di dalam Tab ketiga.
+
+
+
+
+ ```jsx Tabs Example
+
+
+ ☝️ Welcome to the content that you can only see inside the first Tab.
+
+
+ ✌️ Here's content that's only inside the second Tab.
+
+
+ 💪 Here's content that's only inside the third Tab.
+
+
+ ```
+
+
+## Props Tab
+
+
+ Judul dari tab. Judul yang singkat lebih mudah untuk dinavigasi.
+
diff --git a/id/content/components/tooltips.mdx b/id/content/components/tooltips.mdx
new file mode 100644
index 000000000..530adca2e
--- /dev/null
+++ b/id/content/components/tooltips.mdx
@@ -0,0 +1,13 @@
+---
+title: Tooltips
+description: Tampilkan definisi saat Anda mengarahkan kursor ke teks.
+icon: message-lines
+---
+
+Arahkan kursor ke saya dan lihat tooltip dalam aksi
+
+
+ ```jsx Tooltip Example
+ Hover over me
+ ```
+
diff --git a/id/content/components/update.mdx b/id/content/components/update.mdx
new file mode 100644
index 000000000..9a072231e
--- /dev/null
+++ b/id/content/components/update.mdx
@@ -0,0 +1,57 @@
+---
+title: Update
+description: Melacak perubahan dan pembaruan
+icon: rectangle-history
+---
+
+Komponen `Update` digunakan untuk melacak perubahan dan pembaruan.
+
+
+
+
+
+
+ ## Changelog
+
+ Anda dapat menambahkan apa saja di sini, seperti tangkapan layar, potongan kode, atau daftar perubahan.
+
+ #### Fitur
+
+ * Desain responsif
+ * Bagian tetap untuk setiap changelog
+
+
+
+ ### Cara penggunaan
+
+ ```md
+
+ This is how you use a changelog with a label
+ and a description.
+
+
+ This is how you use a changelog with a label
+ and a description.
+
+ ```
+
+ Anda dapat menggunakan beberapa komponen `Update` untuk membuat changelog.
+
+
+
+ Setiap `label` membuat jangkar dan juga muncul di daftar isi di sebelah kanan.
+
+
+## Props
+
+
+ Label dalam changelog, di sisi kiri yang tetap.
+
+
+
+ Deskripsi di bawah label dalam pratinjau Changelog.
+
+
+
+ Tag untuk changelog, akan ditampilkan sebagai filter di panel sisi kanan
+
diff --git a/id/development.mdx b/id/development.mdx
new file mode 100644
index 000000000..7248dc6cb
--- /dev/null
+++ b/id/development.mdx
@@ -0,0 +1,120 @@
+---
+title: Pengembangan Lokal
+description: Pratinjau perubahan secara lokal untuk memperbarui dokumentasi Anda
+---
+
+
+ **Prasyarat**: Silakan instal Node.js (versi 19 atau lebih tinggi) sebelum melanjutkan.
+
+
+**Langkah 1**: Instal Mintlify CLI:
+
+
+ ```bash npm
+ npm i -g mintlify
+ ```
+
+ ```bash yarn
+ yarn global add mintlify
+ ```
+
+ ```bash pnpm
+ pnpm add -g mintlify
+ ```
+
+
+**Langkah 2**: Navigasi ke direktori docs (di mana file `docs.json` berada) dan jalankan perintah berikut:
+
+```bash
+mintlify dev
+```
+
+Atau, jika Anda tidak ingin menginstal CLI secara global, Anda dapat menggunakan skrip run yang tersedia:
+
+
+ ```bash npm
+ npx mintlify dev
+ ```
+
+ ```bash yarn
+ yarn dlx mintlify dev
+ ```
+
+ ```bash pnpm
+ pnpm dlx mintlify dev
+ ```
+
+
+
+ Skrip run "dlx" Yarn memerlukan yarn versi >2. Lihat [di sini](https://yarnpkg.com/cli/dlx) untuk informasi lebih lanjut.
+
+
+Pratinjau lokal dokumentasi Anda akan tersedia di `http://localhost:3000`.
+
+### Port Kustom
+
+Secara default, Mintlify menggunakan port 3000. Anda dapat menyesuaikan port menggunakan flag `--port`. Untuk menjalankan Mintlify di port 3333, misalnya, gunakan perintah ini:
+
+```bash
+mintlify dev --port 3333
+```
+
+Jika Anda mencoba menjalankan pada port yang sudah digunakan, maka akan menggunakan port berikutnya yang tersedia:
+
+```md
+Port 3000 is already in use. Trying 3001 instead.
+```
+
+## Versi
+
+Harap dicatat bahwa setiap rilis CLI terkait dengan versi Mintlify tertentu. Jika situs web lokal Anda tidak sesuai dengan versi produksi, silakan perbarui CLI:
+
+
+ ```bash npm
+ npm i -g mintlify@latest
+ ```
+
+ ```bash yarn
+ yarn global upgrade mintlify
+ ```
+
+ ```bash pnpm
+ pnpm up --global mintlify
+ ```
+
+
+## Memvalidasi Tautan
+
+CLI dapat membantu memvalidasi tautan referensi yang dibuat dalam dokumentasi Anda. Untuk mengidentifikasi tautan yang rusak, gunakan perintah berikut:
+
+```bash
+mintlify broken-links
+```
+
+## Penerapan
+
+Jika penerapan berhasil, Anda akan melihat hal berikut:
+
+
+
+
+
+## Pemformatan Kode
+
+Kami menyarankan menggunakan ekstensi pada IDE Anda untuk mengenali dan memformat MDX. Jika Anda pengguna VSCode, pertimbangkan [ekstensi MDX VSCode](https://marketplace.visualstudio.com/items?itemName=unifiedjs.vscode-mdx) untuk penyorotan sintaks, dan [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) untuk pemformatan kode.
+
+## Pemecahan Masalah
+
+
+
+ Ini mungkin disebabkan oleh versi node yang sudah usang. Coba langkah berikut:
+
+ 1. Hapus versi mintlify yang saat ini terinstal: `npm remove -g mintlify`
+ 2. Tingkatkan ke Node v19 atau lebih tinggi.
+ 3. Instal ulang mintlify: `npm install -g mintlify`
+
+
+
+ Solusi: Pergi ke root perangkat Anda dan hapus folder \~/.mintlify. Setelah itu, jalankan `mintlify dev` lagi.
+
+
diff --git a/id/guides/auth0.mdx b/id/guides/auth0.mdx
new file mode 100644
index 000000000..7105187cf
--- /dev/null
+++ b/id/guides/auth0.mdx
@@ -0,0 +1,62 @@
+---
+title: Menggunakan Auth0 dengan OAuth Handshake
+description: Jika Auth0 adalah sumber kebenaran untuk data pengguna Anda, Anda dapat mengatur Mintlify sebagai aplikasi klien OAuth untuk mengautentikasi pengguna Anda.
+---
+
+
+ **Peringatan Keamanan**: Meskipun kami menyediakan panduan ini untuk membantu Anda mengintegrasikan Auth0 dengan Mintlify, silakan berkonsultasi dengan tim keamanan Anda sebelum menerapkan solusi autentikasi apa pun. Mintlify tidak bertanggung jawab atas masalah keamanan yang mungkin timbul dari implementasi spesifik Anda.
+
+
+## Ikhtisar
+
+Panduan ini akan memandu Anda melalui proses pengaturan Auth0 sebagai penyedia autentikasi untuk dokumentasi Mintlify Anda. Pada akhirnya, pengguna Anda akan dapat masuk ke dokumentasi Anda menggunakan kredensial Auth0 mereka.
+
+
+
+ Masuk ke dasbor Auth0 Anda dan navigasikan ke **Applications** > **Applications**. Klik tombol **Create Application**, beri nama aplikasi Anda (misalnya, "Mintlify"), dan pilih **Regular Web Applications** sebagai tipe aplikasi. Kemudian klik **Create**.
+
+ 
+
+
+
+ Setelah membuat aplikasi Anda, Anda akan dibawa ke halaman pengaturan aplikasi. Di sini, Anda akan menemukan kredensial penting yang diperlukan untuk integrasi OAuth:
+
+ 
+
+ Catat informasi berikut:
+
+ * **Domain**: Ini adalah domain tenant Auth0 Anda (misalnya, `your-tenant.auth0.com`)
+ * **Client ID**: Pengidentifikasi publik untuk aplikasi Anda
+ * **Client Secret**: Kunci rahasia untuk aplikasi Anda (jaga keamanannya)
+
+ Anda akan memerlukan nilai-nilai ini untuk mengkonfigurasi Mintlify di langkah berikutnya.
+
+
+
+ Navigasikan ke Dasbor Mintlify Anda dan pergi ke bagian **Settings** > **Authentication**. Pilih **OAuth** sebagai metode autentikasi Anda dan Anda akan melihat formulir konfigurasi OAuth:
+
+ 
+
+ Isi formulir dengan nilai-nilai berikut:
+
+ * **Authorization URL**: `https://YOUR_AUTH0_DOMAIN/authorize` (ganti `YOUR_AUTH0_DOMAIN` dengan domain Auth0 aktual Anda dari langkah 2)
+ * **Client ID**: Masukkan Client ID dari aplikasi Auth0 Anda
+ * **Client Secret**: Masukkan Client Secret dari aplikasi Auth0 Anda
+ * **Scopes**: Biarkan kosong kecuali Anda memiliki scope kustom yang diatur di Auth0
+ * **Token URL**: `https://YOUR_AUTH0_DOMAIN/oauth/token` (ganti `YOUR_AUTH0_DOMAIN` dengan domain Auth0 aktual Anda)
+
+ Setelah mengisi detail ini, klik **Save changes** untuk menyimpan konfigurasi OAuth Anda.
+
+
+
+ Mintlify akan menghasilkan URL Pengalihan unik yang perlu dikenali Auth0 agar alur OAuth berfungsi dengan baik.
+
+ Salin URL Pengalihan dari pengaturan Autentikasi Dasbor Mintlify Anda:
+ 
+
+ Kembali ke halaman pengaturan aplikasi Auth0 Anda, gulir ke bawah ke bagian **Application URIs**, dan tempel URL Pengalihan ke dalam kolom **Allowed Callback URLs**:
+ 
+
+ Klik **Save Changes** di bagian bawah halaman Auth0 untuk menerapkan konfigurasi ini.
+
+
diff --git a/id/image-embeds.mdx b/id/image-embeds.mdx
new file mode 100644
index 000000000..4f600fd23
--- /dev/null
+++ b/id/image-embeds.mdx
@@ -0,0 +1,129 @@
+---
+title: Gambar, Video, dan Embeds
+description: Tambahkan gambar, video, dan elemen HTML lainnya
+icon: image
+---
+
+
+
+
+ Mintlify mendukung file hingga 5 MB. Untuk menggunakan file yang lebih besar, pertimbangkan layanan penyimpanan seperti Cloudinary dan sematkan dalam dokumentasi Anda menggunakan URL.
+
+
+## Gambar
+
+### Menggunakan Markdown
+
+Sintaks [markdown](https://www.markdownguide.org/basic-syntax/#images) memungkinkan Anda menambahkan gambar menggunakan kode berikut
+
+```md
+
+```
+
+Perhatikan bahwa ukuran file gambar harus kurang dari 5MB. Jika tidak, kami menyarankan untuk hosting di layanan seperti [Cloudinary](https://cloudinary.com/) atau [S3](https://aws.amazon.com/s3/). Anda kemudian dapat menggunakan URL tersebut dan menyematkannya.
+
+### Menggunakan Embeds
+
+Untuk mendapatkan kustomisasi yang lebih baik dengan gambar, Anda juga dapat menggunakan embeds untuk menambahkan gambar.
+
+```html
+
+```
+
+### Menonaktifkan Zoom Gambar
+
+Untuk menonaktifkan zoom default saat mengklik gambar, tambahkan properti noZoom ke embeds gambar.
+
+```html
+
+```
+
+### Menautkan Gambar
+
+Untuk menautkan gambar, misalnya untuk membuat tombol pada dokumentasi Anda, masukkan gambar dalam tautan dengan properti`noZoom`. Gambar dalam tag`a` akan secara otomatis memiliki kursor pointer.
+
+```html
+
+
+
+```
+
+### Mode Gelap
+
+Untuk menggunakan gambar yang berbeda untuk mode terang dan gelap, gunakan Tailwind CSS untuk menyembunyikan dan menampilkan gambar.
+
+```html
+
+
+```
+
+### Terkait
+
+Untuk informasi lebih lanjut, kami merekomendasikan bagian berikut:
+
+
+ Baca referensi untuk komponen Frame
+
+
+## Video
+
+
+
+
+
+
+ Mintlify mendukung [tag HTML dalam Markdown](https://www.markdownguide.org/basic-syntax/#html). Ini berguna jika Anda lebih suka tag HTML daripada sintaks Markdown, dan memungkinkan Anda membuat dokumentasi dengan fleksibilitas tak terbatas.
+
+
+Untuk video YouTube gunakan:
+
+```html
+
+```
+
+Untuk video lainnya, gunakan:
+
+```html
+
+```
+
+Untuk memutar video secara otomatis, gunakan:
+
+```html
+
+```
+
+
+ Karena Mintlify perlu mematuhi sintaks JSX, atribut kata ganda perlu ditulis dalam camelCase: autoPlay, playsInline.
+
+
+## iFrame
+
+Memuat halaman HTML lain dalam dokumen.
+
+```html
+
+```
+
+
+ Meskipun tidak wajib, kami menyarankan untuk menambahkan`alt` dan `title` atribut pada gambar untuk SEO dan aksesibilitas yang lebih baik. Pelajari lebih lanjut di [SEO gambar](https://yoast.com/image-seo-alt-tag-and-title-tag-optimization/).
+
diff --git a/id/integrations/analytics/amplitude.mdx b/id/integrations/analytics/amplitude.mdx
new file mode 100644
index 000000000..e435a0af2
--- /dev/null
+++ b/id/integrations/analytics/amplitude.mdx
@@ -0,0 +1,23 @@
+---
+title: Amplitude
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk mengirim analitik ke Amplitude.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "amplitude": {
+ "apiKey": "required"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "amplitude": {
+ "apiKey": "76bb138bf3fbf58186XXX00000"
+ }
+ }
+ ```
+
diff --git a/id/integrations/analytics/clearbit.mdx b/id/integrations/analytics/clearbit.mdx
new file mode 100644
index 000000000..dbc39ac29
--- /dev/null
+++ b/id/integrations/analytics/clearbit.mdx
@@ -0,0 +1,23 @@
+---
+title: Clearbit
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk mengirim analitik ke Clearbit.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "clearbit": {
+ "publicApiKey": "required"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "clearbit": {
+ "publicApiKey": "pk_1a1882"
+ }
+ }
+ ```
+
diff --git a/id/integrations/analytics/fathom.mdx b/id/integrations/analytics/fathom.mdx
new file mode 100644
index 000000000..a00f69151
--- /dev/null
+++ b/id/integrations/analytics/fathom.mdx
@@ -0,0 +1,25 @@
+---
+title: Fathom
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk mengirim analitik ke Fathom.
+
+Anda bisa mendapatkan`siteId` dari pengaturan skrip Anda.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "fathom": {
+ "siteId": "required"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "fathom": {
+ "siteId": "YSVMSDAY"
+ }
+ }
+ ```
+
diff --git a/id/integrations/analytics/google-analytics.mdx b/id/integrations/analytics/google-analytics.mdx
new file mode 100644
index 000000000..7606a7639
--- /dev/null
+++ b/id/integrations/analytics/google-analytics.mdx
@@ -0,0 +1,43 @@
+---
+title: Google Analytics 4
+---
+
+Anda perlu membuat propertiGA4baru untuk digunakan dengan Mintlify. Data yang dikumpulkan akan masuk ke proyek yang sama dengan data Google Analytics Anda lainnya.
+
+Jika Anda menggunakan versi lama Google Analytics, Universal Analytics, Anda masih akan dapat menghasilkan GA4 properti. GA4 data sedikit berbeda dari data UA tetapi masih dikumpulkan dalam proyek yang sama.
+
+## Cara Menghubungkan GA4 ke Mintlify
+
+### Buat Web Stream
+
+Anda perlu membuat web stream untuk mendapatkan ID Pengukuran yang akan dimasukkan ke Mintlify.
+
+Klik ikon roda gigi di pojok kiri bawah layar Google Analytics. Kemudian klik Data Streams.
+
+
+
+Buat Web Stream dan masukkan URL situs dokumentasi Mintlify Anda sebagai URL stream.
+
+ID Pengukuran Anda terlihat seperti `G-XXXXXXX` dan akan muncul di bawah Stream Details segera setelah Anda membuat Web Stream.
+
+### Masukkan ID Pengukuran di docs.json
+
+Tambahkan ID Pengukuran Anda ke file `docs.json` seperti ini:
+
+```json docs.json
+"integrations": {
+ "ga4": {
+ "measurementId": "G-XXXXXXX"
+ }
+}
+```
+
+### Tunggu
+
+Google Analytics membutuhkan waktu dua sampai tiga hari untuk menampilkan data Anda.
+
+Anda dapat menggunakan [Google Analytics Debugger](https://chrome.google.com/webstore/detail/google-analytics-debugger/jnkmfdileelhofjcijamephohjechhna?hl=en) untuk memeriksa apakah analitik telah diaktifkan dengan benar. Ekstensi akan mencatat ke konsol browser Anda setiap kali GA4 membuat permintaan.
+
+
+ Tautan pratinjau memiliki analitik yang dinonaktifkan.
+
diff --git a/id/integrations/analytics/google-tag-manager.mdx b/id/integrations/analytics/google-tag-manager.mdx
new file mode 100644
index 000000000..168d53f10
--- /dev/null
+++ b/id/integrations/analytics/google-tag-manager.mdx
@@ -0,0 +1,25 @@
+---
+title: Google Tag Manager
+---
+
+Tambahkan ID tag Anda ke`docs.json` file dan kami akan menyuntikkan skrip Google Tag Manager ke semua halaman Anda.
+
+Anda bertanggung jawab untuk mengatur banner persetujuan cookie dengan Google Tag Manager jika Anda membutuhkannya.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "gtm": {
+ "tagId": "required"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "gtm": {
+ "tagId": "GTM-MGBL4PW"
+ }
+ }
+ ```
+
diff --git a/id/integrations/analytics/heap.mdx b/id/integrations/analytics/heap.mdx
new file mode 100644
index 000000000..0d551b4a4
--- /dev/null
+++ b/id/integrations/analytics/heap.mdx
@@ -0,0 +1,23 @@
+---
+title: Heap
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk mengirim analitik ke Heap.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "heap": {
+ "appId": "required"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "heap": {
+ "appId": "1234567890"
+ }
+ }
+ ```
+
diff --git a/id/integrations/analytics/hotjar.mdx b/id/integrations/analytics/hotjar.mdx
new file mode 100644
index 000000000..1b8b32222
--- /dev/null
+++ b/id/integrations/analytics/hotjar.mdx
@@ -0,0 +1,14 @@
+---
+title: HotJar
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk mengirim analitik ke HotJar.
+
+```json Analytics options in docs.json
+"integrations": {
+ "hotjar": {
+ "hjid": "required",
+ "hjsv": "required"
+ }
+}
+```
diff --git a/id/integrations/analytics/koala.mdx b/id/integrations/analytics/koala.mdx
new file mode 100644
index 000000000..d46b613ce
--- /dev/null
+++ b/id/integrations/analytics/koala.mdx
@@ -0,0 +1,23 @@
+---
+title: Koala
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk mengirim analitik ke Koala.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "koala": {
+ "publicApiKey": "required"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "koala": {
+ "publicApiKey": "pk_1a1882"
+ }
+ }
+ ```
+
diff --git a/id/integrations/analytics/logrocket.mdx b/id/integrations/analytics/logrocket.mdx
new file mode 100644
index 000000000..ce40d7c08
--- /dev/null
+++ b/id/integrations/analytics/logrocket.mdx
@@ -0,0 +1,13 @@
+---
+title: LogRocket
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk mengirim analitik ke LogRocket.
+
+```json Analytics options in docs.json
+"integrations": {
+ "logrocket": {
+ "apiKey": "required"
+ }
+}
+```
diff --git a/id/integrations/analytics/mixpanel.mdx b/id/integrations/analytics/mixpanel.mdx
new file mode 100644
index 000000000..ac5d1314f
--- /dev/null
+++ b/id/integrations/analytics/mixpanel.mdx
@@ -0,0 +1,13 @@
+---
+title: Mixpanel
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk mengirim analitik ke Mixpanel.
+
+```json Analytics options in docs.json
+"integrations": {
+ "mixpanel": {
+ "projectToken": "required"
+ }
+}
+```
diff --git a/id/integrations/analytics/overview.mdx b/id/integrations/analytics/overview.mdx
new file mode 100644
index 000000000..432c5d6d1
--- /dev/null
+++ b/id/integrations/analytics/overview.mdx
@@ -0,0 +1,612 @@
+---
+title: Integrasi Analytics
+description: Integrasikan dengan platform analytics untuk melacak event
+---
+
+Secara otomatis mengirim data tentang keterlibatan dokumentasi Anda ke penyedia analytics pihak ketiga.
+
+## Semua Integrasi
+
+
+
+
+
+}
+ />
+
+
+
+
+
+
+}
+ />
+
+
+
+
+
+
+
+
+}
+ />
+
+
+
+
+
+
+
+
+
+
+}
+ />
+
+
+
+
+
+
+
+
+
+
+}
+ />
+
+
+
+
+
+}
+ />
+
+
+
+
+
+}
+ />
+
+
+
+
+
+
+}
+ />
+
+
+
+
+>
+}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+ />
+
+
+
+
+
+
+
+}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+ />
+
+
+
+
+
+}
+ />
+
+
+
+
+
+
+
+
+}
+ />
+
+
+## Mengaktifkan Analytics
+
+Atur kunci analytics Anda di `docs.json`. Anda dapat menambahkan integrasi analytics tanpa batas secara gratis.
+
+Sintaks untuk `docs.json` ada di bawah ini. Anda hanya perlu menyertakan entri untuk platform yang ingin Anda hubungkan.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "amplitude": {
+ "apiKey": "required"
+ },
+ "clearbit": {
+ "publicApiKey": "required"
+ },
+ "fathom": {
+ "siteId": "required"
+ },
+ "ga4": {
+ "measurementId": "required"
+ },
+ "gtm": {
+ "tagId": "required"
+ },
+ "hotjar": {
+ "hjid": "required",
+ "hjsv": "required"
+ },
+ "koala": {
+ "publicApiKey": "required"
+ },
+ "logrocket": {
+ "appId": "required"
+ },
+ "mixpanel": {
+ "projectToken": "required"
+ },
+ "pirsch": {
+ "id": "required"
+ },
+ "plausible": {
+ "domain": "required"
+ },
+ "posthog": {
+ "apiKey": "required",
+ "apiHost": "optional"
+ },
+ "segment": {
+ "key": "required"
+ },
+ }
+ ```
+
+ ```json Google Analytics 4 Example
+ "integrations": {
+ "ga4": {
+ "measurementId": "G-XXXXXXX"
+ }
+ }
+ ```
+
+
+## FAQ
+
+
+ * `expandable_open`
+
+ * `expandable_close`
+
+ * `accordion_open`
+
+ * `accordion_close`
+
+ * `header_nav_item_click`
+
+ * `cta_click`
+
+ * `scroll_to_bottom`
+
+ * `search_close`
+
+ * `api_playground_call`
+
+ * `search_result_click`
+
+ * `chat_enter`
+
+ * `chat_followup`
+
+ * `chat_completed`
+
+ * `code_block_copy`
+
+ * `chat_shared`
+
+ * `thumb_vote`
+
+ * `powered_by_mintlify_click`
+
+ * `ai_chat_citation_click`
+
+ * `ai_chat_feedback_positive_click`
+
+ * `ai_chat_feedback_negative_click`
+
+ * `pageview`
+
diff --git a/id/integrations/analytics/pirsch.mdx b/id/integrations/analytics/pirsch.mdx
new file mode 100644
index 000000000..9e1de4f85
--- /dev/null
+++ b/id/integrations/analytics/pirsch.mdx
@@ -0,0 +1,25 @@
+---
+title: Pirsch
+---
+
+Tambahkan berikut ini ke `docs.json` berkas untuk mengirim analitik ke Pirsch.
+
+Anda dapat mendapatkan ID situs Anda dari Settings > Developer > Identification Code.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "pirsch": {
+ "id": "required"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "pirsch": {
+ "id": "8Kw7OKxBfswOjnKGZa7P9Day8JmVYwTp"
+ }
+ }
+ ```
+
diff --git a/id/integrations/analytics/plausible.mdx b/id/integrations/analytics/plausible.mdx
new file mode 100644
index 000000000..35830667a
--- /dev/null
+++ b/id/integrations/analytics/plausible.mdx
@@ -0,0 +1,28 @@
+---
+title: Plausible
+---
+
+Tambahkan domain situs Anda ke `docs.json` untuk mengirim analitik ke Plausible.
+
+
+ Jangan sertakan`https://` untuk domain atau server.
+
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "plausible": {
+ "domain": "required",
+ "server": "optional"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "plausible": {
+ "domain": "docs.domain.com"
+ }
+ }
+ ```
+
diff --git a/id/integrations/analytics/posthog.mdx b/id/integrations/analytics/posthog.mdx
new file mode 100644
index 000000000..4bd202f56
--- /dev/null
+++ b/id/integrations/analytics/posthog.mdx
@@ -0,0 +1,36 @@
+---
+title: PostHog
+---
+
+Tambahkan berikut ini ke file `docs.json` Anda untuk mengirim analitik ke PostHog.
+
+Anda hanya perlu menyertakan `apiHost` jika Anda melakukan self-hosting PostHog. Kami mengirim event ke `https://app.posthog.com` secara default.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "posthog": {
+ "apiKey": "YOUR_POSTHOG_PROJECT_API_KEY",
+ "apiHost": "optional"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "posthog": {
+ "apiKey": "phc_TXdpocbYTeZVm5VJmMzHTMrCofBQu3e0kN7HGMNGTVW"
+ }
+ }
+ ```
+
+
+
+
+
+ Mengaktifkan analitik PostHog akan menonaktifkan analitik di dashboard Mintlify.
+
+
+## Perekaman Sesi
+
+Anda perlu menambahkan URL untuk situs web dokumentasi Anda ke "Domain yang Diizinkan untuk perekaman" PostHog sebelum Anda dapat menerima perekaman sesi. Opsi untuk menambahkan URL Anda ada di pengaturan proyek Posthog.
diff --git a/id/integrations/analytics/segment.mdx b/id/integrations/analytics/segment.mdx
new file mode 100644
index 000000000..834a1675c
--- /dev/null
+++ b/id/integrations/analytics/segment.mdx
@@ -0,0 +1,23 @@
+---
+title: Segment
+---
+
+Tambahkan kunci penulisan Segment Anda ke file`docs.json` untuk mengirim analitik ke Segment.
+
+
+ ```json Analytics options in docs.json
+ "integrations": {
+ "segment": {
+ "key": "required",
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "segment": {
+ "key": "nqJxiRG15Y6M594P8Sb8ESEciU3VC2"
+ }
+ }
+ ```
+
diff --git a/id/integrations/privacy/osano.mdx b/id/integrations/privacy/osano.mdx
new file mode 100644
index 000000000..96702e59f
--- /dev/null
+++ b/id/integrations/privacy/osano.mdx
@@ -0,0 +1,25 @@
+---
+title: Osano
+---
+
+Tambahkan berikut ini ke`docs.json` berkas untuk menambahkan [Osano](https://www.osano.com/) pengelola persetujuan cookie.
+
+
+ ```json Integration options in docs.json
+ "integrations": {
+ "osano": "SOURCE"
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "osano": "https://cmp.osano.com/2sUB2dqwqdkks/8dqwd-dwd86£-4a9b/osano.js"
+ }
+ ```
+
+
+The `SOURCE` dapat ditemukan sebagai `src` nilai dalam potongan kode yang dihasilkan oleh Osano. Ini selalu dimulai dengan `https://cmp.osano.com/`.
+
+```html Code snippet from Osano
+
+```
diff --git a/id/integrations/privacy/overview.mdx b/id/integrations/privacy/overview.mdx
new file mode 100644
index 000000000..5ffb194cd
--- /dev/null
+++ b/id/integrations/privacy/overview.mdx
@@ -0,0 +1,45 @@
+---
+title: Integrasi Privasi
+description: Integrasikan dengan platform privasi data
+---
+
+
+ } horizontal />
+
+
+## Mengaktifkan Integrasi Privasi Data
+
+Anda dapat menambahkan platform privasi data ke dokumen Anda. Tambahkan `integrations` field ke file `docs.json` Anda dengan script yang sesuai.
+
+```json
+ "integrations": {
+ "osano": "SOURCE"
+ }
+```
+
+Jika Anda ingin meminta integrasi platform privasi data, silakan beritahu kami di [komunitas kami](https://mintlify.com/community).
+
+## Persetujuan Cookie dan Menonaktifkan Telemetri
+
+Jika Anda perlu memeriksa apakah pengguna telah menyetujui cookie untuk kepatuhan GDPR, Anda dapat menentukan kunci dan nilai penyimpanan lokal di bawah `cookies`:
+
+```json
+ "integrations": {
+ "cookies": {
+ "key": "LOCAL STORAGE KEY",
+ "value": "LOCAL STORAGE VALUE"
+ }
+ }
+```
+
+Jika nilai-nilai ini diatur, penyimpanan lokal akan diperiksa untuk melihat apakah pengguna telah menyetujui cookie. Jika belum, telemetri akan dinonaktifkan.
+
+Jika Anda ingin menonaktifkan telemetri untuk semua pengguna, Anda dapat menambahkan berikut ini ke file `docs.json` Anda:
+
+```json
+ "integrations": {
+ "telemetry": {
+ "enabled": false
+ }
+ }
+```
diff --git a/id/integrations/sdks/speakeasy.mdx b/id/integrations/sdks/speakeasy.mdx
new file mode 100644
index 000000000..d966f350d
--- /dev/null
+++ b/id/integrations/sdks/speakeasy.mdx
@@ -0,0 +1,96 @@
+---
+title: Speakeasy
+description: Otomatiskan cuplikan penggunaan SDK Anda di playground API
+---
+
+Anda dapat mengintegrasikan cuplikan kode yang dihasilkan Speakeasy dari SDK Anda langsung ke dalam dokumentasi referensi API Mintlify Anda. Cuplikan penggunaan SDK ditampilkan di[playground interaktif](https://mintlify.com/docs/api-playground/overview) dari dokumentasi yang didukung Mintlify Anda.
+
+## Perubahan Repositori SDK Speakeasy
+
+Di repositori SDK Speakeasy Anda, tambahkan berikut ini ke bagian`targets` dari file`.speakeasy/workflow.yaml` Anda untuk memastikan sampel kode secara otomatis dihasilkan bersamaan dengan generasi SDK.
+
+```yaml .speakeasy/workflow.yaml
+targets:
+ my-target:
+ target: typescript
+ source: my-source
+ codeSamples:
+ output: codeSamples.yaml
+```
+
+Sampel kode akan dihasilkan dalam bentuk[file overlay OpenAPI](https://www.speakeasyapi.dev/openapi/overlays) yang akan digunakan dalam repositori dokumentasi Mintlify.
+
+## Perubahan Repositori Dokumentasi Mintlify
+
+File alur kerja yang dihasilkan akan secara otomatis menggabungkan spesifikasi OpenAPI sumber dan sampel kode Speakeasy Anda menjadi satu file keluaran,`openapi.yaml`. Mintlify akan menggunakan file keluaran ini saat membangun referensi API Anda.
+
+### Pengaturan CLI Interaktif
+
+Jalankan perintah berikut untuk mengatur file`.speakeasy/workflow.yaml` dan`.github/workflows/sdk_generation.yaml` melalui CLI Speakeasy interaktif.
+
+```bash
+speakeasy configure sources
+speakeasy configure github
+```
+
+Atur spesifikasi sumber Anda. Spesifikasi sumber adalah spesifikasi OpenAPI yang akan digunakan untuk menghasilkan sampel kode, dan seringkali merupakan spesifikasi yang sama yang digunakan untuk mendukung dokumentasi Mintlify.
+
+
+
+Tambahkan overlay yang dibuat oleh Speakeasy untuk menyisipkan cuplikan kode ke dalam spesifikasi Anda.
+
+
+
+Berikan nama dan path untuk spesifikasi OpenAPI. Ini akan menjadi spesifikasi akhir yang digunakan oleh Mintlify.
+
+
+
+Terakhir, Tambahkan`SPEAKEASY_API_KEY` sebagai rahasia repositori ke repo Mintlify Anda di bawah`Settings > Secrets & Variables > Actions`. Temukan kunci API Speakeasy di dashboard Speakeasy di bawah tab**API Keys**.
+
+## Pengaturan Manual
+
+Sebagai alternatif, Anda dapat mengatur file-file berikut secara manual di repo dokumentasi Mintlify Anda.
+
+```yaml .speakeasy/workflow.yaml
+workflowVersion: 1.0.0
+sources:
+ docs-source:
+ inputs:
+ - location: {{your_api_spec}} # local or remote references supported
+ overlays:
+ - location: https://raw.githubusercontent.com/{{your_sdk_repo_1}}/codeSamples.yaml
+ - location: https://raw.githubusercontent.com/{{your_sdk_repo_2}}/codeSamples.yaml
+ - location: https://raw.githubusercontent.com/{{your_sdk_repo_3}}/codeSamples.yaml
+ output: openapi.yaml
+targets: {}
+```
+
+```yaml .speakeasy/workflows/sdk_generation.yaml
+name: Generate
+permissions:
+ checks: write
+ contents: write
+ pull-requests: write
+ statuses: write
+"on":
+ workflow_dispatch:
+ inputs:
+ force:
+ description: Force generation of SDKs
+ type: boolean
+ default: false
+ schedule:
+ - cron: 0 0 * * *
+jobs:
+ generate:
+ uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
+ with:
+ force: ${{ github.event.inputs.force }}
+ mode: pr
+ speakeasy_version: latest
+ secrets:
+ github_access_token: ${{ secrets.GITHUB_TOKEN }}
+ speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}
+```
+
+Terakhir, pastikan Anda menambahkan`SPEAKEASY_API_KEY` sebagai rahasia repositori ke repo Mintlify Anda di bawah`Settings > Secrets & Variables > Actions`. Temukan kunci API Speakeasy di dashboard Speakeasy di bawah tab**API Keys**.
diff --git a/id/integrations/sdks/stainless.mdx b/id/integrations/sdks/stainless.mdx
new file mode 100644
index 000000000..603eecbec
--- /dev/null
+++ b/id/integrations/sdks/stainless.mdx
@@ -0,0 +1,51 @@
+---
+title: Stainless
+description: Otomatiskan contoh snippet SDK Anda di playground API
+---
+
+Jika Anda menggunakan dukungan OpenAPI Mintlify untuk dokumentasi referensi API Anda, tambahkan berikut ini ke konfigurasi Stainless Anda:
+
+```yaml openapi.stainless.yml
+openapi:
+ code_samples: mintlify
+```
+
+Konfigurasikan [pengaturan OpenAPI](/api-playground/openapi/setup#in-the-repo) di dokumentasi Mintlify Anda. Untuk mengintegrasikan Stainless, modifikasi GitHub Action yang mengunggah spesifikasi OpenAPI Anda ke Stainless sehingga mendorong spesifikasi OpenAPI yang ditingkatkan Stainless ke repo dokumentasi Anda seperti ini:
+
+```yaml
+name: Upload OpenAPI spec to Stainless and (Mintlify) docs repo
+
+on:
+ push:
+ branches: [main]
+ workflow_dispatch:
+
+jobs:
+ stainless:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Push spec and config to Stainless and outputs documented spec
+ uses: stainless-api/upload-openapi-spec-action@main
+ with:
+ input_path: 'path/to/my-company-openapi.json'
+ config_path: 'path/to/my-company.stainless.yaml'
+ output_path: 'path/to/my-company-openapi.documented.json'
+ project_name: 'my-stainless-project'
+ - name: Push documented spec to docs repo
+ uses: dmnemec/copy_file_to_another_repo_action@main
+ env:
+ API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
+ with:
+ source_file: 'config/my-company-openapi.documented.json'
+ destination_repo: '{DOCS_REPO_NAME}'
+ destination_folder: 'openapi-specs' # (optional) the folder in the destination repository to place the file in, if not the root directory
+ user_email: '{EMAIL}' # the email associated with the GH token
+ user_name: '{USERNAME}' # the username associated with the GH token
+ commit_message: 'Auto-updates from Stainless'
+```
+
+Ini mengasumsikan secret-secret berikut telah [diunggah ke GitHub Actions Secrets](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions):
+
+* `secrets.STAINLESS_API_KEY`: Kunci API Stainless Anda.
+* `secrets.API_TOKEN_GITHUB`: Sebuah [Token Akses Personal](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) GitHub dengan izin untuk mendorong ke repo dokumentasi Anda.
diff --git a/id/integrations/support/front.mdx b/id/integrations/support/front.mdx
new file mode 100644
index 000000000..cc4a5810c
--- /dev/null
+++ b/id/integrations/support/front.mdx
@@ -0,0 +1,19 @@
+---
+title: Front
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk menambahkan[Front Chat](https://front.com) widget.
+
+
+ ```json Integration options in docs.json
+ "integrations": {
+ "frontchat": "CHAT_ID"
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "frontchat": "1365d046d7c023e9b030ce90d02d093a"
+ }
+ ```
+
diff --git a/id/integrations/support/intercom.mdx b/id/integrations/support/intercom.mdx
new file mode 100644
index 000000000..fa7a4c385
--- /dev/null
+++ b/id/integrations/support/intercom.mdx
@@ -0,0 +1,23 @@
+---
+title: Intercom
+---
+
+Tambahkan berikut ini ke`docs.json` file untuk menambahkan[Intercom](https://www.intercom.com) widget.
+
+
+ ```json Integration options in docs.json
+ "integrations": {
+ "intercom": {
+ "appId": "APP_ID"
+ }
+ }
+ ```
+
+ ```json Example
+ "integrations": {
+ "intercom": {
+ "appId": "APP_ID"
+ }
+ }
+ ```
+
diff --git a/id/integrations/support/overview.mdx b/id/integrations/support/overview.mdx
new file mode 100644
index 000000000..538eb7799
--- /dev/null
+++ b/id/integrations/support/overview.mdx
@@ -0,0 +1,43 @@
+---
+title: Integrasi Dukungan
+description: Integrasikan dengan widget dukungan
+---
+
+
+ } horizontal />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+ horizontal
+ />
+
+
+## Mengaktifkan Integrasi Dukungan
+
+Anda dapat mengintegrasikan widget ke dalam dokumentasi Anda untuk dukungan pelanggan. Tambahkan `integrations` bidang ke dalam berkas `docs.json` Anda dengan ID aplikasi masing-masing.
+
+```json
+ "integrations": {
+ "intercom": "APP_ID",
+ "frontchat": "CHAT_ID"
+ }
+```
+
+Jika Anda ingin meminta integrasi dukungan pelanggan, silakan beri tahu kami di [komunitas kami](https://join.slack.com/t/mintlify-users/shared_invite/zt-1xfzz6x35-f4o4WCYfpvLhSj3O7WAOMA).
diff --git a/id/list-table.mdx b/id/list-table.mdx
new file mode 100644
index 000000000..3547ec147
--- /dev/null
+++ b/id/list-table.mdx
@@ -0,0 +1,85 @@
+---
+title: Daftar dan Tabel
+description: Tampilkan informasi dalam daftar dan tabel
+icon: list
+---
+
+## Daftar
+
+### Daftar Berurutan
+
+Untuk membuat daftar berurutan, tambahkan item baris dengan angka diikuti titik
+
+1. Item pertama
+2. Item kedua
+3. Item ketiga
+4. Item keempat
+
+```md
+1. First item
+2. Second item
+3. Third item
+4. Fourth item
+```
+
+### Daftar Tidak Berurutan
+
+Untuk membuat daftar tidak berurutan, tambahkan tanda strip (`-`), tanda bintang (`*`), atau tanda plus (`+`) di depan item baris
+
+* Item pertama
+* Item kedua
+* Item ketiga
+* Item keempat
+
+```md
+- First item
+- Second item
+- Third item
+- Fourth item
+```
+
+### Daftar Bersarang
+
+Tambahkan indentasi pada item daftar untuk menyarangkannya
+
+* Item pertama
+* Item kedua
+ * Item tambahan
+ * Item tambahan
+* Item ketiga
+
+```md
+- First item
+- Second item
+ - Additional item
+ - Additional item
+- Third item
+```
+
+
+ Daftar mengikuti [sintaks markdown](https://www.markdownguide.org/basic-syntax/#lists-1).
+
+
+## Tabel
+
+| Properti | Deskripsi |
+| --------- | ------------------------------------------ |
+| Nama | Nama lengkap pengguna |
+| Usia | Usia yang dilaporkan |
+| Bergabung | Apakah pengguna bergabung dengan komunitas |
+
+### Membuat tabel
+
+
+ Komponen Tabel mengikuti [sintaks markdown](https://www.markdownguide.org/extended-syntax/#tables).
+
+
+Untuk menambahkan tabel, gunakan tiga atau lebih tanda hubung (`---`) untuk membuat header setiap kolom, dan gunakan pipa (`|`) untuk memisahkan setiap kolom. Untuk kompatibilitas, Anda juga harus menambahkan pipa di kedua ujung baris.
+
+```md
+| Property | Description |
+| -------- | ------------------------------------- |
+| Name | Full name of user |
+| Age | Reported age |
+| Joined | Whether the user joined the community |
+```
diff --git a/id/migration.mdx b/id/migration.mdx
new file mode 100644
index 000000000..a510712d8
--- /dev/null
+++ b/id/migration.mdx
@@ -0,0 +1,150 @@
+---
+title: Migration
+description: Cara migrasi dokumentasi dari penyedia yang ada
+icon: arrow-up-from-bracket
+---
+
+Anda dapat menggunakan [paket publik](https://www.npmjs.com/package/@mintlify/scraping) untuk mengkonversi dokumentasi Anda yang ada ke Mintlify.
+
+Saat ini kami mendukung migrasi untuk:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+ />
+
+
+
+}
+ />
+
+
+Tidak melihat penyedia dokumentasi Anda atau memiliki sistem buatan sendiri? Kami masih bisa membantu! Silakan hubungi kami di [sales@mintlify.com](mailto:sales@mintlify.com).
+
+## Perintah
+
+* `mintlify-scrape section [url]` - Mengambil beberapa halaman dalam situs.
+* `mintlify-scrape page [url]` - Mengambil satu halaman dalam situs.
+
+Perintah akan secara otomatis mendeteksi framework.
+
+## 🚀 Instalasi
+
+Pertama, instal paketnya:
+
+```
+npm i @mintlify/scraping
+```
+
+Penggunaan sekali pakai:
+
+
+ ```bash Section
+ npx @mintlify/scraping@latest section [url]
+ ```
+
+ ```bash Page
+ npx @mintlify/scraping@latest page [url]
+ ```
+
+
+Instalasi global:
+
+```
+npm install @mintlify/scraping@latest -g
+```
+
+Penggunaan global:
+
+
+ ```bash Section
+ mintlify-scrape section [url]
+ ```
+
+ ```bash Page
+ mintlify-scrape page [url]
+ ```
+
+
+Berikan path relatif atau URL ke file OpenAPI untuk menghasilkan file frontmatter untuk setiap endpoint.
+
+```
+mintlify-scrape openapi-file [openApiFilename]
+
+-w, --writeFiles Whether or not to write the frontmatter files [boolean] [default: true]
+-o, --outDir The folder in which to write any created frontmatter files [string]
+```
diff --git a/id/navigation/divisions.mdx b/id/navigation/divisions.mdx
new file mode 100644
index 000000000..cba236180
--- /dev/null
+++ b/id/navigation/divisions.mdx
@@ -0,0 +1,198 @@
+---
+title: Tab, Jangkar, Dropdown
+---
+
+## Tab
+
+Tab membantu membedakan antara topik atau bagian yang berbeda dalam dokumentasi Anda.
+
+
+
+
+
+
+
+```json docs.json
+"navigation": {
+ "tabs": [
+ {
+ "tab": "API References",
+ "pages": [
+ "api-reference/get",
+ "api-reference/post",
+ "api-reference/delete"
+ ]
+ },
+ {
+ "tab": "SDKs",
+ "pages": [
+ "sdk/fetch",
+ "sdk/create",
+ "sdk/delete",
+ ]
+ },
+ {
+ "tab": "Blog",
+ "href": "https://external-link.com/blog"
+ }
+ ]
+}
+```
+
+## Jangkar
+
+Jangkar adalah cara lain untuk membagi konten Anda. Mereka muncul di atas navigasi samping Anda.
+
+
+
+
+
+
+
+Konfigurasinya sangat mirip dengan konfigurasi tab. Kami sangat menyarankan agar Anda mengatur`icon` field juga.
+Nilai ikon yang valid mencakup semua[Font Awesome](https://fontawesome.com/icons) dan [Lucide](https://lucide.dev/icons) ikon.
+
+```json docs.json
+"navigation": {
+ "anchors": [
+ {
+ "anchor": "Documentation",
+ "icon": "book-open",
+ "pages": [
+ "quickstart",
+ "development",
+ "navigation"
+ ]
+ }
+ {
+ "anchor": "API References",
+ "icon": "sqaure-terminal",
+ "pages": [
+ "api-reference/get",
+ "api-reference/post",
+ "api-reference/delete"
+ ]
+ }
+ {
+ "anchor": "Blog",
+ "href": "https://external-link.com/blog"
+ }
+ ]
+}
+```
+
+## Dropdown
+
+
+
+
+
+
+
+Dropdown muncul di tempat yang sama dengan jangkar, tetapi dikonsolidasikan menjadi satu dropdown.
+Kami juga menyarankan agar Anda mengatur ikon untuk setiap item dropdown (dari [Font Awesome](https://fontawesome.com/icons) atau [Lucide](https://lucide.dev/icons)).
+
+```json docs.json
+"navigation": {
+ "dropdowns": [
+ {
+ "dropdown": "Documentation",
+ "icon": "book-open",
+ "pages": [
+ "quickstart",
+ "development",
+ "navigation"
+ ]
+ }
+ {
+ "dropdown": "API References",
+ "icon": "sqaure-terminal",
+ "pages": [
+ "api-reference/get",
+ "api-reference/post",
+ "api-reference/delete"
+ ]
+ }
+ {
+ "dropdown": "Blog",
+ "href": "https://external-link.com/blog"
+ }
+ ]
+}
+```
+
+## Hierarki Bersarang
+
+Anda dapat menggunakan kombinasi apa pun dari jangkar, tab, dan dropdown - ketiganya dapat disarangkan satu sama lain secara bergantian.
+
+
+ ```json Top-Level Anchors
+ {
+ "navigation": {
+ "anchors": [
+ {
+ "anchor": "Anchor 1",
+ "groups": [
+ {
+ "group": "Group 1",
+ "pages": [
+ "some-folder/file-1",
+ "another-folder/file-2"
+ "just-a-file"
+ ]
+ }
+ ]
+ }
+ {
+ "anchor": "Anchor 2",
+ "groups": [
+ {
+ "group": "Group 2",
+ "pages": [
+ "some-other-folder/file-1",
+ "various-different-folders/file-2",
+ "another-file"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ```
+
+ ```json Top-Level Tabs
+ {
+ "navigation": {
+ "tabs": [
+ {
+ "tab": "Tab 1",
+ "groups": [
+ {
+ "group": "Group 1",
+ "pages": [
+ "some-folder/file-1",
+ "another-folder/file-2"
+ "just-a-file"
+ ]
+ }
+ ]
+ }
+ {
+ "tab": "Tab 2",
+ "groups": [
+ {
+ "group": "Group 2",
+ "pages": [
+ "some-other-folder/file-1",
+ "various-different-folders/file-2",
+ "another-file"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ```
+
diff --git a/id/navigation/localization.mdx b/id/navigation/localization.mdx
new file mode 100644
index 000000000..ab7f388d2
--- /dev/null
+++ b/id/navigation/localization.mdx
@@ -0,0 +1,49 @@
+---
+title: Lokalisasi
+---
+
+`"languages"` di `docs.json` dapat dimanfaatkan untuk membagi navigasi Anda ke dalam bahasa yang berbeda.
+
+Saat ini kami mendukung lokalisasi dalam bahasa-bahasa berikut:
+
+* Arab (`ar`)
+* Mandarin (`cn` atau `zh`, `zh-Hans` untuk Sederhana dan `zh-Hant` untuk Tradisional)
+* Inggris (`en`)
+* Prancis (`fr`)
+* Jerman (`de`)
+* Indonesia (`id`)
+* Italia (`it`)
+* Jepang (`jp` atau `ja`)
+* Korea (`ko`)
+* Portugis (`pt`)
+* Portugis (Brasil) (`pt-BR`)
+* Rusia (`ru`)
+* Spanyol (`es`)
+* Turki (`tr`)
+
+```json docs.json
+{
+ "navigation": {
+ "languages": [
+ {
+ "language": "en",
+ "groups": [
+ {
+ "group": "Getting Started",
+ "pages": ["en/overview", "en/quickstart", "en/development"]
+ }
+ ]
+ },
+ {
+ "language": "es",
+ "groups": [
+ {
+ "group": "Getting Started",
+ "pages": ["es/overview", "es/quickstart", "es/development"]
+ }
+ ]
+ }
+ ]
+ }
+}
+```
diff --git a/id/navigation/overview.mdx b/id/navigation/overview.mdx
new file mode 100644
index 000000000..3e5692d68
--- /dev/null
+++ b/id/navigation/overview.mdx
@@ -0,0 +1,25 @@
+---
+title: Overview
+description: Properti `navigation` mengontrol hierarki dokumentasi Anda.
+---
+
+import ConfigUpgrade from "/snippets/config-upgrade.mdx";
+
+Ini dapat berisi satu dari tujuh properti:
+
+* `pages`
+* `groups`
+* `anchors`
+* `tabs`
+* `dropdowns`
+* `versions`
+* `languages`
+
+Properti-properti ini semuanya berfungsi untuk mempartisi konten Anda dan membuat hierarki sehingga lebih mudah bagi pengguna Anda untuk menavigasi dokumentasi.
+
+
+
+
+ Jika Anda ingin mempelajari lebih lanjut tentang perbedaan antara `mint.json` dan
+ `docs.json` lihat [blog](https://mintlify.com/blog/refactoring-mint-json-into-docs-json)
+
diff --git a/id/navigation/pages.mdx b/id/navigation/pages.mdx
new file mode 100644
index 000000000..1b4007e8e
--- /dev/null
+++ b/id/navigation/pages.mdx
@@ -0,0 +1,51 @@
+---
+title: Halaman dan Grup
+---
+
+## Halaman
+
+Jika Anda tidak menginginkan hierarki, Anda dapat mendefinisikan halaman dalam bidang `navigation` Anda.
+
+Setiap entri dari `pages` array harus berupa path ke file yang ada dalam repo Anda.
+Perhatikan bahwa Anda tidak perlu menambahkan `.mdx` ke path file.
+
+```json
+{
+ "navigation": {
+ "pages": [
+ "overview",
+ "quickstart",
+ "advanced/components",
+ "advanced/integrations"
+ ]
+ }
+}
+```
+
+## Grup
+
+Grup memungkinkan Anda mengelompokkan halaman Anda. Grup juga dapat disarangkan satu sama lain.
+
+```json
+{
+ "navigation": {
+ "groups": [
+ {
+ "group": "Getting Started",
+ "pages": [
+ "quickstart",
+ {
+ "group": "Editing",
+ "icon": "pen-paintbrush",
+ "pages": ["development", "web-editor"]
+ }
+ ]
+ },
+ {
+ "group": "Writing Content",
+ "pages": ["writing-content/page", "writing-content/text"]
+ }
+ ]
+ }
+}
+```
diff --git a/id/navigation/versions.mdx b/id/navigation/versions.mdx
new file mode 100644
index 000000000..b01f2978f
--- /dev/null
+++ b/id/navigation/versions.mdx
@@ -0,0 +1,63 @@
+---
+title: Versi
+---
+
+`"versions"` di `docs.json` dapat dimanfaatkan untuk membagi navigasi Anda ke dalam versi yang berbeda.
+
+```json docs.json
+{
+ "navigation": {
+ "versions": [
+ {
+ "version": "1.0.0",
+ "groups": [
+ {
+ "group": "Getting Started",
+ "pages": ["v1/overview", "v1/quickstart", "v1/development"]
+ }
+ ]
+ },
+ {
+ "version": "2.0.0",
+ "groups": [
+ {
+ "group": "Getting Started",
+ "pages": ["v2/overview", "v2/quickstart", "v2/development"]
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+Anda juga dapat menambahkan versi ke bagian tertentu dari dokumentasi Anda dengan menyarangkan versi.
+
+```json docs.json [expandable]
+{
+ "tabs": [
+ {
+ "tab": "Guides",
+ "pages": ["overview", "quickstart"]
+ },
+ {
+ "tab": "SDKs",
+ "versions": [
+ {
+ "version": "latest",
+ "anchors": [
+ {
+ "anchor": "Javascript",
+ "pages": ["sdk/js/create", "sdk/js/edit", "sdk/js/delete"]
+ },
+ {
+ "anchor": "Python",
+ "pages": ["sdk/py/create", "sdk/py/edit", "sdk/py/delete"]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+```
diff --git a/id/page.mdx b/id/page.mdx
new file mode 100644
index 000000000..fee4cd28c
--- /dev/null
+++ b/id/page.mdx
@@ -0,0 +1,175 @@
+---
+title: Judul Halaman dan Metadata
+description: Mengatur judul dan metadata untuk navigasi dan SEO
+icon: text-size
+---
+
+## Dasar-dasar
+
+Setiap halaman adalah file MDX yang harus dimulai dengan sintaks metadata berikut dengan`---` di awal dan akhir:
+
+
+ ```md Schema
+ ---
+ title: "title of the page"
+ ---
+ ```
+
+ ```md Example
+ ---
+ title: "Page"
+ ---
+ ```
+
+
+
+
+
+ Mintlify akan menggunakan nama file jika Anda lupa menyertakan judul.
+
+
+Metadata lainnya diletakkan di antara`---` yang sama. Sebagai contoh, halaman ini menggunakan metadata berikut:
+
+```md
+---
+title: "Page Titles and Metadata"
+description: "Setting the title and metadata for navigation and SEO"
+---
+```
+
+## Deskripsi
+
+Anda dapat menampilkan deskripsi yang muncul langsung di bawah judul dengan
+`description` metadata.
+
+```md
+description: "Your description goes here."
+```
+
+## Judul Sidebar
+
+Anda dapat menampilkan judul yang berbeda di navigasi dengan`sidebarTitle`
+metadata. Ini berguna jika judul Anda panjang dan Anda ingin sesuatu yang lebih pendek di
+tautan navigasi.
+
+```md
+---
+title: "Your very long page title you want to shorten"
+sidebarTitle: "Short title"
+---
+```
+
+## Ikon Sidebar
+
+Ingin ikon untuk item sidebar Anda seperti yang ada di
+[komponen](/content/components/accordions)? Anda dapat mengatur`icon` atribut dalam
+metadata! Semua ikon dari[Font Awesome](https://fontawesome.com/icons) dan[Lucide](https://lucide.dev/icons) tersedia
+untuk kita. Anda juga dapat mengatur jenis ikon untuk ikon Font Awesome (opsional). Jika tidak diatur, jenis
+ikon akan menjadi regular.
+
+```md
+---
+title: "Code Block"
+icon: "rectangle-code"
+iconType: "solid"
+---
+```
+
+## Halaman API
+
+Halaman API memungkinkan Anda membangun playground API interaktif. Untuk membuat halaman API, Anda
+harus mengatur`api` atau`openapi` properti dalam metadata halaman.
+
+Pelajari lebih lanjut tentang playground API di[demo kami](/api-playground).
+
+
+ ```md Schema
+ api or openapi: method endpoint
+ ```
+
+ ```md API Example
+ api: "GET /users"
+ ```
+
+ ```md OpenAPI Example
+ openapi: "GET /users"
+ ```
+
+
+## Mode Halaman
+
+Pengaturan Mode Halaman memungkinkan Anda untuk menyesuaikan tampilan halaman Anda. Anda dapat memilih dari
+mode yang berbeda untuk menyesuaikan tata letak sesuai kebutuhan Anda. Jika tidak ada mode yang ditentukan, halaman
+akan menggunakan pengaturan default.
+
+### Default
+
+Jika tidak ada mode spesifik yang diberikan, halaman akan default ke pengaturan standar. Ini berarti halaman
+akan ditampilkan dengan daftar isi default (jika ada judul) dan elemen standar lainnya, memberikan
+tata letak tipikal tanpa penyesuaian khusus.
+
+```md
+---
+title: "Page with no ToC"
+---
+```
+
+### Mode Lebar
+
+Dalam Mode Lebar, Anda dapat menyembunyikan daftar isi (ToC) di sisi kanan halaman. Ini
+sangat berguna jika halaman Anda tidak memiliki judul atau jika Anda lebih suka menggunakan
+ruang horizontal tambahan untuk konten lain.
+
+```md
+---
+title: "Page with no ToC"
+mode: "wide"
+---
+```
+
+### Mode Kustom
+
+Mode Kustom menyediakan tata letak minimalis dengan menghapus semua elemen kecuali bar atas.
+Mode ini menawarkan kanvas kosong, yang ideal untuk membuat "halaman landing" atau halaman apa pun di mana
+Anda menginginkan lingkungan yang bersih dan bebas gangguan.
+
+```md
+---
+mode: "custom"
+---
+```
+
+### Mode Tengah
+
+Mode Tengah menghapus sidebar dan daftar isi, dan memusatkan konten halaman. Mode ini bagus untuk changelog
+atau halaman apa pun di mana Anda ingin fokus pada konten.
+
+```md
+---
+mode: "center"
+---
+```
+
+## Tautan Eksternal
+
+Jika Anda ingin sidebar membuka URL eksternal, Anda dapat mengatur`url` metadata
+di halaman mana pun.
+
+```md
+---
+title: "Page that goes to external link"
+url: "https://www.npmjs.com/package/mintlify"
+---
+```
+
+## Optimisasi Mesin Pencari
+
+Anda dapat mengatur meta tag seperti gambar yang diatur ketika dibagikan di media sosial dengan
+memasukkannya ke dalam metadata halaman Anda. Meta tag dengan titik dua perlu dibungkus dalam
+tanda kutip.
+
+```md
+"twitter:image": "/images/your-photo.jpg"
+```
+
+Lihat[halaman SEO kami](/settings/seo)untuk semua meta tag yang didukung.
diff --git a/id/quickstart.mdx b/id/quickstart.mdx
new file mode 100644
index 000000000..11c86169b
--- /dev/null
+++ b/id/quickstart.mdx
@@ -0,0 +1,155 @@
+---
+title: Memulai
+description: Mulai membangun dokumentasi modern dalam waktu kurang dari lima menit
+icon: rocket
+---
+
+
+
+
+
+
+
+## Memulai
+
+Selamat datang! Ikuti petunjuk di bawah ini untuk mempelajari cara menerapkan, memperbarui dan
+memperkuat dokumentasi Anda dengan Mintlify.
+
+### Membuat Repositori
+
+Dokumentasi Mintlify dirender dari file MDX dan konfigurasi yang didefinisikan dalam
+[starter kit](https://github.com/mintlify/starter). Kami menggunakan GitHub untuk mengintegrasikan
+dokumentasi Anda dengan kode Anda, dan membuat kontrol sumber menjadi mudah. Mulai melalui [dasbor](https://dashboard.mintlify.com) atau klon [starter kit](https://github.com/mintlify/starter) kami untuk memulai.
+
+
+
+ Pasang aplikasi GitHub kami untuk memastikan bahwa pembaruan Anda secara otomatis diterapkan ketika Anda melakukan push perubahan. Anda dapat menemukan tautan instalasi di [dasbor](https://dashboard.mintlify.com/settings), pada halaman Pengaturan. Setelah instalasi berhasil, tanda centang akan muncul di sebelah hash commit repositori.
+
+
+ 
+
+
+
+
+ Jika Anda ingin dokumentasi Anda berada bersama kode Anda sebagai pengaturan monorepo,
+ Anda dapat: 1. Pindahkan konten dokumentasi Anda ke monorepo. 2. Tentukan jalur ke
+ `docs.json` di[dasbor](https://dashboard.mintlify.com/settings/deployment/git-settings)
+
+
+
+
+
+
+
+
+
+### Memperbarui Konten
+
+Mintlify memungkinkan Anda untuk dengan mudah menyesuaikan gaya, struktur, dan konten
+dokumentasi Anda.
+
+
+
+ 1. Pasang [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
+ 2. Setelah git terpasang, klon repositori dokumentasi Anda menggunakan `git clone `. Jika Anda belum mengaturnya, sekarang adalah waktu yang tepat untuk melakukannya dengan [kunci SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
+ 3. Gunakan IDE favorit Anda untuk membuka repositori.
+ 4. Pasang Mintlify CLI kami untuk melihat pratinjau perubahan dengan `npm i -g mintlify`.
+
+ Pelajari lebih lanjut tentang ini di [panduan pengembangan lokal](/development).
+
+
+
+ Pelajari lebih lanjut tentang cara menggunakan editor web di [panduan](/web-editor).
+
+
+
+ Dengan mudah sesuaikan warna, logo dan tombol di antara konfigurasi lainnya dalam `docs.json` file. Mulai dengan konfigurasi dasar ini:
+
+ ```json
+ "name": "Your Company"
+ "logo": {
+ "light": "/logo/light.svg",
+ "dark": "/logo/dark.svg",
+ "href": "https://yourcompany.com"
+ },
+ "favicon": "/favicon.svg",
+ "colors": {
+ "primary": "#2AB673",
+ "light": "#55D799",
+ "dark": "#117866",
+ },
+ ```
+
+ Daftar lengkap konfigurasi yang didukung dapat ditemukan di [pengaturan global](/settings/global).
+
+
+
+ Tambahkan konten dengan file MDX sederhana. Mulai halaman Anda dengan template ini:
+
+ ```md
+ ---
+ title: "Page Title"
+ sidebarTitle: "Sidebar title (optional - if different from page title)"
+ description: "Subtitle (optional)"
+ ---
+ ```
+
+ Pelajari lebih lanjut tentang menambahkan gambar, tabel, daftar, dan lainnya menggunakan [sintaks MDX](/text). Kami juga menawarkan [berbagai macam komponen](/content/components).
+
+
+
+ Setelah siap, commit dan push perubahan Anda untuk memperbarui situs dokumentasi Anda. Berikut [panduan](https://docs.github.com/en/get-started/using-git/pushing-commits-to-a-remote-repository#about-git-push) tentang cara melakukannya. Jika aplikasi GitHub tidak dapat menerapkan perubahan Anda dengan sukses, Anda dapat memperbarui dokumentasi Anda secara manual melalui [dasbor](https://dashboard.mintlify.com).
+
+
+ 
+
+
+
+
+ Anda dapat dengan mudah menyiapkan referensi API menggunakan dokumen OpenAPI.
+
+ 1. Tambahkan `openapi.yaml` atau `openapi.json` file ke dalam repositori dokumentasi Anda atau tentukan `openapi` field di `docs.json` dengan URL.
+
+ ```json
+ "openapi": "link-to-your-openapi-file"
+ ```
+
+ 2. Gunakan [scraper](/api-playground/openapi/setup#autogenerate-files-recommended) kami untuk menghasilkan file endpoint OpenAPI Anda secara otomatis sebagai:
+
+ ```bash
+ npx @mintlify/scraping@latest openapi-file
+ ```
+
+ 3. Terakhir, sertakan file endpoint MDX yang dihasilkan ke `docs.json` di bawah `navigation`.
+
+ Untuk panduan lengkap tentang menggunakan Mintlify dengan OpenAPI, lihat [panduan ini](/api-playground/openapi/setup). [Panduan ini](/api-playground/openapi/writing-openapi) menjelaskan cara mengkonfigurasi metode autentikasi API Anda. Untuk definisi referensi API manual, jelajahi [sintaks kami](/api-playground/overview).
+
+
+
+ Analitik internal kami memberi Anda wawasan tentang tampilan halaman, analitik pencarian, rekaman sesi dan lainnya. Akses ini di [dasbor](https://dashboard.mintlify.com/analytics).
+
+ Kami juga mendukung integrasi dengan berbagai penyedia analitik. Anda dapat menemukan daftar penyedia [di sini](/integrations/analytics/overview).
+
+
+
+
+ Kami menyediakan layanan migrasi white-glove sebagai bagian dari paket Enterprise kami.
+ Tertarik? Anda dapat memintanya dengan [menghubungi kami](mailto:sales@mintlify.com).
+
+
+### Publikasi
+
+
+ Integrasikan dokumentasi Anda ke dalam situs web Anda dengan menghosting-nya di domain kustom. Ini termasuk dalam paket gratis.
+
+ Navigasi ke [pengaturan dasbor](https://dashboard.mintlify.com/settings) untuk menambahkan domain kustom.
+
+ 
+
+
+Selamat! Anda telah menyiapkan Mintlify Docs dan tampilannya luar biasa! Butuh dukungan atau ingin memberikan umpan balik? Anda dapat bergabung dengan
+
+[komunitas](https://mintlify.com/community) atau kirim email ke
+
+[support@mintlify.com](mailto:support@mintlify.com).
diff --git a/id/reusable-snippets.mdx b/id/reusable-snippets.mdx
new file mode 100644
index 000000000..04c3b5370
--- /dev/null
+++ b/id/reusable-snippets.mdx
@@ -0,0 +1,143 @@
+---
+title: Potongan yang Dapat Digunakan Kembali
+description: Potongan kustom yang dapat digunakan kembali untuk menjaga konten tetap sinkron
+icon: recycle
+---
+
+Salah satu prinsip utama pengembangan perangkat lunak adalah DRY (Don't Repeat Yourself/Jangan Mengulang Diri), yang juga berlaku untuk dokumentasi. Jika Anda menemukan diri Anda mengulang konten yang sama di beberapa tempat, Anda harus membuat potongan kustom untuk menjaga konten Anda tetap sinkron.
+
+## Membuat potongan kustom
+
+**Pra-kondisi**: Anda harus membuat file potongan Anda di direktori`snippets` agar impor dapat berfungsi.
+
+Setiap halaman di direktori`snippets` akan diperlakukan sebagai potongan dan tidak akan dirender menjadi halaman mandiri. Jika Anda ingin membuat halaman mandiri dari potongan, impor potongan ke file lain dan panggil sebagai komponen.
+
+### Ekspor default
+
+1. Tambahkan konten ke file potongan Anda yang ingin Anda gunakan kembali. Secara opsional, Anda dapat menambahkan variabel yang dapat diisi melalui props saat Anda mengimpor potongan. Dalam contoh ini, variabel kami adalah word.
+
+```typescript snippets/my-snippet.mdx
+Hello world! This is my content I want to reuse across pages.
+```
+
+2. Impor snippet ke file tujuan Anda.
+
+```typescript destination-file.mdx
+---
+title: My title
+description: My Description
+---
+
+import MySnippet from '/snippets/path/to/my-snippet.mdx';
+
+## Header
+
+Lorem impsum dolor sit amet.
+
+
+
+```
+
+### Mengekspor dengan variabel
+
+1. Secara opsional, Anda dapat menambahkan variabel yang dapat diisi melalui props saat Anda mengimpor snippet. Dalam contoh ini, variabel kami adalah word.
+
+```typescript snippets/my-snippet.mdx
+My keyword of the day is {word}.
+```
+
+2. Impor snippet ke file tujuan Anda dengan variabel. Properti akan terisi berdasarkan spesifikasi Anda.
+
+```typescript destination-file.mdx
+---
+title: My title
+description: My Description
+---
+
+import MySnippet from '/snippets/path/to/my-snippet.mdx';
+
+## Header
+
+Lorem impsum dolor sit amet.
+
+
+
+```
+
+### Variabel yang dapat digunakan kembali
+
+1. Ekspor variabel dari file snippet Anda:
+
+```typescript snippets/path/to/custom-variables.mdx
+export const myName = 'my name';
+
+export const myObject = { fruit: 'strawberries' };
+```
+
+2. Impor snippet dari file tujuan Anda dan gunakan variabel:
+
+```typescript destination-file.mdx
+---
+title: My title
+description: My Description
+---
+
+import { myName, myObject } from '/snippets/path/to/custom-variables.mdx';
+
+Hello, my name is {myName} and I like {myObject.fruit}.
+```
+
+### Komponen yang dapat digunakan kembali
+
+1. Di dalam file snippet Anda, buat komponen yang menerima props dengan mengekspor komponen Anda dalam bentuk fungsi panah.
+
+```typescript snippets/custom-component.mdx
+export const MyComponent = ({ title }) => (
+
+
{title}
+
... snippet content ...
+
+);
+```
+
+
+ MDX tidak dikompilasi di dalam badan fungsi panah. Gunakan sintaks HTML ketika memungkinkan atau gunakan ekspor default jika Anda perlu menggunakan MDX.
+
+
+2. Impor snippet ke file tujuan Anda dan masukkan props
+
+```typescript destination-file.mdx
+---
+title: My title
+description: My Description
+---
+
+import { MyComponent } from '/snippets/custom-component.mdx';
+
+Lorem ipsum dolor sit amet.
+
+
+```
+
+### Konten Sisi Klien
+
+Secara default, Mintlify menggunakan rendering sisi server, menghasilkan konten saat waktu build. Untuk memuat konten sisi klien, pastikan untuk memverifikasi
+`document` ketersediaan objek sebelum memulai proses rendering.
+
+```typescript snippets/client-component.mdx
+{/* `setTimeout` simulates a React.useEffect, which is called after the component is mounted. */}
+export const ClientComponent = () => {
+ if (typeof document === "undefined") {
+ return null;
+ } else {
+ setTimeout(() => {
+ const clientComponent = document.getElementById("client-component");
+ if (clientComponent) {
+ clientComponent.innerHTML = "Hello, client-side component!";
+ }
+ }, 1);
+
+ return
+ }
+}
+```
diff --git a/id/settings/authentication-personalization/authentication-setup/choosing-a-handshake.mdx b/id/settings/authentication-personalization/authentication-setup/choosing-a-handshake.mdx
new file mode 100644
index 000000000..5ce63cb66
--- /dev/null
+++ b/id/settings/authentication-personalization/authentication-setup/choosing-a-handshake.mdx
@@ -0,0 +1,86 @@
+---
+title: Memilih Handshake
+description: Cara memutuskan metode Handshake mana yang tepat untuk dokumentasi Anda
+---
+
+
+ Ini adalah dokumentasi untuk **Autentikasi** metode Handshake. Personalisasi menawarkan [set metode Handshake yang berbeda](/settings/authentication-personalization/personalization-setup/choosing-a-handshake).
+
+
+Sebelum pengguna Anda dapat mengakses konten yang dipersonalisasi, mereka harus diautentikasi. Mintlify mendukung empat metode Autentikasi Handshake:
+
+1. **Password**: Konfigurasikan set password global untuk situs dokumentasi Anda.
+2. **JWT**: Gunakan alur login Anda sendiri untuk mengautentikasi pengguna Anda melalui JWT dalam URL.
+3. **OAuth 2.0**: Integrasikan dengan server OAuth Anda untuk mengaktifkan login pengguna melalui alur Authorization Code standar.
+4. **Mintlify Dashboard**: Izinkan semua pengguna dashboard Anda untuk mengakses dokumentasi Anda, tanpa konfigurasi yang diperlukan.
+
+## Prasyarat
+
+
+
+ * Persyaratan keamanan Anda memungkinkan berbagi kata sandi antara pembaca dokumentasi.
+
+
+
+ * Anda memiliki alur login yang sudah ada.
+ * Anda dapat menambahkan langkah terakhir dalam alur login ini yang membuat JWT dan mengarahkan ke dokumentasi.
+
+
+
+ * Anda memiliki server OAuth yang sudah ada yang mendukung alur Authorization Code.
+ * Anda dapat membuat endpoint API baru yang dapat diakses oleh token akses OAuth yang dikembalikan.
+
+
+
+ * Pembaca dokumentasi Anda juga merupakan editor dokumentasi Anda.
+
+
+
+## Kelebihan & Kekurangan
+
+
+
+ Kelebihan:
+
+ * Pengaturan sangat sederhana
+ * Tidak perlu konfigurasi untuk menambah pengguna baru - cukup bagikan kata sandi
+
+ Kekurangan:
+
+ * Sulit untuk mencabut akses ke dokumentasi Anda tanpa mengatur ulang kata sandi
+ * Kehilangan fitur personalisasi, karena tidak ada cara untuk membedakan pengguna dengan kata sandi yang sama
+
+
+
+ Kelebihan:
+
+ * Mengurangi risiko penyalahgunaan endpoint API
+ * Konfigurasi CORS nol
+ * Tidak ada batasan pada URL API
+
+ Kekurangan:
+
+ * Harus dapat terhubung ke alur login yang sudah ada
+
+
+
+ Kelebihan:
+
+ * Standar keamanan yang lebih tinggi
+
+ Kekurangan:
+
+ * Membutuhkan kerja yang signifikan jika menyiapkan server OAuth untuk pertama kali
+ * Mungkin berlebihan untuk beberapa aplikasi
+
+
+
+ Kelebihan:
+
+ * Pengaturan tanpa konfigurasi
+
+ Kekurangan:
+
+ * Mengharuskan semua pembaca dokumentasi memiliki akun di dasbor Mintlify
+
+
diff --git a/id/settings/authentication-personalization/authentication-setup/jwt.mdx b/id/settings/authentication-personalization/authentication-setup/jwt.mdx
new file mode 100644
index 000000000..89e59be97
--- /dev/null
+++ b/id/settings/authentication-personalization/authentication-setup/jwt.mdx
@@ -0,0 +1,115 @@
+---
+title: Jabat Tangan JWT
+description: Gunakan alur login yang disesuaikan untuk mengautentikasi pengguna
+---
+
+
+ Ini adalah dokumentasi untuk **Autentikasi** Jabat Tangan. Langkah-langkah untuk mengatur [JWT **Personalisasi** Jabat Tangan](/settings/authentication-personalization/personalization-setup/jwt) sedikit berbeda.
+
+
+Jika Anda tidak memiliki dasbor, atau jika Anda ingin menjaga dasbor dan dokumentasi Anda tetap terpisah sepenuhnya, Anda dapat menggunakan alur login Anda sendiri untuk mengautentikasi pengguna melalui JWT dalam URL.
+
+## Implementasi
+
+
+
+ Buka [pengaturan dasbor](https://dashboard.mintlify.com/products/authentication) dan buat kunci pribadi. Simpan kunci ini di tempat yang aman di mana dapat diakses oleh backend Anda.
+
+
+
+ Buat alur login yang melakukan hal berikut:
+
+ * Autentikasi pengguna
+ * Buat JWT yang berisi info pengguna yang diautentikasi dalam format [Pengguna](../sending-data) format
+ * Tanda tangani JWT dengan kunci rahasia, menggunakan algoritma EdDSA
+ * Buat URL pengalihan kembali ke jalur `/login/jwt-callback` dokumentasi Anda, termasuk JWT sebagai hash
+
+
+
+ Kembali ke [pengaturan dasbor](https://dashboard.mintlify.com/products/authentication) dan tambahkan URL login ke pengaturan Autentikasi Anda.
+
+
+
+## Contoh
+
+Saya ingin mengatur autentikasi untuk dokumentasi saya yang dihosting di `docs.foo.com`. Saya ingin dokumentasi saya benar-benar terpisah dari dasbor saya (atau saya tidak memiliki dasbor sama sekali).
+
+Untuk mengatur autentikasi dengan Mintlify, saya membuka dasbor Mintlify dan menghasilkan rahasia JWT. Saya membuat URL web`https://foo.com/docs-login` yang memulai alur masuk untuk pengguna saya. Di akhir alur masuk ini, setelah saya memverifikasi identitas pengguna, saya membuat JWT yang berisi data kustom pengguna sesuai dengan spesifikasi Mintlify. Saya menggunakan pustaka JWT untuk menandatangani JWT ini dengan rahasia Mintlify saya, membuat URL pengalihan dengan bentuk`https://docs.foo.com/login/jwt-callback#{SIGNED_JWT}`, dan mengalihkan pengguna.
+
+Kemudian saya membuka pengaturan dasbor dan memasukkan`https://foo.com/docs-login` untuk bidang URL Masuk.
+
+Berikut adalah contoh bagaimana kodenya:
+
+
+ ```ts TypeScript
+ import * as jose from 'jose';
+ import { Request, Response } from 'express';
+
+ const TWO_WEEKS_IN_MS = 1000 * 60 * 60 * 24 * 7 * 2;
+
+ const signingKey = await jose.importPKCS8(process.env.MINTLIFY_PRIVATE_KEY, 'EdDSA');
+
+ export async function handleRequest(req: Request, res: Response) {
+ const user = {
+ expiresAt: Math.floor((Date.now() + TWO_WEEKS_IN_MS) / 1000), // 2 week session expiration
+ groups: res.locals.user.groups,
+ content: {
+ firstName: res.locals.user.firstName,
+ lastName: res.locals.user.lastName,
+ },
+ };
+
+ const jwt = await new jose.SignJWT(user)
+ .setProtectedHeader({ alg: 'EdDSA' })
+ .setExpirationTime('10 s') // 10 second JWT expiration
+ .sign(signingKey);
+
+ return res.redirect(`https://docs.foo.com/login/jwt-callback#${jwt}`);
+ }
+ ```
+
+ ```python Python
+ import jwt # pyjwt
+ import os
+
+ from datetime import datetime, timedelta
+ from fastapi.responses import RedirectResponse
+
+ private_key = os.getenv(MINTLIFY_JWT_PEM_SECRET_NAME, '')
+
+ @router.get('/auth')
+ async def return_mintlify_auth_status(current_user):
+ jwt_token = jwt.encode(
+ payload={
+ 'exp': int((datetime.now() + timedelta(seconds=10)).timestamp()), # 10 second JWT expiration
+ 'expiresAt': int((datetime.now() + timedelta(weeks=2)).timestamp()), # 1 week session expiration
+ 'groups': ['admin'] if current_user.is_admin else [],
+ 'content': {
+ 'firstName': current_user.first_name,
+ 'lastName': current_user.last_name,
+ },
+ },
+ key=private_key,
+ algorithm='EdDSA'
+ )
+
+ return RedirectResponse(url=f'https://docs.foo.com/login/jwt-callback#{jwt_token}', status_code=302)
+ ```
+
+
+## Mengalihkan Pengguna yang Tidak Terautentikasi
+
+Ketika pengguna yang tidak terautentikasi mencoba mengakses halaman tertentu, Mintlify menyimpan tujuan yang dimaksud melalui alur pengalihan:
+
+1. Pengguna mencoba mengunjungi halaman tertentu (misalnya,`/quickstart`)
+
+2. Mintlify mengalihkan mereka ke URL masuk Anda dan menambahkan tujuan asli (relatif) sebagai parameter`redirect` query
+
+Contoh:
+
+* Permintaan asli:[`https://docs.foo.com/quickstart`](https://docs.foo.com/quickstart)
+
+* Pengalihan ke masuk:[`https://foo.com/docs-login?redirect=%2Fquickstart`](https://foo.com/docs-login?redirect=%2Fquickstart)
+
+Setelah autentikasi berhasil, Anda dapat menyertakan parameter`redirect` yang sama dalam URL callback JWT Anda untuk mengirim pengguna ke tujuan yang dimaksud:
+`https://docs.foo.com/login/jwt-callback?redirect=%2Fquickstart#{SIGNED_JWT}`
diff --git a/id/settings/authentication-personalization/authentication-setup/mintlify.mdx b/id/settings/authentication-personalization/authentication-setup/mintlify.mdx
new file mode 100644
index 000000000..f81a6fde5
--- /dev/null
+++ b/id/settings/authentication-personalization/authentication-setup/mintlify.mdx
@@ -0,0 +1,40 @@
+---
+title: Mintlify Auth Handshake
+description: Gunakan Mintlify untuk mengautentikasi pengguna
+---
+
+
+ Mintlify Auth Handshake hanya tersedia untuk Autentikasi, *bukan*
+ Personalisasi.
+
+
+Anda dapat menggunakan Mintlify untuk mengautentikasi dan mengelola akses ke dokumentasi Anda. Siapa pun yang dapat mengakses dashboard Anda akan secara otomatis dapat melihat dokumentasi Anda.
+
+Metode handshake ini juga memungkinkan deployment pratinjau pribadi, sehingga hanya pengguna yang terautentikasi Mintlify yang akan dapat mengakses deployment pratinjau Anda.
+
+
+ Autentikasi hanya tersedia berdasarkan permintaan. Silakan{" "}
+
+ hubungi sales untuk akses. Setelah kami mengaktifkan akses, Anda dapat mengikuti instruksi implementasi.
+
+
+### Contoh
+
+Saya ingin mengatur autentikasi untuk dokumentasi saya yang dihosting di `docs.foo.com`. Saya ingin dokumentasi saya bersifat internal, dan orang-orang yang akan melihat dokumentasi saya adalah orang-orang yang sama yang berkontribusi pada dokumentasi saya.
+
+Untuk mengatur autentikasi dengan Mintlify, saya dapat pergi ke [pengaturan dashboard](https://dashboard.mintlify.com/products/authentication)
+dan mengaktifkan Autentikasi dengan Mintlify Auth Handshake.
+
+Saya kemudian dapat memastikan bahwa siapa pun yang seharusnya dapat membaca dokumentasi telah ditambahkan sebagai pengguna di [pengaturan dashboard](https://dashboard.mintlify.com/settings/organization/members).
+
+## Implementasi
+
+
+
+ Pergi ke [pengaturan dashboard Mintlify](https://dashboard.mintlify.com/products/authentication) dan pilih Mintlify Auth Handshake.
+
+
+
+ Pastikan bahwa setiap pengguna yang seharusnya dapat melihat dokumentasi Anda telah ditambahkan sebagai pengguna di [pengaturan dashboard Mintlify](https://dashboard.mintlify.com/settings/organization/members).
+
+
diff --git a/id/settings/authentication-personalization/authentication-setup/oauth.mdx b/id/settings/authentication-personalization/authentication-setup/oauth.mdx
new file mode 100644
index 000000000..095830acf
--- /dev/null
+++ b/id/settings/authentication-personalization/authentication-setup/oauth.mdx
@@ -0,0 +1,51 @@
+---
+title: OAuth 2.0 Handshake
+description: Integrasikan dengan server OAuth Anda untuk mengaktifkan login pengguna melalui alur Authorization Code
+---
+
+
+ Ini adalah dokumentasi untuk **Autentikasi** Handshake. Langkah-langkah untuk mengatur [OAuth **Personalisasi** Handshake](/settings/authentication-personalization/personalization-setup/oauth) sedikit berbeda.
+
+
+Jika Anda memiliki server OAuth yang sudah ada, Anda dapat berintegrasi dengan Mintlify untuk pengalaman login yang mulus.
+
+## Implementasi
+
+
+
+ Buka [pengaturan autentikasi Mintlify](https://dashboard.mintlify.com/products/authentication), pilih opsi OAuth, dan isi kolom yang diperlukan:
+
+ * **URL Otorisasi**: URL dasar untuk permintaan otorisasi, di mana kami akan menambahkan parameter query yang sesuai.
+ * **ID Klien**: ID untuk klien OAuth 2.0 yang akan digunakan.
+ * **Scope**: Array scope yang akan diminta.
+ * **URL Token**: URL dasar untuk permintaan pertukaran token.
+ * **URL API Info** (opsional): Endpoint yang akan diakses untuk mengambil informasi pengguna. Jika dikosongkan, alur OAuth hanya akan digunakan untuk memverifikasi identitas, dan informasi pengguna akan kosong.
+
+
+
+ Salin URL Pengalihan yang tercantum di [pengaturan autentikasi Mintlify](https://dashboard.mintlify.com/products/authentication) dan tambahkan sebagai URL pengalihan yang diizinkan untuk server OAuth Anda.
+
+
+
+ Jika Anda ingin memanfaatkan fitur kustomisasi autentikasi, Anda perlu membuat endpoint untuk mengambil informasi tentang pengguna Anda. Buat endpoint API yang dapat diakses dengan token akses OAuth, dan merespons dengan payload JSON mengikuti format [Pengguna](../sending-data).
+
+ Kembali ke [pengaturan autentikasi Mintlify](https://dashboard.mintlify.com/products/authentication) dan tambahkan URL API Info
+ ke konfigurasi OAuth Anda.
+
+
+
+## Contoh
+
+Saya memiliki server OAuth yang mendukung alur Kode Otorisasi. Saya ingin mengatur autentikasi untuk dokumentasi saya yang dihosting di `foo.com/docs`.
+
+Untuk mengatur autentikasi dengan Mintlify, saya membuat endpoint `api.foo.com/docs/user-info` yang memerlukan token akses OAuth dengan `docs-user-info` scope, dan merespons dengan data kustom pengguna sesuai dengan spesifikasi Mintlify.
+
+Kemudian saya membuka pengaturan dashboard, navigasi ke pengaturan Autentikasi, pilih OAuth, dan masukkan nilai-nilai yang relevan untuk alur OAuth dan endpoint API Info:
+
+* **URL Otorisasi**: `https://auth.foo.com/authorization`
+* **ID Klien**: `ydybo4SD8PR73vzWWd6S0ObH`
+* **Scope**: `['docs-user-info']`
+* **URL Token**: `https://auth.foo.com/exchange`
+* **URL API Info**: `https://api.foo.com/docs/user-info`
+
+Terakhir, saya menyalin URL Pengalihan yang ditampilkan di pengaturan dashboard dan menambahkannya sebagai URL pengalihan yang diizinkan dalam pengaturan konfigurasi klien OAuth saya.
diff --git a/id/settings/authentication-personalization/authentication-setup/password.mdx b/id/settings/authentication-personalization/authentication-setup/password.mdx
new file mode 100644
index 000000000..2a2eb654e
--- /dev/null
+++ b/id/settings/authentication-personalization/authentication-setup/password.mdx
@@ -0,0 +1,41 @@
+---
+title: Password Handshake
+description: Gunakan serangkaian kata sandi bersama untuk mengautentikasi pengguna
+---
+
+
+ Ini adalah dokumentasi untuk Password **Autentikasi** Handshake. Password Handshake tidak tersedia untuk Personalisasi.
+
+
+Jika Anda tidak memiliki persyaratan keamanan yang ketat, atau Anda tidak ingin mengelola database pembaca dokumentasi, Anda dapat menggunakan serangkaian kata sandi bersama untuk melindungi dokumentasi Anda.
+
+
+ Autentikasi hanya tersedia berdasarkan permintaan. Silakan{" "}
+
+ hubungi tim penjualan kami untuk akses. Setelah kami mengaktifkan akses, Anda dapat mengikuti instruksi implementasi.
+
+
+## Implementasi
+
+
+
+ Pergi ke [dasbor
+ pengaturan](https://dashboard.mintlify.com/products/authentication) dan buat
+ sebuah kata sandi.
+
+
+
+ Bagikan kata sandi secara aman dengan pembaca dokumentasi Anda. Itu saja!
+
+
+
+## Contoh
+
+Saya ingin mengatur autentikasi untuk dokumentasi saya yang dihosting di `docs.foo.com`. Saya tidak ingin
+harus melacak siapa yang bisa dan tidak bisa mengakses dokumentasi. Kasus penggunaan utama saya untuk
+autentikasi adalah untuk mencegah pesaing mengintip - berbagi kata sandi cukup
+aman untuk tim saya.
+
+Untuk mengatur autentikasi dengan Mintlify, saya pergi ke dasbor Mintlify saya dan menambahkan
+setidaknya satu kata sandi. Kemudian saya membagikan kata sandi tersebut, bersama dengan URL dokumentasi pribadi,
+kepada calon pelanggan.
diff --git a/id/settings/authentication-personalization/authentication-vs-personalization.mdx b/id/settings/authentication-personalization/authentication-vs-personalization.mdx
new file mode 100644
index 000000000..0ce43e1c0
--- /dev/null
+++ b/id/settings/authentication-personalization/authentication-vs-personalization.mdx
@@ -0,0 +1,37 @@
+---
+title: Autentikasi vs Personalisasi
+description: Cara menentukan produk mana yang terbaik untuk Anda
+---
+
+Mintlify menawarkan baik Autentikasi maupun Personalisasi. Pada umumnya, Autentikasi adalah
+Personalisasi + privasi. Namun, ada beberapa perbedaan kunci yang penting untuk
+diketahui, dari yang paling penting hingga yang kurang penting:
+
+### Jaminan Keamanan
+
+Autentikasi adalah solusi dokumentasi pribadi yang lengkap. Setiap aspek dari dokumentasi Anda,
+termasuk konten halaman, gambar, hasil pencarian, dan fitur obrolan AI, sepenuhnya tidak dapat diakses oleh
+pengguna yang tidak terautentikasi.
+
+Personalisasi, di sisi lain, tidak menawarkan jaminan keamanan untuk konten dokumentasi Anda.
+Semua konten halaman, gambar, hasil pencarian, dan fitur obrolan AI dapat diakses oleh publik. Bahkan
+jika Anda menggunakan fitur halaman tersembunyi dari Personalisasi, penyerang yang termotivasi masih akan
+dapat mengakses konten halaman tersembunyi.
+
+### Metode Handshake
+
+Karena perbedaan dalam persyaratan keamanan untuk Autentikasi dan Personalisasi, metode
+handshake yang berbeda tersedia untuk masing-masing. Kedua metode menawarkan Handshake JWT dan OAuth, meskipun
+langkah-langkah penyiapannya sedikit berbeda.
+
+Autentikasi menawarkan dua metode Handshake tambahan:
+
+* **Handshake Kata Sandi**, yang melindungi situs web Anda dengan satu kata sandi global yang dapat dikonfigurasi.
+
+* **Handshake Mintlify Auth**, yang akan memungkinkan pengguna melihat dokumentasi Anda hanya jika mereka memiliki
+ akses ke dasbor Anda.
+
+Personalisasi menawarkan satu metode Handshake tambahan:
+
+* **Handshake Sesi Bersama**, metode super sederhana yang hanya memerlukan pengaturan satu endpoint
+ yang mengembalikan data untuk pengguna yang sudah terautentikasi.
diff --git a/id/settings/authentication-personalization/authentication.mdx b/id/settings/authentication-personalization/authentication.mdx
new file mode 100644
index 000000000..e573050ce
--- /dev/null
+++ b/id/settings/authentication-personalization/authentication.mdx
@@ -0,0 +1,22 @@
+---
+title: Authentication
+description: Jamin privasi dokumentasi Anda dengan mengautentikasi pengguna
+---
+
+Autentikasi menawarkan privasi penuh untuk semua konten dokumentasi Anda dengan mengharuskan pengguna untuk mengautentikasi sebelum melihat konten apa pun, seperti:
+
+* Konten halaman dokumentasi
+* Gambar yang digunakan dalam halaman dokumentasi
+* Hasil pencarian
+* Interaksi chat AI
+
+Anda dapat mengautentikasi pengguna melalui metode handshake seperti:
+
+* [Kata Sandi](./authentication-setup/password)
+* [JWT](./authentication-setup/jwt)
+* [OAuth](./authentication-setup/oauth)
+* [Mintlify dashboard](./authentication-setup/mintlify)
+
+Autentikasi mirip dengan layanan [Personalisasi](./personalization) kami, tetapi dengan privasi yang terjamin. Selain mengamankan konten dokumentasi Anda, semua fitur yang tersedia melalui Personalisasi juga tersedia melalui Autentikasi.
+
+Lihat dokumentasi kami untuk informasi lebih lanjut tentang [memilih antara Autentikasi dan Personalisasi](./authentication-vs-personalization).
diff --git a/id/settings/authentication-personalization/partial-authentication.mdx b/id/settings/authentication-personalization/partial-authentication.mdx
new file mode 100644
index 000000000..3bc8728c7
--- /dev/null
+++ b/id/settings/authentication-personalization/partial-authentication.mdx
@@ -0,0 +1,24 @@
+---
+title: Partial Authentication
+description: Autentikasi pengguna untuk melihat hanya halaman tertentu
+---
+
+Autentikasi Parsial memungkinkan Anda untuk mengautentikasi pengguna untuk melihat hanya halaman tertentu.
+
+Anda dapat mengautentikasi pengguna melalui metode handshake seperti:
+
+* [Kata Sandi](./authentication-setup/password)
+* [JWT](./authentication-setup/jwt)
+* [OAuth](./authentication-setup/oauth)
+* [Mintlify dashboard](./authentication-setup/mintlify)
+
+Autentikasi Parsial berbagi semua fitur yang sama dengan [Autentikasi](./authentication), tetapi dengan kemampuan untuk mengizinkan pengguna yang tidak terautentikasi melihat halaman tertentu.
+
+Secara default, semua halaman dilindungi. Anda dapat menentukan halaman mana yang harus dapat diakses publik dengan menambahkan properti `public` ke frontmatter halaman.
+
+```mdx
+---
+title: "My Page"
+public: true
+---
+```
diff --git a/id/settings/authentication-personalization/personalization-setup/choosing-a-handshake.mdx b/id/settings/authentication-personalization/personalization-setup/choosing-a-handshake.mdx
new file mode 100644
index 000000000..f6ece5adc
--- /dev/null
+++ b/id/settings/authentication-personalization/personalization-setup/choosing-a-handshake.mdx
@@ -0,0 +1,86 @@
+---
+title: Memilih Handshake
+description: Cara memutuskan metode Handshake mana yang tepat untuk dokumen Anda
+---
+
+
+ Ini adalah dokumentasi untuk**Personalisasi** metode Handshake. Autentikasi menawarkan[set metode Handshake yang berbeda](/settings/authentication-personalization/authentication-setup/choosing-a-handshake).
+
+
+Sebelum pengguna Anda dapat mengakses konten yang dipersonalisasi, mereka harus diautentikasi. Mintlify mendukung tiga metode Personalisasi Handshake:
+
+1. **Sesi Bersama**: Memanfaatkan token sesi yang sama yang digunakan oleh dashboard Anda untuk mengautentikasi pengguna.
+2. **JWT**: Gunakan alur login Anda sendiri untuk mengirim info pengguna ke dokumen Anda melalui JWT dalam URL.
+3. **OAuth 2.0**: Integrasikan dengan server OAuth Anda untuk mengaktifkan login pengguna melalui alur PKCE.
+
+## Prasyarat
+
+
+
+ * Anda memiliki dashboard atau portal pengguna lain yang dihosting di domain Anda.
+ * Kredensial sesi pengguna Anda disimpan sebagai cookies.
+ * Anda dapat membuat endpoint API baru pada origin yang sama atau subdomain dari dashboard Anda.
+ * Jika dashboard Anda berada di`foo.com`, maka**URL API** harus dimulai dengan`foo.com` atau`*.foo.com`
+ * Jika dashboard Anda berada di`dash.foo.com`, maka**URL API** harus dimulai dengan`dash.foo.com` atau`*.dash.foo.com`
+ * Dokumen Anda dihosting pada domain yang sama dengan dashboard Anda.
+ * Jika dashboard Anda berada di`foo.com`, maka**dokumen** harus di-host di `foo.com` atau `*.foo.com`
+ * Jika dashboard Anda berada di `*.foo.com`, **docs** harus di-host di `foo.com` atau `*.foo.com`
+
+
+
+ * Anda memiliki alur login yang sudah ada.
+ * Anda dapat menambahkan langkah terakhir dalam alur login ini yang membuat JWT dan mengarahkan ke docs.
+
+
+
+ * Anda memiliki server OAuth yang sudah ada yang mendukung alur PKCE.
+ * Anda dapat membuat endpoint API baru yang dapat diakses oleh token akses OAuth yang dikembalikan.
+
+
+
+## Kelebihan & Kekurangan
+
+
+
+ Kelebihan:
+
+ * Pengguna yang sudah login ke dashboard Anda secara otomatis login ke docs Anda
+ * Sesi pengguna Anda bersifat persisten, artinya Anda dapat memperbarui data tanpa memerlukan login tambahan
+ * Pengaturan yang diperlukan minimal
+
+ Kekurangan:
+
+ * Docs Anda akan membuat permintaan ke backend Anda, yang mungkin tidak diinginkan
+ * Anda harus memiliki dashboard yang menggunakan autentikasi sesi
+ * Konfigurasi CORS biasanya diperlukan
+
+
+
+ Kelebihan:
+
+ * Mengurangi risiko penyalahgunaan endpoint API
+ * Tidak perlu konfigurasi CORS
+ * Tidak ada batasan pada URL API
+
+ Kekurangan:
+
+ * Harus dapat terhubung ke alur login yang sudah ada
+ * Sesi dashboard dan autentikasi docs benar-benar terpisah, sehingga pengguna perlu login ke dashboard dan docs Anda secara terpisah
+ * Setiap kali Anda ingin memperbarui data pengguna, pengguna Anda harus login ulang ke docs
+ * Jika data pengguna Anda sering berubah, Anda harus meminta pengguna untuk login secara berkala atau berisiko memiliki data yang tidak up-to-date di docs
+ * Jika data pengguna Anda jarang berubah, ini seharusnya tidak menjadi masalah
+
+
+
+ Kelebihan:
+
+ * Standar keamanan yang lebih tinggi
+ * Tidak ada batasan pada URL API
+
+ Kekurangan:
+
+ * Memerlukan banyak pekerjaan jika menyiapkan server OAuth untuk pertama kali
+ * Sesi dashboard dan autentikasi docs benar-benar terpisah, sehingga pengguna perlu login ke dashboard dan docs Anda secara terpisah
+ * Mungkin berlebihan untuk beberapa aplikasi
+
+
diff --git a/id/settings/authentication-personalization/personalization-setup/jwt.mdx b/id/settings/authentication-personalization/personalization-setup/jwt.mdx
new file mode 100644
index 000000000..6bbee019e
--- /dev/null
+++ b/id/settings/authentication-personalization/personalization-setup/jwt.mdx
@@ -0,0 +1,78 @@
+---
+title: JWT Handshake
+description: Gunakan alur login yang disesuaikan untuk mengautentikasi pengguna
+---
+
+
+ Ini adalah dokumentasi untuk JWT **Personalisasi** Handshake. Langkah-langkah untuk mengatur [JWT **Autentikasi** Handshake](/settings/authentication-personalization/authentication-setup/jwt) sedikit berbeda.
+
+
+Jika Anda tidak memiliki dashboard, atau jika Anda ingin menjaga dashboard dan dokumentasi Anda tetap terpisah sepenuhnya, Anda dapat menggunakan alur login Anda sendiri untuk mengirim informasi pengguna ke dokumentasi Anda melalui JWT dalam URL.
+
+## Implementasi
+
+
+
+ Buka [pengaturan dashboard](https://dashboard.mintlify.com/products/authentication) dan generate kunci pribadi. Simpan kunci ini di tempat yang aman di mana dapat diakses oleh backend Anda.
+
+
+
+ Buat alur login yang melakukan hal berikut:
+
+ * Autentikasi pengguna
+ * Buat JWT yang berisi info pengguna yang terautentikasi dalam format [Pengguna](../sending-data) format
+ * Tanda tangani JWT dengan kunci rahasia, menggunakan algoritma ES256
+ * Buat URL pengalihan kembali ke dokumentasi Anda, termasuk JWT sebagai hash
+
+
+
+ Kembali ke [pengaturan dashboard](https://dashboard.mintlify.com/products/authentication) dan tambahkan URL login ke pengaturan Personalisasi Anda.
+
+
+
+## Contoh
+
+Saya ingin mengatur autentikasi untuk dokumentasi saya yang dihosting di `docs.foo.com`. Saya ingin dokumentasi saya benar-benar terpisah dari dashboard saya (atau saya sama sekali tidak memiliki dashboard).
+
+Untuk mengatur autentikasi dengan Mintlify, saya membuka dashboard Mintlify dan menghasilkan sebuah rahasia JWT. Saya membuat URL web `https://foo.com/docs-login` yang memulai alur login untuk pengguna saya. Di akhir alur login ini, setelah saya memverifikasi identitas pengguna, saya membuat JWT yang berisi data kustom pengguna sesuai dengan spesifikasi Mintlify. Saya menggunakan library JWT untuk menandatangani JWT ini dengan rahasia Mintlify saya, membuat URL pengalihan dalam bentuk `https://docs.foo.com#{SIGNED_JWT}`, dan mengalihkan pengguna.
+
+Kemudian saya membuka pengaturan dashboard dan memasukkan `https://foo.com/docs-login` untuk bidang URL Login.
+
+Berikut adalah contoh bagaimana kodenya mungkin terlihat:
+
+```ts
+import * as jose from 'jose';
+import { Request, Response } from 'express';
+
+const TWO_WEEKS_IN_MS = 1000 * 60 * 60 * 24 * 7 * 2;
+
+const signingKey = await jose.importPKCS8(process.env.MINTLIFY_PRIVATE_KEY, 'ES256');
+
+export async function handleRequest(req: Request, res: Response) {
+ const user = {
+ expiresAt: Math.floor((Date.now() + TWO_WEEKS_IN_MS) / 1000),
+ groups: res.locals.user.groups,
+ content: {
+ firstName: res.locals.user.firstName,
+ lastName: res.locals.user.lastName,
+ },
+ };
+
+ const jwt = await new jose.SignJWT(user)
+ .setProtectedHeader({ alg: 'ES256' })
+ .setExpirationTime('10 s')
+ .sign(signingKey);
+
+ return res.redirect(`https://docs.foo.com#${jwt}`);
+}
+
+```
+
+## Mempertahankan Anchor
+
+Setelah login, jika Anda ingin mengalihkan ke anchor tertentu pada halaman, Anda dapat menggunakan format berikut untuk membuat URL pengalihan: `https://docs.foo.com/page#jwt={SIGNED_JWT}&anchor={ANCHOR}`.
+
+Contoh:
+
+* Asli: `https://docs.foo.com/quickstart#step-one`
+* Pengalihan: `https://docs.foo.com/quickstart#jwt={SIGNED_JWT}&anchor=step-one`
diff --git a/id/settings/authentication-personalization/personalization-setup/oauth.mdx b/id/settings/authentication-personalization/personalization-setup/oauth.mdx
new file mode 100644
index 000000000..2e8f66892
--- /dev/null
+++ b/id/settings/authentication-personalization/personalization-setup/oauth.mdx
@@ -0,0 +1,48 @@
+---
+title: OAuth 2.0 Handshake
+description: Integrasikan dengan server OAuth Anda untuk mengaktifkan login pengguna melalui alur PKCE
+---
+
+
+ Ini adalah dokumentasi untuk **Personalisasi** Handshake. Langkah-langkah untuk mengatur [OAuth **Autentikasi** Handshake](/settings/authentication-personalization/authentication-setup/oauth) sedikit berbeda.
+
+
+Jika Anda memiliki server OAuth yang mendukung alur PKCE, Anda dapat berintegrasi dengan Mintlify untuk pengalaman login yang mulus.
+
+## Implementasi
+
+
+
+ Buat endpoint API yang dapat diakses dengan token akses OAuth, dan merespons dengan payload JSON mengikuti format [User](../sending-data). Catat scope atau scope-scope yang diperlukan untuk mengakses endpoint ini.
+
+
+
+ Pergi ke [pengaturan dashboard](https://dashboard.mintlify.com/products/authentication), pilih opsi OAuth, dan isi field-field yang diperlukan:
+
+ * **URL Otorisasi**: URL dasar untuk permintaan otorisasi, yang akan kami tambahkan parameter query yang sesuai.
+ * **ID Klien**: ID untuk klien OAuth 2.0 yang akan digunakan.
+ * **Scope**: Sebuah array scope yang akan diminta.
+ * **URL Token**: URL dasar untuk permintaan pertukaran token.
+ * **URL API Info**: Endpoint yang akan diakses untuk mengambil info pengguna.
+
+
+
+ Salin URL Pengalihan yang tercantum di [pengaturan dashboard](https://dashboard.mintlify.com/products/authentication) dan tambahkan sebagai URL pengalihan yang diizinkan untuk server OAuth Anda.
+
+
+
+## Contoh
+
+Saya memiliki server OAuth yang mendukung alur PKCE. Saya ingin mengatur autentikasi untuk dokumentasi saya yang dihosting di `foo.com/docs`.
+
+Untuk mengatur autentikasi dengan Mintlify, saya membuat endpoint `api.foo.com/docs/user-info` yang memerlukan token akses OAuth dengan `docs-user-info` scope, dan merespons dengan data kustom pengguna sesuai dengan spesifikasi Mintlify.
+
+Kemudian saya membuka pengaturan dashboard, navigasi ke pengaturan Personalisasi, pilih OAuth, dan masukkan nilai-nilai yang relevan untuk alur OAuth dan endpoint API Info:
+
+* **URL Otorisasi**: `https://auth.foo.com/authorization`
+* **ID Klien**: `ydybo4SD8PR73vzWWd6S0ObH`
+* **Scope**: `['docs-user-info']`
+* **URL Token**: `https://auth.foo.com/exchange`
+* **URL API Info**: `https://api.foo.com/docs/user-info`
+
+Terakhir, saya menyalin URL Pengalihan yang ditampilkan di pengaturan dashboard dan menambahkannya sebagai URL pengalihan yang diizinkan dalam pengaturan konfigurasi klien OAuth saya.
diff --git a/id/settings/authentication-personalization/personalization-setup/shared-session.mdx b/id/settings/authentication-personalization/personalization-setup/shared-session.mdx
new file mode 100644
index 000000000..96b5bd378
--- /dev/null
+++ b/id/settings/authentication-personalization/personalization-setup/shared-session.mdx
@@ -0,0 +1,57 @@
+---
+title: Jabat Tangan Sesi Bersama
+description: Berbagi sesi pengguna dengan lancar antara dasbor dan dokumentasi Anda
+---
+
+
+ Ini adalah dokumentasi untuk Jabat Tangan Sesi Bersama **Personalisasi** . Jabat Tangan Sesi Bersama tidak tersedia untuk Autentikasi.
+
+
+Metode ini memanfaatkan info autentikasi sesi yang sudah tersimpan di browser pengguna untuk menciptakan pengalaman dokumentasi yang lancar.
+
+## Implementasi
+
+
+
+ Buat endpoint API yang menggunakan autentikasi sesi untuk mengidentifikasi pengguna, dan merespons dengan payload JSON mengikuti format [Pengguna](../sending-data).
+
+ Jika domain API tidak *sama persis* dengan domain dokumentasi:
+
+ * Tambahkan domain dokumentasi ke header API Anda `Access-Control-Allow-Origin` (tidak boleh `*`)
+ * Pastikan header API Anda `Access-Control-Allow-Credentials` adalah `true`
+
+
+ Opsi CORS ini hanya perlu diaktifkan pada *satu endpoint* yang bertanggung jawab untuk mengembalikan informasi pengguna. Kami tidak menyarankan untuk mengaktifkan opsi ini pada semua endpoint dasbor.
+
+
+
+
+ Pergi ke [pengaturan dasbor](https://dashboard.mintlify.com/products/authentication) dan tambahkan URL API dan URL Login Anda ke pengaturan Personalisasi Anda.
+
+
+
+## Contoh
+
+### Dasbor di subdomain, dokumentasi di subdomain
+
+Saya memiliki dasbor di `dash.foo.com`, yang menggunakan autentikasi sesi berbasis cookie. Rute API dasbor saya di-host di `dash.foo.com/api`. Saya ingin mengatur autentikasi untuk dokumentasi saya yang di-host di `docs.foo.com`.
+
+Untuk mengatur autentikasi dengan Mintlify, saya membuat endpoint dasbor lain `dash.foo.com/api/docs/user-info` yang mengidentifikasi pengguna menggunakan autentikasi sesi, dan merespons dengan data kustom mereka sesuai dengan spesifikasi Mintlify. Kemudian saya menambahkan `https://docs.foo.com` ke `Access-Control-Allow-Origin` daftar izin **hanya untuk rute ini**, dan memastikan `Access-Control-Allow-Credentials` konfigurasi saya diatur ke `true` **hanya untuk rute ini**.
+
+Kemudian saya pergi ke pengaturan dasbor dan memasukkan `https://dash.foo.com/api/docs/user-info` untuk bidang URL API.
+
+### Dasbor di subdomain, dokumentasi di root
+
+Saya memiliki dasbor di `dash.foo.com`, yang menggunakan autentikasi sesi berbasis cookie. Rute API dasbor saya di-host di `dash.foo.com/api`. Saya ingin mengatur autentikasi untuk dokumentasi saya yang dihosting di `foo.com/docs`.
+
+Untuk mengatur autentikasi dengan Mintlify, saya membuat endpoint dashboard lain `dash.foo.com/api/docs/user-info` yang mengidentifikasi pengguna menggunakan autentikasi sesi, dan merespons dengan data kustom mereka sesuai dengan spesifikasi Mintlify. Kemudian saya menambahkan `https://foo.com` ke `Access-Control-Allow-Origin` daftar yang diizinkan **hanya untuk rute ini**, dan memastikan `Access-Control-Allow-Credentials` konfigurasi saya diatur ke `true` **hanya untuk rute ini**.
+
+Kemudian saya membuka pengaturan dashboard dan memasukkan `https://dash.foo.com/api/docs/user-info` untuk kolom API URL.
+
+### Dashboard di root, dokumentasi di root
+
+Saya memiliki dashboard di `foo.com/dashboard`, yang menggunakan autentikasi sesi berbasis cookie. Rute API dashboard saya dihosting di `foo.com/api`. Saya ingin mengatur autentikasi untuk dokumentasi saya yang dihosting di `foo.com/docs`.
+
+Untuk mengatur autentikasi dengan Mintlify, saya membuat endpoint dashboard lain `foo.com/api/docs/user-info` yang mengidentifikasi pengguna menggunakan autentikasi sesi, dan merespons dengan data kustom mereka sesuai dengan spesifikasi Mintlify.
+
+Kemudian saya membuka pengaturan dashboard dan memasukkan `https://foo.com/api/docs/user-info` untuk kolom API URL.
diff --git a/id/settings/authentication-personalization/personalization.mdx b/id/settings/authentication-personalization/personalization.mdx
new file mode 100644
index 000000000..bfb6439d9
--- /dev/null
+++ b/id/settings/authentication-personalization/personalization.mdx
@@ -0,0 +1,77 @@
+---
+title: Personalization
+description: Daftar fitur yang terbuka dengan Personalization
+---
+
+Personalization mengacu pada serangkaian fitur yang memungkinkan Anda untuk menyesuaikan pengalaman dokumentasi Anda berdasarkan beberapa informasi tentang pengguna. Ada tiga fitur utama Personalization:
+
+* **Sesuaikan konten MDX** dengan informasi pengguna, seperti nama, paket, atau jabatan mereka.
+
+* **Pra-isi kunci API** di API Playground untuk penggunaan yang efisien.
+
+* **Tampilkan halaman secara selektif** dalam navigasi berdasarkan grup pengguna.
+
+## Cara Penggunaan
+
+### Menyesuaikan Konten MDX
+
+Saat menulis konten, Anda dapat menggunakan variabel `user` untuk mengakses informasi yang telah Anda kirim ke dokumentasi Anda. Berikut contoh sederhana:
+
+Halo, {user.name ?? 'reader'}!
+
+```jsx
+Hello, {user.name ?? 'reader'}!
+```
+
+Fitur ini menjadi lebih kuat ketika dipasangkan dengan data kustom tentang pengguna. Berikut contoh dunia nyata yang memungkinkan kita memberikan instruksi spesifik tentang cara mengakses fitur Personalization berdasarkan paket pelanggan yang ada:
+
+Personalization adalah fitur enterprise. {
+ user.org === undefined
+ ? <>To access this feature, first create an account at the Mintlify dashboard.>
+ : user.org.plan !== 'enterprise'
+ ? <>You are currently on the ${user.org.plan ?? 'free'} plan. To speak to our team about upgrading, contact our sales team.>
+ : <>To request this feature for your enterprise org, contact our team.>
+}
+
+```jsx
+Personalization is an enterprise feature. {
+ user.org === undefined
+ ? <>To access this feature, first create an account at the Mintlify dashboard.>
+ : user.org.plan !== 'enterprise'
+ ? <>You are currently on the ${user.org.plan ?? 'free'} plan. To speak to our team about upgrading, contact our sales team.>
+ : <>To request this feature for your enterprise org, contact our team.>
+}
+```
+
+
+ Informasi dalam `user` hanya tersedia setelah pengguna masuk. Untuk pengguna yang belum masuk, nilai `user` akan menjadi `{}`. Untuk mencegah halaman crash untuk pengguna yang belum masuk, selalu gunakan optional chaining pada `user`
+ field Anda, misalnya `{user.org?.plan}`
+
+
+### Pra-mengisi Kunci API
+
+Jika Anda mengembalikan input API Playground dalam info pengguna, mereka akan secara otomatis diisi di API Playground. Pastikan nama field dalam info pengguna cocok persis dengan nama di API Playground.
+
+### Menampilkan/Menyembunyikan Halaman
+
+Secara default, setiap halaman terlihat oleh setiap pengguna. Jika Anda ingin membatasi halaman mana yang terlihat oleh pengguna Anda, Anda dapat menambahkan field `groups` di metadata halaman Anda. Saat menentukan halaman mana yang akan ditampilkan kepada pengguna, Mintlify akan memeriksa grup mana yang dimiliki pengguna. Jika pengguna tidak berada dalam grup yang tercantum dalam metadata halaman, halaman tersebut tidak akan ditampilkan.
+
+```md
+---
+title: "Managing Your Users"
+description: "Adding and removing users from your organization"
+groups: ["admin"]
+---
+```
+
+Berikut adalah tabel yang menampilkan apakah halaman ditampilkan untuk kombinasi berbeda dari `groups` dalam metadata User dan halaman:
+
+| | `groups` tidak ada di User | `groups: []` ada di User | `groups: ['admin']` ada di User |
+| :--------------------------------- | :------------------------: | :----------------------: | :-----------------------------: |
+| `groups` tidak ada di metadata | ✅ | ✅ | ✅ |
+| `groups: []` dalam metadata | ❌ | ❌ | ❌ |
+| `groups: ['admin']` dalam metadata | ❌ | ❌ | ✅ |
+
+
+ Perhatikan bahwa array kosong dalam metadata halaman diartikan sebagai "Tidak ada grup yang boleh melihat halaman ini."
+
diff --git a/id/settings/authentication-personalization/sending-data.mdx b/id/settings/authentication-personalization/sending-data.mdx
new file mode 100644
index 000000000..2c5e883cc
--- /dev/null
+++ b/id/settings/authentication-personalization/sending-data.mdx
@@ -0,0 +1,39 @@
+---
+title: Mengirim Data
+description: Bentuk data pengguna yang dapat Anda gunakan untuk mempersonalisasi dokumentasi Anda
+---
+
+Tergantung pada metode Handshake Anda, API Anda akan merespons dengan objek JSON mentah atau JWT yang ditandatangani. Bentuk datanya sama untuk keduanya:
+
+```tsx
+type User = {
+ expiresAt?: number;
+ groups?: string[];
+ content?: Record;
+ apiPlaygroundInputs?: {
+ header?: Record;
+ query?: Record;
+ cookie?: Record;
+ server?: Record;
+ };
+};
+```
+
+
+ Waktu ketika informasi ini seharusnya kedaluwarsa, dalam **detik sejak epoch**. Jika pengguna memuat halaman dan waktu saat ini setelah nilai ini, data yang tersimpan akan dihapus.
+ Untuk Handshake JWT: Ini *bukan* sama dengan `exp` klaim dari JWT. `exp` klaim menentukan kapan JWT seharusnya tidak lagi dianggap valid, dan harus diatur serendah mungkin. Dalam kasus ini, mungkin bisa diatur ke 10 detik atau lebih rendah. `expiresAt` field menentukan kapan data yang diambil harus dianggap basi, dan bisa berkisar dari satu hari hingga beberapa minggu.
+
+
+
+ Daftar grup yang dimiliki pengguna. Ini akan menentukan halaman mana yang harus ditampilkan kepada pengguna ini. Jika salah satu dari grup ini tercantum dalam `groups` field metadata halaman, halaman tersebut akan ditampilkan.
+
+
+
+ Kumpulan nilai yang dapat diakses dari dalam konten MDX menggunakan variabel `user`. Misalnya, jika Anda telah menyediakan `{ firstName: 'Ronan' }` sebagai field konten Anda, Anda dapat menggunakan berikut ini dalam MDX Anda: `Good morning, {user.firstName}!`
+
+
+
+ Nilai-nilai spesifik pengguna yang akan diisi sebelumnya di API playground jika disediakan. Misalnya, jika setiap pelanggan saya membuat permintaan di subdomain tertentu, saya dapat mengirim `{ server: { subdomain: 'foo' } }` sebagai `apiPlaygroundInputs` field saya, dan nilai ini akan diisi sebelumnya pada setiap halaman API dengan nilai `subdomain` ini.
+
+ Field`header`, `query`, dan `cookie` hanya akan diisi sebelumnya jika mereka adalah bagian dari [skema keamanan](https://swagger.io/docs/specification/authentication/). Membuat parameter header standar bernama `Authorization` tidak cukup untuk mengaktifkan fitur ini. Untuk mengetahui apakah sebuah field akan diisi sebelumnya, navigasikan ke dokumentasi Anda yang ada dan periksa apakah field tersebut ada di bagian `Authorization` atau `Server`.
+
diff --git a/id/settings/broken-links.mdx b/id/settings/broken-links.mdx
new file mode 100644
index 000000000..b8beda257
--- /dev/null
+++ b/id/settings/broken-links.mdx
@@ -0,0 +1,43 @@
+---
+title: Pengalihan dan Tautan Rusak
+description: Alat untuk membantu mencegah tautan yang tidak valid
+icon: link-simple
+---
+
+Ketika Anda mengubah path file di folder docs, hal ini juga akan mengubah path URL ke halaman tersebut. Ini mungkin terjadi ketika merestrukturisasi docs Anda atau mengubah judul sidebar.
+
+## Tautan Rusak
+
+Tangkap tautan rusak dengan CLI kami. Cukup [instal CLI](/development) dan jalankan perintah:
+
+```bash
+mintlify broken-links
+```
+
+CLI akan mengidentifikasi setiap tautan relatif di docs Anda yang tidak ada.
+
+## Pengalihan
+
+Atur pengalihan 301 dengan menambahkan bidang `redirects` ke dalam file `docs.json` Anda.
+
+```json
+"redirects": [
+ {
+ "source": "/source/path",
+ "destination": "/destination/path"
+ }
+]
+```
+
+Ini akan secara permanen mengalihkan `/source/path` ke `/destination/path` sehingga Anda tidak kehilangan SEO sebelumnya untuk halaman asli.
+
+Untuk mencocokkan path wildcard, gunakan `*` setelah parameter. Dalam contoh ini, `/beta/:slug*` akan cocok dengan `/beta/introduction` dan mengalihkannya ke `/v2/introduction`.
+
+```json
+"redirects": [
+ {
+ "source": "/beta/:slug*",
+ "destination": "/v2/:slug*"
+ }
+]
+```
diff --git a/id/settings/ci.mdx b/id/settings/ci.mdx
new file mode 100644
index 000000000..bca01b3b9
--- /dev/null
+++ b/id/settings/ci.mdx
@@ -0,0 +1,111 @@
+---
+title: Pemeriksaan CI
+description: Tambahkan pemeriksaan tautan rusak, linting, dan tata bahasa ke proses pembaruan
+icon: circle-check
+---
+
+
+ Fitur ini hanya tersedia untuk pelanggan dengan paket berbayar dan untuk GitHub. Dukungan untuk platform lain akan segera hadir.
+
+
+Gunakan pemeriksaan CI untuk melinting dokumentasi Anda untuk kesalahan, dan memberikan peringatan sebelum Anda mendeploy.
+
+## Instalasi
+
+Untuk memulai, Anda perlu mengikuti langkah-langkah di halaman[GitHub](/settings/github).
+
+Untuk Aplikasi GitHub, Anda dapat memilih untuk hanya memberikan izin ke satu repositori. Kami sangat menyarankan Anda melakukannya karena kami hanya membutuhkan akses ke repositori tempat dokumentasi Anda dihosting.
+
+## Konfigurasi
+
+Anda dapat mengonfigurasi pemeriksaan CI yang diaktifkan untuk deployment di dasbor Mintlify dengan menavigasi ke tab 'Add-Ons'. Di sana Anda dapat mengaktifkan atau menonaktifkan pemeriksaan yang ingin Anda jalankan.
+
+Saat mengaktifkan pemeriksaan, Anda dapat memilih untuk menjalankannya pada level`Warning`atau`Blocking`.
+
+
+ Pemeriksaan level`Blocking`akan memberikan status kegagalan jika tidak lulus, atau perubahan disarankan.
+
+ Pemeriksaan level`Warning`tidak akan pernah memberikan status kegagalan, bahkan jika ada kesalahan atau saran.
+
+
+## Kapan Mereka Berjalan?
+
+Pemeriksaan CI dikonfigurasi untuk berjalan pada commit ke cabang deployment yang Anda konfigurasi, atau pada pull request terhadap cabang tersebut.
+
+## Pemeriksaan CI yang Tersedia
+
+### Tautan Rusak
+
+Mirip dengan cara kerja[pemeriksa tautan CLI](/settings/broken-links#broken-links)di mesin lokal Anda, kami akan secara otomatis memeriksa dokumentasi Anda untuk tautan yang rusak. Untuk melihat hasil pemeriksaan ini, Anda dapat mengunjungi halaman hasil pemeriksaan GitHub untuk commit tertentu.
+
+### Vale
+
+[Vale](https://vale.sh/)adalah linter prosa berbasis aturan open-source yang mendukung berbagai jenis dokumen, termasuk Markdown dan MDX.
+
+Mintlify mendukung menjalankan Vale secara otomatis dalam pemeriksaan CI, dan menampilkan hasilnya sebagai status pemeriksaan.
+
+#### Konfigurasi
+
+Jika Anda memiliki file`.vale.ini`di root direktori konten untuk deployment Anda, kami akan secara otomatis menggunakan file konfigurasi tersebut. Kami juga akan secara otomatis menggunakan file konfigurasi apa pun di`stylesPath`yang Anda tentukan.
+
+Tidak memiliki konfigurasi Vale atau tidak yakin dari mana harus memulai? Jangan khawatir, Mintlify memiliki konfigurasi default yang akan secara otomatis digunakan jika tidak ada yang disediakan.
+
+
+ Harap dicatat bahwa untuk alasan keamanan, kami tidak dapat mendukung`stylesPath`, atau `stylesPath` yang mencakup `..` nilai. Harap gunakan jalur relatif dan sertakan `stylesPath` di repositori Anda.
+
+
+#### Paket
+
+Vale mendukung berbagai [paket](https://vale.sh/docs/keys/packages), yang dapat digunakan untuk memeriksa kesalahan ejaan dan gaya.
+Setiap paket yang Anda sertakan dalam repositori Anda di bawah `stylesPath` yang benar akan secara otomatis diinstal dan digunakan dalam konfigurasi Vale Anda.
+
+Untuk paket yang tidak disertakan dalam repositori Anda, Anda dapat menentukan paket apa pun dari [registri paket Vale](https://vale.sh/explorer), dan paket tersebut akan secara otomatis diunduh dan digunakan dalam konfigurasi Vale Anda.
+
+
+ Harap perhatikan bahwa untuk alasan keamanan, kami tidak dapat mendukung pengunduhan otomatis paket yang tidak berasal dari [registri paket Vale](https://vale.sh/explorer).
+
+
+#### Vale dengan MDX
+
+Vale tidak secara native mendukung MDX, tetapi penulis Vale telah menyediakan [ekstensi kustom](https://github.com/errata-ai/MDX) untuk mendukungnya.
+
+Jika Anda lebih suka tidak menggunakan ekstensi ini, kami merekomendasikan baris berikut dalam file `.vale.ini` Anda:
+
+```ini
+[formats]
+mdx = md
+
+[*.mdx]
+CommentDelimiters = {/*, */}
+
+TokenIgnores = (?sm)((?:import|export) .+?$), \
+(?)(?!`), \
+(<[A-Z]\w+>.+?<\/[A-Z]\w+>)
+
+BlockIgnores = (?sm)^(<\w+\n .*\s\/>)$, \
+(?sm)^({.+.*})
+```
+
+Untuk menggunakan komentar dalam-dokumen Vale, gunakan komentar gaya MDX `{/* ... */}`.
+Jika Anda menggunakan `CommentDelimiters = {/*, */}` [pengaturan](https://vale.sh/docs/keys/commentdelimiters) dalam konfigurasi Anda, Vale akan secara otomatis menginterpretasikan komentar ini saat melakukan linting.
+Ini berarti Anda dapat dengan mudah menggunakan fitur bawaan Vale, seperti melewati baris atau bagian.
+
+```mdx
+{/* vale off */}
+
+This text will be ignored by Vale
+
+{/* vale on */}
+```
+
+Jika Anda memilih untuk tidak menggunakan `CommentDelimiters`, tetapi masih memilih untuk menggunakan komentar Vale, Anda harus membungkus komentar Vale dalam komentar MDX `{/* ... */}`. Contohnya:
+
+```mdx
+{/* */}
+
+This text will be ignored by Vale
+
+{/* */}
+```
+
+Harap perhatikan bahwa tag komentar ini tidak didukung dalam komponen Mintlify, tetapi dapat digunakan di mana saja pada tingkat dasar dokumen.
diff --git a/id/settings/custom-domain.mdx b/id/settings/custom-domain.mdx
new file mode 100644
index 000000000..c051e7b75
--- /dev/null
+++ b/id/settings/custom-domain.mdx
@@ -0,0 +1,45 @@
+---
+title: Domain Kustom
+description: Host dokumentasi Anda di domain kustom situs web Anda
+icon: globe
+---
+
+Untuk mengatur dokumentasi Anda pada domain kustom, Anda perlu mengatur domain kustom yang diinginkan di pengaturan Mintlify dan mengonfigurasi pengaturan DNS pada penyedia domain Anda.
+
+
+ Ingin mengatur subdirektori kustom seperti mintlify.com/docs? Temukan petunjuknya[di sini](/advanced/subpath/cloudflare).
+
+
+## Pengaturan Dashboard
+
+1. Kunjungi[dashboard](https://dashboard.mintlify.com)
+2. Klik "Settings".
+3. Klik "Custom Domain".
+4. Masukkan domain kustom yang Anda inginkan. Sebagai contoh,`docs.mintlify.com`.
+
+
+
+
+
+
+
+## Verifikasi dengan Vercel
+
+Jika Vercel adalah penyedia domain Anda, Anda harus menambahkan catatan verifikasi`TXT`. Informasi ini akan ditampilkan di dashboard Anda setelah mengirimkan domain kustom Anda, dan juga akan dikirimkan melalui email kepada Anda.
+
+## Mengonfigurasi DNS Anda
+
+1. Lanjutkan ke pengaturan DNS domain Anda di situs web penyedia domain Anda.
+2. Buat entri DNS baru, masukkan nilai-nilai berikut:
+
+```
+CNAME | docs | cname.vercel-dns.com.
+```
+
+
+
+
+
+Jika Anda menggunakan Cloudflare sebagai penyedia DNS, Anda perlu mengaktifkan opsi keamanan "full strict" untuk pengaturan https.
+
+Silakan[hubungi dukungan](mailto:sales@mintlify.com)jika Anda tidak melihat domain kustom terpasang setelah konfigurasi di atas.
diff --git a/id/settings/custom-scripts.mdx b/id/settings/custom-scripts.mdx
new file mode 100644
index 000000000..dbdd2f976
--- /dev/null
+++ b/id/settings/custom-scripts.mdx
@@ -0,0 +1,62 @@
+---
+title: CSS & JS Kustom
+description: Sepenuhnya kustomisasi dokumentasi Anda dengan CSS & JS kustom
+icon: code
+---
+
+Tambahkan CSS & JS kustom ke dokumentasi Anda untuk sepenuhnya mengkustomisasi tampilan dan nuansa.
+
+## CSS Kustom
+
+Tambahkan berapa pun file CSS ke repositori Anda dan nama kelas yang didefinisikan akan diterapkan dan tersedia di semua file MDX Anda.
+
+### Menambahkan style.css
+
+Sebagai contoh, Anda dapat menambahkan`style.css`file berikut untuk mengkustomisasi gaya navbar dan footer.
+
+```css
+#navbar {
+ background: "#fffff2";
+ padding: 1rem;
+}
+
+footer {
+ margin-top: 2rem;
+}
+```
+
+### Menggunakan Identifier
+
+Mintlify memiliki serangkaian identifier umum untuk membantu Anda menandai elemen-elemen penting dari UI. Beberapa, tapi tidak semua tercantum dalam berikut ini:
+
+`#topbar-cta-button` `#navbar` `#sidebar` `#content-area` `#table-of-contents`
+
+
+ Gunakan inspect element untuk menemukan referensi ke elemen-elemen yang ingin Anda kustomisasi.
+
+
+
+ Referensi dan gaya elemen umum dapat berubah seiring berkembangnya platform. Harap gunakan gaya kustom dengan hati-hati.
+
+
+## JS Kustom
+
+JS Kustom memungkinkan Anda menambahkan kode yang dapat dieksekusi secara global. Ini setara dengan menambahkan`