diff --git a/openstack/orchestration/v1/stackresources/fixtures.go b/openstack/orchestration/v1/stackresources/fixtures.go
index 1e5340a..d1b41c4 100644
--- a/openstack/orchestration/v1/stackresources/fixtures.go
+++ b/openstack/orchestration/v1/stackresources/fixtures.go
@@ -267,3 +267,287 @@
 		fmt.Fprintf(w, output)
 	})
 }
+
+var GetSchemaExpected = &TypeSchema{
+	Attributes: map[string]interface{}{
+		"an_attribute": map[string]interface{}{
+			"description": "An attribute description .",
+		},
+	},
+	Properties: map[string]interface{}{
+		"a_property": map[string]interface{}{
+			"update_allowed": false,
+			"required":       true,
+			"type":           "string",
+			"description":    "A resource description.",
+		},
+	},
+	ResourceType: "OS::Heat::AResourceName",
+}
+
+const GetSchemaOutput = `
+{
+  "attributes": {
+    "an_attribute": {
+      "description": "An attribute description ."
+    }
+  },
+  "properties": {
+    "a_property": {
+      "update_allowed": false,
+      "required": true,
+      "type": "string",
+      "description": "A resource description."
+    }
+  },
+  "resource_type": "OS::Heat::AResourceName"
+}`
+
+// HandleGetSchemaSuccessfully creates an HTTP handler at `/resource_types/OS::Heat::AResourceName`
+// on the test handler mux that responds with a `Schema` response.
+func HandleGetSchemaSuccessfully(t *testing.T, output string) {
+	th.Mux.HandleFunc("/resource_types/OS::Heat::AResourceName", func(w http.ResponseWriter, r *http.Request) {
+		th.TestMethod(t, r, "GET")
+		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
+		th.TestHeader(t, r, "Accept", "application/json")
+
+		w.Header().Set("Content-Type", "application/json")
+		w.WriteHeader(http.StatusOK)
+		fmt.Fprintf(w, output)
+	})
+}
+
+const GetTemplateOutput = `
+{
+  "Outputs": {
+    "addresses": {
+      "Description": "A dict of all network addresses with correspondingport_id.",
+      "Value": "{\"Fn::GetAtt\": [\"Server\", \"addresses\"]}"
+    },
+    "first_address": {
+      "Description": "Convenience attribute to fetch the first assigned network address, or an empty string if nothing has been assigned at this time. Result may not be predictable if the server has addresses from more than one network.",
+      "Value": "{\"Fn::GetAtt\": [\"Server\", \"first_address\"]}"
+    },
+    "show": {
+      "Description": "A dict of all server details as returned by the API.",
+      "Value": "{\"Fn::GetAtt\": [\"Server\", \"show\"]}"
+    },
+    "instance_name": {
+      "Description": "AWS compatible instance name.",
+      "Value": "{\"Fn::GetAtt\": [\"Server\", \"instance_name\"]}"
+    },
+    "accessIPv4": {
+      "Description": "The manually assigned alternative public IPv4 address of the server.",
+      "Value": "{\"Fn::GetAtt\": [\"Server\", \"accessIPv4\"]}"
+    },
+    "accessIPv6": {
+      "Description": "The manually assigned alternative public IPv6 address of the server.",
+      "Value": "{\"Fn::GetAtt\": [\"Server\", \"accessIPv6\"]}"
+    },
+    "networks": {
+      "Description": "A dict of assigned network addresses of the form: {\"public\": [ip1, ip2...], \"private\": [ip3, ip4]}.",
+      "Value": "{\"Fn::GetAtt\": [\"Server\", \"networks\"]}"
+    }
+  },
+  "HeatTemplateFormatVersion": "2012-12-12",
+  "Parameters": {
+    "scheduler_hints": {
+      "Type": "Json",
+      "Description": "Arbitrary key-value pairs specified by the client to help boot a server."
+    },
+    "admin_pass": {
+      "Type": "String",
+      "Description": "The administrator password for the server."
+    },
+    "user_data_format": {
+      "Default": "HEAT_CFNTOOLS",
+      "Type": "String",
+      "Description": "How the user_data should be formatted for the server. For HEAT_CFNTOOLS, the user_data is bundled as part of the heat-cfntools cloud-init boot configuration data. For RAW the user_data is passed to Nova unmodified. For SOFTWARE_CONFIG user_data is bundled as part of the software config data, and metadata is derived from any associated SoftwareDeployment resources.",
+      "AllowedValues": [
+      "HEAT_CFNTOOLS",
+      "RAW",
+      "SOFTWARE_CONFIG"
+      ]
+    },
+    "admin_user": {
+      "Type": "String",
+      "Description": "Name of the administrative user to use on the server. This property will be removed from Juno in favor of the default cloud-init user set up for each image (e.g. \"ubuntu\" for Ubuntu 12.04+, \"fedora\" for Fedora 19+ and \"cloud-user\" for CentOS/RHEL 6.5)."
+    },
+    "name": {
+      "Type": "String",
+      "Description": "Server name."
+    },
+    "block_device_mapping": {
+      "Type": "CommaDelimitedList",
+      "Description": "Block device mappings for this server."
+    },
+    "key_name": {
+      "Type": "String",
+      "Description": "Name of keypair to inject into the server."
+    },
+    "image": {
+      "Type": "String",
+      "Description": "The ID or name of the image to boot with."
+    },
+    "availability_zone": {
+      "Type": "String",
+      "Description": "Name of the availability zone for server placement."
+    },
+    "image_update_policy": {
+      "Default": "REPLACE",
+      "Type": "String",
+      "Description": "Policy on how to apply an image-id update; either by requesting a server rebuild or by replacing the entire server",
+      "AllowedValues": [
+      "REBUILD",
+      "REPLACE",
+      "REBUILD_PRESERVE_EPHEMERAL"
+      ]
+    },
+    "software_config_transport": {
+      "Default": "POLL_SERVER_CFN",
+      "Type": "String",
+      "Description": "How the server should receive the metadata required for software configuration. POLL_SERVER_CFN will allow calls to the cfn API action DescribeStackResource authenticated with the provided keypair. POLL_SERVER_HEAT will allow calls to the Heat API resource-show using the provided keystone credentials.",
+      "AllowedValues": [
+      "POLL_SERVER_CFN",
+      "POLL_SERVER_HEAT"
+      ]
+    },
+    "metadata": {
+      "Type": "Json",
+      "Description": "Arbitrary key/value metadata to store for this server. Both keys and values must be 255 characters or less.  Non-string values will be serialized to JSON (and the serialized string must be 255 characters or less)."
+    },
+    "personality": {
+      "Default": {},
+        "Type": "Json",
+        "Description": "A map of files to create/overwrite on the server upon boot. Keys are file names and values are the file contents."
+    },
+    "user_data": {
+      "Default": "",
+      "Type": "String",
+      "Description": "User data script to be executed by cloud-init."
+    },
+    "flavor_update_policy": {
+      "Default": "RESIZE",
+      "Type": "String",
+      "Description": "Policy on how to apply a flavor update; either by requesting a server resize or by replacing the entire server.",
+      "AllowedValues": [
+      "RESIZE",
+      "REPLACE"
+      ]
+    },
+    "flavor": {
+      "Type": "String",
+      "Description": "The ID or name of the flavor to boot onto."
+    },
+    "diskConfig": {
+      "Type": "String",
+      "Description": "Control how the disk is partitioned when the server is created.",
+      "AllowedValues": [
+      "AUTO",
+      "MANUAL"
+      ]
+    },
+    "reservation_id": {
+      "Type": "String",
+      "Description": "A UUID for the set of servers being requested."
+    },
+    "networks": {
+      "Type": "CommaDelimitedList",
+      "Description": "An ordered list of nics to be added to this server, with information about connected networks, fixed ips, port etc."
+    },
+    "security_groups": {
+      "Default": [],
+      "Type": "CommaDelimitedList",
+      "Description": "List of security group names or IDs. Cannot be used if neutron ports are associated with this server; assign security groups to the ports instead."
+    },
+    "config_drive": {
+      "Type": "String",
+      "Description": "value for config drive either boolean, or volume-id."
+    }
+  },
+  "Resources": {
+    "Server": {
+      "Type": "OS::Nova::Server",
+      "Properties": {
+        "scheduler_hints": {
+          "Ref": "scheduler_hints"
+        },
+        "admin_pass": {
+          "Ref": "admin_pass"
+        },
+        "user_data_format": {
+          "Ref": "user_data_format"
+        },
+        "admin_user": {
+          "Ref": "admin_user"
+        },
+        "name": {
+          "Ref": "name"
+        },
+        "block_device_mapping": {
+          "Fn::Split": [
+          ",",
+          {
+            "Ref": "block_device_mapping"
+          }
+          ]
+        },
+        "key_name": {
+          "Ref": "key_name"
+        },
+        "image": {
+          "Ref": "image"
+        },
+        "availability_zone": {
+          "Ref": "availability_zone"
+        },
+        "image_update_policy": {
+          "Ref": "image_update_policy"
+        },
+        "software_config_transport": {
+          "Ref": "software_config_transport"
+        },
+        "metadata": {
+          "Ref": "metadata"
+        },
+        "personality": {
+          "Ref": "personality"
+        },
+        "user_data": {
+          "Ref": "user_data"
+        },
+        "flavor_update_policy": {
+          "Ref": "flavor_update_policy"
+        },
+        "flavor": {
+          "Ref": "flavor"
+        },
+        "diskConfig": {
+          "Ref": "diskConfig"
+        },
+        "reservation_id": {
+          "Ref": "reservation_id"
+        },
+        "networks": {
+          "Fn::Split": [
+          ",",
+          {
+            "Ref": "networks"
+          }
+          ]
+        },
+        "security_groups": {
+          "Fn::Split": [
+          ",",
+          {
+            "Ref": "security_groups"
+          }
+          ]
+        },
+        "config_drive": {
+          "Ref": "config_drive"
+        }
+      }
+    }
+  }
+}`
diff --git a/openstack/orchestration/v1/stackresources/requests.go b/openstack/orchestration/v1/stackresources/requests.go
index cc2e09a..9ef8424 100644
--- a/openstack/orchestration/v1/stackresources/requests.go
+++ b/openstack/orchestration/v1/stackresources/requests.go
@@ -102,3 +102,16 @@
 
 	return pagination.NewPager(client, url, createPageFn)
 }
