diff --git a/openstack/cdn/v1/services/requests.go b/openstack/cdn/v1/services/requests.go
index 922bd8f..3debfd6 100644
--- a/openstack/cdn/v1/services/requests.go
+++ b/openstack/cdn/v1/services/requests.go
@@ -106,7 +106,7 @@
 		if origin.Origin == "" {
 			return nil, no("Origins[].Origin")
 		}
-		if origin.Rules == nil {
+		if origin.Rules == nil && len(opts.Origins) > 1{
 			return nil, no("Origins[].Rules")
 		}
 		for _, rule := range origin.Rules {
@@ -175,11 +175,13 @@
 	}
 
 	// Send request to API
-	_, res.Err = perigee.Request("POST", createURL(c), perigee.Options{
+	resp, err := perigee.Request("POST", createURL(c), perigee.Options{
 		MoreHeaders: c.AuthenticatedHeaders(),
 		ReqBody:     &reqBody,
 		OkCodes:     []int{202},
 	})
+	res.Header = resp.HttpResponse.Header
+	res.Err = err
 	return res
 }
 
@@ -221,13 +223,13 @@
 // to a service can be submitted at the same time. See UpdateOpts.
 type UpdateOpt struct {
 	// Specifies the update operation to perform.
-	Op Op
+	Op Op `json:"op"`
 	// Specifies the JSON Pointer location within the service's JSON representation
 	// of the service parameter being added, replaced or removed.
-	Path string
+	Path string `json:"path"`
 	// Specifies the actual value to be added or replaced. It is not required for
 	// the remove operation.
-	Value map[string]interface{}
+	Value map[string]interface{} `json:"value,omitempty"`
 }
 
 // ToCDNServiceUpdateMap casts an UpdateOpts struct to a map.
@@ -244,7 +246,11 @@
 		if opt.Op != Remove && opt.Value == nil {
 			return nil, no("Value")
 		}
-		s[i] = interface{}(opt).(map[string]interface{})
+		s[i] = map[string]interface{}{
+			"op":opt.Op,
+			"path": opt.Path,
+			"value": opt.Value,
+		}
 	}
 
 	return s, nil
@@ -261,11 +267,13 @@
 		return res
 	}
 
-	_, res.Err = perigee.Request("PATCH", updateURL(c, id), perigee.Options{
+	resp, err := perigee.Request("PATCH", updateURL(c, id), perigee.Options{
 		MoreHeaders: c.AuthenticatedHeaders(),
 		ReqBody:     &reqBody,
 		OkCodes:     []int{202},
 	})
+	res.Header = resp.HttpResponse.Header
+	res.Err = err
 	return res
 }
 
