Our GitHub Action utilizes the Ditto CLI to automatically create pull requests on GitHub with the latest text updates in any repository where the action is triggered.
Check it out here.
For setup instructions and example workflows, see the instructions listed on the Github Action.For instructions on configuring the Ditto CLI (including formats and selecting the set of text to sync), see our CLI documentation.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Ditto","description":"Developer documentation for Ditto, the source of truth for product text. Scan a codebase to import its strings, then connect coding agents through the Ditto MCP server, link Figma files, and pull localized string files with the CLI.","colors":{"primary":"#E2B103","light":"#F0D164","dark":"#1D1700"},"logo":{"light":"https://mintcdn.com/ditto/A9jN5zv6WG_Dk9hK/logo/ditto_logo.svg?fit=max\u0026auto=format\u0026n=A9jN5zv6WG_Dk9hK\u0026q=85\u0026s=4e38ddaa8955775a191cbe1616e02312","dark":"https://mintcdn.com/ditto/A9jN5zv6WG_Dk9hK/logo/ditto_logo.svg?fit=max\u0026auto=format\u0026n=A9jN5zv6WG_Dk9hK\u0026q=85\u0026s=4e38ddaa8955775a191cbe1616e02312"},"favicon":"https://mintcdn.com/ditto/WgRtoF9rLXWv6hNh/favicon.jpeg?fit=max\u0026auto=format\u0026n=WgRtoF9rLXWv6hNh\u0026q=85\u0026s=011fcbfc2411f0c04ab811e7b701750c","background":{"color":{"dark":"#11141B"}},"navbar":{"links":[{"href":"mailto:support@dittowords.com","label":"Support"}],"primary":{"type":"button","label":"Open App","href":"https://app.dittowords.com"}},"footer":{"socials":{"twitter":"https://twitter.com/dittowords","github":"https://github.com/dittowords","linkedin":"https://www.linkedin.com/company/ditto-app"}},"seo":{"organization":{"id":"https://www.dittowords.com/#organization","name":"Ditto","url":"https://www.dittowords.com","logo":"https://developer.dittowords.com/logo/ditto_logo.svg","sameAs":["https://twitter.com/dittowords","https://github.com/dittowords","https://www.linkedin.com/company/ditto-app"]},"indexing":"navigable"},"contextual":{"options":["copy","view","claude","chatgpt","mcp","cursor","vscode"],"display":"header"},"markdown":{"instructions":["These are Ditto's developer docs. Ditto is a single source of truth for product copy across design, review, localization, and code.","The first step on any codebase is a scan: https://developer.dittowords.com/get-started/scan-your-repo.md. That page also covers reviewing the style guide Ditto drafts from the scan. After it, the follow-on guides are Connect Figma files and Set up localization (under /guides/) and Connect the Ditto MCP (the Setup page of the MCP reference).","Two different MCP servers: the Ditto MCP server at https://api.dittowords.com/v2/mcp gives an agent a workspace's text and style guide rules; the documentation MCP server at https://developer.dittowords.com/mcp searches these docs.","Prefer logging in with a Ditto account (npx -y @dittowords/cli@latest login; OAuth in MCP clients) over API keys. API keys are for CI and headless clients only.","Commands are complete as written and use npx -y @dittowords/cli@latest; nothing needs a global install."]},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Help Guides","icon":"book-open-cover","href":"https://help.dittowords.com/en/"},{"anchor":"What's New","icon":"newspaper","href":"https://www.dittowords.com/whats-new"},{"anchor":"Figma Plugin","icon":"figma","href":"https://www.figma.com/community/plugin/798826066406007173/ditto-manage-copy-from-design-to-production"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ditto","hasAudioNarration":false,"actualSubdomain":"ditto","customDomains":["developer.dittowords.com"],"gitSource":{"type":"github","owner":"dittowords","repo":"ditto-app","deployBranch":"master","contentDirectory":"docs-public","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ada5ce522ea2a3b6e0dbfac","collectionId":"90313f13-54a1-4f52-8dba-e0009122f9c2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ada5ce522ea2a3b6e0dbfac"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"DISABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ada5ce522ea2a3b6e0dbfac","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Documentation","count":90},{"language":"default","tag":"API Reference","count":61},{"language":"default","tag":"Endpoints","count":59},{"language":"default","tag":"Legacy","count":18},{"language":"default","tag":"Components","count":16},{"language":"default","tag":"Text Items","count":7},{"language":"default","tag":"CLI Reference","count":7},{"language":"default","tag":"Component Folders","count":6},{"language":"default","tag":"Projects","count":6},{"language":"default","tag":"Style guides","count":6}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"additional-tools/gh-action","slug":"/additional-tools/gh-action","pageMetadata":{"title":"GitHub Action","description":"Automatically create pull requests with the latest text updates","href":"/additional-tools/gh-action"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Automatically create pull requests with the latest text updates\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,..._provideComponents(),...props.components},{Heading,OptimizedImage}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Our GitHub Action utilizes the Ditto CLI to automatically create pull requests on GitHub with the latest text updates in any repository where the action is triggered.\nCheck it out `,_jsx(_components.a,{href:`https://github.com/marketplace/actions/ditto-github-action`,children:`here`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/ditto/WgRtoF9rLXWv6hNh/images/gh-action.png?fit=max\u0026auto=format\u0026n=WgRtoF9rLXWv6hNh\u0026q=85\u0026s=d2068ed61df1595ca1378765113926fb`,alt:`Ditto Github Action`,\"data-og-width\":`1248`,width:`1248`,\"data-og-height\":`676`,height:`676`,\"data-path\":`images/gh-action.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/ditto/WgRtoF9rLXWv6hNh/images/gh-action.png?w=280\u0026fit=max\u0026auto=format\u0026n=WgRtoF9rLXWv6hNh\u0026q=85\u0026s=80b459f9a769a4a0cf1b44c63ff2e6e7 280w, https://mintcdn.com/ditto/WgRtoF9rLXWv6hNh/images/gh-action.png?w=560\u0026fit=max\u0026auto=format\u0026n=WgRtoF9rLXWv6hNh\u0026q=85\u0026s=3ae8637eb03bbd2dff4740f7defca00a 560w, https://mintcdn.com/ditto/WgRtoF9rLXWv6hNh/images/gh-action.png?w=840\u0026fit=max\u0026auto=format\u0026n=WgRtoF9rLXWv6hNh\u0026q=85\u0026s=4de854545b9beb1c7e6c181fb4816cca 840w, https://mintcdn.com/ditto/WgRtoF9rLXWv6hNh/images/gh-action.png?w=1100\u0026fit=max\u0026auto=format\u0026n=WgRtoF9rLXWv6hNh\u0026q=85\u0026s=1f0a6586eab7d716218e3e80ac6e0cd2 1100w, https://mintcdn.com/ditto/WgRtoF9rLXWv6hNh/images/gh-action.png?w=1650\u0026fit=max\u0026auto=format\u0026n=WgRtoF9rLXWv6hNh\u0026q=85\u0026s=9e4fe77ab80d4cc55395069c4cf237b0 1650w, https://mintcdn.com/ditto/WgRtoF9rLXWv6hNh/images/gh-action.png?w=2500\u0026fit=max\u0026auto=format\u0026n=WgRtoF9rLXWv6hNh\u0026q=85\u0026s=e8a54dc4077fde3aeefe7a535e5659c9 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`additional-information`,children:`Additional Information`}),`\n`,_jsxs(_components.p,{children:[`For setup instructions and example workflows, see the instructions listed `,_jsx(_components.a,{href:`https://github.com/marketplace/actions/ditto-github-action`,children:`on the Github Action`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`For instructions on configuring the Ditto CLI (including formats and selecting the set of text to sync), see our `,_jsx(_components.a,{href:`/cli-reference/authentication`,children:`CLI documentation`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"GitHub Action","description":"Automatically create pull requests with the latest text updates","href":"/additional-tools/gh-action"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Additional Information","slug":"additional-information","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ditto","siteName":"Ditto","title":"GitHub Action - Ditto","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-16T21:30:56.990Z","originalFileLocation":"additional-tools/gh-action.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Automatically create pull requests with the latest text updates\">\u003cmeta data-mint-head name=\"application-name\" content=\"Ditto\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"GitHub Action - Ditto\">\u003cmeta data-mint-head property=\"og:description\" content=\"Automatically create pull requests with the latest text updates\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Ditto\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.dittowords.com/additional-tools/gh-action\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ditto.mintlify.app/_mintlify/api/og/v2?division=Additional+Tools\u0026amp;title=GitHub+Action\u0026amp;description=Automatically+create+pull+requests+with+the+latest+text+updates\u0026amp;theme=cafcf8215feabbb48baf53ae\u0026amp;signature=e717528fc2af000cdf869e0119f91d149e79f4a4809f0891d10ac22aeb3837b6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"GitHub Action - Ditto\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Automatically create pull requests with the latest text updates\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ditto.mintlify.app/_mintlify/api/og/v2?division=Additional+Tools\u0026amp;title=GitHub+Action\u0026amp;description=Automatically+create+pull+requests+with+the+latest+text+updates\u0026amp;theme=cafcf8215feabbb48baf53ae\u0026amp;signature=e717528fc2af000cdf869e0119f91d149e79f4a4809f0891d10ac22aeb3837b6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/ditto/sayH8aGeMpv32blB/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Ditto\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#E2B103\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.dittowords.com/additional-tools/gh-action\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/additional-tools/gh-action.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.dittowords.com/#organization\",\"name\":\"Ditto\",\"url\":\"https://www.dittowords.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://developer.dittowords.com/logo/ditto_logo.svg\"},\"sameAs\":[\"https://twitter.com/dittowords\",\"https://github.com/dittowords\",\"https://www.linkedin.com/company/ditto-app\"]},{\"@type\":\"WebSite\",\"@id\":\"https://developer.dittowords.com#website\",\"name\":\"Ditto\",\"url\":\"https://developer.dittowords.com\",\"publisher\":{\"@id\":\"https://www.dittowords.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.dittowords.com/additional-tools/gh-action#webpage\",\"url\":\"https://developer.dittowords.com/additional-tools/gh-action\",\"name\":\"GitHub Action\",\"description\":\"Automatically create pull requests with the latest text updates\",\"dateModified\":\"2026-09-16T21:30:56.990Z\",\"isPartOf\":{\"@id\":\"https://developer.dittowords.com#website\"},\"breadcrumb\":{\"@id\":\"https://developer.dittowords.com/additional-tools/gh-action#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.dittowords.com/additional-tools/gh-action#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Additional Tools\",\"item\":\"https://developer.dittowords.com/additional-tools/github-pr-review-bot\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GitHub Action\",\"item\":\"https://developer.dittowords.com/additional-tools/gh-action\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developer.dittowords.com/additional-tools/gh-action#article\",\"headline\":\"GitHub Action\",\"name\":\"GitHub Action\",\"description\":\"Automatically create pull requests with the latest text updates\",\"url\":\"https://developer.dittowords.com/additional-tools/gh-action\",\"mainEntityOfPage\":{\"@id\":\"https://developer.dittowords.com/additional-tools/gh-action#webpage\"},\"dateModified\":\"2026-09-16T21:30:56.990Z\",\"publisher\":{\"@id\":\"https://www.dittowords.com/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.dittowords.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Ditto\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Ditto","nav":{"global":{"anchors":[{"anchor":"Help Guides","icon":"book-open-cover","href":"https://help.dittowords.com/en/"},{"anchor":"What's New","icon":"newspaper","href":"https://www.dittowords.com/whats-new"},{"anchor":"Figma Plugin","icon":"figma","href":"https://www.figma.com/community/plugin/798826066406007173/ditto-manage-copy-from-design-to-production"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Start here","pages":[{"title":"Ditto developer documentation","sidebarTitle":"Introduction","href":"/introduction"},{"title":"Scan your repo","href":"/get-started/scan-your-repo"},{"title":"Connect Figma files","href":"/guides/connect-figma-files"},{"title":"Set up localization","href":"/guides/set-up-localization"}]},{"group":"Concepts","pages":[{"title":"Key concepts","href":"/concepts"}]},{"group":"CLI Reference","pages":[{"title":"Install and log in to the Ditto CLI","sidebarTitle":"Install and log in","href":"/cli-reference/authentication"},{"title":"Ditto CLI commands","sidebarTitle":"Commands","href":"/cli-reference/commands"},{"title":"Ditto CLI configuration","sidebarTitle":"Configuration","href":"/cli-reference/configuration"},{"title":"Ditto CLI output files","sidebarTitle":"Files","href":"/cli-reference/files"}]},{"group":"API Reference","pages":[{"title":"Ditto API authentication","sidebarTitle":"Authentication","href":"/api-reference/authentication"},{"group":"Endpoints","pages":[{"group":"Activity","pages":[{"openapi":"openapi.json get /activity","title":"Fetch activity","href":"/api-reference/activity/get-activity"}]},{"group":"Components","pages":[{"openapi":"openapi.json get /components","title":"Fetch components","href":"/api-reference/components/get-components"},{"openapi":"openapi.json get /components/export","title":"Export components","href":"/api-reference/components/export-components"},{"openapi":"openapi.json post /components","title":"Create components","href":"/api-reference/components/create-components"},{"openapi":"openapi.json patch /components","title":"Update components","href":"/api-reference/components/patch-components"},{"openapi":"openapi.json delete /components","title":"Delete components","href":"/api-reference/components/delete-components"},{"group":"Text Item Linking","pages":[{"openapi":"openapi.json post /components/publish","title":"Publish a text item to the library","href":"/api-reference/components/publish-component"},{"openapi":"openapi.json patch /components/link","title":"Link text items to a component","href":"/api-reference/components/link-components"},{"openapi":"openapi.json patch /components/unlink","title":"Unlink text items from a component","href":"/api-reference/components/unlink-components"}]},{"group":"Versioning","pages":[{"openapi":"openapi.json get /components/staged","title":"Fetch unpublished component changes","href":"/api-reference/components/get-unpublished-component-changes"},{"openapi":"openapi.json patch /components/staged","title":"Save unpublished component changes","href":"/api-reference/components/save-unpublished-component-changes"},{"openapi":"openapi.json delete /components/staged","title":"Discard unpublished component changes","href":"/api-reference/components/discard-unpublished-component-changes"},{"openapi":"openapi.json post /components/staged/publish","title":"Publish component changes","href":"/api-reference/components/publish-component-changes"},{"openapi":"openapi.json patch /components/upgrade","title":"Upgrade component instances","href":"/api-reference/components/upgrade-component-instances"}]}]},{"group":"Component Folders","pages":[{"openapi":"openapi.json get /componentFolders","title":"Fetch component folders","href":"/api-reference/component-folders/get-component-folders"},{"openapi":"openapi.json post /componentFolders","title":"Create component folders","href":"/api-reference/component-folders/create-component-folders"},{"openapi":"openapi.json patch /componentFolders","title":"Update component folders","href":"/api-reference/component-folders/patch-component-folders"},{"openapi":"openapi.json delete /componentFolders","title":"Delete component folders","href":"/api-reference/component-folders/delete-component-folders"}]},{"group":"Projects","pages":[{"openapi":"openapi.json get /projects","title":"Fetch projects","href":"/api-reference/projects/get-projects"},{"openapi":"openapi.json post /projects","title":"Create a project","href":"/api-reference/projects/create-projects"},{"openapi":"openapi.json patch /projects/{projectId}","title":"Update a project","href":"/api-reference/projects/patch-projects"}]},{"group":"Project Blocks","pages":[{"openapi":"openapi.json get /projectBlocks","title":"Fetch project blocks","href":"/api-reference/project-blocks/get-project-blocks"},{"openapi":"openapi.json post /projectBlocks","title":"Create project blocks","href":"/api-reference/project-blocks/create-project-blocks"},{"openapi":"openapi.json patch /projectBlocks","title":"Update project blocks","href":"/api-reference/project-blocks/patch-project-blocks"},{"openapi":"openapi.json delete /projectBlocks","title":"Delete project blocks","href":"/api-reference/project-blocks/delete-project-blocks"}]},{"group":"Statuses","pages":[{"openapi":"openapi.json get /statuses","title":"Fetch statuses","href":"/api-reference/statuses/get-statuses"}]},{"group":"Style guides","pages":[{"title":"Get style guides","openapi":"openapi.json get /styleguides","href":"/api-reference/styleguides/get-styleguides"},{"openapi":"openapi.json post /styleguides","title":"Create a style guide","href":"/api-reference/styleguides/create-styleguides"},{"openapi":"openapi.json patch /styleguides","title":"Update a style guide","href":"/api-reference/styleguides/patch-styleguides"},{"openapi":"openapi.json post /styleguides/rules","title":"Create style guide rules","href":"/api-reference/styleguides/create-styleguide-rules"},{"openapi":"openapi.json patch /styleguides/rules","title":"Update style guide rules","href":"/api-reference/styleguides/patch-styleguide-rules"},{"openapi":"openapi.json delete /styleguides/rules","title":"Delete style guide rules","href":"/api-reference/styleguides/delete-styleguide-rules"}]},{"group":"Text Items","pages":[{"openapi":"openapi.json get /textItems","title":"Fetch text items","href":"/api-reference/text-items/get-text-items"},{"openapi":"openapi.json get /textItems/export","title":"Export text items","href":"/api-reference/text-items/export-text-items"},{"openapi":"openapi.json post /textItems","title":"Create text items","href":"/api-reference/text-items/create-text-items"},{"openapi":"openapi.json patch /textItems","title":"Update text items","href":"/api-reference/text-items/patch-text-items"},{"openapi":"openapi.json put /textItems","title":"Update text items","href":"/api-reference/text-items/update-text-items"},{"openapi":"openapi.json delete /textItems","title":"Delete text items","href":"/api-reference/text-items/delete-text-items"},{"openapi":"openapi.json post /textItems/linkFigmaNodes","title":"Link Figma nodes to text items","href":"/api-reference/text-items/link-figma-nodes"}]},{"group":"Variables","pages":[{"openapi":"openapi.json get /variables","title":"Fetch variables","href":"/api-reference/variables/get-variables"},{"openapi":"openapi.json post /variables","title":"Create variables","href":"/api-reference/variables/create-variables"},{"openapi":"openapi.json patch /variables","title":"Update variables","href":"/api-reference/variables/patch-variables"},{"openapi":"openapi.json delete /variables","title":"Delete variables","href":"/api-reference/variables/delete-variables"}]},{"group":"Variants","pages":[{"openapi":"openapi.json get /variants","title":"Fetch variants","href":"/api-reference/variants/get-variants"},{"openapi":"openapi.json post /variants","title":"Create variants","href":"/api-reference/variants/create-variants"},{"openapi":"openapi.json patch /variants","title":"Update variants","href":"/api-reference/variants/patch-variants"},{"openapi":"openapi.json delete /variants","title":"Delete variants","href":"/api-reference/variants/delete-variants"}]}]}]},{"group":"String Formats","pages":[{"title":"JSON","icon":"js","href":"/string-formats/json"},{"title":"iOS string formats","sidebarTitle":"iOS Strings","icon":"apple","href":"/string-formats/ios"},{"title":"Android XML string format","sidebarTitle":"Android XML","icon":"android","href":"/string-formats/android"}]},{"group":"MCP Reference","pages":[{"title":"Ditto MCP server overview","sidebarTitle":"Overview","href":"/mcp-reference/overview"},{"title":"Connect the Ditto MCP","sidebarTitle":"Setup","href":"/guides/connect-the-mcp"},{"title":"Ditto MCP tools","sidebarTitle":"Tools","href":"/mcp-reference/tools"},{"title":"Agent instructions","href":"/guides/agent-instructions"}]},{"group":"Ditto Specs CLI","pages":[{"title":"Ditto Specs overview","sidebarTitle":"Overview","href":"/ditto-specs-cli-reference/overview"},{"title":"Ditto Specs CLI setup","sidebarTitle":"Setup","href":"/ditto-specs-cli-reference/setup"},{"title":"Ditto Specs CLI commands","sidebarTitle":"Commands","href":"/ditto-specs-cli-reference/commands"},{"title":"Ditto Spec Files","sidebarTitle":"Spec files","href":"/ditto-specs-cli-reference/spec-files"},{"title":"Ditto Specs agent skills","sidebarTitle":"Agent skills","href":"/ditto-specs-cli-reference/agent-skills"}]},{"group":"Additional Tools","pages":[{"title":"GitHub PR Review Bot","href":"/additional-tools/github-pr-review-bot"},{"title":"Webhooks","description":"Webhooks enable HTTP payloads to be sent to an external service when data in Ditto is changed.","href":"/additional-tools/webhooks"},{"title":"GitHub Action","href":"/additional-tools/gh-action"}]},{"group":"Legacy","pages":[{"group":"API Reference","pages":[{"title":"Legacy API authentication","sidebarTitle":"Authentication","description":"Authenticate requests to the legacy (v1) Ditto API with an API key in the Authorization header.","href":"/legacy/api-reference-legacy/authentication"},{"group":"Endpoints","pages":[{"group":"Components","pages":[{"openapi":"openapi-legacy.json get /components","title":"Fetch component text","href":"/legacy/api-reference-legacy/components/fetch-component-text"},{"openapi":"openapi-legacy.json post /components/file","title":"Import components via a file","href":"/legacy/api-reference-legacy/components/import-components-via-a-file"},{"openapi":"openapi-legacy.json put /components","title":"Update component text variant","href":"/legacy/api-reference-legacy/components/update-component-text-variant"}]},{"group":"Component Folders","pages":[{"openapi":"openapi-legacy.json get /component-folders","title":"Fetch component folders","href":"/legacy/api-reference-legacy/components-folders/fetch-component-folders"},{"openapi":"openapi-legacy.json get /component-folders/{api_id}/components","title":"Fetch component text by component folder","href":"/legacy/api-reference-legacy/components-folders/fetch-component-text-by-component-folder"}]},{"group":"Projects","pages":[{"openapi":"openapi-legacy.json get /projects/{id}/components","title":"Fetch component text by project id","href":"/legacy/api-reference-legacy/projects/fetch-component-text-by-project-id"},{"openapi":"openapi-legacy.json get /projects","title":"Fetch projects","href":"/legacy/api-reference-legacy/projects/fetch-projects"},{"openapi":"openapi-legacy.json get /projects/{id}","title":"Fetch text by project id","href":"/legacy/api-reference-legacy/projects/fetch-text-by-project-id"}]},{"group":"Project Folders","pages":[{"openapi":"openapi-legacy.json get /project-folders","title":"Fetch project folders","href":"/legacy/api-reference-legacy/project-folders/fetch-project-folders"},{"openapi":"openapi-legacy.json get /project-folders/{folder_id}/projects","title":"Fetch projects by project folder id","href":"/legacy/api-reference-legacy/project-folders/fetch-projects-by-project-folder-id"}]},{"group":"Variables","pages":[{"openapi":"openapi-legacy.json get /variables","title":"Fetch variables","href":"/legacy/api-reference-legacy/variables/fetch-variables"}]},{"group":"Variants","pages":[{"openapi":"openapi-legacy.json get /variants","title":"Fetch variants","href":"/legacy/api-reference-legacy/variants/fetch-variants"}]}]}]},{"group":"CLI Reference","pages":[{"title":"Legacy CLI installation","sidebarTitle":"Installation","href":"/legacy/cli-reference-legacy/authentication"},{"title":"Legacy CLI configuration","sidebarTitle":"Configuration","href":"/legacy/cli-reference-legacy/configuration"},{"title":"Legacy CLI output files","sidebarTitle":"Files","href":"/legacy/cli-reference-legacy/files"}]},{"title":"Legacy tools","href":"/legacy/legacy-tools"},{"title":"Example apps","href":"/example-apps"}]}]},{"tab":"Feedback \u0026 Support","pages":[{"title":"Feedback \u0026 Support","href":"/feedback-support/feedback-support"}]}]},"title":"GitHub Action - Ditto","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-D7yRe3On.js","lightbox-handle-r17bVUz3.js"]}