{
  "typeName" : "AWS::CodeBuild::Project",
  "description" : "Resource Type definition for AWS::CodeBuild::Project",
  "additionalProperties" : false,
  "properties" : {
    "Description" : {
      "type" : "string"
    },
    "ResourceAccessRole" : {
      "type" : "string"
    },
    "VpcConfig" : {
      "$ref" : "#/definitions/VpcConfig"
    },
    "SecondarySources" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "$ref" : "#/definitions/Source"
      }
    },
    "EncryptionKey" : {
      "type" : "string"
    },
    "SecondaryArtifacts" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "$ref" : "#/definitions/Artifacts"
      }
    },
    "Source" : {
      "$ref" : "#/definitions/Source"
    },
    "Name" : {
      "type" : "string"
    },
    "LogsConfig" : {
      "$ref" : "#/definitions/LogsConfig"
    },
    "ServiceRole" : {
      "type" : "string"
    },
    "QueuedTimeoutInMinutes" : {
      "type" : "integer"
    },
    "SecondarySourceVersions" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "$ref" : "#/definitions/ProjectSourceVersion"
      }
    },
    "Tags" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    },
    "SourceVersion" : {
      "type" : "string"
    },
    "Triggers" : {
      "$ref" : "#/definitions/ProjectTriggers"
    },
    "Artifacts" : {
      "$ref" : "#/definitions/Artifacts"
    },
    "BadgeEnabled" : {
      "type" : "boolean"
    },
    "FileSystemLocations" : {
      "type" : "array",
      "uniqueItems" : false,
      "items" : {
        "$ref" : "#/definitions/ProjectFileSystemLocation"
      }
    },
    "Environment" : {
      "$ref" : "#/definitions/Environment"
    },
    "ConcurrentBuildLimit" : {
      "type" : "integer"
    },
    "Visibility" : {
      "type" : "string"
    },
    "Id" : {
      "type" : "string"
    },
    "Arn" : {
      "type" : "string"
    },
    "BuildBatchConfig" : {
      "$ref" : "#/definitions/ProjectBuildBatchConfig"
    },
    "TimeoutInMinutes" : {
      "type" : "integer"
    },
    "Cache" : {
      "$ref" : "#/definitions/ProjectCache"
    }
  },
  "definitions" : {
    "ProjectSourceVersion" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "SourceIdentifier" : {
          "type" : "string"
        },
        "SourceVersion" : {
          "type" : "string"
        }
      },
      "required" : [ "SourceIdentifier" ]
    },
    "VpcConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Subnets" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "VpcId" : {
          "type" : "string"
        },
        "SecurityGroupIds" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        }
      }
    },
    "SourceAuth" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Resource" : {
          "type" : "string"
        },
        "Type" : {
          "type" : "string"
        }
      },
      "required" : [ "Type" ]
    },
    "RegistryCredential" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Credential" : {
          "type" : "string"
        },
        "CredentialProvider" : {
          "type" : "string"
        }
      },
      "required" : [ "Credential", "CredentialProvider" ]
    },
    "FilterGroup" : {
      "type" : "object",
      "additionalProperties" : false
    },
    "Source" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Type" : {
          "type" : "string"
        },
        "ReportBuildStatus" : {
          "type" : "boolean"
        },
        "Auth" : {
          "$ref" : "#/definitions/SourceAuth"
        },
        "SourceIdentifier" : {
          "type" : "string"
        },
        "BuildSpec" : {
          "type" : "string"
        },
        "GitCloneDepth" : {
          "type" : "integer"
        },
        "BuildStatusConfig" : {
          "$ref" : "#/definitions/BuildStatusConfig"
        },
        "GitSubmodulesConfig" : {
          "$ref" : "#/definitions/GitSubmodulesConfig"
        },
        "InsecureSsl" : {
          "type" : "boolean"
        },
        "Location" : {
          "type" : "string"
        }
      },
      "required" : [ "Type" ]
    },
    "ProjectCache" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Modes" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "Type" : {
          "type" : "string"
        },
        "Location" : {
          "type" : "string"
        }
      },
      "required" : [ "Type" ]
    },
    "Artifacts" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Path" : {
          "type" : "string"
        },
        "Type" : {
          "type" : "string"
        },
        "ArtifactIdentifier" : {
          "type" : "string"
        },
        "OverrideArtifactName" : {
          "type" : "boolean"
        },
        "Packaging" : {
          "type" : "string"
        },
        "EncryptionDisabled" : {
          "type" : "boolean"
        },
        "Location" : {
          "type" : "string"
        },
        "Name" : {
          "type" : "string"
        },
        "NamespaceType" : {
          "type" : "string"
        }
      },
      "required" : [ "Type" ]
    },
    "LogsConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "CloudWatchLogs" : {
          "$ref" : "#/definitions/CloudWatchLogsConfig"
        },
        "S3Logs" : {
          "$ref" : "#/definitions/S3LogsConfig"
        }
      }
    },
    "BatchRestrictions" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "ComputeTypesAllowed" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "type" : "string"
          }
        },
        "MaximumBuildsAllowed" : {
          "type" : "integer"
        }
      }
    },
    "ProjectBuildBatchConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "CombineArtifacts" : {
          "type" : "boolean"
        },
        "ServiceRole" : {
          "type" : "string"
        },
        "BatchReportMode" : {
          "type" : "string"
        },
        "TimeoutInMins" : {
          "type" : "integer"
        },
        "Restrictions" : {
          "$ref" : "#/definitions/BatchRestrictions"
        }
      }
    },
    "CloudWatchLogsConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Status" : {
          "type" : "string"
        },
        "GroupName" : {
          "type" : "string"
        },
        "StreamName" : {
          "type" : "string"
        }
      },
      "required" : [ "Status" ]
    },
    "Environment" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Type" : {
          "type" : "string"
        },
        "EnvironmentVariables" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/EnvironmentVariable"
          }
        },
        "PrivilegedMode" : {
          "type" : "boolean"
        },
        "ImagePullCredentialsType" : {
          "type" : "string"
        },
        "Image" : {
          "type" : "string"
        },
        "RegistryCredential" : {
          "$ref" : "#/definitions/RegistryCredential"
        },
        "ComputeType" : {
          "type" : "string"
        },
        "Certificate" : {
          "type" : "string"
        }
      },
      "required" : [ "Type", "Image", "ComputeType" ]
    },
    "EnvironmentVariable" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string"
        },
        "Type" : {
          "type" : "string"
        },
        "Name" : {
          "type" : "string"
        }
      },
      "required" : [ "Value", "Name" ]
    },
    "ProjectFileSystemLocation" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "MountPoint" : {
          "type" : "string"
        },
        "Type" : {
          "type" : "string"
        },
        "Identifier" : {
          "type" : "string"
        },
        "MountOptions" : {
          "type" : "string"
        },
        "Location" : {
          "type" : "string"
        }
      },
      "required" : [ "MountPoint", "Type", "Identifier", "Location" ]
    },
    "Tag" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Value" : {
          "type" : "string"
        },
        "Key" : {
          "type" : "string"
        }
      },
      "required" : [ "Value", "Key" ]
    },
    "ProjectTriggers" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "BuildType" : {
          "type" : "string"
        },
        "FilterGroups" : {
          "type" : "array",
          "uniqueItems" : false,
          "items" : {
            "$ref" : "#/definitions/FilterGroup"
          }
        },
        "Webhook" : {
          "type" : "boolean"
        }
      }
    },
    "BuildStatusConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Context" : {
          "type" : "string"
        },
        "TargetUrl" : {
          "type" : "string"
        }
      }
    },
    "GitSubmodulesConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "FetchSubmodules" : {
          "type" : "boolean"
        }
      },
      "required" : [ "FetchSubmodules" ]
    },
    "S3LogsConfig" : {
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "Status" : {
          "type" : "string"
        },
        "EncryptionDisabled" : {
          "type" : "boolean"
        },
        "Location" : {
          "type" : "string"
        }
      },
      "required" : [ "Status" ]
    }
  },
  "required" : [ "Artifacts", "ServiceRole", "Environment", "Source" ],
  "createOnlyProperties" : [ "/properties/Name" ],
  "primaryIdentifier" : [ "/properties/Id" ],
  "readOnlyProperties" : [ "/properties/Id", "/properties/Arn" ]
}