{
  "$schema": "http://json-schema.org/draft-03/schema",
  "type": "object",
  "required": true,
  "description": "Project Template resource.",
  "properties": {
    "id": {
      "type": "string",
      "required": true
    },
    "name": {
      "type": "string",
      "required": true
    },
    "description": {
      "type": "string",
      "required": false
    },
    "buildConfigs": {
      "type": "array",
      "required": false,
      "items": {
        "type": "object",
        "required": true,
        "properties": {
          "name": {
            "type": "string",
            "required": true
          },
          "type": {
            "type": "string",
            "required": true
          },
          "imageRepository": {
            "type": "string",
            "required": true
          },
          "sourceUri": {
            "type": "string",
            "required": false
          }
        }
      }
    },
    "deploymentConfigs": {
      "type": "array",
      "required": true,
      "items": {
        "type": "object",
        "required": true,
        "properties": {
          "kind": {
            "type": "string",
            "required": true
          },
          "apiVersion": {
            "type": "string",
            "required": true
          },
          "desiredState": {
            "type": "object",
            "required": true,
            "properties": {
              "podTemplate": {
                "type": "object",
                "required": true,
                "properties": {
                  "id": {
                    "type": "string",
                    "required": false
                  },
                  "kind": {
                    "type": "string",
                    "required": false
                  },
                  "apiVersion": {
                    "type": "string",
                    "required": true
                  },
                  "desiredState": {
                    "type": "object",
                    "required": true,
                    "properties": {
                      "manifest": {
                        "type": "object",
                        "required": true,
                        "properties": {
                          "version": {
                            "type": "string",
                            "required": true
                          },
                          "id": {
                            "type": "string",
                            "required": true
                          },
                          "containers": {
                            "type": "array",
                            "required": true,
                            "items": {
                              "type": "object",
                              "required": true,
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "required": true
                                },
                                "image": {
                                  "type": "string",
                                  "required": true
                                },
                                "ports": {
                                  "type": "array",
                                  "required": false,
                                  "items": {
                                    "type": "object",
                                    "required": true,
                                    "properties": {
                                      "containerPort": {
                                        "type": "number",
                                        "required": true
                                      },
                                      "hostPort": {
                                        "type": "number",
                                        "required": true
                                      }
                                    }
                                  }
                                },
                                "env": {
                                  "type": "array",
                                  "required": false,
                                  "items": {
                                    "type": "object",
                                    "required": false,
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "required": false
                                      },
                                      "value": {
                                        "type": "string",
                                        "required": false
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  "labels": {
                    "type": "object",
                    "required": false
                  }
                }
              },
              "replicaSelector": {
                "type": "object",
                "required": false,
                "properties": {
                  "name": {
                    "type": "string",
                    "required": true
                  }
                }
              },
              "replicas": {
                "type": "number",
                "required": false
              }
            }
          },
          "labels": {
            "type": "object",
            "required": false
          }
        }
      }
    },
    "imageRepositories": {
      "type": "array",
      "required": true,
      "items": {
        "type": "object",
        "required": true,
        "properties": {
          "name": {
            "type": "string",
            "required": true
          },
          "url": {
            "type": "string",
            "required": true
          }
        }
      }
    },
    "parameters": {
      "type": "array",
      "required": false,
      "items": {
        "type": "object",
        "required": false,
        "properties": {
          "name": {
            "type": "string",
            "required": true
          },
          "type": {
            "type": "string",
            "required": true,
            "enum": ["string"]
          },
          "value": {
            "type": "string",
            "required": false
          },
          "generate": {
            "type": "string",
            "required": false
          },
          "description": {
            "type": "string",
            "required": false
          }
        }
      }
    },
    "services": {
      "type": "array",
      "required": false,
      "items": {
        "type": "object",
        "required": false,
        "properties": {
          "id": {
            "type": "string",
            "required": true
          },
          "kind": {
            "type": "string",
            "required": true
          },
          "apiVersion": {
            "type": "string",
            "required": true
          },
          "port": {
            "type": "number",
            "required": false
          },
          "selector": {
            "type": "object",
            "required": false,
            "properties": {
              "name": {
                "type": "string",
                "required": true
              }
            }
          }
        }
      }
    }
  }
}