diff --git a/openstack/identity/v3/endpoints/errors.go b/openstack/identity/v3/endpoints/errors.go
index a8b00d4..854957f 100644
--- a/openstack/identity/v3/endpoints/errors.go
+++ b/openstack/identity/v3/endpoints/errors.go
@@ -7,8 +7,8 @@
 }
 
 var (
-	// ErrInterfaceRequired is reported if an Endpoint is created without an Interface.
-	ErrInterfaceRequired = requiredAttribute("an interface")
+	// ErrAvailabilityRequired is reported if an Endpoint is created without an Availability.
+	ErrAvailabilityRequired = requiredAttribute("an availability")
 
 	// ErrNameRequired is reported if an Endpoint is created without a Name.
 	ErrNameRequired = requiredAttribute("a name")
diff --git a/openstack/identity/v3/endpoints/requests.go b/openstack/identity/v3/endpoints/requests.go
index 65d505a..a990049 100644
--- a/openstack/identity/v3/endpoints/requests.go
+++ b/openstack/identity/v3/endpoints/requests.go
@@ -18,11 +18,11 @@
 
 // EndpointOpts contains the subset of Endpoint attributes that should be used to create or update an Endpoint.
 type EndpointOpts struct {
-	Interface gophercloud.Interface
-	Name      string
-	Region    string
-	URL       string
-	ServiceID string
+	Availability gophercloud.Availability
+	Name         string
+	Region       string
+	URL          string
+	ServiceID    string
 }
 
 // Create inserts a new Endpoint into the service catalog.
@@ -46,8 +46,8 @@
 	}
 
 	// Ensure that EndpointOpts is fully populated.
