[{"data":1,"prerenderedAt":379},["ShallowReactive",2],{"navigation_docs_en":3,"-en-concepts-projects-and-versions":110,"-en-concepts-projects-and-versions-surround":374},[4,20,55,70,90,100],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fen\u002Fgetting-started\u002Fquickstart","en\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":21,"icon":6,"path":22,"stem":23,"children":24,"page":6},"Concepts","\u002Fen\u002Fconcepts","en\u002F2.concepts",[25,30,35,40,45,50],{"title":26,"path":27,"stem":28,"icon":29},"Projects and versions","\u002Fen\u002Fconcepts\u002Fprojects-and-versions","en\u002F2.concepts\u002F1.projects-and-versions","i-lucide-boxes",{"title":31,"path":32,"stem":33,"icon":34},"Config files","\u002Fen\u002Fconcepts\u002Ffiles","en\u002F2.concepts\u002F2.files","i-lucide-file-json",{"title":36,"path":37,"stem":38,"icon":39},"Publishing","\u002Fen\u002Fconcepts\u002Fpublishing","en\u002F2.concepts\u002F3.publishing","i-lucide-send",{"title":41,"path":42,"stem":43,"icon":44},"Access and roles","\u002Fen\u002Fconcepts\u002Faccess","en\u002F2.concepts\u002F4.access","i-lucide-users",{"title":46,"path":47,"stem":48,"icon":49},"Encryption","\u002Fen\u002Fconcepts\u002Fencryption","en\u002F2.concepts\u002F5.encryption","i-lucide-lock",{"title":51,"path":52,"stem":53,"icon":54},"Git integration","\u002Fen\u002Fconcepts\u002Fgit","en\u002F2.concepts\u002F6.git","i-lucide-git-branch",{"title":56,"icon":6,"path":57,"stem":58,"children":59,"page":6},"SDKs","\u002Fen\u002Fsdk","en\u002F3.sdk",[60,65],{"title":61,"path":62,"stem":63,"icon":64},"Node.js","\u002Fen\u002Fsdk\u002Fnodejs","en\u002F3.sdk\u002F1.nodejs","i-simple-icons-nodedotjs",{"title":66,"path":67,"stem":68,"icon":69},"Unity","\u002Fen\u002Fsdk\u002Funity","en\u002F3.sdk\u002F2.unity","i-simple-icons-unity",{"title":71,"icon":6,"path":72,"stem":73,"children":74,"page":6},"API and MCP","\u002Fen\u002Fapi","en\u002F4.api",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"API tokens","\u002Fen\u002Fapi\u002Fauthentication","en\u002F4.api\u002F1.authentication","i-lucide-key-round",{"title":81,"path":82,"stem":83,"icon":84},"REST API","\u002Fen\u002Fapi\u002Frest-api","en\u002F4.api\u002F2.rest-api","i-lucide-plug",{"title":86,"path":87,"stem":88,"icon":89},"MCP for AI agents","\u002Fen\u002Fapi\u002Fmcp","en\u002F4.api\u002F3.mcp","i-lucide-bot",{"title":91,"icon":6,"path":92,"stem":93,"children":94,"page":6},"Support","\u002Fen\u002Fsupport","en\u002F5.support",[95],{"title":96,"path":97,"stem":98,"icon":99},"Feedback","\u002Fen\u002Fsupport\u002Ffeedback","en\u002F5.support\u002F1.feedback","i-lucide-message-circle",{"title":101,"icon":6,"path":102,"stem":103,"children":104,"page":6},"Legal","\u002Fen\u002Flegal","en\u002F6.legal",[105],{"title":106,"path":107,"stem":108,"icon":109},"Privacy policy","\u002Fen\u002Flegal\u002Fprivacy","en\u002F6.legal\u002F1.privacy","i-lucide-shield",{"id":111,"title":26,"body":112,"description":365,"extension":366,"links":367,"meta":368,"navigation":369,"path":27,"seo":370,"stem":28,"__hash__":373},"docs_en\u002Fen\u002F2.concepts\u002F1.projects-and-versions.md",{"type":113,"value":114,"toc":356},"minimark",[115,120,226,238,242,252,272,282,288,294,298,305,309,324,328,342,346],[116,117,119],"h2",{"id":118},"the-model","The model",[121,122,123,136],"table",{},[124,125,126],"thead",{},[127,128,129,133],"tr",{},[130,131,132],"th",{},"Entity",[130,134,135],{},"What it is",[137,138,139,151,170,196,206,216],"tbody",{},[127,140,141,148],{},[142,143,144],"td",{},[145,146,147],"strong",{},"Project",[142,149,150],{},"The top-level container. Has a name, an alias, an owner and its own CDN location.",[127,152,153,158],{},[142,154,155],{},[145,156,157],{},"Version",[142,159,160,161,165,166,169],{},"A named snapshot line of the project's files, such as ",[162,163,164],"code",{},"default"," or ",[162,167,168],{},"staging",".",[127,171,172,177],{},[142,173,174],{},[145,175,176],{},"File",[142,178,179,180,183,184,183,187,183,190,165,193,169],{},"A config file: ",[162,181,182],{},"json",", ",[162,185,186],{},"lua",[162,188,189],{},"txt",[162,191,192],{},"css",[162,194,195],{},"scss",[127,197,198,203],{},[142,199,200],{},[145,201,202],{},"Consumer",[142,204,205],{},"A client that receives configs (a game build, a backend service).",[127,207,208,213],{},[142,209,210],{},[145,211,212],{},"Tag",[142,214,215],{},"A free-form label for grouping and filtering files.",[127,217,218,223],{},[142,219,220],{},[145,221,222],{},"Bundle",[142,224,225],{},"A named set of files delivered together. Membership is set per version.",[227,228,229,230,233,234,237],"p",{},"Projects are created in the Veresk web interface. Versions, files, tags and publishing are also available through the ",[231,232,81],"a",{"href":82}," and ",[231,235,236],{"href":87},"MCP",". Consumers, bundles, encryption and Git are managed in the interface.",[116,239,241],{"id":240},"versions-form-a-chain","Versions form a chain",[227,243,244,245,247,248,251],{},"Every project has a root version named ",[162,246,164],{},". A new version is created from a parent (the default version when you do not choose one) and ",[145,249,250],{},"inherits every file"," from it.",[253,254,255,262,269],"ul",{},[256,257,258,259,169],"li",{},"A version without its own copy of a file ",[145,260,261],{},"serves the parent's content",[256,263,264,265,268],{},"When you edit the file in the version, that version gets ",[145,266,267],{},"its own copy"," and stops inheriting that file. Other files keep inheriting.",[256,270,271],{},"You can reset a file to inherit from the parent again.",[273,274,280],"pre",{"className":275,"code":277,"language":278,"meta":279},[276],"language-text","default      settings.json   prices.json   events.lua\n  └─ staging settings.json*  (inherits prices.json, events.lua)\n       └─ season-5  events.lua*  (inherits the rest from staging)\n","text","",[162,281,277],{"__ignoreMap":279},[227,283,284,287],{},[162,285,286],{},"*"," marks a file with its own copy in that version.",[227,289,290,291,293],{},"This makes small changes cheap: create ",[162,292,168],{},", edit one file and publish, without duplicating the whole project.",[116,295,297],{"id":296},"locking","Locking",[227,299,300,301,304],{},"A version can be ",[145,302,303],{},"locked",". A locked version is read-only: files cannot be edited. Use it to freeze what you have released.",[116,306,308],{"id":307},"comparing-and-promoting","Comparing and promoting",[227,310,311,312,183,315,318,319,321,322,169],{},"You can compare two versions file by file. Each file is ",[162,313,314],{},"same",[162,316,317],{},"different",", or present on one side only. You can then copy chosen files from one version to another, for example to promote tested changes from ",[162,320,168],{}," to ",[162,323,164],{},[116,325,327],{"id":326},"consumers","Consumers",[227,329,330,331,334,335,233,338,341],{},"A consumer decides ",[145,332,333],{},"which files a client receives",". A file reaches a consumer only when the file is assigned to it. Clients address themselves by consumer name, so ",[162,336,337],{},"backend",[162,339,340],{},"game-client"," can receive different sets of files from the same version.",[116,343,345],{"id":344},"tags","Tags",[227,347,348,349,233,352,355],{},"Tags help you find files in a long list. Files created or changed through the API get the tags ",[162,350,351],{},"api-created",[162,353,354],{},"api-edited"," automatically, so you can review what automation touched.",{"title":279,"searchDepth":357,"depth":357,"links":358},2,[359,360,361,362,363,364],{"id":118,"depth":357,"text":119},{"id":240,"depth":357,"text":241},{"id":296,"depth":357,"text":297},{"id":307,"depth":357,"text":308},{"id":326,"depth":357,"text":327},{"id":344,"depth":357,"text":345},"The building blocks of Veresk and how versions inherit files from each other.","md",null,{},{"icon":29},{"title":371,"description":372},"Projects, versions and files in Veresk","Learn how Veresk organizes configuration into projects, versions, files, consumers, tags and bundles, and how version inheritance works.","_DNUnF4xKj9A9_HO8TO0cGxIpDK44U2q57FDWAUCb1g",[375,377],{"title":16,"path":17,"stem":18,"description":376,"icon":19,"children":-1},"Create a project, publish a config and read it from your app.",{"title":31,"path":32,"stem":33,"description":378,"icon":34,"children":-1},"Supported formats, syntax checks, comments and what happens to a file on publish.",1793977340583]