[{"data":1,"prerenderedAt":874},["ShallowReactive",2],{"navigation_docs_en":3,"dtpr-schemas-index":287,"-en-icons-urls":295,"-en-icons-urls-surround":869},[4,22,26,30,102,152,174,196,226,278,283],{"title":5,"path":6,"stem":7,"children":8},"Getting started","/en/getting-started","en/1.getting-started/0.index",[9,10,14,18],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"MCP quickstart","/en/getting-started/mcp-quickstart","en/1.getting-started/1.mcp-quickstart",{"title":15,"path":16,"stem":17},"REST quickstart","/en/getting-started/rest-quickstart","en/1.getting-started/2.rest-quickstart",{"title":19,"path":20,"stem":21},"UI quickstart","/en/getting-started/ui-quickstart","en/1.getting-started/3.ui-quickstart",{"title":23,"path":24,"stem":25},"Attribution","/en/attribution","en/10.attribution",{"title":27,"path":28,"stem":29},"Cite DTPR for AI","/en/cite","en/11.cite",{"title":31,"path":32,"stem":33,"children":34},"MCP server","/en/mcp","en/2.mcp/0.index",[35,36,40,44,48,98],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Connecting","/en/mcp/connection","en/2.mcp/1.connection",{"title":41,"path":42,"stem":43},"Envelope","/en/mcp/envelope","en/2.mcp/2.envelope",{"title":45,"path":46,"stem":47},"Resources","/en/mcp/resources","en/2.mcp/3.resources",{"title":49,"path":50,"stem":51,"children":52},"Tools","/en/mcp/tools","en/2.mcp/4.tools/0.index",[53,54,58,62,66,70,74,78,82,86,90,94],{"title":49,"path":50,"stem":51},{"title":55,"path":56,"stem":57},"list_schema_versions","/en/mcp/tools/list-schema-versions","en/2.mcp/4.tools/1.list-schema-versions",{"title":59,"path":60,"stem":61},"MCP tool: resolve_datachain","/en/mcp/tools/resolve-datachain","en/2.mcp/4.tools/10.resolve-datachain",{"title":63,"path":64,"stem":65},"MCP tool: validate_resolved","/en/mcp/tools/validate-resolved","en/2.mcp/4.tools/11.validate-resolved",{"title":67,"path":68,"stem":69},"get_schema","/en/mcp/tools/get-schema","en/2.mcp/4.tools/2.get-schema",{"title":71,"path":72,"stem":73},"list_categories","/en/mcp/tools/list-categories","en/2.mcp/4.tools/3.list-categories",{"title":75,"path":76,"stem":77},"list_elements","/en/mcp/tools/list-elements","en/2.mcp/4.tools/4.list-elements",{"title":79,"path":80,"stem":81},"get_element","/en/mcp/tools/get-element","en/2.mcp/4.tools/5.get-element",{"title":83,"path":84,"stem":85},"get_elements","/en/mcp/tools/get-elements","en/2.mcp/4.tools/6.get-elements",{"title":87,"path":88,"stem":89},"validate_datachain","/en/mcp/tools/validate-datachain","en/2.mcp/4.tools/7.validate-datachain",{"title":91,"path":92,"stem":93},"render_datachain","/en/mcp/tools/render-datachain","en/2.mcp/4.tools/8.render-datachain",{"title":95,"path":96,"stem":97},"get_icon_url","/en/mcp/tools/get-icon-url","en/2.mcp/4.tools/9.get-icon-url",{"title":99,"path":100,"stem":101},"Prompts","/en/mcp/prompts","en/2.mcp/5.prompts",{"title":103,"path":104,"stem":105,"children":106},"REST API (v2)","/en/rest","en/3.rest/0.index",[107,108,112,116,120,124,128,132,136,140,144,148],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111},"GET /schemas","/en/rest/schemas","en/3.rest/1.schemas",{"title":113,"path":114,"stem":115},"POST /schemas/:version/resolve","/en/rest/resolve","en/3.rest/10.resolve",{"title":117,"path":118,"stem":119},"POST /schemas/:version/validate_resolved","/en/rest/validate-resolved","en/3.rest/11.validate-resolved",{"title":121,"path":122,"stem":123},"GET /schemas/:version/manifest","/en/rest/manifest","en/3.rest/2.manifest",{"title":125,"path":126,"stem":127},"GET /schemas/:version/categories","/en/rest/categories","en/3.rest/3.categories",{"title":129,"path":130,"stem":131},"GET /schemas/:version/elements","/en/rest/elements-list","en/3.rest/4.elements-list",{"title":133,"path":134,"stem":135},"GET /schemas/:version/elements/:element_id","/en/rest/element-detail","en/3.rest/5.element-detail",{"title":137,"path":138,"stem":139},"POST /schemas/:version/validate","/en/rest/validate","en/3.rest/6.validate",{"title":141,"path":142,"stem":143},"Icon routes","/en/rest/icons","en/3.rest/7.icons",{"title":145,"path":146,"stem":147},"Pagination & fields","/en/rest/pagination-and-fields","en/3.rest/8.pagination-and-fields",{"title":149,"path":150,"stem":151},"Errors","/en/rest/errors","en/3.rest/9.errors",{"title":153,"path":154,"stem":155,"children":156},"Icon composition","/en/icons","en/4.icons/0.index",[157,158,162,166,170],{"title":153,"path":154,"stem":155},{"title":159,"path":160,"stem":161},"Shapes","/en/icons/shapes","en/4.icons/1.shapes",{"title":163,"path":164,"stem":165},"Symbols","/en/icons/symbols","en/4.icons/2.symbols",{"title":167,"path":168,"stem":169},"Composed variants","/en/icons/composed-variants","en/4.icons/3.composed-variants",{"title":171,"path":172,"stem":173},"URLs","/en/icons/urls","en/4.icons/4.urls",{"title":175,"path":176,"stem":177,"children":178},"@dtpr/ui","/en/ui","en/5.ui/0.index",[179,180,184,188,192],{"title":175,"path":176,"stem":177},{"title":181,"path":182,"stem":183},"@dtpr/ui/core","/en/ui/core","en/5.ui/1.core",{"title":185,"path":186,"stem":187},"@dtpr/ui/vue","/en/ui/vue","en/5.ui/2.vue",{"title":189,"path":190,"stem":191},"@dtpr/ui/html","/en/ui/html","en/5.ui/3.html",{"title":193,"path":194,"stem":195},"Theming","/en/ui/theming","en/5.ui/4.theming",{"title":197,"path":198,"stem":199,"children":200},"Concepts","/en/concepts","en/6.concepts/0.index",[201,202,206,210,214,218,222],{"title":197,"path":198,"stem":199},{"title":203,"path":204,"stem":205},"Datachains","/en/concepts/datachains","en/6.concepts/1.datachains",{"title":207,"path":208,"stem":209},"Elements & categories","/en/concepts/elements-categories","en/6.concepts/2.elements-categories",{"title":211,"path":212,"stem":213},"Versions & releases","/en/concepts/versions-and-releases","en/6.concepts/3.versions-and-releases",{"title":215,"path":216,"stem":217},"Content hash","/en/concepts/content-hash","en/6.concepts/4.content-hash",{"title":219,"path":220,"stem":221},"Shape contract","/en/concepts/shape-contract","en/6.concepts/5.shape-contract",{"title":223,"path":224,"stem":225},"Subchains","/en/concepts/subchains","en/6.concepts/6.subchains",{"title":227,"path":228,"stem":229,"children":230},"Claude plugin","/en/plugin","en/7.plugin/0.index",[231,232,236,270,274],{"title":227,"path":228,"stem":229},{"title":233,"path":234,"stem":235},"Install","/en/plugin/install","en/7.plugin/1.install",{"title":237,"path":238,"stem":239,"children":240},"Skills","/en/plugin/skills","en/7.plugin/2.skills/0.index",[241,242,246,250,254,258,262,266],{"title":237,"path":238,"stem":239},{"title":243,"path":244,"stem":245},"dtpr-describe-system","/en/plugin/skills/describe-system","en/7.plugin/2.skills/1.describe-system",{"title":247,"path":248,"stem":249},"dtpr-datachain-structure","/en/plugin/skills/datachain-structure","en/7.plugin/2.skills/2.datachain-structure",{"title":251,"path":252,"stem":253},"dtpr-category-audit","/en/plugin/skills/category-audit","en/7.plugin/2.skills/3.category-audit",{"title":255,"path":256,"stem":257},"dtpr-element-design","/en/plugin/skills/element-design","en/7.plugin/2.skills/4.element-design",{"title":259,"path":260,"stem":261},"dtpr-symbol-design","/en/plugin/skills/symbol-design","en/7.plugin/2.skills/5.symbol-design",{"title":263,"path":264,"stem":265},"dtpr-translate","/en/plugin/skills/translate","en/7.plugin/2.skills/6.translate",{"title":267,"path":268,"stem":269},"dtpr-comprehension-audit","/en/plugin/skills/comprehension-audit","en/7.plugin/2.skills/7.comprehension-audit",{"title":271,"path":272,"stem":273},"Research corpus","/en/plugin/research-corpus","en/7.plugin/3.research-corpus",{"title":275,"path":276,"stem":277},"Comprehension rubric","/en/plugin/comprehension-rubric","en/7.plugin/4.comprehension-rubric",{"title":49,"path":279,"stem":280,"children":281},"/en/tools","en/8.tools/0.index",[282],{"title":49,"path":279,"stem":280},{"title":284,"path":285,"stem":286},"Changelog","/en/changelog","en/9.changelog",{"ok":288,"versions":289},true,[290],{"id":291,"status":292,"created_at":293,"content_hash":294},"ai@2026-05-06-beta","beta","2026-05-06T20:23:42.963Z","sha256-2d208111b0c597ff2b38cb1c24168799b0a5ff9290203ebf46c4f7c16a0fcb24",{"id":296,"title":171,"body":297,"description":863,"extension":864,"links":865,"meta":866,"navigation":288,"path":172,"seo":867,"stem":173,"__hash__":868},"docs_en/en/4.icons/4.urls.md",{"type":298,"value":299,"toc":855},"minimark",[300,305,310,321,402,409,413,420,473,495,499,510,625,637,641,657,661,677,819,823,851],[301,302,304],"callout",{"type":303},"info","Every composed icon has a single canonical URL. You can always derive it from an element id + an optional variant.",[306,307,309],"h2",{"id":308},"the-layout","The layout",[311,312,317],"pre",{"className":313,"code":315,"language":316},[314],"language-text","/api/v2/schemas/:version/elements/:element_id/icon[.\u003Cvariant>].svg\n","text",[318,319,315],"code",{"__ignoreMap":320},"",[322,323,324,340],"table",{},[325,326,327],"thead",{},[328,329,330,334,337],"tr",{},[331,332,333],"th",{},"Form",[331,335,336],{},"Example",[331,338,339],{},"Maps to",[341,342,343,362,379],"tbody",{},[328,344,345,351,356],{},[346,347,348],"td",{},[318,349,350],{},"icon.svg",[346,352,353],{},[318,354,355],{},"/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example/icon.svg",[346,357,358,361],{},[318,359,360],{},"default"," variant.",[328,363,364,369,374],{},[346,365,366],{},[318,367,368],{},"icon.dark.svg",[346,370,371],{},[318,372,373],{},"/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example/icon.dark.svg",[346,375,376,361],{},[318,377,378],{},"dark",[328,380,381,386,391],{},[346,382,383],{},[318,384,385],{},"icon.\u003Ccontext>.svg",[346,387,388],{},[318,389,390],{},"/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example/icon.commercial.svg",[346,392,393,394,397,398,401],{},"Colored variant whose ",[318,395,396],{},"\u003Ccontext>"," matches a category ",[318,399,400],{},"context.value.id",".",[403,404,405,406,401],"p",{},"Full URL: prefix with ",[318,407,408],{},"https://api.dtpr.io",[306,410,412],{"id":411},"discovering-valid-variants","Discovering valid variants",[403,414,415,416,419],{},"Read the element's ",[318,417,418],{},"icon_variants[]"," array:",[311,421,425],{"className":422,"code":423,"language":424,"meta":320,"style":320},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -s https://api.dtpr.io/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example \\\n  | jq '.element.icon_variants'\n# [ \"default\", \"dark\", \"commercial\", \"civic\" ]\n","bash",[318,426,427,447,466],{"__ignoreMap":320},[428,429,432,436,440,443],"span",{"class":430,"line":431},"line",1,[428,433,435],{"class":434},"sBMFI","curl",[428,437,439],{"class":438},"sfazB"," -s",[428,441,442],{"class":438}," https://api.dtpr.io/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example",[428,444,446],{"class":445},"sTEyZ"," \\\n",[428,448,450,454,457,460,463],{"class":430,"line":449},2,[428,451,453],{"class":452},"sMK4o","  |",[428,455,456],{"class":434}," jq",[428,458,459],{"class":452}," '",[428,461,462],{"class":438},".element.icon_variants",[428,464,465],{"class":452},"'\n",[428,467,469],{"class":430,"line":468},3,[428,470,472],{"class":471},"sHwdD","# [ \"default\", \"dark\", \"commercial\", \"civic\" ]\n",[403,474,475,476,482,483,486,487,490,491,494],{},"Or use ",[477,478,480],"a",{"href":479},"/mcp/tools/get-icon-url",[318,481,95],{}," — it returns both the URL and the full variant list in one call, and emits ",[318,484,485],{},"unknown_variant"," errors with ",[318,488,489],{},"valid_variants"," in ",[318,492,493],{},"fix_hint"," when you ask for an invalid one.",[306,496,498],{"id":497},"validation","Validation",[403,500,501,502,505,506,509],{},"The server rejects ids outside ",[318,503,504],{},"[a-zA-Z0-9_-]"," with HTTP 400 ",[318,507,508],{},"bad_request",":",[311,511,515],{"className":512,"code":513,"language":514,"meta":320,"style":320},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ok\": false,\n  \"errors\": [\n    { \"code\": \"bad_request\", \"message\": \"Invalid element_id '…'.\", \"fix_hint\": \"Use [a-zA-Z0-9_-] only.\" }\n  ]\n}\n","json",[318,516,517,522,539,553,613,619],{"__ignoreMap":320},[428,518,519],{"class":430,"line":431},[428,520,521],{"class":452},"{\n",[428,523,524,527,531,534,536],{"class":430,"line":449},[428,525,526],{"class":452},"  \"",[428,528,530],{"class":529},"spNyl","ok",[428,532,533],{"class":452},"\"",[428,535,509],{"class":452},[428,537,538],{"class":452}," false,\n",[428,540,541,543,546,548,550],{"class":430,"line":468},[428,542,526],{"class":452},[428,544,545],{"class":529},"errors",[428,547,533],{"class":452},[428,549,509],{"class":452},[428,551,552],{"class":452}," [\n",[428,554,556,559,562,564,566,568,570,572,574,577,579,582,584,586,588,591,593,595,597,599,601,603,605,608,610],{"class":430,"line":555},4,[428,557,558],{"class":452},"    {",[428,560,561],{"class":452}," \"",[428,563,318],{"class":434},[428,565,533],{"class":452},[428,567,509],{"class":452},[428,569,561],{"class":452},[428,571,508],{"class":438},[428,573,533],{"class":452},[428,575,576],{"class":452},",",[428,578,561],{"class":452},[428,580,581],{"class":434},"message",[428,583,533],{"class":452},[428,585,509],{"class":452},[428,587,561],{"class":452},[428,589,590],{"class":438},"Invalid element_id '…'.",[428,592,533],{"class":452},[428,594,576],{"class":452},[428,596,561],{"class":452},[428,598,493],{"class":434},[428,600,533],{"class":452},[428,602,509],{"class":452},[428,604,561],{"class":452},[428,606,607],{"class":438},"Use [a-zA-Z0-9_-] only.",[428,609,533],{"class":452},[428,611,612],{"class":452}," }\n",[428,614,616],{"class":430,"line":615},5,[428,617,618],{"class":452},"  ]\n",[428,620,622],{"class":430,"line":621},6,[428,623,624],{"class":452},"}\n",[403,626,627,628,631,632,634,635,401],{},"Unknown version, element, or variant returns HTTP 404 ",[318,629,630],{},"not_found","; the ",[318,633,485],{}," variant includes the valid list in its ",[318,636,493],{},[306,638,640],{"id":639},"fallback","Fallback",[403,642,643,644,647,648,652,653,656],{},"The route first attempts a pre-baked R2 point-read. On miss, it logs an ",[318,645,646],{},"icon_miss_fallback"," structured event and composes the SVG on the fly with the same pure compositor. The response is ",[649,650,651],"strong",{},"byte-identical"," to the pre-baked path — consumers never see a degraded fallback. Only ",[318,654,655],{},"Cache-Control"," max-age differs (60 s on a beta miss versus 3600 s on a beta hit).",[306,658,660],{"id":659},"mcp-equivalent","MCP equivalent",[403,662,663,665,666,669,670,673,674,676],{},[318,664,95],{}," returns the URL as a ",[649,667,668],{},"relative"," string (",[318,671,672],{},"/api/v2/...","). Prefix ",[318,675,408],{}," when fetching.",[311,678,680],{"className":512,"code":679,"language":514,"meta":320,"style":320},"{\n  \"data\": {\n    \"url\": \"/api/v2/schemas/ai@2026-04-16-beta/elements/purpose.example/icon.dark.svg\",\n    \"content_type\": \"image/svg+xml\",\n    \"variant\": \"dark\",\n    \"valid_variants\": [\"default\", \"dark\", \"commercial\", \"civic\"]\n  }\n}\n",[318,681,682,686,700,721,741,760,808,814],{"__ignoreMap":320},[428,683,684],{"class":430,"line":431},[428,685,521],{"class":452},[428,687,688,690,693,695,697],{"class":430,"line":449},[428,689,526],{"class":452},[428,691,692],{"class":529},"data",[428,694,533],{"class":452},[428,696,509],{"class":452},[428,698,699],{"class":452}," {\n",[428,701,702,705,708,710,712,714,716,718],{"class":430,"line":468},[428,703,704],{"class":452},"    \"",[428,706,707],{"class":434},"url",[428,709,533],{"class":452},[428,711,509],{"class":452},[428,713,561],{"class":452},[428,715,373],{"class":438},[428,717,533],{"class":452},[428,719,720],{"class":452},",\n",[428,722,723,725,728,730,732,734,737,739],{"class":430,"line":555},[428,724,704],{"class":452},[428,726,727],{"class":434},"content_type",[428,729,533],{"class":452},[428,731,509],{"class":452},[428,733,561],{"class":452},[428,735,736],{"class":438},"image/svg+xml",[428,738,533],{"class":452},[428,740,720],{"class":452},[428,742,743,745,748,750,752,754,756,758],{"class":430,"line":615},[428,744,704],{"class":452},[428,746,747],{"class":434},"variant",[428,749,533],{"class":452},[428,751,509],{"class":452},[428,753,561],{"class":452},[428,755,378],{"class":438},[428,757,533],{"class":452},[428,759,720],{"class":452},[428,761,762,764,766,768,770,773,775,777,779,781,783,785,787,789,791,794,796,798,800,803,805],{"class":430,"line":621},[428,763,704],{"class":452},[428,765,489],{"class":434},[428,767,533],{"class":452},[428,769,509],{"class":452},[428,771,772],{"class":452}," [",[428,774,533],{"class":452},[428,776,360],{"class":438},[428,778,533],{"class":452},[428,780,576],{"class":452},[428,782,561],{"class":452},[428,784,378],{"class":438},[428,786,533],{"class":452},[428,788,576],{"class":452},[428,790,561],{"class":452},[428,792,793],{"class":438},"commercial",[428,795,533],{"class":452},[428,797,576],{"class":452},[428,799,561],{"class":452},[428,801,802],{"class":438},"civic",[428,804,533],{"class":452},[428,806,807],{"class":452},"]\n",[428,809,811],{"class":430,"line":810},7,[428,812,813],{"class":452},"  }\n",[428,815,817],{"class":430,"line":816},8,[428,818,624],{"class":452},[306,820,822],{"id":821},"see-also","See also",[824,825,826,833,840,845],"ul",{},[827,828,829],"li",{},[477,830,832],{"href":831},"/rest/icons","REST icon routes",[827,834,835],{},[477,836,837,838],{"href":479},"MCP ",[318,839,95],{},[827,841,842],{},[477,843,167],{"href":844},"/icons/composed-variants",[827,846,847],{},[477,848,850],{"href":849},"/rest/errors","REST errors",[852,853,854],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":320,"searchDepth":449,"depth":449,"links":856},[857,858,859,860,861,862],{"id":308,"depth":449,"text":309},{"id":411,"depth":449,"text":412},{"id":497,"depth":449,"text":498},{"id":639,"depth":449,"text":640},{"id":659,"depth":449,"text":660},{"id":821,"depth":449,"text":822},"Derive an icon URL from any (version, element, variant) triple.","md",null,{},{"title":171,"description":863},"837qJNHmAV5g5AkONw-CN-hqfcSrZaTiS9zb-gfKzCU",[870,872],{"title":167,"path":168,"stem":169,"description":871,"children":-1},"default / dark / context-colored variants and the WCAG-inspired innerColor rule.",{"title":175,"path":176,"stem":177,"description":873,"children":-1},"Framework-neutral helpers, Vue components, and SSR HTML renderer for DTPR content.",1779049694278]