     %{ w | operations: [operation | w.operations] }
   end
 
+  def validate(%Write{} = w, fourfour, properties) do
+    operation = %ValidateView{fourfour: fourfour, properties: properties}
+    %{ w | operations: [operation | w.operations] }
+  end
+
   def create_column(%Write{} = w, fourfour, name, type, properties) do
     operation = %CreateColumn{name: name, dataTypeName: type, fourfour: fourfour, properties: properties}
     %{ w | operations: [operation | w.operations] }

    validate_only: nil
  end

  defmodule Upsert do
    defstruct fourfour: nil,
    mode: nil,

  defp do_run(%UpdateView{validate_only: validate_only} = uv, w) do
    with {:ok, json} <- Poison.encode(uv.properties) do
      Http.put("/views/#{Http.encode(uv.fourfour)}.json?validateOnly=#{Http.encode(validate_only)}", w, json)
    end
  end

  defp do_run(%ValidateView{} = uv, w) do
    with {:ok, json} <- Poison.encode(uv.properties) do
      Http.put("/views/#{Http.encode(uv.fourfour)}.json?method=validate", w, json)
    end
  end

