{
  "name": "example",
  "version": "0.0.1",
  "resources": {
    "example::NoRecursive": {
      "properties": {
        "rec": {
          "$ref": "#/types/example::Rec"
        },
        "replaceMe": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "example::ToyStore": {
      "properties": {
        "chew": {
          "$ref": "#/types/example::Chew"
        },
        "laser": {
          "$ref": "#/types/example::Laser"
        },
        "stuff": {
          "type": "array",
          "items": {
            "$ref": "#/types/example::Toy"
          }
        },
        "wanted": {
          "type": "array",
          "items": {
            "$ref": "#/types/example::Toy"
          },
          "replaceOnChanges": true
        }
      }
    },
    "example::God": {
      "properties": {
        "backwards": {
          "$ref": "#/resources/example::Dog"
        }
      }
    },
    "example::Dog": {
      "properties": {
        "bone": {
          "type": "string",
          "replaceOnChanges": true
        }
      }
    },
    "example::Cat": {
      "properties": {
        "name": {
          "type": "string",
          "secret": true,
          "replaceOnChanges": true
        },
        "other": {
          "$ref": "#/resources/example::God"
        },
        "toy": {
          "$ref": "#/types/example::Toy"
        },
        "friends": {
          "type": "array",
          "items": {
            "$ref": "#/types/example::Toy"
          }
        },
        "foes": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/types/example::Toy"
          }
        }
      }
    }
  },
  "types": {
    "example::Toy": {
      "description": "This is a toy",
      "type": "object",
      "properties": {
        "color": {
          "type": "string",
          "secret": true,
          "replaceOnChanges": true
        },
        "wear": {
          "type": "number"
        },
        "associated": {
          "$ref": "#/types/example::Toy"
        }
      }
    },
    "example::Laser": {
      "description": "A Toy for a cat",
      "type": "object",
      "properties": {
        "animal": {
          "$ref": "#/resources/example::Cat"
        },
        "light": {
          "type": "number"
        },
        "batteries": {
          "type": "boolean",
          "replaceOnChanges": true
        }
      }
    },
    "example::Chew": {
      "description": "A toy for a dog",
      "type": "object",
      "properties": {
        "owner": {
          "$ref": "#/resources/example::Dog",
          "replaceOnChanges": true
        }
      }
    },
    "example::Rec": {
      "type": "object",
      "properties": {
        "rec1": {
          "$ref": "#/types/example::Rec"
        }
      }
    }
  },
  "language": {
    "go": {
      "generateResourceContainerTypes": true,
      "disableInputTypeRegistrations": true,
      "generateExtraInputTypes": true,
      "importBasePath": "replace-on-change/example"
    },
    "nodejs": {
      "dependencies": {
        "@pulumi/pulumi": "^3.12"
      },
      "devDependencies": {
        "typescript": "^3.7.0"
      }
    },
    "python": {}
  }
}