diff --git a/openstack/networking/v2/extensions/lbaas/monitors/requests.go b/openstack/networking/v2/extensions/lbaas/monitors/requests.go
index dcdb0cc..572ea80 100644
--- a/openstack/networking/v2/extensions/lbaas/monitors/requests.go
+++ b/openstack/networking/v2/extensions/lbaas/monitors/requests.go
@@ -202,7 +202,7 @@
 	}
 
 	type request struct {
-		Monitor monitor `json:"healthmonitor"`
+		Monitor monitor `json:"health_monitor"`
 	}
 
 	reqBody := request{Monitor: monitor{
@@ -283,7 +283,7 @@
 	}
 
 	type request struct {
-		Monitor monitor `json:"healthmonitor"`
+		Monitor monitor `json:"health_monitor"`
 	}
 
 	reqBody := request{Monitor: monitor{
@@ -302,7 +302,7 @@
 		MoreHeaders: c.Provider.AuthenticatedHeaders(),
 		ReqBody:     &reqBody,
 		Results:     &res.Resp,
-		OkCodes:     []int{202},
+		OkCodes:     []int{200, 202},
 	})
 
 	return res
diff --git a/openstack/networking/v2/extensions/lbaas/monitors/requests_test.go b/openstack/networking/v2/extensions/lbaas/monitors/requests_test.go
index 3124729..6ee37ce 100644
--- a/openstack/networking/v2/extensions/lbaas/monitors/requests_test.go
+++ b/openstack/networking/v2/extensions/lbaas/monitors/requests_test.go
@@ -22,14 +22,14 @@
 func TestURLs(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
-	th.AssertEquals(t, th.Endpoint()+"v2.0/lb/healthmonitors", rootURL(serviceClient()))
+	th.AssertEquals(t, th.Endpoint()+"v2.0/lb/health_monitors", rootURL(serviceClient()))
 }
 
 func TestList(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
 
-	th.Mux.HandleFunc("/v2.0/lb/healthmonitors", func(w http.ResponseWriter, r *http.Request) {
+	th.Mux.HandleFunc("/v2.0/lb/health_monitors", func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "GET")
 		th.TestHeader(t, r, "X-Auth-Token", tokenID)
 
@@ -38,7 +38,7 @@
 
 		fmt.Fprintf(w, `
 {
-   "healthmonitors":[
+   "health_monitors":[
       {
          "admin_state_up":true,
          "tenant_id":"83657cfcdfe44cd5920adaf26c48ceea",
@@ -113,14 +113,14 @@
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
 
-	th.Mux.HandleFunc("/v2.0/lb/healthmonitors", func(w http.ResponseWriter, r *http.Request) {
+	th.Mux.HandleFunc("/v2.0/lb/health_monitors", func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "POST")
 		th.TestHeader(t, r, "X-Auth-Token", tokenID)
 		th.TestHeader(t, r, "Content-Type", "application/json")
 		th.TestHeader(t, r, "Accept", "application/json")
 		th.TestJSONRequest(t, r, `
 {
-   "healthmonitor":{
+   "health_monitor":{
       "type":"HTTP",
       "tenant_id":"453105b9-1754-413f-aab1-55f1af620750",
       "delay":20,
@@ -137,7 +137,7 @@
 
 		fmt.Fprintf(w, `
 {
-   "healthmonitor":{
+   "health_monitor":{
       "id":"f3eeab00-8367-4524-b662-55e64d4cacb5",
       "tenant_id":"453105b9-1754-413f-aab1-55f1af620750",
       "type":"HTTP",
@@ -171,7 +171,7 @@
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
 
-	th.Mux.HandleFunc("/v2.0/lb/healthmonitors/f3eeab00-8367-4524-b662-55e64d4cacb5", func(w http.ResponseWriter, r *http.Request) {
+	th.Mux.HandleFunc("/v2.0/lb/health_monitors/f3eeab00-8367-4524-b662-55e64d4cacb5", func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "GET")
 		th.TestHeader(t, r, "X-Auth-Token", tokenID)
 
@@ -180,7 +180,7 @@
 
 		fmt.Fprintf(w, `
 {
-   "healthmonitor":{
+   "health_monitor":{
       "id":"f3eeab00-8367-4524-b662-55e64d4cacb5",
       "tenant_id":"453105b9-1754-413f-aab1-55f1af620750",
       "type":"HTTP",
@@ -217,14 +217,14 @@
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
 
-	th.Mux.HandleFunc("/v2.0/lb/healthmonitors/b05e44b5-81f9-4551-b474-711a722698f7", func(w http.ResponseWriter, r *http.Request) {
+	th.Mux.HandleFunc("/v2.0/lb/health_monitors/b05e44b5-81f9-4551-b474-711a722698f7", func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "PUT")
 		th.TestHeader(t, r, "X-Auth-Token", tokenID)
 		th.TestHeader(t, r, "Content-Type", "application/json")
 		th.TestHeader(t, r, "Accept", "application/json")
 		th.TestJSONRequest(t, r, `
 {
-   "healthmonitor":{
+   "health_monitor":{
       "delay": 3,
       "timeout": 20,
       "max_retries": 10,
@@ -239,7 +239,7 @@
 
 		fmt.Fprintf(w, `
 {
-    "healthmonitor": {
+    "health_monitor": {
         "admin_state_up": true,
         "tenant_id": "4fd44f30292945e481c7b8a0c8908869",
         "delay": 3,
@@ -275,7 +275,7 @@
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
 
-	th.Mux.HandleFunc("/v2.0/lb/healthmonitors/b05e44b5-81f9-4551-b474-711a722698f7", func(w http.ResponseWriter, r *http.Request) {
+	th.Mux.HandleFunc("/v2.0/lb/health_monitors/b05e44b5-81f9-4551-b474-711a722698f7", func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "DELETE")
 		th.TestHeader(t, r, "X-Auth-Token", tokenID)
 		w.WriteHeader(http.StatusNoContent)
diff --git a/openstack/networking/v2/extensions/lbaas/monitors/results.go b/openstack/networking/v2/extensions/lbaas/monitors/results.go
index 44c1fff..5804b08 100644
--- a/openstack/networking/v2/extensions/lbaas/monitors/results.go
+++ b/openstack/networking/v2/extensions/lbaas/monitors/results.go
@@ -79,7 +79,7 @@
 		Rel  string `mapstructure:"rel"`
 	}
 	type resp struct {
-		Links []link `mapstructure:"healthmonitors_links"`
+		Links []link `mapstructure:"health_monitors_links"`
 	}
 
 	var r resp
@@ -115,7 +115,7 @@
 // a generic collection is mapped into a relevant slice.
 func ExtractMonitors(page pagination.Page) ([]Monitor, error) {
 	var resp struct {
-		Monitors []Monitor `mapstructure:"healthmonitors" json:"healthmonitors"`
+		Monitors []Monitor `mapstructure:"health_monitor" json:"health_monitor"`
 	}
 
 	err := mapstructure.Decode(page.(MonitorPage).Body, &resp)
@@ -137,7 +137,7 @@
 	}
 
 	var res struct {
-		Monitor *Monitor `json:"healthmonitor" mapstructure:"healthmonitor"`
+		Monitor *Monitor `json:"health_monitor" mapstructure:"health_monitor"`
 	}
 
 	err := mapstructure.Decode(r.Resp, &res)
diff --git a/openstack/networking/v2/extensions/lbaas/monitors/urls.go b/openstack/networking/v2/extensions/lbaas/monitors/urls.go
index b6eeb24..e4b2afc 100644
--- a/openstack/networking/v2/extensions/lbaas/monitors/urls.go
+++ b/openstack/networking/v2/extensions/lbaas/monitors/urls.go
@@ -5,7 +5,7 @@
 const (
 	version      = "v2.0"
 	rootPath     = "lb"
-	resourcePath = "healthmonitors"
+	resourcePath = "health_monitors"
 )
 
 func rootURL(c *gophercloud.ServiceClient) string {
diff --git a/openstack/networking/v2/extensions/lbaas/pools/requests.go b/openstack/networking/v2/extensions/lbaas/pools/requests.go
index 9ce2672..bfdbefe 100644
--- a/openstack/networking/v2/extensions/lbaas/pools/requests.go
+++ b/openstack/networking/v2/extensions/lbaas/pools/requests.go
@@ -122,8 +122,8 @@
 // load balancer pool.
 func Create(c *gophercloud.ServiceClient, opts CreateOpts) CreateResult {
 	type pool struct {
-		Name     string `json:"name,"`
-		TenantID string `json:"tenant_id"`
+		Name     string `json:"name"`
+		TenantID string `json:"tenant_id,omitempty"`
 		Protocol string `json:"protocol"`
 		SubnetID string `json:"subnet_id"`
 		LBMethod string `json:"lb_method"`
diff --git a/openstack/networking/v2/extensions/lbaas/vips/requests.go b/openstack/networking/v2/extensions/lbaas/vips/requests.go
index 31ed975..c2e27f9 100644
--- a/openstack/networking/v2/extensions/lbaas/vips/requests.go
+++ b/openstack/networking/v2/extensions/lbaas/vips/requests.go
@@ -302,7 +302,7 @@
 		MoreHeaders: c.Provider.AuthenticatedHeaders(),
 		ReqBody:     &reqBody,
 		Results:     &res.Resp,
-		OkCodes:     []int{202},
+		OkCodes:     []int{200, 202},
 	})
 
 	return res