+
+// Schema retreives the schema for the given resource type.
+func Schema(c *gophercloud.ServiceClient, resourceType string) SchemaResult {
+	var res SchemaResult
+
+	// Send request to API
+	_, res.Err = perigee.Request("GET", schemaURL(c, resourceType), perigee.Options{
+		MoreHeaders: c.AuthenticatedHeaders(),
+		Results:     &res.Body,
+		OkCodes:     []int{200},
+	})
+	return res
+}
diff --git a/openstack/orchestration/v1/stackresources/requests_test.go b/openstack/orchestration/v1/stackresources/requests_test.go
index ed1c4d2..b0fb83a 100644
--- a/openstack/orchestration/v1/stackresources/requests_test.go
+++ b/openstack/orchestration/v1/stackresources/requests_test.go
@@ -81,3 +81,15 @@
 	th.AssertNoErr(t, err)
 	th.CheckEquals(t, 1, count)
 }
+
+func TestGetResourceSchema(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+	HandleGetSchemaSuccessfully(t, GetSchemaOutput)
+
+	actual, err := Schema(fake.ServiceClient(), "OS::Heat::AResourceName").Extract()
+	th.AssertNoErr(t, err)
+
+	expected := GetSchemaExpected
+	th.AssertDeepEquals(t, expected, actual)
+}
diff --git a/openstack/orchestration/v1/stackresources/results.go b/openstack/orchestration/v1/stackresources/results.go
index 7629fd8..5674a61 100644
--- a/openstack/orchestration/v1/stackresources/results.go
+++ b/openstack/orchestration/v1/stackresources/results.go
@@ -184,3 +184,27 @@
 	err := mapstructure.Decode(page.(ResourceTypePage).Body, &response)
 	return response.ResourceTypes, err
 }
