[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-sui-walrus-quilts":3,"mdc-sqwkh1-key":31,"related-repo-sui-walrus-quilts":2303,"related-org-sui-walrus-quilts":2396},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":22,"topics":26,"repo":27,"sourceUrl":29,"mdContent":30},"walrus-quilts","batch and manage blobs with Walrus quilts","Walrus quilts for batching many small blobs into a single storage unit. Use when the user needs to store multiple files as a quilt, retrieve individual blobs by QuiltPatchId or identifier, list patches in a quilt, or use quilt HTTP endpoints. Also use when optimizing storage costs for many small blobs. Covers both CLI (store-quilt, read-quilt, list-patches-in-quilt) and HTTP API quilt operations. For regular single-blob storage, see `walrus-cli` or `walrus-http-api`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"sui","Sui (Mysten Labs)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fsui.png","MystenLabs",[13,16,19],{"name":14,"slug":8,"type":15},"Sui","tag",{"name":17,"slug":18,"type":15},"Data Engineering","data-engineering",{"name":20,"slug":21,"type":15},"Storage","storage",1,"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fwalrus-skills","2026-07-16T06:01:55.647364",null,[],{"repoUrl":23,"stars":22,"forks":22,"topics":28,"description":25},[],"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fwalrus-skills\u002Ftree\u002FHEAD\u002Fwalrus-quilts","---\nname: walrus-quilts\ndescription: >\n  Walrus quilts for batching many small blobs into a single storage unit. Use when\n  the user needs to store multiple files as a quilt, retrieve individual blobs by\n  QuiltPatchId or identifier, list patches in a quilt, or use quilt HTTP endpoints.\n  Also use when optimizing storage costs for many small blobs. Covers both CLI\n  (store-quilt, read-quilt, list-patches-in-quilt) and HTTP API quilt operations.\n  For regular single-blob storage, see `walrus-cli` or `walrus-http-api`.\n---\n\n# Walrus Quilts\n\n> **Source constraint:** All information in this skill is sourced from the\n> [Walrus quilt CLI documentation](https:\u002F\u002Fdocs.wal.app\u002Fdocs\u002Fwalrus-client\u002Fquilts) and\n> [quilt HTTP API documentation](https:\u002F\u002Fdocs.wal.app\u002Fdocs\u002Fhttp-api\u002Fquilt-http-apis).\n> When extending this skill, only pull from these sources.\n\nA quilt batches multiple blobs into a single Walrus storage unit, significantly reducing overhead and cost for storing many small files. Individual blobs within a quilt are retrieved by their `QuiltPatchId` or identifier, not their standard `BlobId`.\n\nAll patterns in this skill are derived from:\n- https:\u002F\u002Fdocs.wal.app\u002Fdocs\u002Fwalrus-client\u002Fquilts\n- https:\u002F\u002Fdocs.wal.app\u002Fdocs\u002Fhttp-api\u002Fquilt-http-apis\n\nIf unsure about any quilt operation, fetch the relevant page before answering.\n\n---\n\n## Related skills\n\n| Topic | Skill | Load when |\n|-------|-------|-----------|\n| CLI basics | `walrus-cli` | General CLI installation, configuration, and single-blob operations |\n| HTTP API basics | `walrus-http-api` | Single-blob HTTP store\u002Fread |\n| Blob lifecycle | `walrus-blob-lifecycle` | Extending, deleting, sharing (applies to entire quilts) |\n\n---\n\n## Skill Content\n\n### Key concepts\n\n- **Quilt.** A single Walrus storage unit that contains multiple blobs. On-chain, a quilt is represented as one `Blob` Sui object. Storage cost is based on the total quilt size, not per-blob, which saves overhead for many small files.\n\n- **QuiltPatchId.** A unique ID for each blob within a quilt. It is derived from the quilt contents, so a blob's `QuiltPatchId` changes if the quilt is recreated with different contents. This is not the same as a standard `BlobId`.\n\n- **Identifier.** A human-readable name for a blob within a quilt (for example, the filename). Identifiers must be unique within a quilt and cannot start with `_`. The field name `_metadata` is reserved for Walrus-native metadata.\n\n- **Lifecycle applies to the whole quilt.** You cannot delete, extend, or share individual blobs inside a quilt. Operations like `delete`, `extend`, and `share` apply to the entire quilt.\n\n### CLI: Storing quilts\n\n#### Store from directories with `--paths`\n\n```sh\n# Store all files from a directory recursively\nwalrus store-quilt --epochs 5 --paths .\u002Fmy-assets\u002F\n\n# Store from multiple directories\nwalrus store-quilt --epochs 10 --paths .\u002Fimages\u002F .\u002Fdocuments\u002F .\u002Fdata.json\n```\n\nFilenames become identifiers. All identifiers must be unique within the quilt. Glob patterns are supported.\n\n#### Store with custom identifiers and tags using `--blobs`\n\n```sh\nwalrus store-quilt \\\n  --blobs '{\"path\":\"photo.jpg\",\"identifier\":\"walrus\",\"tags\":{\"color\":\"grey\",\"size\":\"medium\"}}' \\\n         '{\"path\":\"icon.png\",\"identifier\":\"seal\",\"tags\":{\"color\":\"grey\",\"size\":\"small\"}}' \\\n  --epochs 5\n```\n\nIf `identifier` is omitted or `null`, the filename is used.\n\n#### Lifetime options\n\nSame as regular `walrus store`: `--epochs`, `--earliest-expiry-time`, or `--end-epoch`.\n\n### CLI: Reading from quilts\n\n#### Read by identifiers\n\n```sh\nwalrus read-quilt --out .\u002Fdownloads\u002F \\\n  --quilt-id \u003CQUILT_BLOB_ID> --identifiers walrus.jpg another-walrus.jpg\n```\n\n#### Read by tags\n\n```sh\n# Download all blobs tagged with species=cat\nwalrus read-quilt --out .\u002Fdownloads\u002F \\\n  --quilt-id \u003CQUILT_BLOB_ID> --tag species cat\n```\n\n#### Read by QuiltPatchId\n\n```sh\nwalrus read-quilt --out .\u002Fdownloads\u002F \\\n  --quilt-patch-ids \u003CPATCH_ID_1> \u003CPATCH_ID_2>\n```\n\n#### List all patches in a quilt\n\n```sh\nwalrus list-patches-in-quilt \u003CQUILT_BLOB_ID>\n```\n\nReturns all patches with their identifiers and `QuiltPatchId` values.\n\n### HTTP API: Storing quilts\n\nStore quilts via multipart form upload to the publisher:\n\n```sh\n# Store 2 files with custom identifiers\ncurl -X PUT \"$PUBLISHER\u002Fv1\u002Fquilts?epochs=5\" \\\n  -F \"contract-v2=@document.pdf\" \\\n  -F \"logo-2024=@image.png\"\n```\n\nThe form field name becomes the identifier. All regular blob query parameters (`epochs`, `permanent`, `deletable`, `send_object_to`) also work for quilts.\n\n#### Store with Walrus-native metadata tags\n\n```sh\ncurl -X PUT \"$PUBLISHER\u002Fv1\u002Fquilts?epochs=5\" \\\n  -F \"quilt-manual=@document.pdf\" \\\n  -F \"logo-2025=@image.png\" \\\n  -F '_metadata=[\n    {\"identifier\": \"quilt-manual\", \"tags\": {\"creator\": \"walrus\", \"version\": \"1.0\"}},\n    {\"identifier\": \"logo-2025\", \"tags\": {\"type\": \"logo\", \"format\": \"png\"}}\n  ]'\n```\n\n#### Store response\n\nThe response includes the quilt `blobId` and individual `storedQuiltBlobs` with `quiltPatchId` values:\n\n```json\n{\n  \"blobStoreResult\": {\n    \"newlyCreated\": {\n      \"blobObject\": {\n        \"id\": \"0xe6ac...bc02\",\n        \"blobId\": \"6XUOE-Q5-nAXHRifN6n9nomVDtHZQbGuAkW3PjlBuKo\",\n        \"size\": 1782224,\n        \"storage\": { \"startEpoch\": 103, \"endEpoch\": 104, \"storageSize\": 72040000 },\n        \"deletable\": false\n      },\n      \"cost\": 12075000\n    }\n  },\n  \"storedQuiltBlobs\": [\n    { \"identifier\": \"another_walrus.jpg\", \"quiltPatchId\": \"6XUOE-...BAQD...\" },\n    { \"identifier\": \"walrus.jpg\", \"quiltPatchId\": \"6XUOE-...B0AB...\" }\n  ]\n}\n```\n\n### HTTP API: Reading from quilts\n\n```sh\n# Read by QuiltPatchId\ncurl \"$AGGREGATOR\u002Fv1\u002Fblobs\u002Fby-quilt-patch-id\u002F\u003CPATCH_ID>\"\n\n# Read by quilt ID + identifier\ncurl \"$AGGREGATOR\u002Fv1\u002Fblobs\u002Fby-quilt-id\u002F\u003CQUILT_BLOB_ID>\u002Fwalrus.jpg\"\n```\n\nOnly one blob per request is supported currently. Bulk retrieval from a quilt in a single request is not yet available.\n\n#### Response headers\n\nBoth methods return raw blob bytes. Metadata is returned as HTTP headers:\n- `X-Quilt-Patch-Identifier`: The blob's identifier within the quilt\n- `ETag`: The patch ID or quilt ID for caching\n\n### When to use quilts vs individual blobs\n\n| Scenario | Recommendation |\n|----------|---------------|\n| Many small files (\u003C10 MB each) | **Quilt.** Each individual blob has ~64 MB of per-blob metadata overhead. Quilts amortize this across all files. |\n| Lots of small JSON documents | **Quilt.** Individual store calls for tiny blobs are very cost-inefficient. |\n| One large file (>10 MB) | **Individual blob.** No benefit from quilting a single file. |\n| Files that need independent lifecycle | **Individual blobs.** You cannot delete\u002Fextend individual files in a quilt. |\n| Static website assets | **Quilt.** Walrus Sites uses quilts internally for this reason. |\n\nThe per-blob metadata overhead means storing a 1 KB JSON blob individually costs about the same as storing a 64 MB file. Quilts eliminate this by packing everything into one storage unit.\n\n### Rules\n\n1. **Identifiers must be unique within a quilt.** Duplicate identifiers cause the store operation to fail.\n2. **Identifiers cannot start with `_`.** The `_metadata` field name is reserved for Walrus-native metadata.\n3. **Lifecycle operations apply to the entire quilt.** You cannot delete, extend, or share individual blobs inside a quilt.\n4. **QuiltPatchId is not a BlobId.** A blob's `QuiltPatchId` is specific to the quilt it belongs to. The same file content in a different quilt gets a different `QuiltPatchId`.\n5. **Use quilts for many small files.** Quilts reduce per-blob overhead. For a single large file, use regular `walrus store`.\n6. **Content-addressing still applies.** The same quilt content always produces the same quilt blob ID.\n\n### Common mistakes\n\n- **Trying to delete a single blob from a quilt.** You must delete the entire quilt. Individual blobs cannot be removed.\n- **Using a BlobId to read from a quilt.** Blobs within a quilt are identified by `QuiltPatchId` or `identifier`, not standard `BlobId`.\n- **Duplicate filenames across directories.** When using `--paths` with multiple directories, if two files have the same name, the identifiers collide and the store fails.\n- **Expecting bulk HTTP reads.** Currently only one blob per HTTP request is supported for quilt reads.\n- **Storing many small blobs individually instead of as a quilt.** This is the most common cost mistake. Each individual blob incurs ~64 MB of metadata overhead. A batch of 100 small JSON files stored individually costs roughly 100x more than quilting them together.\n",{"data":32,"body":33},{"name":4,"description":6},{"type":34,"children":35},"root",[36,44,80,102,107,128,133,137,144,243,246,252,259,363,369,382,500,505,517,603,624,630,665,671,677,753,759,835,841,906,912,948,960,966,971,1074,1108,1114,1251,1257,1286,1863,1869,1948,1953,1959,1964,1989,1995,2104,2109,2115,2211,2217,2297],{"type":37,"tag":38,"props":39,"children":40},"element","h1",{"id":4},[41],{"type":42,"value":43},"text","Walrus Quilts",{"type":37,"tag":45,"props":46,"children":47},"blockquote",{},[48],{"type":37,"tag":49,"props":50,"children":51},"p",{},[52,58,60,69,71,78],{"type":37,"tag":53,"props":54,"children":55},"strong",{},[56],{"type":42,"value":57},"Source constraint:",{"type":42,"value":59}," All information in this skill is sourced from the\n",{"type":37,"tag":61,"props":62,"children":66},"a",{"href":63,"rel":64},"https:\u002F\u002Fdocs.wal.app\u002Fdocs\u002Fwalrus-client\u002Fquilts",[65],"nofollow",[67],{"type":42,"value":68},"Walrus quilt CLI documentation",{"type":42,"value":70}," and\n",{"type":37,"tag":61,"props":72,"children":75},{"href":73,"rel":74},"https:\u002F\u002Fdocs.wal.app\u002Fdocs\u002Fhttp-api\u002Fquilt-http-apis",[65],[76],{"type":42,"value":77},"quilt HTTP API documentation",{"type":42,"value":79},".\nWhen extending this skill, only pull from these sources.",{"type":37,"tag":49,"props":81,"children":82},{},[83,85,92,94,100],{"type":42,"value":84},"A quilt batches multiple blobs into a single Walrus storage unit, significantly reducing overhead and cost for storing many small files. Individual blobs within a quilt are retrieved by their ",{"type":37,"tag":86,"props":87,"children":89},"code",{"className":88},[],[90],{"type":42,"value":91},"QuiltPatchId",{"type":42,"value":93}," or identifier, not their standard ",{"type":37,"tag":86,"props":95,"children":97},{"className":96},[],[98],{"type":42,"value":99},"BlobId",{"type":42,"value":101},".",{"type":37,"tag":49,"props":103,"children":104},{},[105],{"type":42,"value":106},"All patterns in this skill are derived from:",{"type":37,"tag":108,"props":109,"children":110},"ul",{},[111,120],{"type":37,"tag":112,"props":113,"children":114},"li",{},[115],{"type":37,"tag":61,"props":116,"children":118},{"href":63,"rel":117},[65],[119],{"type":42,"value":63},{"type":37,"tag":112,"props":121,"children":122},{},[123],{"type":37,"tag":61,"props":124,"children":126},{"href":73,"rel":125},[65],[127],{"type":42,"value":73},{"type":37,"tag":49,"props":129,"children":130},{},[131],{"type":42,"value":132},"If unsure about any quilt operation, fetch the relevant page before answering.",{"type":37,"tag":134,"props":135,"children":136},"hr",{},[],{"type":37,"tag":138,"props":139,"children":141},"h2",{"id":140},"related-skills",[142],{"type":42,"value":143},"Related skills",{"type":37,"tag":145,"props":146,"children":147},"table",{},[148,172],{"type":37,"tag":149,"props":150,"children":151},"thead",{},[152],{"type":37,"tag":153,"props":154,"children":155},"tr",{},[156,162,167],{"type":37,"tag":157,"props":158,"children":159},"th",{},[160],{"type":42,"value":161},"Topic",{"type":37,"tag":157,"props":163,"children":164},{},[165],{"type":42,"value":166},"Skill",{"type":37,"tag":157,"props":168,"children":169},{},[170],{"type":42,"value":171},"Load when",{"type":37,"tag":173,"props":174,"children":175},"tbody",{},[176,199,221],{"type":37,"tag":153,"props":177,"children":178},{},[179,185,194],{"type":37,"tag":180,"props":181,"children":182},"td",{},[183],{"type":42,"value":184},"CLI basics",{"type":37,"tag":180,"props":186,"children":187},{},[188],{"type":37,"tag":86,"props":189,"children":191},{"className":190},[],[192],{"type":42,"value":193},"walrus-cli",{"type":37,"tag":180,"props":195,"children":196},{},[197],{"type":42,"value":198},"General CLI installation, configuration, and single-blob operations",{"type":37,"tag":153,"props":200,"children":201},{},[202,207,216],{"type":37,"tag":180,"props":203,"children":204},{},[205],{"type":42,"value":206},"HTTP API basics",{"type":37,"tag":180,"props":208,"children":209},{},[210],{"type":37,"tag":86,"props":211,"children":213},{"className":212},[],[214],{"type":42,"value":215},"walrus-http-api",{"type":37,"tag":180,"props":217,"children":218},{},[219],{"type":42,"value":220},"Single-blob HTTP store\u002Fread",{"type":37,"tag":153,"props":222,"children":223},{},[224,229,238],{"type":37,"tag":180,"props":225,"children":226},{},[227],{"type":42,"value":228},"Blob lifecycle",{"type":37,"tag":180,"props":230,"children":231},{},[232],{"type":37,"tag":86,"props":233,"children":235},{"className":234},[],[236],{"type":42,"value":237},"walrus-blob-lifecycle",{"type":37,"tag":180,"props":239,"children":240},{},[241],{"type":42,"value":242},"Extending, deleting, sharing (applies to entire quilts)",{"type":37,"tag":134,"props":244,"children":245},{},[],{"type":37,"tag":138,"props":247,"children":249},{"id":248},"skill-content",[250],{"type":42,"value":251},"Skill Content",{"type":37,"tag":253,"props":254,"children":256},"h3",{"id":255},"key-concepts",[257],{"type":42,"value":258},"Key concepts",{"type":37,"tag":108,"props":260,"children":261},{},[262,280,303,329],{"type":37,"tag":112,"props":263,"children":264},{},[265,270,272,278],{"type":37,"tag":53,"props":266,"children":267},{},[268],{"type":42,"value":269},"Quilt.",{"type":42,"value":271}," A single Walrus storage unit that contains multiple blobs. On-chain, a quilt is represented as one ",{"type":37,"tag":86,"props":273,"children":275},{"className":274},[],[276],{"type":42,"value":277},"Blob",{"type":42,"value":279}," Sui object. Storage cost is based on the total quilt size, not per-blob, which saves overhead for many small files.",{"type":37,"tag":112,"props":281,"children":282},{},[283,288,290,295,297,302],{"type":37,"tag":53,"props":284,"children":285},{},[286],{"type":42,"value":287},"QuiltPatchId.",{"type":42,"value":289}," A unique ID for each blob within a quilt. It is derived from the quilt contents, so a blob's ",{"type":37,"tag":86,"props":291,"children":293},{"className":292},[],[294],{"type":42,"value":91},{"type":42,"value":296}," changes if the quilt is recreated with different contents. This is not the same as a standard ",{"type":37,"tag":86,"props":298,"children":300},{"className":299},[],[301],{"type":42,"value":99},{"type":42,"value":101},{"type":37,"tag":112,"props":304,"children":305},{},[306,311,313,319,321,327],{"type":37,"tag":53,"props":307,"children":308},{},[309],{"type":42,"value":310},"Identifier.",{"type":42,"value":312}," A human-readable name for a blob within a quilt (for example, the filename). Identifiers must be unique within a quilt and cannot start with ",{"type":37,"tag":86,"props":314,"children":316},{"className":315},[],[317],{"type":42,"value":318},"_",{"type":42,"value":320},". The field name ",{"type":37,"tag":86,"props":322,"children":324},{"className":323},[],[325],{"type":42,"value":326},"_metadata",{"type":42,"value":328}," is reserved for Walrus-native metadata.",{"type":37,"tag":112,"props":330,"children":331},{},[332,337,339,345,347,353,355,361],{"type":37,"tag":53,"props":333,"children":334},{},[335],{"type":42,"value":336},"Lifecycle applies to the whole quilt.",{"type":42,"value":338}," You cannot delete, extend, or share individual blobs inside a quilt. Operations like ",{"type":37,"tag":86,"props":340,"children":342},{"className":341},[],[343],{"type":42,"value":344},"delete",{"type":42,"value":346},", ",{"type":37,"tag":86,"props":348,"children":350},{"className":349},[],[351],{"type":42,"value":352},"extend",{"type":42,"value":354},", and ",{"type":37,"tag":86,"props":356,"children":358},{"className":357},[],[359],{"type":42,"value":360},"share",{"type":42,"value":362}," apply to the entire quilt.",{"type":37,"tag":253,"props":364,"children":366},{"id":365},"cli-storing-quilts",[367],{"type":42,"value":368},"CLI: Storing quilts",{"type":37,"tag":370,"props":371,"children":373},"h4",{"id":372},"store-from-directories-with-paths",[374,376],{"type":42,"value":375},"Store from directories with ",{"type":37,"tag":86,"props":377,"children":379},{"className":378},[],[380],{"type":42,"value":381},"--paths",{"type":37,"tag":383,"props":384,"children":389},"pre",{"className":385,"code":386,"language":387,"meta":388,"style":388},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Store all files from a directory recursively\nwalrus store-quilt --epochs 5 --paths .\u002Fmy-assets\u002F\n\n# Store from multiple directories\nwalrus store-quilt --epochs 10 --paths .\u002Fimages\u002F .\u002Fdocuments\u002F .\u002Fdata.json\n","sh","",[390],{"type":37,"tag":86,"props":391,"children":392},{"__ignoreMap":388},[393,404,441,451,460],{"type":37,"tag":394,"props":395,"children":397},"span",{"class":396,"line":22},"line",[398],{"type":37,"tag":394,"props":399,"children":401},{"style":400},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[402],{"type":42,"value":403},"# Store all files from a directory recursively\n",{"type":37,"tag":394,"props":405,"children":407},{"class":396,"line":406},2,[408,414,420,425,431,436],{"type":37,"tag":394,"props":409,"children":411},{"style":410},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[412],{"type":42,"value":413},"walrus",{"type":37,"tag":394,"props":415,"children":417},{"style":416},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[418],{"type":42,"value":419}," store-quilt",{"type":37,"tag":394,"props":421,"children":422},{"style":416},[423],{"type":42,"value":424}," --epochs",{"type":37,"tag":394,"props":426,"children":428},{"style":427},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[429],{"type":42,"value":430}," 5",{"type":37,"tag":394,"props":432,"children":433},{"style":416},[434],{"type":42,"value":435}," --paths",{"type":37,"tag":394,"props":437,"children":438},{"style":416},[439],{"type":42,"value":440}," .\u002Fmy-assets\u002F\n",{"type":37,"tag":394,"props":442,"children":444},{"class":396,"line":443},3,[445],{"type":37,"tag":394,"props":446,"children":448},{"emptyLinePlaceholder":447},true,[449],{"type":42,"value":450},"\n",{"type":37,"tag":394,"props":452,"children":454},{"class":396,"line":453},4,[455],{"type":37,"tag":394,"props":456,"children":457},{"style":400},[458],{"type":42,"value":459},"# Store from multiple directories\n",{"type":37,"tag":394,"props":461,"children":463},{"class":396,"line":462},5,[464,468,472,476,481,485,490,495],{"type":37,"tag":394,"props":465,"children":466},{"style":410},[467],{"type":42,"value":413},{"type":37,"tag":394,"props":469,"children":470},{"style":416},[471],{"type":42,"value":419},{"type":37,"tag":394,"props":473,"children":474},{"style":416},[475],{"type":42,"value":424},{"type":37,"tag":394,"props":477,"children":478},{"style":427},[479],{"type":42,"value":480}," 10",{"type":37,"tag":394,"props":482,"children":483},{"style":416},[484],{"type":42,"value":435},{"type":37,"tag":394,"props":486,"children":487},{"style":416},[488],{"type":42,"value":489}," .\u002Fimages\u002F",{"type":37,"tag":394,"props":491,"children":492},{"style":416},[493],{"type":42,"value":494}," .\u002Fdocuments\u002F",{"type":37,"tag":394,"props":496,"children":497},{"style":416},[498],{"type":42,"value":499}," .\u002Fdata.json\n",{"type":37,"tag":49,"props":501,"children":502},{},[503],{"type":42,"value":504},"Filenames become identifiers. All identifiers must be unique within the quilt. Glob patterns are supported.",{"type":37,"tag":370,"props":506,"children":508},{"id":507},"store-with-custom-identifiers-and-tags-using-blobs",[509,511],{"type":42,"value":510},"Store with custom identifiers and tags using ",{"type":37,"tag":86,"props":512,"children":514},{"className":513},[],[515],{"type":42,"value":516},"--blobs",{"type":37,"tag":383,"props":518,"children":520},{"className":385,"code":519,"language":387,"meta":388,"style":388},"walrus store-quilt \\\n  --blobs '{\"path\":\"photo.jpg\",\"identifier\":\"walrus\",\"tags\":{\"color\":\"grey\",\"size\":\"medium\"}}' \\\n         '{\"path\":\"icon.png\",\"identifier\":\"seal\",\"tags\":{\"color\":\"grey\",\"size\":\"small\"}}' \\\n  --epochs 5\n",[521],{"type":37,"tag":86,"props":522,"children":523},{"__ignoreMap":388},[524,541,569,590],{"type":37,"tag":394,"props":525,"children":526},{"class":396,"line":22},[527,531,535],{"type":37,"tag":394,"props":528,"children":529},{"style":410},[530],{"type":42,"value":413},{"type":37,"tag":394,"props":532,"children":533},{"style":416},[534],{"type":42,"value":419},{"type":37,"tag":394,"props":536,"children":538},{"style":537},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[539],{"type":42,"value":540}," \\\n",{"type":37,"tag":394,"props":542,"children":543},{"class":396,"line":406},[544,549,555,560,565],{"type":37,"tag":394,"props":545,"children":546},{"style":416},[547],{"type":42,"value":548},"  --blobs",{"type":37,"tag":394,"props":550,"children":552},{"style":551},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[553],{"type":42,"value":554}," '",{"type":37,"tag":394,"props":556,"children":557},{"style":416},[558],{"type":42,"value":559},"{\"path\":\"photo.jpg\",\"identifier\":\"walrus\",\"tags\":{\"color\":\"grey\",\"size\":\"medium\"}}",{"type":37,"tag":394,"props":561,"children":562},{"style":551},[563],{"type":42,"value":564},"'",{"type":37,"tag":394,"props":566,"children":567},{"style":537},[568],{"type":42,"value":540},{"type":37,"tag":394,"props":570,"children":571},{"class":396,"line":443},[572,577,582,586],{"type":37,"tag":394,"props":573,"children":574},{"style":551},[575],{"type":42,"value":576},"         '",{"type":37,"tag":394,"props":578,"children":579},{"style":416},[580],{"type":42,"value":581},"{\"path\":\"icon.png\",\"identifier\":\"seal\",\"tags\":{\"color\":\"grey\",\"size\":\"small\"}}",{"type":37,"tag":394,"props":583,"children":584},{"style":551},[585],{"type":42,"value":564},{"type":37,"tag":394,"props":587,"children":588},{"style":537},[589],{"type":42,"value":540},{"type":37,"tag":394,"props":591,"children":592},{"class":396,"line":453},[593,598],{"type":37,"tag":394,"props":594,"children":595},{"style":416},[596],{"type":42,"value":597},"  --epochs",{"type":37,"tag":394,"props":599,"children":600},{"style":427},[601],{"type":42,"value":602}," 5\n",{"type":37,"tag":49,"props":604,"children":605},{},[606,608,614,616,622],{"type":42,"value":607},"If ",{"type":37,"tag":86,"props":609,"children":611},{"className":610},[],[612],{"type":42,"value":613},"identifier",{"type":42,"value":615}," is omitted or ",{"type":37,"tag":86,"props":617,"children":619},{"className":618},[],[620],{"type":42,"value":621},"null",{"type":42,"value":623},", the filename is used.",{"type":37,"tag":370,"props":625,"children":627},{"id":626},"lifetime-options",[628],{"type":42,"value":629},"Lifetime options",{"type":37,"tag":49,"props":631,"children":632},{},[633,635,641,643,649,650,656,658,664],{"type":42,"value":634},"Same as regular ",{"type":37,"tag":86,"props":636,"children":638},{"className":637},[],[639],{"type":42,"value":640},"walrus store",{"type":42,"value":642},": ",{"type":37,"tag":86,"props":644,"children":646},{"className":645},[],[647],{"type":42,"value":648},"--epochs",{"type":42,"value":346},{"type":37,"tag":86,"props":651,"children":653},{"className":652},[],[654],{"type":42,"value":655},"--earliest-expiry-time",{"type":42,"value":657},", or ",{"type":37,"tag":86,"props":659,"children":661},{"className":660},[],[662],{"type":42,"value":663},"--end-epoch",{"type":42,"value":101},{"type":37,"tag":253,"props":666,"children":668},{"id":667},"cli-reading-from-quilts",[669],{"type":42,"value":670},"CLI: Reading from quilts",{"type":37,"tag":370,"props":672,"children":674},{"id":673},"read-by-identifiers",[675],{"type":42,"value":676},"Read by identifiers",{"type":37,"tag":383,"props":678,"children":680},{"className":385,"code":679,"language":387,"meta":388,"style":388},"walrus read-quilt --out .\u002Fdownloads\u002F \\\n  --quilt-id \u003CQUILT_BLOB_ID> --identifiers walrus.jpg another-walrus.jpg\n",[681],{"type":37,"tag":86,"props":682,"children":683},{"__ignoreMap":388},[684,710],{"type":37,"tag":394,"props":685,"children":686},{"class":396,"line":22},[687,691,696,701,706],{"type":37,"tag":394,"props":688,"children":689},{"style":410},[690],{"type":42,"value":413},{"type":37,"tag":394,"props":692,"children":693},{"style":416},[694],{"type":42,"value":695}," read-quilt",{"type":37,"tag":394,"props":697,"children":698},{"style":416},[699],{"type":42,"value":700}," --out",{"type":37,"tag":394,"props":702,"children":703},{"style":416},[704],{"type":42,"value":705}," .\u002Fdownloads\u002F",{"type":37,"tag":394,"props":707,"children":708},{"style":537},[709],{"type":42,"value":540},{"type":37,"tag":394,"props":711,"children":712},{"class":396,"line":406},[713,718,723,728,733,738,743,748],{"type":37,"tag":394,"props":714,"children":715},{"style":416},[716],{"type":42,"value":717},"  --quilt-id",{"type":37,"tag":394,"props":719,"children":720},{"style":551},[721],{"type":42,"value":722}," \u003C",{"type":37,"tag":394,"props":724,"children":725},{"style":416},[726],{"type":42,"value":727},"QUILT_BLOB_I",{"type":37,"tag":394,"props":729,"children":730},{"style":537},[731],{"type":42,"value":732},"D",{"type":37,"tag":394,"props":734,"children":735},{"style":551},[736],{"type":42,"value":737},">",{"type":37,"tag":394,"props":739,"children":740},{"style":416},[741],{"type":42,"value":742}," --identifiers",{"type":37,"tag":394,"props":744,"children":745},{"style":416},[746],{"type":42,"value":747}," walrus.jpg",{"type":37,"tag":394,"props":749,"children":750},{"style":416},[751],{"type":42,"value":752}," another-walrus.jpg\n",{"type":37,"tag":370,"props":754,"children":756},{"id":755},"read-by-tags",[757],{"type":42,"value":758},"Read by tags",{"type":37,"tag":383,"props":760,"children":762},{"className":385,"code":761,"language":387,"meta":388,"style":388},"# Download all blobs tagged with species=cat\nwalrus read-quilt --out .\u002Fdownloads\u002F \\\n  --quilt-id \u003CQUILT_BLOB_ID> --tag species cat\n",[763],{"type":37,"tag":86,"props":764,"children":765},{"__ignoreMap":388},[766,774,797],{"type":37,"tag":394,"props":767,"children":768},{"class":396,"line":22},[769],{"type":37,"tag":394,"props":770,"children":771},{"style":400},[772],{"type":42,"value":773},"# Download all blobs tagged with species=cat\n",{"type":37,"tag":394,"props":775,"children":776},{"class":396,"line":406},[777,781,785,789,793],{"type":37,"tag":394,"props":778,"children":779},{"style":410},[780],{"type":42,"value":413},{"type":37,"tag":394,"props":782,"children":783},{"style":416},[784],{"type":42,"value":695},{"type":37,"tag":394,"props":786,"children":787},{"style":416},[788],{"type":42,"value":700},{"type":37,"tag":394,"props":790,"children":791},{"style":416},[792],{"type":42,"value":705},{"type":37,"tag":394,"props":794,"children":795},{"style":537},[796],{"type":42,"value":540},{"type":37,"tag":394,"props":798,"children":799},{"class":396,"line":443},[800,804,808,812,816,820,825,830],{"type":37,"tag":394,"props":801,"children":802},{"style":416},[803],{"type":42,"value":717},{"type":37,"tag":394,"props":805,"children":806},{"style":551},[807],{"type":42,"value":722},{"type":37,"tag":394,"props":809,"children":810},{"style":416},[811],{"type":42,"value":727},{"type":37,"tag":394,"props":813,"children":814},{"style":537},[815],{"type":42,"value":732},{"type":37,"tag":394,"props":817,"children":818},{"style":551},[819],{"type":42,"value":737},{"type":37,"tag":394,"props":821,"children":822},{"style":416},[823],{"type":42,"value":824}," --tag",{"type":37,"tag":394,"props":826,"children":827},{"style":416},[828],{"type":42,"value":829}," species",{"type":37,"tag":394,"props":831,"children":832},{"style":416},[833],{"type":42,"value":834}," cat\n",{"type":37,"tag":370,"props":836,"children":838},{"id":837},"read-by-quiltpatchid",[839],{"type":42,"value":840},"Read by QuiltPatchId",{"type":37,"tag":383,"props":842,"children":844},{"className":385,"code":843,"language":387,"meta":388,"style":388},"walrus read-quilt --out .\u002Fdownloads\u002F \\\n  --quilt-patch-ids \u003CPATCH_ID_1> \u003CPATCH_ID_2>\n",[845],{"type":37,"tag":86,"props":846,"children":847},{"__ignoreMap":388},[848,871],{"type":37,"tag":394,"props":849,"children":850},{"class":396,"line":22},[851,855,859,863,867],{"type":37,"tag":394,"props":852,"children":853},{"style":410},[854],{"type":42,"value":413},{"type":37,"tag":394,"props":856,"children":857},{"style":416},[858],{"type":42,"value":695},{"type":37,"tag":394,"props":860,"children":861},{"style":416},[862],{"type":42,"value":700},{"type":37,"tag":394,"props":864,"children":865},{"style":416},[866],{"type":42,"value":705},{"type":37,"tag":394,"props":868,"children":869},{"style":537},[870],{"type":42,"value":540},{"type":37,"tag":394,"props":872,"children":873},{"class":396,"line":406},[874,879,883,888,893,897,901],{"type":37,"tag":394,"props":875,"children":876},{"style":416},[877],{"type":42,"value":878},"  --quilt-patch-ids",{"type":37,"tag":394,"props":880,"children":881},{"style":551},[882],{"type":42,"value":722},{"type":37,"tag":394,"props":884,"children":885},{"style":416},[886],{"type":42,"value":887},"PATCH_ID_",{"type":37,"tag":394,"props":889,"children":890},{"style":551},[891],{"type":42,"value":892},"1>",{"type":37,"tag":394,"props":894,"children":895},{"style":551},[896],{"type":42,"value":722},{"type":37,"tag":394,"props":898,"children":899},{"style":416},[900],{"type":42,"value":887},{"type":37,"tag":394,"props":902,"children":903},{"style":551},[904],{"type":42,"value":905},"2>\n",{"type":37,"tag":370,"props":907,"children":909},{"id":908},"list-all-patches-in-a-quilt",[910],{"type":42,"value":911},"List all patches in a quilt",{"type":37,"tag":383,"props":913,"children":915},{"className":385,"code":914,"language":387,"meta":388,"style":388},"walrus list-patches-in-quilt \u003CQUILT_BLOB_ID>\n",[916],{"type":37,"tag":86,"props":917,"children":918},{"__ignoreMap":388},[919],{"type":37,"tag":394,"props":920,"children":921},{"class":396,"line":22},[922,926,931,935,939,943],{"type":37,"tag":394,"props":923,"children":924},{"style":410},[925],{"type":42,"value":413},{"type":37,"tag":394,"props":927,"children":928},{"style":416},[929],{"type":42,"value":930}," list-patches-in-quilt",{"type":37,"tag":394,"props":932,"children":933},{"style":551},[934],{"type":42,"value":722},{"type":37,"tag":394,"props":936,"children":937},{"style":416},[938],{"type":42,"value":727},{"type":37,"tag":394,"props":940,"children":941},{"style":537},[942],{"type":42,"value":732},{"type":37,"tag":394,"props":944,"children":945},{"style":551},[946],{"type":42,"value":947},">\n",{"type":37,"tag":49,"props":949,"children":950},{},[951,953,958],{"type":42,"value":952},"Returns all patches with their identifiers and ",{"type":37,"tag":86,"props":954,"children":956},{"className":955},[],[957],{"type":42,"value":91},{"type":42,"value":959}," values.",{"type":37,"tag":253,"props":961,"children":963},{"id":962},"http-api-storing-quilts",[964],{"type":42,"value":965},"HTTP API: Storing quilts",{"type":37,"tag":49,"props":967,"children":968},{},[969],{"type":42,"value":970},"Store quilts via multipart form upload to the publisher:",{"type":37,"tag":383,"props":972,"children":974},{"className":385,"code":973,"language":387,"meta":388,"style":388},"# Store 2 files with custom identifiers\ncurl -X PUT \"$PUBLISHER\u002Fv1\u002Fquilts?epochs=5\" \\\n  -F \"contract-v2=@document.pdf\" \\\n  -F \"logo-2024=@image.png\"\n",[975],{"type":37,"tag":86,"props":976,"children":977},{"__ignoreMap":388},[978,986,1028,1053],{"type":37,"tag":394,"props":979,"children":980},{"class":396,"line":22},[981],{"type":37,"tag":394,"props":982,"children":983},{"style":400},[984],{"type":42,"value":985},"# Store 2 files with custom identifiers\n",{"type":37,"tag":394,"props":987,"children":988},{"class":396,"line":406},[989,994,999,1004,1009,1014,1019,1024],{"type":37,"tag":394,"props":990,"children":991},{"style":410},[992],{"type":42,"value":993},"curl",{"type":37,"tag":394,"props":995,"children":996},{"style":416},[997],{"type":42,"value":998}," -X",{"type":37,"tag":394,"props":1000,"children":1001},{"style":416},[1002],{"type":42,"value":1003}," PUT",{"type":37,"tag":394,"props":1005,"children":1006},{"style":551},[1007],{"type":42,"value":1008}," \"",{"type":37,"tag":394,"props":1010,"children":1011},{"style":537},[1012],{"type":42,"value":1013},"$PUBLISHER",{"type":37,"tag":394,"props":1015,"children":1016},{"style":416},[1017],{"type":42,"value":1018},"\u002Fv1\u002Fquilts?epochs=5",{"type":37,"tag":394,"props":1020,"children":1021},{"style":551},[1022],{"type":42,"value":1023},"\"",{"type":37,"tag":394,"props":1025,"children":1026},{"style":537},[1027],{"type":42,"value":540},{"type":37,"tag":394,"props":1029,"children":1030},{"class":396,"line":443},[1031,1036,1040,1045,1049],{"type":37,"tag":394,"props":1032,"children":1033},{"style":416},[1034],{"type":42,"value":1035},"  -F",{"type":37,"tag":394,"props":1037,"children":1038},{"style":551},[1039],{"type":42,"value":1008},{"type":37,"tag":394,"props":1041,"children":1042},{"style":416},[1043],{"type":42,"value":1044},"contract-v2=@document.pdf",{"type":37,"tag":394,"props":1046,"children":1047},{"style":551},[1048],{"type":42,"value":1023},{"type":37,"tag":394,"props":1050,"children":1051},{"style":537},[1052],{"type":42,"value":540},{"type":37,"tag":394,"props":1054,"children":1055},{"class":396,"line":453},[1056,1060,1064,1069],{"type":37,"tag":394,"props":1057,"children":1058},{"style":416},[1059],{"type":42,"value":1035},{"type":37,"tag":394,"props":1061,"children":1062},{"style":551},[1063],{"type":42,"value":1008},{"type":37,"tag":394,"props":1065,"children":1066},{"style":416},[1067],{"type":42,"value":1068},"logo-2024=@image.png",{"type":37,"tag":394,"props":1070,"children":1071},{"style":551},[1072],{"type":42,"value":1073},"\"\n",{"type":37,"tag":49,"props":1075,"children":1076},{},[1077,1079,1085,1086,1092,1093,1099,1100,1106],{"type":42,"value":1078},"The form field name becomes the identifier. All regular blob query parameters (",{"type":37,"tag":86,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":42,"value":1084},"epochs",{"type":42,"value":346},{"type":37,"tag":86,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":42,"value":1091},"permanent",{"type":42,"value":346},{"type":37,"tag":86,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":42,"value":1098},"deletable",{"type":42,"value":346},{"type":37,"tag":86,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":42,"value":1105},"send_object_to",{"type":42,"value":1107},") also work for quilts.",{"type":37,"tag":370,"props":1109,"children":1111},{"id":1110},"store-with-walrus-native-metadata-tags",[1112],{"type":42,"value":1113},"Store with Walrus-native metadata tags",{"type":37,"tag":383,"props":1115,"children":1117},{"className":385,"code":1116,"language":387,"meta":388,"style":388},"curl -X PUT \"$PUBLISHER\u002Fv1\u002Fquilts?epochs=5\" \\\n  -F \"quilt-manual=@document.pdf\" \\\n  -F \"logo-2025=@image.png\" \\\n  -F '_metadata=[\n    {\"identifier\": \"quilt-manual\", \"tags\": {\"creator\": \"walrus\", \"version\": \"1.0\"}},\n    {\"identifier\": \"logo-2025\", \"tags\": {\"type\": \"logo\", \"format\": \"png\"}}\n  ]'\n",[1118],{"type":37,"tag":86,"props":1119,"children":1120},{"__ignoreMap":388},[1121,1156,1180,1204,1220,1228,1237],{"type":37,"tag":394,"props":1122,"children":1123},{"class":396,"line":22},[1124,1128,1132,1136,1140,1144,1148,1152],{"type":37,"tag":394,"props":1125,"children":1126},{"style":410},[1127],{"type":42,"value":993},{"type":37,"tag":394,"props":1129,"children":1130},{"style":416},[1131],{"type":42,"value":998},{"type":37,"tag":394,"props":1133,"children":1134},{"style":416},[1135],{"type":42,"value":1003},{"type":37,"tag":394,"props":1137,"children":1138},{"style":551},[1139],{"type":42,"value":1008},{"type":37,"tag":394,"props":1141,"children":1142},{"style":537},[1143],{"type":42,"value":1013},{"type":37,"tag":394,"props":1145,"children":1146},{"style":416},[1147],{"type":42,"value":1018},{"type":37,"tag":394,"props":1149,"children":1150},{"style":551},[1151],{"type":42,"value":1023},{"type":37,"tag":394,"props":1153,"children":1154},{"style":537},[1155],{"type":42,"value":540},{"type":37,"tag":394,"props":1157,"children":1158},{"class":396,"line":406},[1159,1163,1167,1172,1176],{"type":37,"tag":394,"props":1160,"children":1161},{"style":416},[1162],{"type":42,"value":1035},{"type":37,"tag":394,"props":1164,"children":1165},{"style":551},[1166],{"type":42,"value":1008},{"type":37,"tag":394,"props":1168,"children":1169},{"style":416},[1170],{"type":42,"value":1171},"quilt-manual=@document.pdf",{"type":37,"tag":394,"props":1173,"children":1174},{"style":551},[1175],{"type":42,"value":1023},{"type":37,"tag":394,"props":1177,"children":1178},{"style":537},[1179],{"type":42,"value":540},{"type":37,"tag":394,"props":1181,"children":1182},{"class":396,"line":443},[1183,1187,1191,1196,1200],{"type":37,"tag":394,"props":1184,"children":1185},{"style":416},[1186],{"type":42,"value":1035},{"type":37,"tag":394,"props":1188,"children":1189},{"style":551},[1190],{"type":42,"value":1008},{"type":37,"tag":394,"props":1192,"children":1193},{"style":416},[1194],{"type":42,"value":1195},"logo-2025=@image.png",{"type":37,"tag":394,"props":1197,"children":1198},{"style":551},[1199],{"type":42,"value":1023},{"type":37,"tag":394,"props":1201,"children":1202},{"style":537},[1203],{"type":42,"value":540},{"type":37,"tag":394,"props":1205,"children":1206},{"class":396,"line":453},[1207,1211,1215],{"type":37,"tag":394,"props":1208,"children":1209},{"style":416},[1210],{"type":42,"value":1035},{"type":37,"tag":394,"props":1212,"children":1213},{"style":551},[1214],{"type":42,"value":554},{"type":37,"tag":394,"props":1216,"children":1217},{"style":416},[1218],{"type":42,"value":1219},"_metadata=[\n",{"type":37,"tag":394,"props":1221,"children":1222},{"class":396,"line":462},[1223],{"type":37,"tag":394,"props":1224,"children":1225},{"style":416},[1226],{"type":42,"value":1227},"    {\"identifier\": \"quilt-manual\", \"tags\": {\"creator\": \"walrus\", \"version\": \"1.0\"}},\n",{"type":37,"tag":394,"props":1229,"children":1231},{"class":396,"line":1230},6,[1232],{"type":37,"tag":394,"props":1233,"children":1234},{"style":416},[1235],{"type":42,"value":1236},"    {\"identifier\": \"logo-2025\", \"tags\": {\"type\": \"logo\", \"format\": \"png\"}}\n",{"type":37,"tag":394,"props":1238,"children":1240},{"class":396,"line":1239},7,[1241,1246],{"type":37,"tag":394,"props":1242,"children":1243},{"style":416},[1244],{"type":42,"value":1245},"  ]",{"type":37,"tag":394,"props":1247,"children":1248},{"style":551},[1249],{"type":42,"value":1250},"'\n",{"type":37,"tag":370,"props":1252,"children":1254},{"id":1253},"store-response",[1255],{"type":42,"value":1256},"Store response",{"type":37,"tag":49,"props":1258,"children":1259},{},[1260,1262,1268,1270,1276,1278,1284],{"type":42,"value":1261},"The response includes the quilt ",{"type":37,"tag":86,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":42,"value":1267},"blobId",{"type":42,"value":1269}," and individual ",{"type":37,"tag":86,"props":1271,"children":1273},{"className":1272},[],[1274],{"type":42,"value":1275},"storedQuiltBlobs",{"type":42,"value":1277}," with ",{"type":37,"tag":86,"props":1279,"children":1281},{"className":1280},[],[1282],{"type":42,"value":1283},"quiltPatchId",{"type":42,"value":1285}," values:",{"type":37,"tag":383,"props":1287,"children":1291},{"className":1288,"code":1289,"language":1290,"meta":388,"style":388},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"blobStoreResult\": {\n    \"newlyCreated\": {\n      \"blobObject\": {\n        \"id\": \"0xe6ac...bc02\",\n        \"blobId\": \"6XUOE-Q5-nAXHRifN6n9nomVDtHZQbGuAkW3PjlBuKo\",\n        \"size\": 1782224,\n        \"storage\": { \"startEpoch\": 103, \"endEpoch\": 104, \"storageSize\": 72040000 },\n        \"deletable\": false\n      },\n      \"cost\": 12075000\n    }\n  },\n  \"storedQuiltBlobs\": [\n    { \"identifier\": \"another_walrus.jpg\", \"quiltPatchId\": \"6XUOE-...BAQD...\" },\n    { \"identifier\": \"walrus.jpg\", \"quiltPatchId\": \"6XUOE-...B0AB...\" }\n  ]\n}\n","json",[1292],{"type":37,"tag":86,"props":1293,"children":1294},{"__ignoreMap":388},[1295,1303,1331,1356,1381,1421,1457,1486,1592,1617,1626,1652,1661,1670,1695,1770,1845,1854],{"type":37,"tag":394,"props":1296,"children":1297},{"class":396,"line":22},[1298],{"type":37,"tag":394,"props":1299,"children":1300},{"style":551},[1301],{"type":42,"value":1302},"{\n",{"type":37,"tag":394,"props":1304,"children":1305},{"class":396,"line":406},[1306,1311,1317,1321,1326],{"type":37,"tag":394,"props":1307,"children":1308},{"style":551},[1309],{"type":42,"value":1310},"  \"",{"type":37,"tag":394,"props":1312,"children":1314},{"style":1313},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1315],{"type":42,"value":1316},"blobStoreResult",{"type":37,"tag":394,"props":1318,"children":1319},{"style":551},[1320],{"type":42,"value":1023},{"type":37,"tag":394,"props":1322,"children":1323},{"style":551},[1324],{"type":42,"value":1325},":",{"type":37,"tag":394,"props":1327,"children":1328},{"style":551},[1329],{"type":42,"value":1330}," {\n",{"type":37,"tag":394,"props":1332,"children":1333},{"class":396,"line":443},[1334,1339,1344,1348,1352],{"type":37,"tag":394,"props":1335,"children":1336},{"style":551},[1337],{"type":42,"value":1338},"    \"",{"type":37,"tag":394,"props":1340,"children":1341},{"style":410},[1342],{"type":42,"value":1343},"newlyCreated",{"type":37,"tag":394,"props":1345,"children":1346},{"style":551},[1347],{"type":42,"value":1023},{"type":37,"tag":394,"props":1349,"children":1350},{"style":551},[1351],{"type":42,"value":1325},{"type":37,"tag":394,"props":1353,"children":1354},{"style":551},[1355],{"type":42,"value":1330},{"type":37,"tag":394,"props":1357,"children":1358},{"class":396,"line":453},[1359,1364,1369,1373,1377],{"type":37,"tag":394,"props":1360,"children":1361},{"style":551},[1362],{"type":42,"value":1363},"      \"",{"type":37,"tag":394,"props":1365,"children":1366},{"style":427},[1367],{"type":42,"value":1368},"blobObject",{"type":37,"tag":394,"props":1370,"children":1371},{"style":551},[1372],{"type":42,"value":1023},{"type":37,"tag":394,"props":1374,"children":1375},{"style":551},[1376],{"type":42,"value":1325},{"type":37,"tag":394,"props":1378,"children":1379},{"style":551},[1380],{"type":42,"value":1330},{"type":37,"tag":394,"props":1382,"children":1383},{"class":396,"line":462},[1384,1389,1395,1399,1403,1407,1412,1416],{"type":37,"tag":394,"props":1385,"children":1386},{"style":551},[1387],{"type":42,"value":1388},"        \"",{"type":37,"tag":394,"props":1390,"children":1392},{"style":1391},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1393],{"type":42,"value":1394},"id",{"type":37,"tag":394,"props":1396,"children":1397},{"style":551},[1398],{"type":42,"value":1023},{"type":37,"tag":394,"props":1400,"children":1401},{"style":551},[1402],{"type":42,"value":1325},{"type":37,"tag":394,"props":1404,"children":1405},{"style":551},[1406],{"type":42,"value":1008},{"type":37,"tag":394,"props":1408,"children":1409},{"style":416},[1410],{"type":42,"value":1411},"0xe6ac...bc02",{"type":37,"tag":394,"props":1413,"children":1414},{"style":551},[1415],{"type":42,"value":1023},{"type":37,"tag":394,"props":1417,"children":1418},{"style":551},[1419],{"type":42,"value":1420},",\n",{"type":37,"tag":394,"props":1422,"children":1423},{"class":396,"line":1230},[1424,1428,1432,1436,1440,1444,1449,1453],{"type":37,"tag":394,"props":1425,"children":1426},{"style":551},[1427],{"type":42,"value":1388},{"type":37,"tag":394,"props":1429,"children":1430},{"style":1391},[1431],{"type":42,"value":1267},{"type":37,"tag":394,"props":1433,"children":1434},{"style":551},[1435],{"type":42,"value":1023},{"type":37,"tag":394,"props":1437,"children":1438},{"style":551},[1439],{"type":42,"value":1325},{"type":37,"tag":394,"props":1441,"children":1442},{"style":551},[1443],{"type":42,"value":1008},{"type":37,"tag":394,"props":1445,"children":1446},{"style":416},[1447],{"type":42,"value":1448},"6XUOE-Q5-nAXHRifN6n9nomVDtHZQbGuAkW3PjlBuKo",{"type":37,"tag":394,"props":1450,"children":1451},{"style":551},[1452],{"type":42,"value":1023},{"type":37,"tag":394,"props":1454,"children":1455},{"style":551},[1456],{"type":42,"value":1420},{"type":37,"tag":394,"props":1458,"children":1459},{"class":396,"line":1239},[1460,1464,1469,1473,1477,1482],{"type":37,"tag":394,"props":1461,"children":1462},{"style":551},[1463],{"type":42,"value":1388},{"type":37,"tag":394,"props":1465,"children":1466},{"style":1391},[1467],{"type":42,"value":1468},"size",{"type":37,"tag":394,"props":1470,"children":1471},{"style":551},[1472],{"type":42,"value":1023},{"type":37,"tag":394,"props":1474,"children":1475},{"style":551},[1476],{"type":42,"value":1325},{"type":37,"tag":394,"props":1478,"children":1479},{"style":427},[1480],{"type":42,"value":1481}," 1782224",{"type":37,"tag":394,"props":1483,"children":1484},{"style":551},[1485],{"type":42,"value":1420},{"type":37,"tag":394,"props":1487,"children":1489},{"class":396,"line":1488},8,[1490,1494,1498,1502,1506,1511,1515,1521,1525,1529,1534,1539,1543,1548,1552,1556,1561,1565,1569,1574,1578,1582,1587],{"type":37,"tag":394,"props":1491,"children":1492},{"style":551},[1493],{"type":42,"value":1388},{"type":37,"tag":394,"props":1495,"children":1496},{"style":1391},[1497],{"type":42,"value":21},{"type":37,"tag":394,"props":1499,"children":1500},{"style":551},[1501],{"type":42,"value":1023},{"type":37,"tag":394,"props":1503,"children":1504},{"style":551},[1505],{"type":42,"value":1325},{"type":37,"tag":394,"props":1507,"children":1508},{"style":551},[1509],{"type":42,"value":1510}," {",{"type":37,"tag":394,"props":1512,"children":1513},{"style":551},[1514],{"type":42,"value":1008},{"type":37,"tag":394,"props":1516,"children":1518},{"style":1517},"--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53",[1519],{"type":42,"value":1520},"startEpoch",{"type":37,"tag":394,"props":1522,"children":1523},{"style":551},[1524],{"type":42,"value":1023},{"type":37,"tag":394,"props":1526,"children":1527},{"style":551},[1528],{"type":42,"value":1325},{"type":37,"tag":394,"props":1530,"children":1531},{"style":427},[1532],{"type":42,"value":1533}," 103",{"type":37,"tag":394,"props":1535,"children":1536},{"style":551},[1537],{"type":42,"value":1538},",",{"type":37,"tag":394,"props":1540,"children":1541},{"style":551},[1542],{"type":42,"value":1008},{"type":37,"tag":394,"props":1544,"children":1545},{"style":1517},[1546],{"type":42,"value":1547},"endEpoch",{"type":37,"tag":394,"props":1549,"children":1550},{"style":551},[1551],{"type":42,"value":1023},{"type":37,"tag":394,"props":1553,"children":1554},{"style":551},[1555],{"type":42,"value":1325},{"type":37,"tag":394,"props":1557,"children":1558},{"style":427},[1559],{"type":42,"value":1560}," 104",{"type":37,"tag":394,"props":1562,"children":1563},{"style":551},[1564],{"type":42,"value":1538},{"type":37,"tag":394,"props":1566,"children":1567},{"style":551},[1568],{"type":42,"value":1008},{"type":37,"tag":394,"props":1570,"children":1571},{"style":1517},[1572],{"type":42,"value":1573},"storageSize",{"type":37,"tag":394,"props":1575,"children":1576},{"style":551},[1577],{"type":42,"value":1023},{"type":37,"tag":394,"props":1579,"children":1580},{"style":551},[1581],{"type":42,"value":1325},{"type":37,"tag":394,"props":1583,"children":1584},{"style":427},[1585],{"type":42,"value":1586}," 72040000",{"type":37,"tag":394,"props":1588,"children":1589},{"style":551},[1590],{"type":42,"value":1591}," },\n",{"type":37,"tag":394,"props":1593,"children":1595},{"class":396,"line":1594},9,[1596,1600,1604,1608,1612],{"type":37,"tag":394,"props":1597,"children":1598},{"style":551},[1599],{"type":42,"value":1388},{"type":37,"tag":394,"props":1601,"children":1602},{"style":1391},[1603],{"type":42,"value":1098},{"type":37,"tag":394,"props":1605,"children":1606},{"style":551},[1607],{"type":42,"value":1023},{"type":37,"tag":394,"props":1609,"children":1610},{"style":551},[1611],{"type":42,"value":1325},{"type":37,"tag":394,"props":1613,"children":1614},{"style":551},[1615],{"type":42,"value":1616}," false\n",{"type":37,"tag":394,"props":1618,"children":1620},{"class":396,"line":1619},10,[1621],{"type":37,"tag":394,"props":1622,"children":1623},{"style":551},[1624],{"type":42,"value":1625},"      },\n",{"type":37,"tag":394,"props":1627,"children":1629},{"class":396,"line":1628},11,[1630,1634,1639,1643,1647],{"type":37,"tag":394,"props":1631,"children":1632},{"style":551},[1633],{"type":42,"value":1363},{"type":37,"tag":394,"props":1635,"children":1636},{"style":427},[1637],{"type":42,"value":1638},"cost",{"type":37,"tag":394,"props":1640,"children":1641},{"style":551},[1642],{"type":42,"value":1023},{"type":37,"tag":394,"props":1644,"children":1645},{"style":551},[1646],{"type":42,"value":1325},{"type":37,"tag":394,"props":1648,"children":1649},{"style":427},[1650],{"type":42,"value":1651}," 12075000\n",{"type":37,"tag":394,"props":1653,"children":1655},{"class":396,"line":1654},12,[1656],{"type":37,"tag":394,"props":1657,"children":1658},{"style":551},[1659],{"type":42,"value":1660},"    }\n",{"type":37,"tag":394,"props":1662,"children":1664},{"class":396,"line":1663},13,[1665],{"type":37,"tag":394,"props":1666,"children":1667},{"style":551},[1668],{"type":42,"value":1669},"  },\n",{"type":37,"tag":394,"props":1671,"children":1673},{"class":396,"line":1672},14,[1674,1678,1682,1686,1690],{"type":37,"tag":394,"props":1675,"children":1676},{"style":551},[1677],{"type":42,"value":1310},{"type":37,"tag":394,"props":1679,"children":1680},{"style":1313},[1681],{"type":42,"value":1275},{"type":37,"tag":394,"props":1683,"children":1684},{"style":551},[1685],{"type":42,"value":1023},{"type":37,"tag":394,"props":1687,"children":1688},{"style":551},[1689],{"type":42,"value":1325},{"type":37,"tag":394,"props":1691,"children":1692},{"style":551},[1693],{"type":42,"value":1694}," [\n",{"type":37,"tag":394,"props":1696,"children":1698},{"class":396,"line":1697},15,[1699,1704,1708,1712,1716,1720,1724,1729,1733,1737,1741,1745,1749,1753,1757,1762,1766],{"type":37,"tag":394,"props":1700,"children":1701},{"style":551},[1702],{"type":42,"value":1703},"    {",{"type":37,"tag":394,"props":1705,"children":1706},{"style":551},[1707],{"type":42,"value":1008},{"type":37,"tag":394,"props":1709,"children":1710},{"style":410},[1711],{"type":42,"value":613},{"type":37,"tag":394,"props":1713,"children":1714},{"style":551},[1715],{"type":42,"value":1023},{"type":37,"tag":394,"props":1717,"children":1718},{"style":551},[1719],{"type":42,"value":1325},{"type":37,"tag":394,"props":1721,"children":1722},{"style":551},[1723],{"type":42,"value":1008},{"type":37,"tag":394,"props":1725,"children":1726},{"style":416},[1727],{"type":42,"value":1728},"another_walrus.jpg",{"type":37,"tag":394,"props":1730,"children":1731},{"style":551},[1732],{"type":42,"value":1023},{"type":37,"tag":394,"props":1734,"children":1735},{"style":551},[1736],{"type":42,"value":1538},{"type":37,"tag":394,"props":1738,"children":1739},{"style":551},[1740],{"type":42,"value":1008},{"type":37,"tag":394,"props":1742,"children":1743},{"style":410},[1744],{"type":42,"value":1283},{"type":37,"tag":394,"props":1746,"children":1747},{"style":551},[1748],{"type":42,"value":1023},{"type":37,"tag":394,"props":1750,"children":1751},{"style":551},[1752],{"type":42,"value":1325},{"type":37,"tag":394,"props":1754,"children":1755},{"style":551},[1756],{"type":42,"value":1008},{"type":37,"tag":394,"props":1758,"children":1759},{"style":416},[1760],{"type":42,"value":1761},"6XUOE-...BAQD...",{"type":37,"tag":394,"props":1763,"children":1764},{"style":551},[1765],{"type":42,"value":1023},{"type":37,"tag":394,"props":1767,"children":1768},{"style":551},[1769],{"type":42,"value":1591},{"type":37,"tag":394,"props":1771,"children":1773},{"class":396,"line":1772},16,[1774,1778,1782,1786,1790,1794,1798,1803,1807,1811,1815,1819,1823,1827,1831,1836,1840],{"type":37,"tag":394,"props":1775,"children":1776},{"style":551},[1777],{"type":42,"value":1703},{"type":37,"tag":394,"props":1779,"children":1780},{"style":551},[1781],{"type":42,"value":1008},{"type":37,"tag":394,"props":1783,"children":1784},{"style":410},[1785],{"type":42,"value":613},{"type":37,"tag":394,"props":1787,"children":1788},{"style":551},[1789],{"type":42,"value":1023},{"type":37,"tag":394,"props":1791,"children":1792},{"style":551},[1793],{"type":42,"value":1325},{"type":37,"tag":394,"props":1795,"children":1796},{"style":551},[1797],{"type":42,"value":1008},{"type":37,"tag":394,"props":1799,"children":1800},{"style":416},[1801],{"type":42,"value":1802},"walrus.jpg",{"type":37,"tag":394,"props":1804,"children":1805},{"style":551},[1806],{"type":42,"value":1023},{"type":37,"tag":394,"props":1808,"children":1809},{"style":551},[1810],{"type":42,"value":1538},{"type":37,"tag":394,"props":1812,"children":1813},{"style":551},[1814],{"type":42,"value":1008},{"type":37,"tag":394,"props":1816,"children":1817},{"style":410},[1818],{"type":42,"value":1283},{"type":37,"tag":394,"props":1820,"children":1821},{"style":551},[1822],{"type":42,"value":1023},{"type":37,"tag":394,"props":1824,"children":1825},{"style":551},[1826],{"type":42,"value":1325},{"type":37,"tag":394,"props":1828,"children":1829},{"style":551},[1830],{"type":42,"value":1008},{"type":37,"tag":394,"props":1832,"children":1833},{"style":416},[1834],{"type":42,"value":1835},"6XUOE-...B0AB...",{"type":37,"tag":394,"props":1837,"children":1838},{"style":551},[1839],{"type":42,"value":1023},{"type":37,"tag":394,"props":1841,"children":1842},{"style":551},[1843],{"type":42,"value":1844}," }\n",{"type":37,"tag":394,"props":1846,"children":1848},{"class":396,"line":1847},17,[1849],{"type":37,"tag":394,"props":1850,"children":1851},{"style":551},[1852],{"type":42,"value":1853},"  ]\n",{"type":37,"tag":394,"props":1855,"children":1857},{"class":396,"line":1856},18,[1858],{"type":37,"tag":394,"props":1859,"children":1860},{"style":551},[1861],{"type":42,"value":1862},"}\n",{"type":37,"tag":253,"props":1864,"children":1866},{"id":1865},"http-api-reading-from-quilts",[1867],{"type":42,"value":1868},"HTTP API: Reading from quilts",{"type":37,"tag":383,"props":1870,"children":1872},{"className":385,"code":1871,"language":387,"meta":388,"style":388},"# Read by QuiltPatchId\ncurl \"$AGGREGATOR\u002Fv1\u002Fblobs\u002Fby-quilt-patch-id\u002F\u003CPATCH_ID>\"\n\n# Read by quilt ID + identifier\ncurl \"$AGGREGATOR\u002Fv1\u002Fblobs\u002Fby-quilt-id\u002F\u003CQUILT_BLOB_ID>\u002Fwalrus.jpg\"\n",[1873],{"type":37,"tag":86,"props":1874,"children":1875},{"__ignoreMap":388},[1876,1884,1909,1916,1924],{"type":37,"tag":394,"props":1877,"children":1878},{"class":396,"line":22},[1879],{"type":37,"tag":394,"props":1880,"children":1881},{"style":400},[1882],{"type":42,"value":1883},"# Read by QuiltPatchId\n",{"type":37,"tag":394,"props":1885,"children":1886},{"class":396,"line":406},[1887,1891,1895,1900,1905],{"type":37,"tag":394,"props":1888,"children":1889},{"style":410},[1890],{"type":42,"value":993},{"type":37,"tag":394,"props":1892,"children":1893},{"style":551},[1894],{"type":42,"value":1008},{"type":37,"tag":394,"props":1896,"children":1897},{"style":537},[1898],{"type":42,"value":1899},"$AGGREGATOR",{"type":37,"tag":394,"props":1901,"children":1902},{"style":416},[1903],{"type":42,"value":1904},"\u002Fv1\u002Fblobs\u002Fby-quilt-patch-id\u002F\u003CPATCH_ID>",{"type":37,"tag":394,"props":1906,"children":1907},{"style":551},[1908],{"type":42,"value":1073},{"type":37,"tag":394,"props":1910,"children":1911},{"class":396,"line":443},[1912],{"type":37,"tag":394,"props":1913,"children":1914},{"emptyLinePlaceholder":447},[1915],{"type":42,"value":450},{"type":37,"tag":394,"props":1917,"children":1918},{"class":396,"line":453},[1919],{"type":37,"tag":394,"props":1920,"children":1921},{"style":400},[1922],{"type":42,"value":1923},"# Read by quilt ID + identifier\n",{"type":37,"tag":394,"props":1925,"children":1926},{"class":396,"line":462},[1927,1931,1935,1939,1944],{"type":37,"tag":394,"props":1928,"children":1929},{"style":410},[1930],{"type":42,"value":993},{"type":37,"tag":394,"props":1932,"children":1933},{"style":551},[1934],{"type":42,"value":1008},{"type":37,"tag":394,"props":1936,"children":1937},{"style":537},[1938],{"type":42,"value":1899},{"type":37,"tag":394,"props":1940,"children":1941},{"style":416},[1942],{"type":42,"value":1943},"\u002Fv1\u002Fblobs\u002Fby-quilt-id\u002F\u003CQUILT_BLOB_ID>\u002Fwalrus.jpg",{"type":37,"tag":394,"props":1945,"children":1946},{"style":551},[1947],{"type":42,"value":1073},{"type":37,"tag":49,"props":1949,"children":1950},{},[1951],{"type":42,"value":1952},"Only one blob per request is supported currently. Bulk retrieval from a quilt in a single request is not yet available.",{"type":37,"tag":370,"props":1954,"children":1956},{"id":1955},"response-headers",[1957],{"type":42,"value":1958},"Response headers",{"type":37,"tag":49,"props":1960,"children":1961},{},[1962],{"type":42,"value":1963},"Both methods return raw blob bytes. Metadata is returned as HTTP headers:",{"type":37,"tag":108,"props":1965,"children":1966},{},[1967,1978],{"type":37,"tag":112,"props":1968,"children":1969},{},[1970,1976],{"type":37,"tag":86,"props":1971,"children":1973},{"className":1972},[],[1974],{"type":42,"value":1975},"X-Quilt-Patch-Identifier",{"type":42,"value":1977},": The blob's identifier within the quilt",{"type":37,"tag":112,"props":1979,"children":1980},{},[1981,1987],{"type":37,"tag":86,"props":1982,"children":1984},{"className":1983},[],[1985],{"type":42,"value":1986},"ETag",{"type":42,"value":1988},": The patch ID or quilt ID for caching",{"type":37,"tag":253,"props":1990,"children":1992},{"id":1991},"when-to-use-quilts-vs-individual-blobs",[1993],{"type":42,"value":1994},"When to use quilts vs individual blobs",{"type":37,"tag":145,"props":1996,"children":1997},{},[1998,2014],{"type":37,"tag":149,"props":1999,"children":2000},{},[2001],{"type":37,"tag":153,"props":2002,"children":2003},{},[2004,2009],{"type":37,"tag":157,"props":2005,"children":2006},{},[2007],{"type":42,"value":2008},"Scenario",{"type":37,"tag":157,"props":2010,"children":2011},{},[2012],{"type":42,"value":2013},"Recommendation",{"type":37,"tag":173,"props":2015,"children":2016},{},[2017,2034,2051,2069,2087],{"type":37,"tag":153,"props":2018,"children":2019},{},[2020,2025],{"type":37,"tag":180,"props":2021,"children":2022},{},[2023],{"type":42,"value":2024},"Many small files (\u003C10 MB each)",{"type":37,"tag":180,"props":2026,"children":2027},{},[2028,2032],{"type":37,"tag":53,"props":2029,"children":2030},{},[2031],{"type":42,"value":269},{"type":42,"value":2033}," Each individual blob has ~64 MB of per-blob metadata overhead. Quilts amortize this across all files.",{"type":37,"tag":153,"props":2035,"children":2036},{},[2037,2042],{"type":37,"tag":180,"props":2038,"children":2039},{},[2040],{"type":42,"value":2041},"Lots of small JSON documents",{"type":37,"tag":180,"props":2043,"children":2044},{},[2045,2049],{"type":37,"tag":53,"props":2046,"children":2047},{},[2048],{"type":42,"value":269},{"type":42,"value":2050}," Individual store calls for tiny blobs are very cost-inefficient.",{"type":37,"tag":153,"props":2052,"children":2053},{},[2054,2059],{"type":37,"tag":180,"props":2055,"children":2056},{},[2057],{"type":42,"value":2058},"One large file (>10 MB)",{"type":37,"tag":180,"props":2060,"children":2061},{},[2062,2067],{"type":37,"tag":53,"props":2063,"children":2064},{},[2065],{"type":42,"value":2066},"Individual blob.",{"type":42,"value":2068}," No benefit from quilting a single file.",{"type":37,"tag":153,"props":2070,"children":2071},{},[2072,2077],{"type":37,"tag":180,"props":2073,"children":2074},{},[2075],{"type":42,"value":2076},"Files that need independent lifecycle",{"type":37,"tag":180,"props":2078,"children":2079},{},[2080,2085],{"type":37,"tag":53,"props":2081,"children":2082},{},[2083],{"type":42,"value":2084},"Individual blobs.",{"type":42,"value":2086}," You cannot delete\u002Fextend individual files in a quilt.",{"type":37,"tag":153,"props":2088,"children":2089},{},[2090,2095],{"type":37,"tag":180,"props":2091,"children":2092},{},[2093],{"type":42,"value":2094},"Static website assets",{"type":37,"tag":180,"props":2096,"children":2097},{},[2098,2102],{"type":37,"tag":53,"props":2099,"children":2100},{},[2101],{"type":42,"value":269},{"type":42,"value":2103}," Walrus Sites uses quilts internally for this reason.",{"type":37,"tag":49,"props":2105,"children":2106},{},[2107],{"type":42,"value":2108},"The per-blob metadata overhead means storing a 1 KB JSON blob individually costs about the same as storing a 64 MB file. Quilts eliminate this by packing everything into one storage unit.",{"type":37,"tag":253,"props":2110,"children":2112},{"id":2111},"rules",[2113],{"type":42,"value":2114},"Rules",{"type":37,"tag":2116,"props":2117,"children":2118},"ol",{},[2119,2129,2152,2162,2185,2201],{"type":37,"tag":112,"props":2120,"children":2121},{},[2122,2127],{"type":37,"tag":53,"props":2123,"children":2124},{},[2125],{"type":42,"value":2126},"Identifiers must be unique within a quilt.",{"type":42,"value":2128}," Duplicate identifiers cause the store operation to fail.",{"type":37,"tag":112,"props":2130,"children":2131},{},[2132,2143,2145,2150],{"type":37,"tag":53,"props":2133,"children":2134},{},[2135,2137,2142],{"type":42,"value":2136},"Identifiers cannot start with ",{"type":37,"tag":86,"props":2138,"children":2140},{"className":2139},[],[2141],{"type":42,"value":318},{"type":42,"value":101},{"type":42,"value":2144}," The ",{"type":37,"tag":86,"props":2146,"children":2148},{"className":2147},[],[2149],{"type":42,"value":326},{"type":42,"value":2151}," field name is reserved for Walrus-native metadata.",{"type":37,"tag":112,"props":2153,"children":2154},{},[2155,2160],{"type":37,"tag":53,"props":2156,"children":2157},{},[2158],{"type":42,"value":2159},"Lifecycle operations apply to the entire quilt.",{"type":42,"value":2161}," You cannot delete, extend, or share individual blobs inside a quilt.",{"type":37,"tag":112,"props":2163,"children":2164},{},[2165,2170,2172,2177,2179,2184],{"type":37,"tag":53,"props":2166,"children":2167},{},[2168],{"type":42,"value":2169},"QuiltPatchId is not a BlobId.",{"type":42,"value":2171}," A blob's ",{"type":37,"tag":86,"props":2173,"children":2175},{"className":2174},[],[2176],{"type":42,"value":91},{"type":42,"value":2178}," is specific to the quilt it belongs to. The same file content in a different quilt gets a different ",{"type":37,"tag":86,"props":2180,"children":2182},{"className":2181},[],[2183],{"type":42,"value":91},{"type":42,"value":101},{"type":37,"tag":112,"props":2186,"children":2187},{},[2188,2193,2195,2200],{"type":37,"tag":53,"props":2189,"children":2190},{},[2191],{"type":42,"value":2192},"Use quilts for many small files.",{"type":42,"value":2194}," Quilts reduce per-blob overhead. For a single large file, use regular ",{"type":37,"tag":86,"props":2196,"children":2198},{"className":2197},[],[2199],{"type":42,"value":640},{"type":42,"value":101},{"type":37,"tag":112,"props":2202,"children":2203},{},[2204,2209],{"type":37,"tag":53,"props":2205,"children":2206},{},[2207],{"type":42,"value":2208},"Content-addressing still applies.",{"type":42,"value":2210}," The same quilt content always produces the same quilt blob ID.",{"type":37,"tag":253,"props":2212,"children":2214},{"id":2213},"common-mistakes",[2215],{"type":42,"value":2216},"Common mistakes",{"type":37,"tag":108,"props":2218,"children":2219},{},[2220,2230,2260,2277,2287],{"type":37,"tag":112,"props":2221,"children":2222},{},[2223,2228],{"type":37,"tag":53,"props":2224,"children":2225},{},[2226],{"type":42,"value":2227},"Trying to delete a single blob from a quilt.",{"type":42,"value":2229}," You must delete the entire quilt. Individual blobs cannot be removed.",{"type":37,"tag":112,"props":2231,"children":2232},{},[2233,2238,2240,2245,2247,2252,2254,2259],{"type":37,"tag":53,"props":2234,"children":2235},{},[2236],{"type":42,"value":2237},"Using a BlobId to read from a quilt.",{"type":42,"value":2239}," Blobs within a quilt are identified by ",{"type":37,"tag":86,"props":2241,"children":2243},{"className":2242},[],[2244],{"type":42,"value":91},{"type":42,"value":2246}," or ",{"type":37,"tag":86,"props":2248,"children":2250},{"className":2249},[],[2251],{"type":42,"value":613},{"type":42,"value":2253},", not standard ",{"type":37,"tag":86,"props":2255,"children":2257},{"className":2256},[],[2258],{"type":42,"value":99},{"type":42,"value":101},{"type":37,"tag":112,"props":2261,"children":2262},{},[2263,2268,2270,2275],{"type":37,"tag":53,"props":2264,"children":2265},{},[2266],{"type":42,"value":2267},"Duplicate filenames across directories.",{"type":42,"value":2269}," When using ",{"type":37,"tag":86,"props":2271,"children":2273},{"className":2272},[],[2274],{"type":42,"value":381},{"type":42,"value":2276}," with multiple directories, if two files have the same name, the identifiers collide and the store fails.",{"type":37,"tag":112,"props":2278,"children":2279},{},[2280,2285],{"type":37,"tag":53,"props":2281,"children":2282},{},[2283],{"type":42,"value":2284},"Expecting bulk HTTP reads.",{"type":42,"value":2286}," Currently only one blob per HTTP request is supported for quilt reads.",{"type":37,"tag":112,"props":2288,"children":2289},{},[2290,2295],{"type":37,"tag":53,"props":2291,"children":2292},{},[2293],{"type":42,"value":2294},"Storing many small blobs individually instead of as a quilt.",{"type":42,"value":2296}," This is the most common cost mistake. Each individual blob incurs ~64 MB of metadata overhead. A batch of 100 small JSON files stored individually costs roughly 100x more than quilting them together.",{"type":37,"tag":2298,"props":2299,"children":2300},"style",{},[2301],{"type":42,"value":2302},"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);}",{"items":2304,"total":1628},[2305,2316,2327,2345,2357,2372,2384],{"slug":237,"name":237,"fn":2306,"description":2307,"org":2308,"tags":2309,"stars":22,"repoUrl":23,"updatedAt":2315},"manage Walrus blob lifecycles","Managing Walrus blob lifecycles: epochs, lifetimes, extending blobs, deleting blobs, burning blob objects, sharing blobs, setting blob attributes, and handling large uploads. Use when the user needs to extend a blob's lifetime, delete or burn blobs, create shared blobs, set\u002Fget\u002Fremove blob attributes, plan large data uploads (>1 GiB), estimate storage costs, manage concurrent upload memory, or understand epoch-based expiration. For basic store\u002Fread, see `walrus-cli`. For quilts, see `walrus-quilts`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2310,2311,2312],{"name":20,"slug":21,"type":15},{"name":14,"slug":8,"type":15},{"name":2313,"slug":2314,"type":15},"Web3","web3","2026-07-16T06:01:49.056917",{"slug":193,"name":193,"fn":2317,"description":2318,"org":2319,"tags":2320,"stars":22,"repoUrl":23,"updatedAt":2326},"manage Walrus blobs via CLI","Walrus CLI client for storing, reading, and managing blobs from the command line. Use when the user needs to run walrus store, walrus read, walrus blob-status, walrus extend, walrus delete, walrus share, or any other walrus CLI command. Also use for CLI installation, configuration (client_config.yaml), JSON mode for scripting, gas budgets, wallet configuration, and logging. For blob lifecycle management details, see `walrus-blob-lifecycle`. For quilts, see `walrus-quilts`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2321,2324,2325],{"name":2322,"slug":2323,"type":15},"CLI","cli",{"name":20,"slug":21,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:02:52.586222",{"slug":2328,"name":2328,"fn":2329,"description":2330,"org":2331,"tags":2332,"stars":22,"repoUrl":23,"updatedAt":2344},"walrus-data-security","encrypt and store data on Walrus","Encrypting data before storing on Walrus using Seal (threshold encryption with onchain access control). Use when the user needs to store private or sensitive data on Walrus, implement access control for blob content, encrypt blobs before uploading, use @mysten\u002Fseal for threshold encryption, or understand Walrus data security guarantees (availability, integrity, confidentiality). Also use when the user asks about Nautilus (TEE-based off-chain computation) in the context of Walrus data. All blobs on Walrus are public by default.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2333,2336,2339,2342,2343],{"name":2334,"slug":2335,"type":15},"Access Control","access-control",{"name":2337,"slug":2338,"type":15},"Encryption","encryption",{"name":2340,"slug":2341,"type":15},"Security","security",{"name":20,"slug":21,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:01:48.700594",{"slug":215,"name":215,"fn":2346,"description":2347,"org":2348,"tags":2349,"stars":22,"repoUrl":23,"updatedAt":2356},"store and read Walrus blobs via HTTP","Walrus publisher and aggregator REST API for storing and reading blobs over HTTP. Use when the user needs to store or read Walrus blobs using HTTP PUT\u002FGET requests, integrate Walrus from any programming language, configure storage options (epochs, deletable, permanent, send_object_to), or parse store\u002Fread API responses. Also use when troubleshooting HTTP API errors or CDN caching issues after upload. For quilt HTTP endpoints, see the `walrus-quilts` skill. For CLI usage, see `walrus-cli`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2350,2353,2354,2355],{"name":2351,"slug":2352,"type":15},"REST API","rest-api",{"name":20,"slug":21,"type":15},{"name":14,"slug":8,"type":15},{"name":2313,"slug":2314,"type":15},"2026-07-16T06:01:48.340552",{"slug":2358,"name":2358,"fn":2359,"description":2360,"org":2361,"tags":2362,"stars":22,"repoUrl":23,"updatedAt":2371},"walrus-memory","integrate persistent memory with Walrus","Walrus Memory (MemWal) — persistent, portable, encrypted memory for AI agents. Use when the user needs to give an AI agent persistent memory across sessions and apps, integrate the @mysten-incubation\u002Fmemwal TypeScript SDK or Python memwal SDK, set up the Walrus Memory MCP server for Cursor\u002FClaude\u002FCodex, configure remember\u002Frecall\u002Fanalyze\u002Frestore operations, manage memory spaces and namespaces, set up delegate keys and accounts, self-host the relayer, or use withMemWal AI middleware (Vercel AI SDK, LangChain, OpenAI SDK). Also use when the user asks about MemWal, Walrus Memory, agent memory, memory spaces, or the memwal-mcp package.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2363,2366,2367,2370],{"name":2364,"slug":2365,"type":15},"Agents","agents",{"name":2337,"slug":2338,"type":15},{"name":2368,"slug":2369,"type":15},"Memory","memory",{"name":14,"slug":8,"type":15},"2026-07-29T05:39:21.825246",{"slug":2373,"name":2373,"fn":2374,"description":2375,"org":2376,"tags":2377,"stars":22,"repoUrl":23,"updatedAt":2383},"walrus-move-integration","integrate Walrus blobs in Sui Move","Referencing and wrapping Walrus blobs in Sui Move smart contracts. Use when the user needs to wrap a Walrus Blob object in a custom Move struct, add Walrus as a Move dependency, build a contract that depends on the Walrus package, or integrate on-chain logic with Walrus blob storage. Also use when the user asks about wrapped_blob.move, the Walrus Move package, or how to reference blobs from Move code.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2378,2381,2382],{"name":2379,"slug":2380,"type":15},"Smart Contracts","smart-contracts",{"name":20,"slug":21,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:02:53.633159",{"slug":2385,"name":2385,"fn":2386,"description":2387,"org":2388,"tags":2389,"stars":22,"repoUrl":23,"updatedAt":2395},"walrus-overview","provide overview of Walrus storage","High-level overview of Walrus: what it is, how it works, and which tool to use. Use when the user is new to Walrus, asks \"what is Walrus\", \"how does Walrus work\", \"what is a blob\", or needs to choose between CLI, HTTP API, TypeScript SDK, and Move integration. Also use when explaining Walrus architecture, comparing Walrus to AWS S3 or IPFS, explaining the publisher\u002Faggregator\u002Fupload relay distinction, or clarifying blob ID vs Sui object ID. This is the entry-point skill for Walrus newcomers.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2390,2393,2394],{"name":2391,"slug":2392,"type":15},"Documentation","documentation",{"name":20,"slug":21,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:02:52.247749",{"items":2397,"total":2559},[2398,2414,2423,2433,2446,2460,2473,2486,2507,2519,2530,2546],{"slug":2399,"name":2399,"fn":2400,"description":2401,"org":2402,"tags":2403,"stars":2411,"repoUrl":2412,"updatedAt":2413},"move-bytecode-comprehension","analyze and disassemble Move bytecode","Use when reading or reasoning about compiled Move bytecode or `sui move disassemble` output. Mental model for the binary format, what survives compilation (and what's lost), and how to read disassembly soundly. Trigger on \"what does this package do?\", \"read this .mv module\", \"interpret this disassembly\", or whenever an analysis needs to interpret bytecode faithfully.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2404,2407,2410],{"name":2405,"slug":2406,"type":15},"Code Analysis","code-analysis",{"name":2408,"slug":2409,"type":15},"Engineering","engineering",{"name":14,"slug":8,"type":15},7724,"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fsui","2026-07-16T05:59:32.904886",{"slug":2415,"name":2415,"fn":2416,"description":2417,"org":2418,"tags":2419,"stars":2411,"repoUrl":2412,"updatedAt":2422},"official-sui-skills","access official Sui development resources","Pointer to the official Mysten Labs skills for building on Sui — language fundamentals, object model, PTBs, SDKs, publishing, upgrades, frontend integration, accessing on-chain data. Maintained upstream at github.com\u002FMystenLabs\u002Fskills; pinned to the same ref the audit catalog derives from (see maintenance\u002FUPSTREAMS.md). Trigger on \"build a contract\", \"publish a package\", \"upgrade a module or package\", \"use the TypeScript SDK\", \"write a PTB\", \"set up a Sui client\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2420,2421],{"name":2391,"slug":2392,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:00:59.641382",{"slug":2424,"name":2424,"fn":2425,"description":2426,"org":2427,"tags":2428,"stars":2411,"repoUrl":2412,"updatedAt":2432},"sui-and-move-tools","disassemble Sui Move bytecode","Use to get bytecode for a deployed Sui package and produce a disassembled working view. One GraphQL call fetches every module's raw bytecode bytes; `sui move disassemble` (already on the system, running `sui prompt`) produces `.asm` files for analysis. Trigger on \"fetch this package's bytecode\", \"get me the .mv for package X\", \"disassemble this package\", or \"I need to read a deployed Sui package\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2429,2430,2431],{"name":2405,"slug":2406,"type":15},{"name":2408,"slug":2409,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:02:25.3633",{"slug":2434,"name":2434,"fn":2435,"description":2436,"org":2437,"tags":2438,"stars":2411,"repoUrl":2412,"updatedAt":2445},"sui-move-security-review","audit Sui Move smart contracts","Use when auditing, reviewing, or hunting for vulnerabilities in Move code on Sui. Applies equally to source code (.move files) and to disassembly of compiled bytecode (on-chain packages). A checklist of invariants whose VIOLATION causes exploitable bugs: access control & capabilities, struct abilities & type safety, object lifecycle & ownership, shared-object and PTB attack surface, dynamic fields & collections, arithmetic & coins, init\u002FOTW\u002Fpackage upgrades, hot-potato composability, time & on-chain randomness, and test-only code leakage. Trigger on \"audit this Move code\", \"find vulnerabilities in this Sui contract\", \"security review\", \"is this package safe?\", \"I suspect there's a bug in X\", \"something is wrong with this contract\", or when reasoning about whether a Move function can be abused.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2439,2442,2443,2444],{"name":2440,"slug":2441,"type":15},"Code Review","code-review",{"name":2340,"slug":2341,"type":15},{"name":2379,"slug":2380,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:02:55.691149",{"slug":2447,"name":2447,"fn":2448,"description":2449,"org":2450,"tags":2451,"stars":2457,"repoUrl":2458,"updatedAt":2459},"memwal","integrate Walrus Memory SDK","Walrus Memory SDK — portable agent memory that works across apps, sessions, and workflows.\n\nUse when users say:\n- \"add memory to my app\"\n- \"portable agent memory\"\n- \"integrate Walrus Memory\"\n- \"AI agent memory\"\n- \"memory across agents\"\n- \"Walrus memory storage\"\n- \"setup Walrus Memory\"\n- \"recall memories\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2452,2453,2454],{"name":2364,"slug":2365,"type":15},{"name":2368,"slug":2369,"type":15},{"name":2455,"slug":2456,"type":15},"SDK","sdk",57,"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002FMemWal","2026-07-16T06:02:39.838395",{"slug":2461,"name":2461,"fn":2462,"description":2463,"org":2464,"tags":2465,"stars":1594,"repoUrl":2471,"updatedAt":2472},"accessing-data","read data from the Sui network","How to read data from the Sui network. Use when choosing or implementing a data access strategy — queries for on-chain state, indexing pipelines, historical lookups, event subscriptions, cross-chain reads, or off-chain blob storage. Covers the two live Sui APIs (gRPC and GraphQL RPC), the Archival Store, the General-Purpose Indexer, the `sui-indexer-alt` custom indexing framework, and Walrus for off-chain blobs.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2466,2469,2470],{"name":2467,"slug":2468,"type":15},"Data Analysis","data-analysis",{"name":14,"slug":8,"type":15},{"name":2313,"slug":2314,"type":15},"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fskills","2026-08-01T05:44:32.775598",{"slug":2474,"name":2474,"fn":2475,"description":2476,"org":2477,"tags":2478,"stars":1594,"repoUrl":2471,"updatedAt":2485},"composable-move-functions","design composable Sui Move functions","Use when writing Move functions on Sui, especially public APIs. Applies to function visibility (public vs entry), parameter ordering, and return patterns. Use whenever designing function signatures or deciding whether functions should transfer objects or return them.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2479,2482,2483,2484],{"name":2480,"slug":2481,"type":15},"API Development","api-development",{"name":2379,"slug":2380,"type":15},{"name":14,"slug":8,"type":15},{"name":2313,"slug":2314,"type":15},"2026-07-16T06:02:49.198495",{"slug":2487,"name":2487,"fn":2488,"description":2489,"org":2490,"tags":2491,"stars":1594,"repoUrl":2471,"updatedAt":2506},"frontend-apps","build Sui dApps with dapp-kit","Sui frontend \u002F dApp development with @mysten\u002Fdapp-kit-react (React) and @mysten\u002Fdapp-kit-core (Vue, vanilla JS, Svelte, Web Components, other frameworks). Use when building browser apps that connect Sui wallets, query on-chain state, or submit transactions. Covers wallet connection, network switching, transaction execution, query patterns with TanStack React Query, and the specific pitfalls of browser + wallet + async-indexer environments. Pair with the `sui-sdks` skill for @mysten\u002Fsui Transaction construction patterns and the `ptbs` skill for PTB semantics.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2492,2495,2498,2499,2502,2505],{"name":2493,"slug":2494,"type":15},"Frontend","frontend",{"name":2496,"slug":2497,"type":15},"React","react",{"name":14,"slug":8,"type":15},{"name":2500,"slug":2501,"type":15},"Svelte","svelte",{"name":2503,"slug":2504,"type":15},"Vue","vue",{"name":2313,"slug":2314,"type":15},"2026-08-01T05:44:28.958473",{"slug":2508,"name":2508,"fn":2509,"description":2510,"org":2511,"tags":2512,"stars":1594,"repoUrl":2471,"updatedAt":2518},"generate-sui-agent-config","generate configuration files for Sui projects","Generate a CLAUDE.md or AGENT.md configuration file for Sui projects. Use when setting up a new Sui project, when user mentions \"CLAUDE.md\", \"AGENT.md\", \"agent config\", or when working on a Sui project that does not already have a CLAUDE.md or AGENT.md in the project root.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2513,2516,2517],{"name":2514,"slug":2515,"type":15},"Configuration","configuration",{"name":2391,"slug":2392,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:00:59.981056",{"slug":2520,"name":2520,"fn":2521,"description":2522,"org":2523,"tags":2524,"stars":1594,"repoUrl":2471,"updatedAt":2529},"modern-move-syntax","write Move 2024 edition code for Sui","Use when writing Move code on Sui to ensure 2024 edition syntax is used. Applies to method calls, string literals, vector operations, option handling, loops, and struct unpacking. Use whenever writing Move code to avoid legacy function-call syntax patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2525,2526,2527,2528],{"name":2408,"slug":2409,"type":15},{"name":2379,"slug":2380,"type":15},{"name":14,"slug":8,"type":15},{"name":2313,"slug":2314,"type":15},"2026-07-16T06:02:43.277596",{"slug":2531,"name":2531,"fn":2532,"description":2533,"org":2534,"tags":2535,"stars":1594,"repoUrl":2471,"updatedAt":2545},"move-unit-testing","write unit tests for Sui Move contracts","Use when writing unit tests for Move smart contracts on Sui. Applies to test function naming, assertions, test attributes, context usage, and cleanup patterns. Use whenever user asks to write tests, add tests, or test a Move module.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2536,2539,2540,2541,2544],{"name":2537,"slug":2538,"type":15},"QA","qa",{"name":2379,"slug":2380,"type":15},{"name":14,"slug":8,"type":15},{"name":2542,"slug":2543,"type":15},"Testing","testing",{"name":2313,"slug":2314,"type":15},"2026-08-01T05:44:30.788585",{"slug":2547,"name":2547,"fn":2548,"description":2549,"org":2550,"tags":2551,"stars":1594,"repoUrl":2471,"updatedAt":2558},"naming-conventions","apply Sui Move naming conventions","Use when writing or reviewing Move smart contracts on Sui. Applies to naming structs, error constants, regular constants, events, getter functions, capability types, hot potato types, and dynamic field keys. Use whenever creating new types, functions, or constants in Move code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2552,2555,2556,2557],{"name":2553,"slug":2554,"type":15},"Best Practices","best-practices",{"name":2379,"slug":2380,"type":15},{"name":14,"slug":8,"type":15},{"name":2313,"slug":2314,"type":15},"2026-07-16T06:02:48.830052",37]