def create!
      payload = {}

      @manifest ||= {}
      @manifest[:entity] ||= {}

      @manifest[:entity].each do |k, v|
        if v.is_a?(Hash) && v.key?(:metadata)
          # skip; there's a _guid attribute already
        elsif v.is_a?(Array) && !v.empty? && v.all? { |x|
          x.is_a?(Hash) && x.key?(:metadata)
        }
          singular = k.to_s.sub(/s$/, "")

          payload[:"#{singular}_guids"] = v.collect do |x|
            if x.is_a?(Hash) && x.key?(:metadata)
              x[:metadata][:guid]
            else
              x
            end
          end
        else
          payload[k] = v
        end
      end

      @manifest = @client.base.post("v2", create_endpoint_name,
        :content => :json,
        :accept => :json,
        :payload => payload
      )

      @guid = @manifest[:metadata][:guid]

      @diff.clear

      true
    end
def create!
      payload = {}

      @manifest ||= {}
      @manifest[:entity] ||= {}

      @manifest[:entity].each do |k, v|
        if v.is_a?(Hash) && v.key?(:metadata)
          # skip; there's a _guid attribute already
        elsif v.is_a?(Array) && !v.empty? && v.all? { |x|
          x.is_a?(Hash) && x.key?(:metadata)
        }
          singular = k.to_s.sub(/s$/, "")

          payload[:"#{singular}_guids"] = v.collect do |x|
            if x.is_a?(Hash) && x.key?(:metadata)
              x[:metadata][:guid]
            else
              x
            end
          end
        else
          payload[k] = v
        end
      end

      @manifest = @client.base.post("v2", create_endpoint_name,
        :content => :json,
        :accept => :json,
        :payload => payload
      )

      @guid = @manifest[:metadata][:guid]

      @diff.clear

      true
    end
this does a bit of extra processing to allow for
 `delete!' followed by `create!'