+
+type TypeSchema struct {
+	Attributes   map[string]interface{} `mapstructure:"attributes"`
+	Properties   map[string]interface{} `mapstrucutre:"properties"`
+	ResourceType string                 `mapstructure:"resource_type"`
+}
+
+type SchemaResult struct {
+	gophercloud.Result
+}
+
+func (r SchemaResult) Extract() (*TypeSchema, error) {
+	if r.Err != nil {
+		return nil, r.Err
+	}
+
+	var res TypeSchema
+
+	if err := mapstructure.Decode(r.Body, &res); err != nil {
+		return nil, err
+	}
+
+	return &res, nil
+}
diff --git a/rackspace/orchestration/v1/stackresources/delegate.go b/rackspace/orchestration/v1/stackresources/delegate.go
index 03f080d..9029a24 100644
--- a/rackspace/orchestration/v1/stackresources/delegate.go
+++ b/rackspace/orchestration/v1/stackresources/delegate.go
@@ -30,3 +30,8 @@
 func ListTypes(c *gophercloud.ServiceClient) pagination.Pager {
 	return os.ListTypes(c)
 }
+
+// Schema retreives the schema for the given resource type.
+func Schema(c *gophercloud.ServiceClient, resourceType string) os.SchemaResult {
+	return os.Schema(c, resourceType)
+}
diff --git a/rackspace/orchestration/v1/stackresources/delegate_test.go b/rackspace/orchestration/v1/stackresources/delegate_test.go
index 9d0da3d..5800d7c 100644
--- a/rackspace/orchestration/v1/stackresources/delegate_test.go
+++ b/rackspace/orchestration/v1/stackresources/delegate_test.go
@@ -82,3 +82,15 @@
 	th.AssertNoErr(t, err)
 	th.CheckEquals(t, 1, count)
 }
+
+func TestGetResourceSchema(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+	os.HandleGetSchemaSuccessfully(t, os.GetSchemaOutput)
+
+	actual, err := Schema(fake.ServiceClient(), "OS::Heat::AResourceName").Extract()
+	th.AssertNoErr(t, err)
+
+	expected := os.GetSchemaExpected
+	th.AssertDeepEquals(t, expected, actual)
+}
