← Files Build 3D Game RoomsARCHIVED FILE

skills/build-3d-game-rooms/references/schemas/prop-manifest.schema.json

2.79 KB · Sep 30, 2026 · 23:15 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "game-room.prop-manifest.v1",
  "type": "object",
  "required": ["schema", "roomId", "generation", "assets"],
  "properties": {
    "schema": {"const": "game-room.prop-manifest.v1"},
    "roomId": {"type": "string", "minLength": 1},
    "generation": {
      "type": "object",
      "required": ["provider", "apiModel", "pricingSource", "pricingVerifiedAt", "creditsPerTexturedTask", "hardCreditCeiling", "maxChargedAttemptsPerAsset"],
      "properties": {
        "provider": {"const": "meshy"},
        "apiModel": {"const": "meshy-5"},
        "pricingSource": {"const": "https://docs.meshy.ai/en/api/pricing"},
        "pricingVerifiedAt": {"type": "string"},
        "creditsPerTexturedTask": {"type": "integer", "minimum": 1},
        "hardCreditCeiling": {"type": "integer", "minimum": 0},
        "maxChargedAttemptsPerAsset": {"const": 2}
      }
    },
    "assets": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["id", "function", "class", "description", "dimensionsMeters", "attachmentFace", "semanticFront", "intendedInstances", "image", "targetPolycount", "texturePrompt", "rejectionCriteria", "attempts", "acceptedMesh"],
        "properties": {
          "id": {"type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$"},
          "function": {"type": "string", "minLength": 1},
          "class": {"enum": ["reusable", "hero"]},
          "description": {"type": "string", "minLength": 1},
          "dimensionsMeters": {"type": "array", "minItems": 3, "maxItems": 3, "items": {"type": "number", "exclusiveMinimum": 0}},
          "attachmentFace": {"enum": ["floor", "wall", "ceiling", "freestanding"]},
          "semanticFront": {"enum": ["positive-x", "negative-x", "positive-y", "negative-y", "positive-z", "negative-z"]},
          "intendedInstances": {"type": "integer", "minimum": 1},
          "image": {
            "type": "object",
            "required": ["prompt", "generator", "model", "source", "approved", "approvedBy"],
            "properties": {
              "prompt": {"type": "string", "minLength": 1},
              "generator": {"type": "string", "minLength": 1},
              "model": {"type": "string"},
              "source": {"type": "string", "minLength": 1},
              "approved": {"type": "boolean"},
              "approvedBy": {"type": "string"}
            }
          },
          "targetPolycount": {"type": "integer", "minimum": 100, "maximum": 300000},
          "texturePrompt": {"type": "string", "maxLength": 800},
          "rejectionCriteria": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
          "attempts": {"type": "array", "items": {"type": "object"}},
          "acceptedMesh": {"type": ["object", "null"]}
        }
      }
    }
  }
}

SHA-256: 8922d89e8d9dc5becc0f5fe7f98f354909cd3b969176cb9458d224430b7afb65