     /// (that is, there is a logical OR between the security requirements).
     /// This definition overrides any declared top-level security.
     /// To remove a top-level security declaration, an empty array is used.
-    public let security: [SecurityRequirement]
+    public let security: [SecurityRequirement]?
 }
 
 struct OperationBuilder: Builder {

        responses = mappedResponses
        defaultResponse = allResponses["default"]
        deprecated = (try? map.value("deprecated")) ?? false
        security = (try? map.value("security")) ?? []
    }

    func build(_ swagger: SwaggerBuilder) throws -> Operation {

    let deprecated: Bool
    let identifier: String?
    let tags: [String]
    let security: [SecurityRequirement]?

    init(map: Map) throws {
        summary = try? map.value("summary")