-	if opts.Interface == "" {
-		return nil, ErrInterfaceRequired
+	if opts.Availability == "" {
+		return nil, ErrAvailabilityRequired
 	}
 	if opts.Name == "" {
 		return nil, ErrNameRequired
@@ -62,7 +62,7 @@
 	// Populate the request body.
 	reqBody := request{
 		Endpoint: endpoint{
-			Interface: string(opts.Interface),
+			Interface: string(opts.Availability),
 			Name:      opts.Name,
 			URL:       opts.URL,
 			ServiceID: opts.ServiceID,
@@ -87,17 +87,17 @@
 // ListOpts allows finer control over the the endpoints returned by a List call.
 // All fields are optional.
 type ListOpts struct {
-	Interface gophercloud.Interface
-	ServiceID string
-	Page      int
-	PerPage   int
+	Availability gophercloud.Availability
+	ServiceID    string
+	Page         int
+	PerPage      int
 }
 
 // List enumerates endpoints in a paginated collection, optionally filtered by ListOpts criteria.
 func List(client *gophercloud.ServiceClient, opts ListOpts) (*EndpointList, error) {
 	q := make(map[string]string)
-	if opts.Interface != "" {
-		q["interface"] = string(opts.Interface)
+	if opts.Availability != "" {
+		q["interface"] = string(opts.Availability)
 	}
 	if opts.ServiceID != "" {
 		q["service_id"] = opts.ServiceID
@@ -144,7 +144,7 @@
 	}
 
 	reqBody := request{Endpoint: endpoint{}}
-	reqBody.Endpoint.Interface = maybeString(string(opts.Interface))
+	reqBody.Endpoint.Interface = maybeString(string(opts.Availability))
 	reqBody.Endpoint.Name = maybeString(opts.Name)
 	reqBody.Endpoint.Region = maybeString(opts.Region)
 	reqBody.Endpoint.URL = maybeString(opts.URL)
diff --git a/openstack/identity/v3/endpoints/requests_test.go b/openstack/identity/v3/endpoints/requests_test.go
index a7088bb..272860e 100644
--- a/openstack/identity/v3/endpoints/requests_test.go
+++ b/openstack/identity/v3/endpoints/requests_test.go
@@ -59,23 +59,23 @@
 	client := serviceClient()
 
 	result, err := Create(client, EndpointOpts{
-		Interface: gophercloud.InterfacePublic,
-		Name:      "the-endiest-of-points",
-		Region:    "underground",
-		URL:       "https://1.2.3.4:9000/",
-		ServiceID: "asdfasdfasdfasdf",
+		Availability: gophercloud.AvailabilityPublic,
+		Name:         "the-endiest-of-points",
+		Region:       "underground",
+		URL:          "https://1.2.3.4:9000/",
+		ServiceID:    "asdfasdfasdfasdf",
 	})
 	if err != nil {
 		t.Fatalf("Unable to create an endpoint: %v", err)
 	}
 
 	expected := &Endpoint{
-		ID:        "12",
-		Interface: gophercloud.InterfacePublic,
-		Name:      "the-endiest-of-points",
-		Region:    "underground",
-		ServiceID: "asdfasdfasdfasdf",
-		URL:       "https://1.2.3.4:9000/",
+		ID:           "12",
+		Availability: gophercloud.AvailabilityPublic,
+		Name:         "the-endiest-of-points",
+		Region:       "underground",
+		ServiceID:    "asdfasdfasdfasdf",
+		URL:          "https://1.2.3.4:9000/",
 	}
 
 	if !reflect.DeepEqual(result, expected) {
@@ -135,20 +135,20 @@
 	expected := &EndpointList{
 		Endpoints: []Endpoint{
 			Endpoint{
-				ID:        "12",
-				Interface: gophercloud.InterfacePublic,
-				Name:      "the-endiest-of-points",
-				Region:    "underground",
-				ServiceID: "asdfasdfasdfasdf",
-				URL:       "https://1.2.3.4:9000/",
+				ID:           "12",
+				Availability: gophercloud.AvailabilityPublic,
+				Name:         "the-endiest-of-points",
+				Region:       "underground",
+				ServiceID:    "asdfasdfasdfasdf",
+				URL:          "https://1.2.3.4:9000/",
 			},
 			Endpoint{
-				ID:        "13",
-				Interface: gophercloud.InterfaceInternal,
-				Name:      "shhhh",
-				Region:    "underground",
-				ServiceID: "asdfasdfasdfasdf",
-				URL:       "https://1.2.3.4:9001/",
+				ID:           "13",
+				Availability: gophercloud.AvailabilityInternal,
+				Name:         "shhhh",
+				Region:       "underground",
+				ServiceID:    "asdfasdfasdfasdf",
+				URL:          "https://1.2.3.4:9001/",
 			},
 		},
 	}
@@ -201,12 +201,12 @@
 	}
 
 	expected := &Endpoint{
-		ID:        "12",
-		Interface: gophercloud.InterfacePublic,
-		Name:      "renamed",
-		Region:    "somewhere-else",
-		ServiceID: "asdfasdfasdfasdf",
-		URL:       "https://1.2.3.4:9000/",
+		ID:           "12",
+		Availability: gophercloud.AvailabilityPublic,
+		Name:         "renamed",
+		Region:       "somewhere-else",
+		ServiceID:    "asdfasdfasdfasdf",
+		URL:          "https://1.2.3.4:9000/",
 	}
 	if !reflect.DeepEqual(expected, actual) {
 		t.Errorf("Expected %#v, was %#v", expected, actual)
diff --git a/openstack/identity/v3/endpoints/results.go b/openstack/identity/v3/endpoints/results.go
index 940eebc..bd7a013 100644
--- a/openstack/identity/v3/endpoints/results.go
+++ b/openstack/identity/v3/endpoints/results.go
@@ -9,12 +9,12 @@
 
 // Endpoint describes the entry point for another service's API.
 type Endpoint struct {
-	ID        string                `json:"id"`
-	Interface gophercloud.Interface `json:"interface"`
-	Name      string                `json:"name"`
-	Region    string                `json:"region"`
-	ServiceID string                `json:"service_id"`
-	URL       string                `json:"url"`
+	ID           string                   `json:"id"`
+	Availability gophercloud.Availability `json:"interface"`
+	Name         string                   `json:"name"`
+	Region       string                   `json:"region"`
+	ServiceID    string                   `json:"service_id"`
+	URL          string                   `json:"url"`
 }
 
 // EndpointList contains a page of Endpoint results.
