Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person’s PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it’s recorded answers your_review with the footage: send review to this route and, if it passes, it’s submitted at once and followed through Patch’s review. Call it again until stage is live, or it stops and says why. Calling it is the person’s yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person’s press on the chat’s publish button sends it.
uploading: files are missing. testing: Patch Desktop on the person's PC tests it. your_review: the test is recorded and footage has its sheets: look at every one and send review. in_review: Patch reviews it. ready: in a Patch Desktop chat, it passed and the person's press on the chat's publish button sends it. live. stopped: code and next say why and what to do
draft, then checking (file checks). A browser game is testing until a test on its creator's PC passes, then cloud_review, then published. A mod goes to cloud_review, then in_review (a staff member), then published. Any step can end in rejected.
Where it is on Patch. On single-project responses, not in lists.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Patch","description":"Patch (patch.gg) is where people and their coding agents make browser games and mods and publish them, and where players play them. Coding agents: set up with https://patch.gg/llms.txt.","colors":{"primary":"#000000","light":"#F53CD1","dark":"#000000"},"logo":{"light":"https://mintcdn.com/patch-b3bbfc3b/KgoraNtrAh08SBeG/logo/light.svg?fit=max\u0026auto=format\u0026n=KgoraNtrAh08SBeG\u0026q=85\u0026s=92d1677e86684225363eef76f8ec9763","dark":"https://mintcdn.com/patch-b3bbfc3b/KgoraNtrAh08SBeG/logo/light.svg?fit=max\u0026auto=format\u0026n=KgoraNtrAh08SBeG\u0026q=85\u0026s=92d1677e86684225363eef76f8ec9763","href":"https://patch.gg"},"favicon":"https://mintcdn.com/patch-b3bbfc3b/KgoraNtrAh08SBeG/favicon.svg?fit=max\u0026auto=format\u0026n=KgoraNtrAh08SBeG\u0026q=85\u0026s=950620ea63e1e344a23c73e631881f4b","api":{"playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python"]}},"appearance":{"default":"light","strict":true},"background":{"color":{"light":"#FFFFFF","dark":"#FFFFFF"}},"navbar":{"primary":{"type":"button","label":"Open Patch","href":"https://patch.gg"}},"footer":{"socials":{"website":"https://patch.gg","discord":"https://discord.gg/W2VyyKxJy"}},"seo":{"metatags":{"og:image":"https://patch.gg/link-preview.png"}},"fonts":{"family":"Funnel Sans"},"contextual":{"options":["copy","view"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"patch-b3bbfc3b","hasAudioNarration":false,"actualSubdomain":"patch-b3bbfc3b","customDomains":["docs.patch.gg"],"gitSource":{"type":"github","owner":"patch-gg","repo":"patch","deployBranch":"production","contentDirectory":"product/docs","isPrivate":true,"mountPath":"","label":"","_id":"6add1837da589734fa3cbbbc"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6af188f79e9a7e27ab8ab02e","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"API reference","count":99},{"language":"default","tag":"Endpoints","count":98},{"language":"default","tag":"Repos","count":16},{"language":"default","tag":"Releases","count":14},{"language":"default","tag":"Change requests","count":12},{"language":"default","tag":"GitHub","count":11},{"language":"default","tag":"Projects","count":10},{"language":"default","tag":"Docs","count":9},{"language":"default","tag":"Review","count":9},{"language":"default","tag":"Account","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"/* latin-ext */\n@font-face {\n font-family: 'Red Hat Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/redhatmono/v16/jVyN7nDnA2uf2zVvFAhhzEsUVuxSzgw.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Red Hat Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/redhatmono/v16/jVyN7nDnA2uf2zVvFAhhzEsUWOxS.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Red Hat Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/redhatmono/v16/jVyN7nDnA2uf2zVvFAhhzEsUVuxSzgw.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Red Hat Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/redhatmono/v16/jVyN7nDnA2uf2zVvFAhhzEsUWOxS.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n@font-face{font-family:\"Patch Pixel\";src:url(\"/fonts/PatchPixel-Regular.woff2\") format(\"woff2\");font-weight:400;font-display:swap}:root{--patch-pink: #f53cd1;--patch-line: #e5e5e5}#page-title,h1#page-title{font-family:\"Patch Pixel\", \"Funnel Sans\", sans-serif;font-weight:400;font-size:36px;line-height:45px;letter-spacing:0;-webkit-font-smoothing:none}code,pre,kbd{font-family:\"Red Hat Mono\", ui-monospace, monospace!important}.rounded,.rounded-sm,.rounded-md,.rounded-lg,.rounded-xl,.rounded-2xl,.rounded-3xl,.rounded-full:not(img):not(svg),button,input,pre,code,img,video{border-radius:0!important}.shadow,.shadow-sm,.shadow-md,.shadow-lg,.shadow-xl,.shadow-2xl{box-shadow:none!important}.prose a:not(.card):not([class*=\"card\"]){text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:3px}::selection{background:var(--patch-pink);color:#ffffff}"}],"page":{"pagePath":"api-reference/review/publish-a-release:-upload-to-live-in-one-flow","slug":"/api-reference/review/publish-a-release:-upload-to-live-in-one-flow","pageMetadata":{"title":"Publish a release: upload to live in one flow","description":"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person's PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it's recorded answers your_review with the footage: send review to this route and, if it passes, it's submitted at once and followed through Patch's review. Call it again until stage is live, or it stops and says why. Calling it is the person's yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person's press on the chat's publish button sends it.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/releases/{version}/publish","href":"/api-reference/review/publish-a-release:-upload-to-live-in-one-flow","autogeneratedByOpenApi":true},"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: \"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person’s PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it’s recorded answers your_review with the footage: send review to this route and, if it passes, it’s submitted at once and followed through Patch’s review. Call it again until stage is live, or it stops and says why. Calling it is the person’s yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person’s press on the chat’s publish button sends it.\"\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Publish a release: upload to live in one flow","description":"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person's PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it's recorded answers your_review with the footage: send review to this route and, if it passes, it's submitted at once and followed through Patch's review. Call it again until stage is live, or it stops and says why. Calling it is the person's yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person's press on the chat's publish button sends it.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/releases/{version}/publish","href":"/api-reference/review/publish-a-release:-upload-to-live-in-one-flow","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Review"],"summary":"Publish a release: upload to live in one flow","description":"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person's PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it's recorded answers your_review with the footage: send review to this route and, if it passes, it's submitted at once and followed through Patch's review. Call it again until stage is live, or it stops and says why. Calling it is the person's yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person's press on the chat's publish button sends it.","security":["549a4fd0-a1cc-4f35-9197-b3821a0290db"],"parameters":["44b96ae4-09c3-4c75-8892-9be402167cb3","f209de55-e4e0-4dd5-a18c-05819d5c65f3","98b5c655-a702-46e8-b08e-5ad8aff13703","5f5c1c82-6c51-4710-8ee6-a0e89e480141"],"requestBody":"b3508511-0df1-46e4-8bbd-c6bacbbba34a","responses":{"200":"124ad581-35fd-4223-80bb-7c063d67c6c6","308":"e2b89358-ddc5-4ed4-bbe9-cafbaf240bc9","400":"04ee4bbe-b242-40e5-8de0-721305dde51f","401":"c4fd0b54-d62d-4419-9838-341b435f910a","403":"1a3cecd0-c0eb-4643-aacd-f635761f3208","404":"59af8625-5efc-4051-8fcd-9ba3d8c6b09a"},"method":"post","type":"path","servers":["dad6a083-e3c9-413e-a466-107b42f9941c"],"path":"/projects/{owner}/{slug}/releases/{version}/publish","baseUrlOptions":["https://patch.gg/api/v1"],"title":"Publish a release: upload to live in one flow","codeSamples":[],"requestExampleLanguages":["bash","javascript","python"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"44b96ae4-09c3-4c75-8892-9be402167cb3":{"schema":{"type":"string","example":"patch","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"name":"owner","in":"path"},"f209de55-e4e0-4dd5-a18c-05819d5c65f3":{"schema":{"type":"string","example":"demo-mod","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"name":"slug","in":"path"},"98b5c655-a702-46e8-b08e-5ad8aff13703":{"schema":{"type":"string","example":"0.1.0","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"name":"version","in":"path"},"5f5c1c82-6c51-4710-8ee6-a0e89e480141":{"schema":{"oneOf":[{"type":"integer","minimum":0,"maximum":50,"description":"Seconds (up to 50) to wait for this to change while Patch is working on it. Answers at once when it's your turn or the person's.","uniqueKey":"oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"maximum":50,"description":"Seconds (up to 50) to wait for this to change while Patch is working on it. Answers at once when it's your turn or the person's.","uniqueKey":"oneOf.1","typeLabel":"null"}],"isRequired":false,"uniqueKey":"","typeLabel":"integer | null"},"required":false,"description":"Seconds (up to 50) to wait for this to change while Patch is working on it. Answers at once when it's your turn or the person's.","name":"wait","in":"query"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"review":{"type":"object","properties":{"verdict":{"type":"string","enum":["pass","fail"],"isRequired":true,"uniqueKey":"review.verdict","typeLabel":"enum\u003cstring>"},"plays":{"type":"boolean","description":"It starts and can be played","isRequired":true,"uniqueKey":"review.plays","typeLabel":"boolean"},"harmful":{"type":"boolean","description":"It sends players' data elsewhere, mines, phishes or collects credentials, misleads players, or shows content Patch doesn't allow","isRequired":true,"uniqueKey":"review.harmful","typeLabel":"boolean"},"summary":{"type":"string","minLength":1,"maxLength":2000,"description":"What you saw, in a few lines","isRequired":true,"uniqueKey":"review.summary","typeLabel":"string"},"moments":{"type":"array","items":{"type":"object","properties":{"run":{"type":"integer","minimum":1,"isRequired":true,"uniqueKey":"review.moments.items.[INDEX].run","typeLabel":"integer"},"at":{"type":"string","description":"The run time as the sheets label frames, mm:ss","example":"00:14","isRequired":true,"uniqueKey":"review.moments.items.[INDEX].at","typeLabel":"string"},"saw":{"type":"string","minLength":1,"maxLength":500,"description":"What happened there","isRequired":true,"uniqueKey":"review.moments.items.[INDEX].saw","typeLabel":"string"}},"required":["run","at","saw"],"uniqueKey":"review.moments.items.[INDEX]","typeLabel":"object"},"maxItems":50,"isRequired":true,"uniqueKey":"review.moments","typeLabel":"object[]"}},"required":["verdict","plays","harmful","summary","moments"],"description":"Your review of the recorded test's footage, at your_review","uniqueKey":"review","typeLabel":"object"},"test_again":{"type":"boolean","description":"Start another test after one that couldn't run","uniqueKey":"test_again","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"test_again":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"124ad581-35fd-4223-80bb-7c063d67c6c6":{"description":"Where it is now","content":{"application/json":{"schema":{"type":"object","properties":{"project":{"type":"string","isRequired":true,"uniqueKey":"project","typeLabel":"string"},"version":{"type":"string","isRequired":true,"uniqueKey":"version","typeLabel":"string"},"stage":{"type":"string","enum":["uploading","testing","your_review","in_review","ready","live","stopped"],"description":"uploading: files are missing. testing: Patch Desktop on the person's PC tests it. your_review: the test is recorded and footage has its sheets: look at every one and send review. in_review: Patch reviews it. ready: in a Patch Desktop chat, it passed and the person's press on the chat's publish button sends it. live. stopped: code and next say why and what to do","isRequired":true,"uniqueKey":"stage","typeLabel":"enum\u003cstring>"},"line":{"type":"string","description":"One line to show the person: Uploading, Testing on your PC, In review or Live","example":"Testing on your PC","isRequired":true,"uniqueKey":"line","typeLabel":"string"},"next":{"type":"string","description":"What to do now, for the agent","isRequired":true,"uniqueKey":"next","typeLabel":"string"},"code":{"oneOf":[{"type":"string","description":"Why it stopped: files_failed, test_failed, couldnt_run, rejected, repo_private or overtaken","isRequired":true,"uniqueKey":"code.oneOf.0","typeLabel":"string"},{"type":"null","description":"Why it stopped: files_failed, test_failed, couldnt_run, rejected, repo_private or overtaken","isRequired":true,"uniqueKey":"code.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"code","typeLabel":"string | null"},"status":{"type":"string","enum":["draft","checking","testing","cloud_review","in_review","published","rejected","yanked","quarantined"],"description":"draft, then checking (file checks). A browser game is testing until a test on its creator's PC passes, then cloud_review, then published. A mod goes to cloud_review, then in_review (a staff member), then published. Any step can end in rejected.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"needs_person":{"oneOf":[{"type":"object","properties":{"code":{"type":"string","enum":["open_patch_desktop","press_start"],"description":"open_patch_desktop: no Patch Desktop is open to take the test on. press_start: one is, and the test was asked for outside its chats, so it waits there for the person to press Start","isRequired":true,"uniqueKey":"needs_person.oneOf.0.code","typeLabel":"enum\u003cstring>"},"why":{"type":"string","description":"Why, for the agent","isRequired":true,"uniqueKey":"needs_person.oneOf.0.why","typeLabel":"string"},"ask":{"type":"string","description":"What to ask the person, in words to pass on","isRequired":true,"uniqueKey":"needs_person.oneOf.0.ask","typeLabel":"string"},"link":{"type":"string","isRequired":true,"uniqueKey":"needs_person.oneOf.0.link","typeLabel":"string"}},"required":["code","why","ask","link"],"description":"Something only the person can do. Ask them, then wait for their answer rather than asking Patch again.","isRequired":true,"uniqueKey":"needs_person.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"code":{"type":"string","enum":["open_patch_desktop","press_start"],"description":"open_patch_desktop: no Patch Desktop is open to take the test on. press_start: one is, and the test was asked for outside its chats, so it waits there for the person to press Start"},"why":{"type":"string","description":"Why, for the agent"},"ask":{"type":"string","description":"What to ask the person, in words to pass on"},"link":{"type":"string"}},"required":["code","why","ask","link"],"description":"Something only the person can do. Ask them, then wait for their answer rather than asking Patch again.","isRequired":true,"uniqueKey":"needs_person.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"needs_person","typeLabel":"object | null"},"test_id":{"oneOf":[{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"test_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","isRequired":true,"uniqueKey":"test_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"test_id","typeLabel":"string\u003cuuid> | null"},"footage":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"run":{"type":"integer","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].run","typeLabel":"integer"},"index":{"type":"integer","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].index","typeLabel":"integer"},"kind":{"type":"string","enum":["frames","burst"],"description":"frames: a frame every 2 seconds. burst: consecutive frames at the full frame rate, around ready and while keys were held, to see what changes from one frame to the next (flicker, popping, a frame that's wrong)","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"from":{"type":"string","description":"The run time of its first frame, mm:ss, or mm:ss.hh in a burst","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].from","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].to","typeLabel":"string"},"frames":{"type":"array","items":{"type":"string","uniqueKey":"footage.oneOf.0.items.[INDEX].frames.items.[INDEX]","typeLabel":"string"},"description":"Every frame's run time, mm:ss, or mm:ss.hh in a burst","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].frames","typeLabel":"string[]"},"sha256":{"type":"string","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].sha256","typeLabel":"string"},"url":{"type":"string","description":"A JPEG, for 15 minutes","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].url","typeLabel":"string"},"expires_at":{"type":"string","isRequired":true,"uniqueKey":"footage.oneOf.0.items.[INDEX].expires_at","typeLabel":"string"}},"required":["run","index","kind","from","to","frames","sha256","url","expires_at"],"uniqueKey":"footage.oneOf.0.items.[INDEX]","typeLabel":"object"},"description":"At your_review: every contact sheet of the test, in order","isRequired":true,"uniqueKey":"footage.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"run":{"type":"integer"},"index":{"type":"integer"},"kind":{"type":"string","enum":["frames","burst"],"description":"frames: a frame every 2 seconds. burst: consecutive frames at the full frame rate, around ready and while keys were held, to see what changes from one frame to the next (flicker, popping, a frame that's wrong)"},"from":{"type":"string","description":"The run time of its first frame, mm:ss, or mm:ss.hh in a burst"},"to":{"type":"string"},"frames":{"type":"array","items":{"type":"string"},"description":"Every frame's run time, mm:ss, or mm:ss.hh in a burst"},"sha256":{"type":"string"},"url":{"type":"string","description":"A JPEG, for 15 minutes"},"expires_at":{"type":"string"}},"required":["run","index","kind","from","to","frames","sha256","url","expires_at"]},"description":"At your_review: every contact sheet of the test, in order","isRequired":true,"uniqueKey":"footage.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"footage","typeLabel":"object[] | null"},"findings":{"type":"array","items":{"type":"object","properties":{"rule_id":{"type":"string","example":"PA-130","isRequired":true,"uniqueKey":"findings.items.[INDEX].rule_id","typeLabel":"string"},"severity":{"type":"string","enum":["blocking","warning","info"],"isRequired":true,"uniqueKey":"findings.items.[INDEX].severity","typeLabel":"enum\u003cstring>"},"path":{"oneOf":[{"type":"string","description":"The file it's about, if any","isRequired":true,"uniqueKey":"findings.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"type":"null","description":"The file it's about, if any","isRequired":true,"uniqueKey":"findings.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"findings.items.[INDEX].path","typeLabel":"string | null"},"message":{"type":"string","isRequired":true,"uniqueKey":"findings.items.[INDEX].message","typeLabel":"string"},"suggestion":{"oneOf":[{"type":"string","description":"What to change","isRequired":true,"uniqueKey":"findings.items.[INDEX].suggestion.oneOf.0","typeLabel":"string"},{"type":"null","description":"What to change","isRequired":true,"uniqueKey":"findings.items.[INDEX].suggestion.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"findings.items.[INDEX].suggestion","typeLabel":"string | null"},"url":{"oneOf":[{"type":"string","description":"A page with more about it, such as a malware scan's report","isRequired":true,"uniqueKey":"findings.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"type":"null","description":"A page with more about it, such as a malware scan's report","isRequired":true,"uniqueKey":"findings.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"findings.items.[INDEX].url","typeLabel":"string | null"}},"required":["rule_id","severity","path","message","suggestion","url"],"uniqueKey":"findings.items.[INDEX]","typeLabel":"object"},"description":"When stopped: what to fix","isRequired":true,"uniqueKey":"findings","typeLabel":"object[]"},"urls":{"type":"object","properties":{"page":{"type":"string","description":"Its game page on Patch","isRequired":true,"uniqueKey":"urls.page","typeLabel":"string"},"play":{"oneOf":[{"type":"string","description":"Where it plays on Patch, while a browser game version is live","isRequired":true,"uniqueKey":"urls.play.oneOf.0","typeLabel":"string"},{"type":"null","description":"Where it plays on Patch, while a browser game version is live","isRequired":true,"uniqueKey":"urls.play.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"urls.play","typeLabel":"string | null"},"game":{"oneOf":[{"type":"string","description":"The live browser game, or block's demo, on the game host, its own origin (https://\u003csite>-\u003cenv>.patchusercontent.com/). Null where there's no game host.","isRequired":true,"uniqueKey":"urls.game.oneOf.0","typeLabel":"string"},{"type":"null","description":"The live browser game, or block's demo, on the game host, its own origin (https://\u003csite>-\u003cenv>.patchusercontent.com/). Null where there's no game host.","isRequired":true,"uniqueKey":"urls.game.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"urls.game","typeLabel":"string | null"}},"required":["page","play","game"],"description":"Where it is on Patch. On single-project responses, not in lists.","isRequired":true,"uniqueKey":"urls","typeLabel":"object"}},"required":["project","version","stage","line","next","code","status","needs_person","test_id","footage","findings","urls"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"project":"\u003cstring>","version":"\u003cstring>","stage":"uploading","line":"Testing on your PC","next":"\u003cstring>","code":"\u003cstring>","status":"draft","needs_person":{"code":"open_patch_desktop","why":"\u003cstring>","ask":"\u003cstring>","link":"\u003cstring>"},"test_id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","footage":[{"run":123,"index":123,"kind":"frames","from":"\u003cstring>","to":"\u003cstring>","frames":["\u003cstring>"],"sha256":"\u003cstring>","url":"\u003cstring>","expires_at":"\u003cstring>"}],"findings":[{"rule_id":"PA-130","severity":"blocking","path":"\u003cstring>","message":"\u003cstring>","suggestion":"\u003cstring>","url":"\u003cstring>"}],"urls":{"page":"\u003cstring>","play":"\u003cstring>","game":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"e2b89358-ddc5-4ed4-bbe9-cafbaf240bc9":{"description":"Renamed; follow the Location header","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"04ee4bbe-b242-40e5-8de0-721305dde51f":{"description":"Invalid request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"version_exists","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{}],"uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"version_exists","message":"\u003cstring>","details":"\u003cunknown>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"c4fd0b54-d62d-4419-9838-341b435f910a":{"description":"Not signed in","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"version_exists","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{}],"uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"version_exists","message":"\u003cstring>","details":"\u003cunknown>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"1a3cecd0-c0eb-4643-aacd-f635761f3208":{"description":"Not allowed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"version_exists","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{}],"uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"version_exists","message":"\u003cstring>","details":"\u003cunknown>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"59af8625-5efc-4051-8fcd-9ba3d8c6b09a":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"version_exists","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"oneOf":[{}],"uniqueKey":"error.details","typeLabel":"any"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"version_exists","message":"\u003cstring>","details":"\u003cunknown>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"549a4fd0-a1cc-4f35-9197-b3821a0290db":{"bearer":{"type":"http","scheme":"bearer","description":"An API key (pch_...) or the token from pch login.","scopes":[],"schemeName":"bearer"}}},"servers":{"dad6a083-e3c9-413e-a466-107b42f9941c":{"url":"https://patch.gg/api/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An API key (pch_...) or the token from pch login.","scopes":[],"schemeName":"bearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An API key (pch_...) or the token from pch login.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearer","name":"Authorization"}],"title":"bearer"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"patch-b3bbfc3b","siteName":"Patch","title":"Publish a release: upload to live in one flow - Patch","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T06:26:35.373Z","originalFileLocation":"api-reference/review/publish-a-release:-upload-to-live-in-one-flow.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person\u0026#x27;s PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it\u0026#x27;s recorded answers your_review with the footage: send review to this route and, if it passes, it\u0026#x27;s submitted at once and followed through Patch\u0026#x27;s review. Call it again until stage is live, or it stops and says why. Calling it is the person\u0026#x27;s yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person\u0026#x27;s press on the chat\u0026#x27;s publish button sends it.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Patch\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_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/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_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/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_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/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_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/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_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/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_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/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_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/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Publish a release: upload to live in one flow - Patch\">\u003cmeta data-mint-head property=\"og:description\" content=\"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person\u0026#x27;s PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it\u0026#x27;s recorded answers your_review with the footage: send review to this route and, if it passes, it\u0026#x27;s submitted at once and followed through Patch\u0026#x27;s review. Call it again until stage is live, or it stops and says why. Calling it is the person\u0026#x27;s yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person\u0026#x27;s press on the chat\u0026#x27;s publish button sends it.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Patch\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://patch.gg/link-preview.png\">\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=\"Publish a release: upload to live in one flow - Patch\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person\u0026#x27;s PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it\u0026#x27;s recorded answers your_review with the footage: send review to this route and, if it passes, it\u0026#x27;s submitted at once and followed through Patch\u0026#x27;s review. Call it again until stage is live, or it stops and says why. Calling it is the person\u0026#x27;s yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person\u0026#x27;s press on the chat\u0026#x27;s publish button sends it.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://patch.gg/link-preview.png\">\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/patch-b3bbfc3b/0WQM5b1NSkUFum6b/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Patch\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/review/publish-a-release%3A-upload-to-live-in-one-flow.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.patch.gg/#organization\",\"name\":\"Patch\",\"url\":\"https://docs.patch.gg\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/patch-b3bbfc3b/KgoraNtrAh08SBeG/logo/light.svg?fit=max\u0026auto=format\u0026n=KgoraNtrAh08SBeG\u0026q=85\u0026s=92d1677e86684225363eef76f8ec9763\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.patch.gg#website\",\"name\":\"Patch\",\"url\":\"https://docs.patch.gg\",\"publisher\":{\"@id\":\"https://docs.patch.gg/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow#webpage\",\"url\":\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow\",\"name\":\"Publish a release: upload to live in one flow\",\"description\":\"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person's PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it's recorded answers your_review with the footage: send review to this route and, if it passes, it's submitted at once and followed through Patch's review. Call it again until stage is live, or it stops and says why. Calling it is the person's yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person's press on the chat's publish button sends it.\",\"dateModified\":\"2026-11-09T06:26:35.373Z\",\"isPartOf\":{\"@id\":\"https://docs.patch.gg#website\"},\"breadcrumb\":{\"@id\":\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.patch.gg/api-reference/meta/whether-the-api-and-its-database-are-up\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Review\",\"item\":\"https://docs.patch.gg/api-reference/review/where-a-release-is-in-its-review:-status-checks-findings-and-test\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Publish a release: upload to live in one flow\",\"item\":\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow#apireference\",\"headline\":\"Publish a release: upload to live in one flow\",\"name\":\"Publish a release: upload to live in one flow\",\"description\":\"Takes a release from its upload to live, one step a call. It checks the files and starts the test on the person's PC, holds while Patch Desktop plays it (wait, up to 50 seconds), and once it's recorded answers your_review with the footage: send review to this route and, if it passes, it's submitted at once and followed through Patch's review. Call it again until stage is live, or it stops and says why. Calling it is the person's yes: call it when they want it out. In a Patch Desktop chat a game or mod stops at ready: the person's press on the chat's publish button sends it.\",\"url\":\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow\",\"mainEntityOfPage\":{\"@id\":\"https://docs.patch.gg/api-reference/review/publish-a-release:-upload-to-live-in-one-flow#webpage\"},\"image\":\"https://patch.gg/link-preview.png\",\"dateModified\":\"2026-11-09T06:26:35.373Z\",\"publisher\":{\"@id\":\"https://docs.patch.gg/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.patch.gg#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Patch\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Patch","nav":{"global":null,"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/get-started"}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API overview","href":"/api-reference/introduction"}]},{"group":"Endpoints","pages":[{"group":"Meta","pages":[{"title":"Whether the API and its database are up","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /health","href":"/api-reference/meta/whether-the-api-and-its-database-are-up"}]},{"group":"Account","pages":[{"title":"The signed-in user, their username and orgs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me","href":"/api-reference/account/the-signed-in-user-their-username-and-orgs"},{"title":"Change the name on your account, or give your birthday","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /me","href":"/api-reference/account/change-the-name-on-your-account-or-give-your-birthday"},{"title":"Choose or change your username","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /me/username","href":"/api-reference/account/choose-or-change-your-username"},{"title":"Whether a username or org name is free","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /names/{name}","href":"/api-reference/account/whether-a-username-or-org-name-is-free"},{"title":"Your API keys, newest first","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tokens","href":"/api-reference/account/your-api-keys-newest-first"},{"title":"Create an API key for an agent or CI","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tokens","href":"/api-reference/account/create-an-api-key-for-an-agent-or-ci"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /tokens/{id}","href":"/api-reference/account/revoke-an-api-key"},{"title":"Your projects, drafts included, newest first","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/projects","href":"/api-reference/account/your-projects-drafts-included-newest-first"}]},{"group":"Host games","pages":[{"title":"Search the games mods are made for, by name","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /host-games","href":"/api-reference/host-games/search-the-games-mods-are-made-for-by-name"},{"title":"A host game with its store ids and known builds","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /host-games/{slug}","href":"/api-reference/host-games/a-host-game-with-its-store-ids-and-known-builds"},{"title":"Your game requests, newest first, with what Patch's team answered","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /game-requests","href":"/api-reference/host-games/your-game-requests-newest-first-with-what-patchs-team-answered"},{"title":"Ask Patch to support a game","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /game-requests","href":"/api-reference/host-games/ask-patch-to-support-a-game"}]},{"group":"Feedback","pages":[{"title":"Your reports, newest first, with what Patch's team answered","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /feedback","href":"/api-reference/feedback/your-reports-newest-first-with-what-patchs-team-answered"},{"title":"Tell Patch's team what got in your way","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /feedback","href":"/api-reference/feedback/tell-patchs-team-what-got-in-your-way"}]},{"group":"Projects","pages":[{"title":"Search games and mods","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/search","href":"/api-reference/projects/search-games-and-mods"},{"title":"The categories, with how many public projects are in each","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /categories","href":"/api-reference/projects/the-categories-with-how-many-public-projects-are-in-each"},{"title":"Browse public projects, Patch's own first","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects","href":"/api-reference/projects/browse-public-projects-patchs-own-first"},{"title":"Create a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects","href":"/api-reference/projects/create-a-project"},{"title":"A project with its host games and latest public release","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}","href":"/api-reference/projects/a-project-with-its-host-games-and-latest-public-release"},{"title":"Delete a project that's still scratch","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /projects/{owner}/{slug}","href":"/api-reference/projects/delete-a-project-thats-still-scratch"},{"title":"Edit a project's listing and source settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /projects/{owner}/{slug}","href":"/api-reference/projects/edit-a-projects-listing-and-source-settings"},{"title":"Claim a project as its original creator","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/claim","href":"/api-reference/projects/claim-a-project-as-its-original-creator"},{"title":"Projects you can claim at once as their original creator","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/claimable","href":"/api-reference/projects/projects-you-can-claim-at-once-as-their-original-creator"},{"title":"Staff picks, in order","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /featured","href":"/api-reference/projects/staff-picks-in-order"}]},{"group":"Releases","pages":[{"title":"Releases you can see, newest first","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/releases","href":"/api-reference/releases/releases-you-can-see-newest-first"},{"title":"Create a draft release and get upload targets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/releases","href":"/api-reference/releases/create-a-draft-release-and-get-upload-targets"},{"title":"A release with its recipe, files and requirements","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/releases/{version}","href":"/api-reference/releases/a-release-with-its-recipe-files-and-requirements"},{"title":"Publish a release, once the person says it's ready","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/releases/{version}/submit","href":"/api-reference/releases/publish-a-release-once-the-person-says-its-ready"},{"title":"Short-lived download links for every file","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/releases/{version}/download","href":"/api-reference/releases/short-lived-download-links-for-every-file"},{"title":"Finish a multipart upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /uploads/{id}/complete","href":"/api-reference/releases/finish-a-multipart-upload"},{"title":"Fetch a public GitHub release's files, to make a release from them","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /imports/github","href":"/api-reference/releases/fetch-a-public-github-releases-files-to-make-a-release-from-them"},{"title":"The GitHub repository a project picks up releases from","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/github","href":"/api-reference/releases/the-github-repository-a-project-picks-up-releases-from"},{"title":"Pick up a GitHub repository's new releases by themselves","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /projects/{owner}/{slug}/github","href":"/api-reference/releases/pick-up-a-github-repositorys-new-releases-by-themselves"},{"title":"Stop picking up a GitHub repository's releases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /projects/{owner}/{slug}/github","href":"/api-reference/releases/stop-picking-up-a-github-repositorys-releases"},{"title":"Check now: pick up the repository's latest release if it's new","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/github/check","href":"/api-reference/releases/check-now:-pick-up-the-repositorys-latest-release-if-its-new"},{"title":"Check a recipe, and optionally the files it goes with","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /recipes/validate","href":"/api-reference/releases/check-a-recipe-and-optionally-the-files-it-goes-with"},{"title":"How to build, test and publish on Patch","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /guide","href":"/api-reference/releases/how-to-build-test-and-publish-on-patch"},{"title":"Record what a GitHub Actions workflow built","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /provenance","href":"/api-reference/releases/record-what-a-github-actions-workflow-built"}]},{"group":"Media","pages":[{"title":"A project's cover, screenshots and clips, in order","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/media","href":"/api-reference/media/a-projects-cover-screenshots-and-clips-in-order"},{"title":"Add a cover, screenshot or clip, and get where to upload it","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/media","href":"/api-reference/media/add-a-cover-screenshot-or-clip-and-get-where-to-upload-it"},{"title":"Confirm an upload, and start making the media's copies","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/media/{id}/complete","href":"/api-reference/media/confirm-an-upload-and-start-making-the-medias-copies"},{"title":"Reorder a project's media","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /projects/{owner}/{slug}/media/order","href":"/api-reference/media/reorder-a-projects-media"},{"title":"Remove media from the listing","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /projects/{owner}/{slug}/media/{id}","href":"/api-reference/media/remove-media-from-the-listing"}]},{"group":"Review","pages":[{"title":"Where a release is in its review: status, checks, findings and test","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/releases/{version}/review","href":"/api-reference/review/where-a-release-is-in-its-review:-status-checks-findings-and-test"},{"title":"Test a release on your PC","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/releases/{version}/tests","href":"/api-reference/review/test-a-release-on-your-pc"},{"title":"A test: its state, each run's checks, and its review","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tests/{id}","href":"/api-reference/review/a-test:-its-state-each-runs-checks-and-its-review"},{"title":"A test's contact sheets: a frame every 2 seconds, and bursts of consecutive frames, each labelled with its run time","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /tests/{id}/footage","href":"/api-reference/review/a-tests-contact-sheets:-a-frame-every-2-seconds-and-bursts-of-consecutive-frames-each-labelled-with-its-run-time"},{"title":"Send your review of a test's footage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tests/{id}/review","href":"/api-reference/review/send-your-review-of-a-tests-footage"},{"title":"Cancel a test that hasn't been decided","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /tests/{id}/cancel","href":"/api-reference/review/cancel-a-test-that-hasnt-been-decided"},{"title":"Your test settings: whether your agents' tests start by themselves","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/test-settings","href":"/api-reference/review/your-test-settings:-whether-your-agents-tests-start-by-themselves"},{"title":"Turn your agents' tests starting by themselves on or off","description":"`starts_own_tests`: on, a test of a browser game or block that you asked for, with any of your keys, starts in your Patch Desktop without you pressing Start, and Patch Desktop shows a notice each time with a way to stop it. A mod's test still waits for Start. Your own account only. An agent turns it on or off only after asking you and hearing a clear yes; it's said to be the agent's doing unless `by` is `person`, and Patch Desktop tells you the first time it's on by an agent.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /me/test-settings","href":"/api-reference/review/turn-your-agents-tests-starting-by-themselves-on-or-off"},{"title":"Publish a release: upload to live in one flow","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/releases/{version}/publish","href":"/api-reference/review/publish-a-release:-upload-to-live-in-one-flow"}]},{"group":"Assets","pages":[{"title":"Search the asset library","description":"Full-text search, ranked, with ties going to prepared assets. One hit per group of alternatives unless group=false. `unapplied` lists filters that weren't used and why; with few hits, `relax` says what to drop.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assets/search","href":"/api-reference/assets/search-the-asset-library"},{"title":"Fields, values, counts and ranges for a query","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assets/facets","href":"/api-reference/assets/fields-values-counts-and-ranges-for-a-query"},{"title":"Plan adding assets to a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /assets/plan","href":"/api-reference/assets/plan-adding-assets-to-a-project"},{"title":"A license's name, URL, duties and full text","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assets/licenses/{spdx}","href":"/api-reference/assets/a-licenses-name-url-duties-and-full-text"},{"title":"What an agent should be told about an asset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assets/{id}/mention","href":"/api-reference/assets/what-an-agent-should-be-told-about-an-asset"},{"title":"One asset: variants with file URLs, capabilities per runtime, license and credit","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /assets/{id}","href":"/api-reference/assets/one-asset:-variants-with-file-urls-capabilities-per-runtime-license-and-credit"}]},{"group":"Repos","pages":[{"title":"A project's git repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo","href":"/api-reference/repos/a-projects-git-repo"},{"title":"Change who can reach a repo, the training switch, or change requests","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /projects/{owner}/{slug}/repo","href":"/api-reference/repos/change-who-can-reach-a-repo-the-training-switch-or-change-requests"},{"title":"Change a repo's licence, and commit its licence files to say the same","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /projects/{owner}/{slug}/repo/license","href":"/api-reference/repos/change-a-repos-licence-and-commit-its-licence-files-to-say-the-same"},{"title":"Fork a project's repo into a new project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/fork","href":"/api-reference/repos/fork-a-projects-repo-into-a-new-project"},{"title":"A repo's forks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/forks","href":"/api-reference/repos/a-repos-forks"},{"title":"The commit a release came from, and a zip of it","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/releases/{version}/source","href":"/api-reference/repos/the-commit-a-release-came-from-and-a-zip-of-it"},{"title":"Search every open repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /repos/search","href":"/api-reference/repos/search-every-open-repo"},{"title":"Your orgs' repos, private ones included","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/repos","href":"/api-reference/repos/your-orgs-repos-private-ones-included"},{"title":"A repo's branches and tags","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/refs","href":"/api-reference/repos/a-repos-branches-and-tags"},{"title":"A folder in a repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/tree","href":"/api-reference/repos/a-folder-in-a-repo"},{"title":"A file in a repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/file","href":"/api-reference/repos/a-file-in-a-repo"},{"title":"Send a browser to a file's bytes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/raw","href":"/api-reference/repos/send-a-browser-to-a-files-bytes"},{"title":"A repo's history","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/commits","href":"/api-reference/repos/a-repos-history"},{"title":"One commit and what it changes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/commit","href":"/api-reference/repos/one-commit-and-what-it-changes"},{"title":"A repo's latest history scan","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/history-scan","href":"/api-reference/repos/a-repos-latest-history-scan"},{"title":"Scan a repo's whole history before it goes open","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/repo/history-scan","href":"/api-reference/repos/scan-a-repos-whole-history-before-it-goes-open"}]},{"group":"Change requests","pages":[{"title":"A repo's change requests","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/change-requests","href":"/api-reference/change-requests/a-repos-change-requests"},{"title":"Offer a branch to this repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/change-requests","href":"/api-reference/change-requests/offer-a-branch-to-this-repo"},{"title":"A change request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/change-requests/{number}","href":"/api-reference/change-requests/a-change-request"},{"title":"Change a request's title or description","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /projects/{owner}/{slug}/change-requests/{number}","href":"/api-reference/change-requests/change-a-requests-title-or-description"},{"title":"What a change request changes","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/change-requests/{number}/diff","href":"/api-reference/change-requests/what-a-change-request-changes"},{"title":"What Patch's review of a change request says","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/change-requests/{number}/review","href":"/api-reference/change-requests/what-patchs-review-of-a-change-request-says"},{"title":"Merge a change request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/change-requests/{number}/merge","href":"/api-reference/change-requests/merge-a-change-request"},{"title":"Decline a change request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/change-requests/{number}/decline","href":"/api-reference/change-requests/decline-a-change-request"},{"title":"Withdraw a change request","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/change-requests/{number}/withdraw","href":"/api-reference/change-requests/withdraw-a-change-request"},{"title":"A change request's talk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/change-requests/{number}/talk","href":"/api-reference/change-requests/a-change-requests-talk"},{"title":"Post in a change request's talk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/change-requests/{number}/talk","href":"/api-reference/change-requests/post-in-a-change-requests-talk"},{"title":"Delete a post from a change request's talk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /projects/{owner}/{slug}/change-requests/{number}/talk/{id}","href":"/api-reference/change-requests/delete-a-post-from-a-change-requests-talk"}]},{"group":"GitHub","pages":[{"title":"Start linking your GitHub account with a code: for pch and agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /me/github/device","href":"/api-reference/github/start-linking-your-github-account-with-a-code:-for-pch-and-agents"},{"title":"Whether the person has entered the device flow's code","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/github/device/{id}","href":"/api-reference/github/whether-the-person-has-entered-the-device-flows-code"},{"title":"Who you are on GitHub, and where Patch's GitHub App is installed for you","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/github","href":"/api-reference/github/who-you-are-on-github-and-where-patchs-github-app-is-installed-for-you"},{"title":"The repos of one of the app's installations that you can reach","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/github/repos","href":"/api-reference/github/the-repos-of-one-of-the-apps-installations-that-you-can-reach"},{"title":"Connect a GitHub repo to a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /github/connect","href":"/api-reference/github/connect-a-github-repo-to-a-project"},{"title":"The GitHub repo that's a project's repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/repo/github","href":"/api-reference/github/the-github-repo-thats-a-projects-repo"},{"title":"Disconnect a project from its GitHub repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /projects/{owner}/{slug}/repo/github","href":"/api-reference/github/disconnect-a-project-from-its-github-repo"},{"title":"Open a pull request on a connected repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /projects/{owner}/{slug}/github/pulls","href":"/api-reference/github/open-a-pull-request-on-a-connected-repo"},{"title":"How a pull request on a connected repo stands","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /projects/{owner}/{slug}/github/pulls/{number}","href":"/api-reference/github/how-a-pull-request-on-a-connected-repo-stands"},{"title":"Merge a pull request on a connected repo","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /projects/{owner}/{slug}/github/pulls/{number}/merge","href":"/api-reference/github/merge-a-pull-request-on-a-connected-repo"},{"title":"Your projects whose repo is on GitHub","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /me/github/projects","href":"/api-reference/github/your-projects-whose-repo-is-on-github"}]}]}]}]},"basePath":"","title":"Publish a release: upload to live in one flow - Patch","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-5FCzAcfS.js","utils-SLtAG4EZ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-2DZi8ZMu.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D7J3nkzE.js","snippetPresets-D0Alv0AH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BI4qNJ2c.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BD3uyr8j.js","shallow-D8iEBr5z.js","getApiPlaygroundDisplay-CgNP4lzR.js","CodeSnippet-CX-QHuMs.js","CodeSnippets-VlXE-ZUf.js","Page-D9ithiIZ.js","getPastedJson-DYNQkZ1M.js","icon-CzacdwOi.js","MethodPill-2JVqoYKi.js","DuplicateIcon-_xVXs-U8.js","createIcon-BRHrweLo.js","DynamicMarkdown-mQG_iQiE.js","SectionHeading-DMpJzv8f.js","axios-vUo_bRtp.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}