[{"data":1,"prerenderedAt":1119},["ShallowReactive",2],{"navigation_docs":3,"-platform-reference-cri-format":213,"-platform-reference-cri-format-surround":1114},[4,142],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":36},"Kinotic Apps","i-lucide-rocket","\u002Fapps","01.apps",[10,14,18,37,58,91,102,122,127],{"title":11,"path":12,"stem":13},"Introduction","\u002Fapps\u002Fintroduction","01.apps\u002F01.introduction",{"title":15,"path":16,"stem":17},"Quick Start","\u002Fapps\u002Fquick-start","01.apps\u002F02.quick-start",{"title":19,"icon":20,"path":21,"stem":22,"children":23,"page":36},"Application Structure","i-lucide-folder-tree","\u002Fapps\u002Fapplication-structure","01.apps\u002F03.application-structure",[24,28,32],{"title":25,"path":26,"stem":27},"Overview","\u002Fapps\u002Fapplication-structure\u002Foverview","01.apps\u002F03.application-structure\u002F01.overview",{"title":29,"path":30,"stem":31},"Applications and Projects","\u002Fapps\u002Fapplication-structure\u002Fapplications-and-projects","01.apps\u002F03.application-structure\u002F02.applications-and-projects",{"title":33,"path":34,"stem":35},"Artifact Types","\u002Fapps\u002Fapplication-structure\u002Fartifact-types","01.apps\u002F03.application-structure\u002F03.artifact-types",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Services","i-lucide-network","\u002Fapps\u002Fservices","01.apps\u002F04.services",[43,46,50,54],{"title":25,"path":44,"stem":45},"\u002Fapps\u002Fservices\u002Foverview","01.apps\u002F04.services\u002F01.overview",{"title":47,"path":48,"stem":49},"Publishing Services","\u002Fapps\u002Fservices\u002Fpublishing-services","01.apps\u002F04.services\u002F02.publishing-services",{"title":51,"path":52,"stem":53},"Service Proxies","\u002Fapps\u002Fservices\u002Fservice-proxies","01.apps\u002F04.services\u002F03.service-proxies",{"title":55,"path":56,"stem":57},"Streaming","\u002Fapps\u002Fservices\u002Fstreaming","01.apps\u002F04.services\u002F04.streaming",{"title":59,"icon":60,"path":61,"stem":62,"children":63,"page":36},"Persistence","i-lucide-database","\u002Fapps\u002Fpersistence","01.apps\u002F05.persistence",[64,67,71,75,79,83,87],{"title":25,"path":65,"stem":66},"\u002Fapps\u002Fpersistence\u002Foverview","01.apps\u002F05.persistence\u002F01.overview",{"title":68,"path":69,"stem":70},"Defining Entities","\u002Fapps\u002Fpersistence\u002Fdefining-entities","01.apps\u002F05.persistence\u002F02.defining-entities",{"title":72,"path":73,"stem":74},"Entity Decorators","\u002Fapps\u002Fpersistence\u002Fentity-decorators","01.apps\u002F05.persistence\u002F03.entity-decorators",{"title":76,"path":77,"stem":78},"CRUD Operations","\u002Fapps\u002Fpersistence\u002Fcrud-operations","01.apps\u002F05.persistence\u002F04.crud-operations",{"title":80,"path":81,"stem":82},"Named Queries","\u002Fapps\u002Fpersistence\u002Fnamed-queries","01.apps\u002F05.persistence\u002F05.named-queries",{"title":84,"path":85,"stem":86},"Multi-Tenancy","\u002Fapps\u002Fpersistence\u002Fmulti-tenancy","01.apps\u002F05.persistence\u002F06.multi-tenancy",{"title":88,"path":89,"stem":90},"Migrations","\u002Fapps\u002Fpersistence\u002Fmigrations","01.apps\u002F05.persistence\u002F07.migrations",{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":36},"Security","i-lucide-shield-check","\u002Fapps\u002Fsecurity","01.apps\u002F06.security",[97],{"title":98,"path":99,"stem":100,"icon":101},"Authentication","\u002Fapps\u002Fsecurity\u002Fauthentication","01.apps\u002F06.security\u002F01.authentication","i-lucide-key-round",{"title":103,"icon":104,"path":105,"stem":106,"children":107,"page":36},"Deployment","i-lucide-cloud-upload","\u002Fapps\u002Fdeployment","01.apps\u002F07.deployment",[108,113,118],{"title":109,"path":110,"stem":111,"icon":112},"Deployment Workflow","\u002Fapps\u002Fdeployment\u002Fworkflow","01.apps\u002F07.deployment\u002F01.workflow","i-lucide-git-branch",{"title":114,"path":115,"stem":116,"icon":117},"Environments","\u002Fapps\u002Fdeployment\u002Fenvironments","01.apps\u002F07.deployment\u002F02.environments","i-lucide-server",{"title":119,"path":120,"stem":121,"icon":6},"Push to Deploy","\u002Fapps\u002Fdeployment\u002Fpush-to-deploy","01.apps\u002F07.deployment\u002F03.push-to-deploy",{"title":123,"path":124,"stem":125,"icon":126},"CLI Reference","\u002Fapps\u002Fcli-reference","01.apps\u002F08.cli-reference","i-lucide-terminal",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":36},"Reference","i-lucide-book-open","\u002Fapps\u002Freference","01.apps\u002F09.reference",[133,138],{"title":134,"path":135,"stem":136,"icon":137},"Decorators Reference","\u002Fapps\u002Freference\u002Fdecorators","01.apps\u002F09.reference\u002F01.decorators","i-lucide-at-sign",{"title":139,"path":140,"stem":141,"icon":60},"Migration SQL Grammar","\u002Fapps\u002Freference\u002Fmigration-sql-grammar","01.apps\u002F09.reference\u002F02.migration-sql-grammar",{"title":143,"icon":117,"path":144,"stem":145,"children":146,"page":36},"Kinotic OS","\u002Fplatform","02.platform",[147,152,156,161,166,171,175,180,185,190,195],{"title":148,"path":149,"stem":150,"icon":151},"System Architecture","\u002Fplatform\u002Farchitecture","02.platform\u002F01.architecture","i-lucide-boxes",{"title":153,"path":154,"stem":155,"icon":6},"Deployment Guide","\u002Fplatform\u002Fdeployment-guide","02.platform\u002F02.deployment-guide",{"title":157,"path":158,"stem":159,"icon":160},"Configuration","\u002Fplatform\u002Fconfiguration","02.platform\u002F03.configuration","i-lucide-settings",{"title":162,"path":163,"stem":164,"icon":165},"Organization Management","\u002Fplatform\u002Forganization-management","02.platform\u002F04.organization-management","i-lucide-building",{"title":167,"path":168,"stem":169,"icon":170},"System Security","\u002Fplatform\u002Fsystem-security","02.platform\u002F05.system-security","i-lucide-shield",{"title":172,"path":173,"stem":174,"icon":93},"Defense in Depth","\u002Fplatform\u002Fdefense-in-depth","02.platform\u002F06.defense-in-depth",{"title":176,"path":177,"stem":178,"icon":179},"MCP Tools","\u002Fplatform\u002Fmcp-tools","02.platform\u002F07.mcp-tools","i-lucide-bot",{"title":181,"path":182,"stem":183,"icon":184},"Observability","\u002Fplatform\u002Fobservability","02.platform\u002F08.observability","i-lucide-activity",{"title":186,"path":187,"stem":188,"icon":189},"Contributing","\u002Fplatform\u002Fcontributing","02.platform\u002F09.contributing","i-lucide-git-pull-request",{"title":191,"path":192,"stem":193,"icon":194},"System Migrations","\u002Fplatform\u002Fsystem-migrations","02.platform\u002F10.system-migrations","i-lucide-database-zap",{"title":128,"icon":129,"path":196,"stem":197,"children":198,"page":36},"\u002Fplatform\u002Freference","02.platform\u002F11.reference",[199,204,209],{"title":200,"path":201,"stem":202,"icon":203},"CRI Format","\u002Fplatform\u002Freference\u002Fcri-format","02.platform\u002F11.reference\u002F01.cri-format","i-lucide-link",{"title":205,"path":206,"stem":207,"icon":208},"Grind Jobs","\u002Fplatform\u002Freference\u002Fgrind-jobs","02.platform\u002F11.reference\u002F02.grind-jobs","i-lucide-workflow",{"title":210,"path":211,"stem":212,"icon":151},"Project Publishing Design","\u002Fplatform\u002Freference\u002Fproject-publishing-design","02.platform\u002F11.reference\u002F03.project-publishing-design",{"id":214,"title":200,"body":215,"description":1107,"extension":1108,"links":1109,"meta":1110,"navigation":1111,"path":201,"seo":1112,"stem":202,"__hash__":1113},"docs\u002F02.platform\u002F11.reference\u002F01.cri-format.md",{"type":216,"value":217,"toc":1090},"minimark",[218,222,226,230,241,248,252,262,268,272,277,280,319,323,330,337,343,347,354,409,419,432,496,500,503,509,513,516,522,526,529,535,539,546,786,790,796,997,1001,1086],[219,220,25],"h2",{"id":221},"overview",[223,224,225],"p",{},"A CRI (Kinotic Resource Identifier) is used by Kinotic to route requests to the appropriate service, method, or event stream. It is a URI-like format with parts named for clarity within the Kinotic platform.",[219,227,229],{"id":228},"format","Format",[231,232,237],"pre",{"className":233,"code":235,"language":236},[234],"language-text","scheme:\u002F\u002F[scope@][zone~]resourceName[\u002Fpath][#version]\n","text",[238,239,235],"code",{"__ignoreMap":240},"",[223,242,243,244,247],{},"Everything in brackets (",[238,245,246],{},"[]",") is optional.",[219,249,251],{"id":250},"case","Case",[223,253,254,255,258,259,261],{},"Every part keeps the case it was written with, and addresses match by exact string comparison — ",[238,256,257],{},"OrderService"," and ",[238,260,257],{}," are two different addresses. Service names carry the case of the class that published them, so a typical address looks like:",[231,263,266],{"className":264,"code":265,"language":236},[234],"srv:\u002F\u002Fmanagement-api~org.kinotic.management.api.services.ProjectService\u002FfindByRepoFullName\n",[238,267,265],{"__ignoreMap":240},[219,269,271],{"id":270},"components","Components",[273,274,276],"h3",{"id":275},"scheme","Scheme",[223,278,279],{},"Identifies the type of resource being addressed.",[281,282,283,295],"table",{},[284,285,286],"thead",{},[287,288,289,292],"tr",{},[290,291,276],"th",{},[290,293,294],{},"Description",[296,297,298,309],"tbody",{},[287,299,300,306],{},[301,302,303],"td",{},[238,304,305],{},"srv",[301,307,308],{},"Published services and their methods",[287,310,311,316],{},[301,312,313],{},[238,314,315],{},"stream",[301,317,318],{},"Event streams (not yet routable through the gateway)",[273,320,322],{"id":321},"scope","Scope",[223,324,325,326,329],{},"An optional qualifier that narrows the CRI to a specific context, such as a tenant ID, user ID, or device ID. When present, it appears before the ",[238,327,328],{},"@"," symbol.",[223,331,332,333,336],{},"If a scope needs sub-scopes, use the format ",[238,334,335],{},"scope:sub-scope",".",[231,338,341],{"className":339,"code":340,"language":236},[234],"srv:\u002F\u002Ftenant-123@app.acme-org.orders-app~OrderService\nstream:\u002F\u002Fdevice-42@app.acme-org.orders-app~temperature\u002Fsensor-1\n",[238,342,340],{"__ignoreMap":240},[273,344,346],{"id":345},"zone","Zone",[223,348,349,350,353],{},"The optional zone places the resource in the isolation boundary the gateway validates on every send and subscribe. It precedes the resourceName, separated by ",[238,351,352],{},"~",". A zone is one or more dot-separated labels of lowercase letters, digits, and interior dashes.",[281,355,356,364],{},[284,357,358],{},[287,359,360,362],{},[290,361,346],{},[290,363,294],{},[296,365,366,379,389,399],{},[287,367,368,373],{},[301,369,370],{},[238,371,372],{},"app.\u003CorganizationId>.\u003CapplicationId>",[301,374,375,376,336],{},"One application's services. Only that application (and system participants) can call them; they are hosted by the owning organization's runtime, which authenticates as an organization participant. Applications may nest their own sub-zones, e.g. ",[238,377,378],{},"app.acme-org.orders-app.billing",[287,380,381,386],{},[301,382,383],{},[238,384,385],{},"app-api",[301,387,388],{},"The platform's data plane for applications, such as entity persistence and named query execution. Hosted in-process by the platform only.",[287,390,391,396],{},[301,392,393],{},[238,394,395],{},"management-api",[301,397,398],{},"The platform services organizations manage the system through, such as member, application, and entity definition management. Hosted in-process by the platform only.",[287,400,401,406],{},[301,402,403],{},[238,404,405],{},"system-api",[301,407,408],{},"Platform-internal services. Only system participants can call or host them.",[223,410,411,412,415,416,418],{},"Organization and application ids become zone labels, but only ever after the ",[238,413,414],{},"app"," prefix, so they cannot collide with the platform's own zones. The one exception is guarded explicitly: creating an organization or application whose name slugifies to ",[238,417,405],{}," is rejected.",[223,420,421,422,424,425,428,429,431],{},"Which zones a connection may address is determined by the authenticated participant. A participant may also address any sub-zone of a zone it is allowed, so ",[238,423,378],{}," is reachable by whoever may reach ",[238,426,427],{},"app.acme-org.orders-app",". An address without a ",[238,430,352],{}," carries no zone at all and is only reachable by system participants.",[281,433,434,447],{},[284,435,436],{},[287,437,438,441,444],{},[290,439,440],{},"Participant",[290,442,443],{},"May send to",[290,445,446],{},"May subscribe to",[296,448,449,465,484],{},[287,450,451,454,462],{},[301,452,453],{},"APPLICATION (org, app)",[301,455,456,458,459],{},[238,457,385],{},", ",[238,460,461],{},"app.\u003Corg>.\u003Capp>",[301,463,464],{},"reply destinations only",[287,466,467,470,479],{},[301,468,469],{},"ORGANIZATION (org)",[301,471,472,458,474,458,476],{},[238,473,395],{},[238,475,385],{},[238,477,478],{},"app.\u003Corg>.*",[301,480,481,483],{},[238,482,478],{}," — its applications' zones",[287,485,486,489,492],{},[301,487,488],{},"SYSTEM",[301,490,491],{},"everything",[301,493,494],{},[238,495,405],{},[273,497,499],{"id":498},"resource-name","Resource Name",[223,501,502],{},"The name of the resource being addressed, excluding the zone. For services, this is the fully qualified service name. For streams, this is the event type name.",[231,504,507],{"className":505,"code":506,"language":236},[234],"srv:\u002F\u002Fmanagement-api~com.example.UserService\nstream:\u002F\u002Fapp.acme-org.orders-app~temperature\n",[238,508,506],{"__ignoreMap":240},[273,510,512],{"id":511},"path","Path",[223,514,515],{},"An optional path that identifies a specific part of the resource, such as a method name on a service. The path's case is preserved.",[231,517,520],{"className":518,"code":519,"language":236},[234],"srv:\u002F\u002Fmanagement-api~com.example.UserService\u002FfindById\nstream:\u002F\u002Fapp.acme-org.orders-app~temperature\u002Fsensor-1\n",[238,521,519],{"__ignoreMap":240},[273,523,525],{"id":524},"version","Version",[223,527,528],{},"An optional semantic version for the resource. Enables versioned service routing so multiple versions of a service can coexist.",[231,530,533],{"className":531,"code":532,"language":236},[234],"srv:\u002F\u002Fmanagement-api~com.example.UserService\u002FfindById#1.0.0\nsrv:\u002F\u002Fmanagement-api~com.example.UserService#2.0.0\n",[238,534,532],{"__ignoreMap":240},[219,536,538],{"id":537},"factory-function","Factory Function",[223,540,541,542,545],{},"The ",[238,543,544],{},"createCRI"," function provides several overloads for constructing CRI instances:",[231,547,551],{"className":548,"code":549,"language":550,"meta":240,"style":240},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createCRI } from '@kinotic-ai\u002Fcore'\n\n\u002F\u002F From a raw string\nconst cri1 = createCRI('srv:\u002F\u002Fmanagement-api~com.example.UserService\u002FfindById#1.0.0')\n\n\u002F\u002F From scheme and resource name (which may carry a zone)\nconst cri2 = createCRI('srv', 'management-api~com.example.UserService')\n\n\u002F\u002F From scheme, scope, and resource name\nconst cri3 = createCRI('stream', 'tenant-123', 'app.acme-org.orders-app~orders')\n\n\u002F\u002F From all components\nconst cri4 = createCRI('srv', null, 'management-api~com.example.UserService', 'findById', '1.0.0')\n","typescript",[238,552,553,586,593,600,630,635,641,673,678,684,724,729,735],{"__ignoreMap":240},[554,555,558,562,566,570,573,576,579,583],"span",{"class":556,"line":557},"line",1,[554,559,561],{"class":560},"s7zQu","import",[554,563,565],{"class":564},"sMK4o"," {",[554,567,569],{"class":568},"sTEyZ"," createCRI",[554,571,572],{"class":564}," }",[554,574,575],{"class":560}," from",[554,577,578],{"class":564}," '",[554,580,582],{"class":581},"sfazB","@kinotic-ai\u002Fcore",[554,584,585],{"class":564},"'\n",[554,587,589],{"class":556,"line":588},2,[554,590,592],{"emptyLinePlaceholder":591},true,"\n",[554,594,596],{"class":556,"line":595},3,[554,597,599],{"class":598},"sHwdD","\u002F\u002F From a raw string\n",[554,601,603,607,610,613,616,619,622,625,627],{"class":556,"line":602},4,[554,604,606],{"class":605},"spNyl","const",[554,608,609],{"class":568}," cri1 ",[554,611,612],{"class":564},"=",[554,614,569],{"class":615},"s2Zo4",[554,617,618],{"class":568},"(",[554,620,621],{"class":564},"'",[554,623,624],{"class":581},"srv:\u002F\u002Fmanagement-api~com.example.UserService\u002FfindById#1.0.0",[554,626,621],{"class":564},[554,628,629],{"class":568},")\n",[554,631,633],{"class":556,"line":632},5,[554,634,592],{"emptyLinePlaceholder":591},[554,636,638],{"class":556,"line":637},6,[554,639,640],{"class":598},"\u002F\u002F From scheme and resource name (which may carry a zone)\n",[554,642,644,646,649,651,653,655,657,659,661,664,666,669,671],{"class":556,"line":643},7,[554,645,606],{"class":605},[554,647,648],{"class":568}," cri2 ",[554,650,612],{"class":564},[554,652,569],{"class":615},[554,654,618],{"class":568},[554,656,621],{"class":564},[554,658,305],{"class":581},[554,660,621],{"class":564},[554,662,663],{"class":564},",",[554,665,578],{"class":564},[554,667,668],{"class":581},"management-api~com.example.UserService",[554,670,621],{"class":564},[554,672,629],{"class":568},[554,674,676],{"class":556,"line":675},8,[554,677,592],{"emptyLinePlaceholder":591},[554,679,681],{"class":556,"line":680},9,[554,682,683],{"class":598},"\u002F\u002F From scheme, scope, and resource name\n",[554,685,687,689,692,694,696,698,700,702,704,706,708,711,713,715,717,720,722],{"class":556,"line":686},10,[554,688,606],{"class":605},[554,690,691],{"class":568}," cri3 ",[554,693,612],{"class":564},[554,695,569],{"class":615},[554,697,618],{"class":568},[554,699,621],{"class":564},[554,701,315],{"class":581},[554,703,621],{"class":564},[554,705,663],{"class":564},[554,707,578],{"class":564},[554,709,710],{"class":581},"tenant-123",[554,712,621],{"class":564},[554,714,663],{"class":564},[554,716,578],{"class":564},[554,718,719],{"class":581},"app.acme-org.orders-app~orders",[554,721,621],{"class":564},[554,723,629],{"class":568},[554,725,727],{"class":556,"line":726},11,[554,728,592],{"emptyLinePlaceholder":591},[554,730,732],{"class":556,"line":731},12,[554,733,734],{"class":598},"\u002F\u002F From all components\n",[554,736,738,740,743,745,747,749,751,753,755,757,760,762,764,766,768,770,773,775,777,779,782,784],{"class":556,"line":737},13,[554,739,606],{"class":605},[554,741,742],{"class":568}," cri4 ",[554,744,612],{"class":564},[554,746,569],{"class":615},[554,748,618],{"class":568},[554,750,621],{"class":564},[554,752,305],{"class":581},[554,754,621],{"class":564},[554,756,663],{"class":564},[554,758,759],{"class":564}," null,",[554,761,578],{"class":564},[554,763,668],{"class":581},[554,765,621],{"class":564},[554,767,663],{"class":564},[554,769,578],{"class":564},[554,771,772],{"class":581},"findById",[554,774,621],{"class":564},[554,776,663],{"class":564},[554,778,578],{"class":564},[554,780,781],{"class":581},"1.0.0",[554,783,621],{"class":564},[554,785,629],{"class":568},[273,787,789],{"id":788},"cri-interface","CRI Interface",[223,791,541,792,795],{},[238,793,794],{},"CRI"," interface provides methods to access each component:",[231,797,799],{"className":548,"code":798,"language":550,"meta":240,"style":240},"const cri = createCRI('srv:\u002F\u002Ftenant-123@app.acme-org.orders-app~OrderService\u002FplaceOrder#2.0.0')\n\ncri.scheme()        \u002F\u002F 'srv'\ncri.scope()         \u002F\u002F 'tenant-123'\ncri.hasScope()      \u002F\u002F true\ncri.zone()          \u002F\u002F 'app.acme-org.orders-app'\ncri.hasZone()       \u002F\u002F true\ncri.resourceName()  \u002F\u002F 'OrderService'\ncri.path()          \u002F\u002F 'placeOrder'\ncri.hasPath()       \u002F\u002F true\ncri.version()       \u002F\u002F '2.0.0'\ncri.hasVersion()    \u002F\u002F true\ncri.baseResource()  \u002F\u002F 'srv:\u002F\u002Ftenant-123@app.acme-org.orders-app~OrderService'\ncri.raw()           \u002F\u002F 'srv:\u002F\u002Ftenant-123@app.acme-org.orders-app~OrderService\u002FplaceOrder#2.0.0'\n",[238,800,801,823,827,842,856,871,885,899,914,927,940,953,967,981],{"__ignoreMap":240},[554,802,803,805,808,810,812,814,816,819,821],{"class":556,"line":557},[554,804,606],{"class":605},[554,806,807],{"class":568}," cri ",[554,809,612],{"class":564},[554,811,569],{"class":615},[554,813,618],{"class":568},[554,815,621],{"class":564},[554,817,818],{"class":581},"srv:\u002F\u002Ftenant-123@app.acme-org.orders-app~OrderService\u002FplaceOrder#2.0.0",[554,820,621],{"class":564},[554,822,629],{"class":568},[554,824,825],{"class":556,"line":588},[554,826,592],{"emptyLinePlaceholder":591},[554,828,829,832,834,836,839],{"class":556,"line":595},[554,830,831],{"class":568},"cri",[554,833,336],{"class":564},[554,835,275],{"class":615},[554,837,838],{"class":568},"()        ",[554,840,841],{"class":598},"\u002F\u002F 'srv'\n",[554,843,844,846,848,850,853],{"class":556,"line":602},[554,845,831],{"class":568},[554,847,336],{"class":564},[554,849,321],{"class":615},[554,851,852],{"class":568},"()         ",[554,854,855],{"class":598},"\u002F\u002F 'tenant-123'\n",[554,857,858,860,862,865,868],{"class":556,"line":632},[554,859,831],{"class":568},[554,861,336],{"class":564},[554,863,864],{"class":615},"hasScope",[554,866,867],{"class":568},"()      ",[554,869,870],{"class":598},"\u002F\u002F true\n",[554,872,873,875,877,879,882],{"class":556,"line":637},[554,874,831],{"class":568},[554,876,336],{"class":564},[554,878,345],{"class":615},[554,880,881],{"class":568},"()          ",[554,883,884],{"class":598},"\u002F\u002F 'app.acme-org.orders-app'\n",[554,886,887,889,891,894,897],{"class":556,"line":643},[554,888,831],{"class":568},[554,890,336],{"class":564},[554,892,893],{"class":615},"hasZone",[554,895,896],{"class":568},"()       ",[554,898,870],{"class":598},[554,900,901,903,905,908,911],{"class":556,"line":675},[554,902,831],{"class":568},[554,904,336],{"class":564},[554,906,907],{"class":615},"resourceName",[554,909,910],{"class":568},"()  ",[554,912,913],{"class":598},"\u002F\u002F 'OrderService'\n",[554,915,916,918,920,922,924],{"class":556,"line":680},[554,917,831],{"class":568},[554,919,336],{"class":564},[554,921,511],{"class":615},[554,923,881],{"class":568},[554,925,926],{"class":598},"\u002F\u002F 'placeOrder'\n",[554,928,929,931,933,936,938],{"class":556,"line":686},[554,930,831],{"class":568},[554,932,336],{"class":564},[554,934,935],{"class":615},"hasPath",[554,937,896],{"class":568},[554,939,870],{"class":598},[554,941,942,944,946,948,950],{"class":556,"line":726},[554,943,831],{"class":568},[554,945,336],{"class":564},[554,947,524],{"class":615},[554,949,896],{"class":568},[554,951,952],{"class":598},"\u002F\u002F '2.0.0'\n",[554,954,955,957,959,962,965],{"class":556,"line":731},[554,956,831],{"class":568},[554,958,336],{"class":564},[554,960,961],{"class":615},"hasVersion",[554,963,964],{"class":568},"()    ",[554,966,870],{"class":598},[554,968,969,971,973,976,978],{"class":556,"line":737},[554,970,831],{"class":568},[554,972,336],{"class":564},[554,974,975],{"class":615},"baseResource",[554,977,910],{"class":568},[554,979,980],{"class":598},"\u002F\u002F 'srv:\u002F\u002Ftenant-123@app.acme-org.orders-app~OrderService'\n",[554,982,984,986,988,991,994],{"class":556,"line":983},14,[554,985,831],{"class":568},[554,987,336],{"class":564},[554,989,990],{"class":615},"raw",[554,992,993],{"class":568},"()           ",[554,995,996],{"class":598},"\u002F\u002F 'srv:\u002F\u002Ftenant-123@app.acme-org.orders-app~OrderService\u002FplaceOrder#2.0.0'\n",[219,998,1000],{"id":999},"examples","Examples",[281,1002,1003,1011],{},[284,1004,1005],{},[287,1006,1007,1009],{},[290,1008,794],{},[290,1010,294],{},[296,1012,1013,1026,1036,1046,1056,1066,1076],{},[287,1014,1015,1020],{},[301,1016,1017],{},[238,1018,1019],{},"srv:\u002F\u002Fmanagement-api~org.kinotic.management.api.services.security.MemberService",[301,1021,1022,1023,1025],{},"A platform service in the ",[238,1024,395],{}," zone",[287,1027,1028,1033],{},[301,1029,1030],{},[238,1031,1032],{},"srv:\u002F\u002Fapp-api~org.kinotic.persistence.api.services.JsonEntitiesRepository\u002Fsave",[301,1034,1035],{},"A specific method on a platform service",[287,1037,1038,1043],{},[301,1039,1040],{},[238,1041,1042],{},"srv:\u002F\u002Fapp.acme-org.orders-app~OrderService\u002Fcreate#1.0.0",[301,1044,1045],{},"A versioned method on an application's own service",[287,1047,1048,1053],{},[301,1049,1050],{},[238,1051,1052],{},"srv:\u002F\u002Fapp.acme-org.orders-app.billing~InvoiceService",[301,1054,1055],{},"A service in an application-declared sub-zone",[287,1057,1058,1063],{},[301,1059,1060],{},[238,1061,1062],{},"srv:\u002F\u002Fsystem-api~org.kinotic.system.api.services.WorkloadOrchestrationService",[301,1064,1065],{},"A platform-internal service",[287,1067,1068,1073],{},[301,1069,1070],{},[238,1071,1072],{},"stream:\u002F\u002Fapp.acme-org.orders-app~temperature",[301,1074,1075],{},"An application's event stream",[287,1077,1078,1083],{},[301,1079,1080],{},[238,1081,1082],{},"srv:\u002F\u002Fnode1@system-api~kinotic-ai.vm-manager.VmManager",[301,1084,1085],{},"A scoped system service targeting one node",[1087,1088,1089],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":240,"searchDepth":588,"depth":588,"links":1091},[1092,1093,1094,1095,1103,1106],{"id":221,"depth":588,"text":25},{"id":228,"depth":588,"text":229},{"id":250,"depth":588,"text":251},{"id":270,"depth":588,"text":271,"children":1096},[1097,1098,1099,1100,1101,1102],{"id":275,"depth":595,"text":276},{"id":321,"depth":595,"text":322},{"id":345,"depth":595,"text":346},{"id":498,"depth":595,"text":499},{"id":511,"depth":595,"text":512},{"id":524,"depth":595,"text":525},{"id":537,"depth":588,"text":538,"children":1104},[1105],{"id":788,"depth":595,"text":789},{"id":999,"depth":588,"text":1000},"Kinotic Resource Identifier specification.","md",null,{},{"icon":203},{"title":200,"description":1107},"JhK4fBeL5Rw-j62CDFjWKEk8Vz9DAdOg89ibGCmpSMM",[1115,1117],{"title":191,"path":192,"stem":193,"description":1116,"icon":194,"children":-1},"Writing and maintaining migration scripts for Kinotic's internal system indices.",{"title":205,"path":206,"stem":207,"description":1118,"icon":208,"children":-1},"The declarative job framework for long-running platform work.",1788549867270]