{
  "x402Version": 2,
  "id": 8216,
  "slug": "8216",
  "resource": "https://asset.api.williamrobinson.dev/v1/asset/prepare",
  "description": "Normalise a glTF 2.0 binary (.glb) for a target engine and platform (scale, orientation, origin), generate two simplified LODs and convex/trimesh collision, and prove the result loads via a real Godot 4 headless import. Returns a report plus artifacts: normalised .glb LODs, collision data, a Godot scene, a multi-view preview, and the full JSON report. Claims are scoped to the Godot 4 import; Unity/Unreal receive glTF-convention output without import proof.",
  "type": "http",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0x26026370fe8b2bb17af9092a17691c76519366da",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "100000",
      "maxTimeoutSeconds": 300
    }
  ],
  "outputSchema": {
    "bazaar": {
      "info": {
        "input": {
          "body": {
            "asset": "Z2xURgIAAACQCAAAlAQAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6ImdsVEYtVHJhbnNmb3JtIHY0LjUuMCIsInZlcnNpb24iOiIyLjAifSwiYWNjZXNzb3JzIjpbeyJ0eXBlIjoiVkVDMyIsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyNCwibWF4IjpbMC41LDAuNSwwLjVdLCJtaW4iOlstMC41LC0wLjUsLTAuNV0sImJ1ZmZlclZpZXciOjEsImJ5dGVPZmZzZXQiOjB9LHsidHlwZSI6IlZFQzMiLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjQsImJ1ZmZlclZpZXciOjEsImJ5dGVPZmZzZXQiOjEyfSx7InR5cGUiOiJWRUMyIiwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjI0LCJidWZmZXJWaWV3IjoxLCJieXRlT2Zmc2V0IjoyNH0seyJ0eXBlIjoiU0NBTEFSIiwiY29tcG9uZW50VHlwZSI6NTEyMywiY291bnQiOjM2LCJidWZmZXJWaWV3IjoyLCJieXRlT2Zmc2V0IjowfV0sImJ1ZmZlclZpZXdzIjpbeyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjg0MCwiYnl0ZUxlbmd0aCI6MTUyfSx7ImJ1ZmZlciI6MCwiYnl0ZU9mZnNldCI6MCwiYnl0ZUxlbmd0aCI6NzY4LCJieXRlU3RyaWRlIjozMiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVPZmZzZXQiOjc2OCwiYnl0ZUxlbmd0aCI6NzIsInRhcmdldCI6MzQ5NjN9XSwic2FtcGxlcnMiOlt7IndyYXBTIjoxMDQ5Nywid3JhcFQiOjEwNDk3fV0sInRleHR1cmVzIjpbeyJzb3VyY2UiOjAsInNhbXBsZXIiOjB9XSwiaW1hZ2VzIjpbeyJuYW1lIjoiY2hlY2tlciIsIm1pbWVUeXBlIjoiaW1hZ2UvcG5nIiwiYnVmZmVyVmlldyI6MH1dLCJidWZmZXJzIjpbeyJieXRlTGVuZ3RoIjo5OTJ9XSwibWF0ZXJpYWxzIjpbeyJuYW1lIjoiY3ViZS1tYXRlcmlhbCIsInBick1ldGFsbGljUm91Z2huZXNzIjp7InJvdWdobmVzc0ZhY3RvciI6MC44LCJtZXRhbGxpY0ZhY3RvciI6MCwiYmFzZUNvbG9yVGV4dHVyZSI6eyJpbmRleCI6MH19fV0sIm1lc2hlcyI6W3sibmFtZSI6ImN1YmUiLCJwcmltaXRpdmVzIjpbeyJhdHRyaWJ1dGVzIjp7IlBPU0lUSU9OIjowLCJOT1JNQUwiOjEsIlRFWENPT1JEXzAiOjJ9LCJtb2RlIjo0LCJtYXRlcmlhbCI6MCwiaW5kaWNlcyI6M31dfV0sIm5vZGVzIjpbeyJuYW1lIjoiY3ViZSIsIm1lc2giOjB9XSwic2NlbmVzIjpbeyJuYW1lIjoic2NlbmUiLCJub2RlcyI6WzBdfV0sInNjZW5lIjowfSAgIOADAABCSU4AAAAAPwAAAL8AAAC/AACAPwAAAAAAAAAAAAAAAAAAAAAAAAA/AAAAPwAAAL8AAIA/AAAAAAAAAAAAAIA/AAAAAAAAAD8AAAA/AAAAPwAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAPwAAAL8AAAA/AACAPwAAAAAAAAAAAAAAAAAAgD8AAAC/AAAAvwAAAL8AAIC/AAAAAAAAAAAAAAAAAAAAAAAAAL8AAAA/AAAAvwAAgL8AAAAAAAAAAAAAgD8AAAAAAAAAvwAAAD8AAAA/AACAvwAAAAAAAAAAAACAPwAAgD8AAAC/AAAAvwAAAD8AAIC/AAAAAAAAAAAAAAAAAACAPwAAAL8AAAA/AAAAvwAAAAAAAIA/AAAAAAAAAAAAAAAAAAAAvwAAAD8AAAA/AAAAAAAAgD8AAAAAAACAPwAAAAAAAAA/AAAAPwAAAD8AAAAAAACAPwAAAAAAAIA/AACAPwAAAD8AAAA/AAAAvwAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAvwAAAL8AAAC/AAAAAAAAgL8AAAAAAAAAAAAAAAAAAAC/AAAAvwAAAD8AAAAAAACAvwAAAAAAAIA/AAAAAAAAAD8AAAC/AAAAPwAAAAAAAIC/AAAAAAAAgD8AAIA/AAAAPwAAAL8AAAC/AAAAAAAAgL8AAAAAAAAAAAAAgD8AAAC/AAAAvwAAAD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAAD8AAAC/AAAAPwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAPwAAAD8AAAA/AAAAAAAAAAAAAIA/AACAPwAAgD8AAAC/AAAAPwAAAD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAAL8AAAC/AAAAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAPwAAAL8AAAC/AAAAAAAAAAAAAIC/AACAPwAAAAAAAAA/AAAAPwAAAL8AAAAAAAAAAAAAgL8AAIA/AACAPwAAAL8AAAA/AAAAvwAAAAAAAAAAAACAvwAAAAAAAIA/AAABAAIAAAACAAMABAAFAAYABAAGAAcACAAJAAoACAAKAAsADAANAA4ADAAOAA8AEAARABIAEAASABMAFAAVABYAFAAWABcAiVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABlBMVEXWxKhcbHrpdFJRAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAAOElEQVR42u3UoQ0AAAgDMPj/aQyCIHEknZupmFhEJzvXDvgNGA8wYwt/YDyALQD+AOAPAP4AsIACFA8IAXCt1BQAAAAASUVORK5CYII=",
            "expect": {
              "size": {
                "axis": "y",
                "metres": 1.5,
                "tolerance": 0.05
              }
            },
            "target": {
              "collision": "convex",
              "engine": "godot4",
              "origin": "floor",
              "platform": "desktop",
              "size": {
                "axis": "y",
                "metres": 1.5
              }
            }
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        },
        "output": {
          "example": {
            "artifacts": [
              {
                "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/asset.glb",
                "mediaType": "model/gltf-binary",
                "name": "asset.glb",
                "sha256": "2a0a6c99a17389b01c396387e77314d0e310b051a9d678615cf93466265a67f3",
                "sizeBytes": 2192
              },
              {
                "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/asset-lod1.glb",
                "mediaType": "model/gltf-binary",
                "name": "asset-lod1.glb",
                "sha256": "2a0a6c99a17389b01c396387e77314d0e310b051a9d678615cf93466265a67f3",
                "sizeBytes": 2192
              },
              {
                "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/asset-lod2.glb",
                "mediaType": "model/gltf-binary",
                "name": "asset-lod2.glb",
                "sha256": "2a0a6c99a17389b01c396387e77314d0e310b051a9d678615cf93466265a67f3",
                "sizeBytes": 2192
              },
              {
                "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/collision.json",
                "mediaType": "application/json",
                "name": "collision.json",
                "sha256": "fdd3b75d3487097c27178cdca98bcac4eb4f11a543a4bcdd6ffc5be5344501a7",
                "sizeBytes": 734
              },
              {
                "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/godot-scene.tscn",
                "mediaType": "text/plain; charset=utf-8",
                "name": "godot-scene.tscn",
                "sha256": "c1fb2c48896dad0573523724f75dccae20ee908ce9b4b781da13fa5d6008da49",
                "sizeBytes": 718
              },
              {
                "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/preview.png",
                "mediaType": "image/png",
                "name": "preview.png",
                "sha256": "47b2fd78499eaa90802e7b6cb6975eb768d9265aa4e09f2f44b8e2b0dd265cb8",
                "sizeBytes": 58228
              },
              {
                "href": "https://asset.api.williamrobinson.dev/v1/asset/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/report.json",
                "mediaType": "application/json",
                "name": "report.json",
                "sha256": "a0cbca1d625aa46f23af80b57a8b98db3e1f77d424cce01643d0b8aec80ad853",
                "sizeBytes": 5351
              }
            ],
            "checks": [
              {
                "code": "structure_valid",
                "detail": "The glTF binary passed header, JSON, and gltf-validator structural checks.",
                "status": "passed"
              },
              {
                "code": "no_external_uris",
                "detail": "No buffer or image referenced an external (non-data:) URI.",
                "status": "passed"
              },
              {
                "code": "within_limits",
                "detail": "Triangle, material, texture, texture-pixel, and node counts are within configured limits.",
                "status": "passed"
              },
              {
                "code": "bounds_expected",
                "detail": "Expected extent along 'y' of 1.5 m; output measures 1.5000 m.",
                "status": "passed"
              },
              {
                "code": "rigged_expected",
                "detail": "No expect.rigged was declared.",
                "status": "not_checked"
              },
              {
                "code": "animations_expected",
                "detail": "No expect.minAnimations was declared.",
                "status": "not_checked"
              },
              {
                "code": "engine_loaded",
                "detail": "The output asset loaded and instantiated in Godot 4 headless.",
                "status": "passed"
              },
              {
                "code": "textures_within_budget",
                "detail": "Largest output texture edge is 64px against a 2048px budget.",
                "status": "passed"
              },
              {
                "code": "power_of_two_textures",
                "detail": "All output textures have power-of-two dimensions.",
                "status": "passed"
              },
              {
                "code": "lods_generated",
                "detail": "LOD1/LOD2 are identical to LOD0; the geometry is already below the simplifier's useful reduction threshold.",
                "status": "passed"
              },
              {
                "code": "collision_generated",
                "detail": "Convex hull has 8 vertices.",
                "status": "passed"
              }
            ],
            "collision": {
              "convexHullVertices": 8,
              "kind": "convex",
              "trimeshTriangles": 0
            },
            "engineLoad": {
              "animations": [],
              "engine": "4.7.2.stable.official.ed1daf0bf",
              "errors": [],
              "loaded": true,
              "materials": 1,
              "meshInstances": 1,
              "nodes": 2,
              "skeletons": 0
            },
            "expiresAt": "2026-01-04T03:04:05.000Z",
            "limitations": [
              "No Unity or Unreal import is executed; for those engines the asset is normalised to standard glTF conventions their importers expect, not verified by running an actual Unity/Unreal import.",
              "Draco, EXT_meshopt_compression, and KTX2 (KHR_texture_basisu) inputs are rejected in v1; only embedded, uncompressed glTF geometry and PNG/JPEG textures are accepted.",
              "Normal-map and other non-colour texture colour space is not verified; textures are resized without reinterpreting their intended colour space.",
              "LOD error is the meshoptimizer geometric error bound actually reached (as a fraction of mesh radius), not a measure of visual/perceptual difference, and is not a proof the LODs are optimal.",
              "Godot's collision generation operates on the LOD0 mesh merged into one shape; per-part or compound collision shapes are not produced."
            ],
            "lods": [
              {
                "bytes": 2192,
                "error": 0,
                "name": "asset.glb",
                "ratio": 1,
                "triangles": 12,
                "vertices": 24
              },
              {
                "bytes": 2192,
                "error": 0,
                "name": "asset-lod1.glb",
                "ratio": 0.5,
                "triangles": 12,
                "vertices": 24
              },
              {
                "bytes": 2192,
                "error": 0,
                "name": "asset-lod2.glb",
                "ratio": 0.25,
                "triangles": 12,
                "vertices": 24
              }
            ],
            "normalization": {
              "rotationXDegrees": 0,
              "scale": 1.5,
              "translation": [
                0,
                0.75,
                0
              ]
            },
            "output": {
              "animations": 0,
              "bones": 0,
              "bounds": {
                "max": [
                  0.75,
                  1.5,
                  0.75
                ],
                "min": [
                  -0.75,
                  0,
                  -0.75
                ],
                "size": [
                  1.5,
                  1.5,
                  1.5
                ]
              },
              "bytes": 2192,
              "materials": 1,
              "maxTextureEdge": 64,
              "meshes": 1,
              "nodes": 1,
              "primitives": 1,
              "skins": 0,
              "textures": 1,
              "triangles": 12,
              "vertices": 24
            },
            "repairs": [],
            "source": {
              "animations": 0,
              "bones": 0,
              "bounds": {
                "max": [
                  0.5,
                  0.5,
                  0.5
                ],
                "min": [
                  -0.5,
                  -0.5,
                  -0.5
                ],
                "size": [
                  1,
                  1,
                  1
                ]
              },
              "bytes": 2192,
              "materials": 1,
              "maxTextureEdge": 64,
              "meshes": 1,
              "nodes": 1,
              "primitives": 1,
              "skins": 0,
              "textures": 1,
              "triangles": 12,
              "validatorErrors": 0,
              "validatorWarnings": 0,
              "vertices": 24
            },
            "status": "passed",
            "target": {
              "collision": "convex",
              "engine": "godot4",
              "maxTextureSize": 2048,
              "origin": "floor",
              "platform": "desktop",
              "size": {
                "axis": "y",
                "metres": 1.5
              },
              "sourceUp": "y"
            },
            "tools": {
              "engine": "4.7.2.stable.official.ed1daf0bf",
              "transform": "@gltf-transform/core@4.5.0 meshoptimizer@0.24.0 sharp@0.34.5 resvg@2.6.2",
              "validator": "gltf-validator@2.0.0-dev.3.10"
            },
            "truncated": false,
            "validator": [],
            "warnings": [
              "LOD simplifier could not reduce a mesh primitive below its LOD0 triangle count (12 triangles); the geometry is likely already below the simplifier's useful reduction threshold.",
              "LOD simplifier could not reduce a mesh primitive below its LOD0 triangle count (12 triangles); the geometry is likely already below the simplifier's useful reduction threshold."
            ]
          },
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "body": {
                "$defs": {
                  "axis": {
                    "enum": [
                      "y",
                      "z"
                    ],
                    "type": "string"
                  },
                  "collision": {
                    "enum": [
                      "none",
                      "convex",
                      "convex+trimesh"
                    ],
                    "type": "string"
                  },
                  "size": {
                    "additionalProperties": false,
                    "properties": {
                      "axis": {
                        "$ref": "#/properties/input/properties/body/$defs/sizeAxis"
                      },
                      "metres": {
                        "exclusiveMinimum": 0,
                        "maximum": 1000,
                        "type": "number"
                      }
                    },
                    "required": [
                      "axis",
                      "metres"
                    ],
                    "type": "object"
                  },
                  "sizeAxis": {
                    "enum": [
                      "x",
                      "y",
                      "z",
                      "max"
                    ],
                    "type": "string"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "collision": {
                        "$ref": "#/properties/input/properties/body/$defs/collision",
                        "default": "convex",
                        "description": "Generate collision: none, a convex hull, or a convex hull plus a static trimesh."
                      },
                      "engine": {
                        "enum": [
                          "godot4",
                          "unity",
                          "unreal",
                          "gltf"
                        ],
                        "type": "string"
                      },
                      "maxTextureSize": {
                        "description": "Maximum texture edge in pixels; defaults per platform (mobile 1024, desktop 2048) when omitted.",
                        "maximum": 8192,
                        "minimum": 1,
                        "type": "integer"
                      },
                      "origin": {
                        "default": "keep",
                        "description": "Where the origin ends up: unchanged, the bounds centre, or the centre of the bottom face.",
                        "enum": [
                          "keep",
                          "center",
                          "floor"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "enum": [
                          "mobile",
                          "desktop"
                        ],
                        "type": "string"
                      },
                      "size": {
                        "$ref": "#/properties/input/properties/body/$defs/size",
                        "description": "Desired extent in metres along `axis` after normalisation; omitted keeps the source scale."
                      },
                      "sourceUp": {
                        "$ref": "#/properties/input/properties/body/$defs/axis",
                        "default": "y",
                        "description": "The source's up axis when known to be Z-up (Blender/Max exports); glTF is Y-up by default."
                      }
                    },
                    "required": [
                      "engine",
                      "platform"
                    ],
                    "type": "object"
                  }
                },
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "additionalProperties": false,
                "properties": {
                  "asset": {
                    "contentEncoding": "base64",
                    "description": "Base64-encoded glTF 2.0 binary (.glb) with embedded textures only (external URIs are rejected); decoded size must not exceed 4194304 bytes.",
                    "maxLength": 5592408,
                    "minLength": 1,
                    "type": "string"
                  },
                  "expect": {
                    "additionalProperties": false,
                    "properties": {
                      "minAnimations": {
                        "maximum": 64,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "rigged": {
                        "description": "Require a skeleton (skinned character) to be present.",
                        "type": "boolean"
                      },
                      "size": {
                        "additionalProperties": false,
                        "description": "Expected extent in metres along `axis`, checked within `tolerance` (a fraction).",
                        "properties": {
                          "axis": {
                            "$ref": "#/properties/input/properties/body/$defs/sizeAxis"
                          },
                          "metres": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000,
                            "type": "number"
                          },
                          "tolerance": {
                            "default": 0.05,
                            "maximum": 0.5,
                            "minimum": 0,
                            "type": "number"
                          }
                        },
                        "required": [
                          "axis",
                          "metres"
                        ],
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "target": {
                    "$ref": "#/properties/input/properties/body/$defs/target"
                  }
                },
                "required": [
                  "asset",
                  "target"
                ],
                "type": "object"
              },
              "bodyType": {
                "enum": [
                  "json",
                  "form-data",
                  "text"
                ],
                "type": "string"
              },
              "method": {
                "enum": [
                  "POST"
                ],
                "type": "string"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method",
              "bodyType",
              "body"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "$defs": {
                  "artifact": {
                    "additionalProperties": false,
                    "properties": {
                      "href": {
                        "format": "uri",
                        "type": "string"
                      },
                      "mediaType": {
                        "maxLength": 128,
                        "minLength": 1,
                        "type": "string"
                      },
                      "name": {
                        "enum": [
                          "asset.glb",
                          "asset-lod1.glb",
                          "asset-lod2.glb",
                          "collision.json",
                          "godot-scene.tscn",
                          "preview.png",
                          "report.json"
                        ],
                        "type": "string"
                      },
                      "sha256": {
                        "pattern": "^[a-f0-9]{64}$",
                        "type": "string"
                      },
                      "sizeBytes": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "name",
                      "mediaType",
                      "sizeBytes",
                      "sha256",
                      "href"
                    ],
                    "type": "object"
                  },
                  "bounds": {
                    "additionalProperties": false,
                    "properties": {
                      "max": {
                        "$ref": "#/properties/output/properties/example/$defs/vector3"
                      },
                      "min": {
                        "$ref": "#/properties/output/properties/example/$defs/vector3"
                      },
                      "size": {
                        "$ref": "#/properties/output/properties/example/$defs/vector3"
                      }
                    },
                    "required": [
                      "min",
                      "max",
                      "size"
                    ],
                    "type": "object"
                  },
                  "check": {
                    "additionalProperties": false,
                    "properties": {
                      "code": {
                        "type": "string"
                      },
                      "detail": {
                        "maxLength": 2048,
                        "type": "string"
                      },
                      "status": {
                        "enum": [
                          "passed",
                          "failed",
                          "not_checked"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "code",
                      "status",
                      "detail"
                    ],
                    "type": "object"
                  },
                  "collision": {
                    "enum": [
                      "none",
                      "convex",
                      "convex+trimesh"
                    ],
                    "type": "string"
                  },
                  "lod": {
                    "additionalProperties": false,
                    "properties": {
                      "bytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "error": {
                        "minimum": 0,
                        "type": "number"
                      },
                      "name": {
                        "enum": [
                          "asset.glb",
                          "asset-lod1.glb",
                          "asset-lod2.glb"
                        ],
                        "type": "string"
                      },
                      "ratio": {
                        "maximum": 1,
                        "minimum": 0,
                        "type": "number"
                      },
                      "triangles": {
                        "maximum": 250000,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "vertices": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "name",
                      "ratio",
                      "triangles",
                      "vertices",
                      "bytes",
                      "error"
                    ],
                    "type": "object"
                  },
                  "target": {
                    "additionalProperties": false,
                    "properties": {
                      "collision": {
                        "$ref": "#/properties/output/properties/example/$defs/collision"
                      },
                      "engine": {
                        "enum": [
                          "godot4",
                          "unity",
                          "unreal",
                          "gltf"
                        ],
                        "type": "string"
                      },
                      "maxTextureSize": {
                        "maximum": 8192,
                        "minimum": 1,
                        "type": "integer"
                      },
                      "origin": {
                        "enum": [
                          "keep",
                          "center",
                          "floor"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "enum": [
                          "mobile",
                          "desktop"
                        ],
                        "type": "string"
                      },
                      "size": {
                        "additionalProperties": false,
                        "properties": {
                          "axis": {
                            "enum": [
                              "x",
                              "y",
                              "z",
                              "max"
                            ],
                            "type": "string"
                          },
                          "metres": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000,
                            "type": "number"
                          }
                        },
                        "required": [
                          "axis",
                          "metres"
                        ],
                        "type": "object"
                      },
                      "sourceUp": {
                        "enum": [
                          "y",
                          "z"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "engine",
                      "platform",
                      "sourceUp",
                      "origin",
                      "collision"
                    ],
                    "type": "object"
                  },
                  "vector3": {
                    "items": {
                      "type": "number"
                    },
                    "maxItems": 3,
                    "minItems": 3,
                    "type": "array"
                  }
                },
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "additionalProperties": false,
                "properties": {
                  "artifacts": {
                    "items": {
                      "$ref": "#/properties/output/properties/example/$defs/artifact"
                    },
                    "maxItems": 7,
                    "type": "array"
                  },
                  "checks": {
                    "items": {
                      "$ref": "#/properties/output/properties/example/$defs/check"
                    },
                    "maxItems": 32,
                    "type": "array"
                  },
                  "collision": {
                    "additionalProperties": false,
                    "properties": {
                      "convexHullVertices": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "kind": {
                        "$ref": "#/properties/output/properties/example/$defs/collision"
                      },
                      "trimeshTriangles": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "kind",
                      "convexHullVertices",
                      "trimeshTriangles"
                    ],
                    "type": "object"
                  },
                  "engineLoad": {
                    "additionalProperties": false,
                    "properties": {
                      "animations": {
                        "items": {
                          "maxLength": 256,
                          "type": "string"
                        },
                        "maxItems": 256,
                        "type": "array"
                      },
                      "engine": {
                        "type": "string"
                      },
                      "errors": {
                        "items": {
                          "maxLength": 2048,
                          "type": "string"
                        },
                        "maxItems": 64,
                        "type": "array"
                      },
                      "loaded": {
                        "type": "boolean"
                      },
                      "materials": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "meshInstances": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "nodes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "skeletons": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "engine",
                      "loaded",
                      "nodes",
                      "meshInstances",
                      "materials",
                      "skeletons",
                      "animations",
                      "errors"
                    ],
                    "type": "object"
                  },
                  "expiresAt": {
                    "format": "date-time",
                    "type": "string"
                  },
                  "limitations": {
                    "items": {
                      "maxLength": 4096,
                      "type": "string"
                    },
                    "maxItems": 16,
                    "type": "array"
                  },
                  "lods": {
                    "items": {
                      "$ref": "#/properties/output/properties/example/$defs/lod"
                    },
                    "maxItems": 3,
                    "minItems": 1,
                    "type": "array"
                  },
                  "normalization": {
                    "additionalProperties": false,
                    "properties": {
                      "rotationXDegrees": {
                        "type": "number"
                      },
                      "scale": {
                        "type": "number"
                      },
                      "translation": {
                        "$ref": "#/properties/output/properties/example/$defs/vector3"
                      }
                    },
                    "required": [
                      "scale",
                      "rotationXDegrees",
                      "translation"
                    ],
                    "type": "object"
                  },
                  "output": {
                    "additionalProperties": false,
                    "properties": {
                      "animations": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "bones": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "bounds": {
                        "$ref": "#/properties/output/properties/example/$defs/bounds"
                      },
                      "bytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "materials": {
                        "maximum": 32,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "maxTextureEdge": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "meshes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "nodes": {
                        "maximum": 2000,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "primitives": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "skins": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "textures": {
                        "maximum": 32,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "triangles": {
                        "maximum": 250000,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "vertices": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "triangles",
                      "vertices",
                      "primitives",
                      "meshes",
                      "nodes",
                      "materials",
                      "textures",
                      "maxTextureEdge",
                      "skins",
                      "bones",
                      "animations",
                      "bytes",
                      "bounds"
                    ],
                    "type": "object"
                  },
                  "repairs": {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "code": {
                          "maxLength": 128,
                          "type": "string"
                        },
                        "detail": {
                          "maxLength": 2048,
                          "type": "string"
                        }
                      },
                      "required": [
                        "code",
                        "detail"
                      ],
                      "type": "object"
                    },
                    "maxItems": 100,
                    "type": "array"
                  },
                  "source": {
                    "additionalProperties": false,
                    "properties": {
                      "animations": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "bones": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "bounds": {
                        "$ref": "#/properties/output/properties/example/$defs/bounds"
                      },
                      "bytes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "materials": {
                        "maximum": 32,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "maxTextureEdge": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "meshes": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "nodes": {
                        "maximum": 2000,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "primitives": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "skins": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "textures": {
                        "maximum": 32,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "triangles": {
                        "maximum": 250000,
                        "minimum": 0,
                        "type": "integer"
                      },
                      "validatorErrors": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "validatorWarnings": {
                        "minimum": 0,
                        "type": "integer"
                      },
                      "vertices": {
                        "minimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "triangles",
                      "vertices",
                      "primitives",
                      "meshes",
                      "nodes",
                      "materials",
                      "textures",
                      "maxTextureEdge",
                      "skins",
                      "bones",
                      "animations",
                      "bytes",
                      "bounds",
                      "validatorErrors",
                      "validatorWarnings"
                    ],
                    "type": "object"
                  },
                  "status": {
                    "enum": [
                      "passed",
                      "failed"
                    ],
                    "type": "string"
                  },
                  "target": {
                    "$ref": "#/properties/output/properties/example/$defs/target"
                  },
                  "tools": {
                    "additionalProperties": false,
                    "properties": {
                      "engine": {
                        "type": "string"
                      },
                      "transform": {
                        "type": "string"
                      },
                      "validator": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "validator",
                      "transform",
                      "engine"
                    ],
                    "type": "object"
                  },
                  "truncated": {
                    "type": "boolean"
                  },
                  "validator": {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "code": {
                          "maxLength": 128,
                          "type": "string"
                        },
                        "message": {
                          "maxLength": 2048,
                          "type": "string"
                        },
                        "pointer": {
                          "maxLength": 512,
                          "type": "string"
                        },
                        "severity": {
                          "enum": [
                            "error",
                            "warning",
                            "info"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "severity",
                        "code",
                        "message",
                        "pointer"
                      ],
                      "type": "object"
                    },
                    "maxItems": 100,
                    "type": "array"
                  },
                  "warnings": {
                    "items": {
                      "maxLength": 4096,
                      "type": "string"
                    },
                    "maxItems": 100,
                    "type": "array"
                  }
                },
                "required": [
                  "status",
                  "tools",
                  "target",
                  "source",
                  "output",
                  "normalization",
                  "lods",
                  "collision",
                  "engineLoad",
                  "repairs",
                  "checks",
                  "validator",
                  "warnings",
                  "limitations",
                  "truncated",
                  "expiresAt",
                  "artifacts"
                ],
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    },
    "builder-code": {
      "info": {
        "s": [
          "cdp_sdk_server"
        ]
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "additionalProperties": false,
        "properties": {
          "a": {
            "description": "App builder code",
            "pattern": "^[a-z0-9_]{1,32}$",
            "type": "string"
          },
          "s": {
            "description": "Service builder codes",
            "items": {
              "pattern": "^[a-z0-9_]{1,32}$",
              "type": "string"
            },
            "maxItems": 11,
            "type": "array"
          },
          "w": {
            "description": "Wallet builder code",
            "pattern": "^[a-z0-9_]{1,32}$",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "eip2612GasSponsoring": {},
    "erc20ApprovalGasSponsoring": {},
    "payment-identifier": {
      "info": {
        "required": true
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "id": {
            "maxLength": 128,
            "minLength": 16,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string"
          },
          "required": {
            "type": "boolean"
          }
        },
        "required": [
          "required"
        ],
        "type": "object"
      }
    }
  },
  "tags": [
    "bazaar",
    "builder-code",
    "eip2612GasSponsoring",
    "erc20ApprovalGasSponsoring",
    "payment-identifier"
  ],
  "sourceHost": "asset.api.williamrobinson.dev",
  "lastUpdated": "2026-09-11T00:17:09.98Z",
  "quality": {
    "calls30d": 1,
    "uniquePayers30d": 1,
    "lastCalledAt": "2026-09-11T00:17:09.409Z"
  },
  "liveness": {},
  "verified": false,
  "featured": false,
  "provider": {
    "host": "asset.api.williamrobinson.dev",
    "manifest_name": "asset.api.williamrobinson.dev",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-09-18T22:00:31.484Z"
  }
}