diff --git a/authv3.go b/authv3.go
new file mode 100644
index 0000000..470e495
--- /dev/null
+++ b/authv3.go
@@ -0,0 +1,81 @@
+package gophercloud
+
+// ScopeOptsV3 allows a created token to be limited to a specific domain or project.
+type ScopeOptsV3 struct {
+	ProjectID   string `json:"scope.project.id,omitempty" not:"ProjectName,DomainID,DomainName"`
+	ProjectName string `json:"scope.project.name,omitempty"`
+	DomainID    string `json:"scope.project.id,omitempty" not:"ProjectName,ProjectID,DomainName"`
+	DomainName  string `json:"scope.project.id,omitempty"`
+}
+
+type ScopeDomainV3 struct {
+	ID   string `json:"id,omitempty"`
+	Name string `json:"name,omitempty"`
+}
+
+type ScopeProjectDomainV3 struct {
+	ID   string `json:"id,omitempty"`
+	Name string `json:"name,omitempty"`
+}
+
+type ScopeProjectV3 struct {
+	Domain *ScopeProjectDomainV3 `json:"domain,omitempty"`
+	Name   string                `json:"name,omitempty"`
+	ID     string                `json:"id,omitempty"`
+}
+
+type ScopeV3 struct {
+	Domain  *ScopeDomainV3  `json:"domain,omitempty"`
+	Project *ScopeProjectV3 `json:"project,omitempty"`
+}
+
+type DomainV3 struct {
+	ID   string `json:"id,omitempty" xor:"Name"`
+	Name string `json:"name,omitempty" xor:"ID"`
+}
+
+type UserV3 struct {
+	ID       string    `json:"id,omitempty" xor:"Name"`
+	Name     string    `json:"name,omitempty" xor:"ID"`
+	Password string    `json:"password" required:"true"`
+	Domain   *DomainV3 `json:"domain,omitempty" not:"Domain.ID,Domain.Name"`
+}
+
+type PasswordCredentialsV3 struct {
+	User *UserV3 `json:"user" required:"true"`
+}
+
+type TokenCredentialsV3 struct {
+	ID string `json:"id" required:"true"`
+}
+
+type IdentityCredentialsV3 struct {
+	Methods             []string               `json:"methods" required:"true"`
+	PasswordCredentials *PasswordCredentialsV3 `json:"password,omitempty" xor:"TokenCredentials"`
+	TokenCredentials    *TokenCredentialsV3    `json:"token,omitempty" xor:"PasswordCredentials"`
+}
+
+type AuthOptionsV3 struct {
+	Identity *IdentityCredentialsV3 `json:"identity" required:"true"`
+	Scope    *ScopeV3               `json:"scope,omitempty"`
+}
+
+func (opts AuthOptionsV3) ToTokenV3CreateMap(scope *ScopeOptsV3) (map[string]interface{}, error) {
+	if scope != nil {
+		opts.Scope = &ScopeV3{
+			Domain: &ScopeDomainV3{
+				ID:   scope.DomainID,
+				Name: scope.DomainName,
+			},
+			Project: &ScopeProjectV3{
+				Domain: &ScopeProjectDomainV3{
+					ID:   scope.DomainID,
+					Name: scope.DomainName,
+				},
+				ID:   scope.ProjectID,
+				Name: scope.ProjectName,
+			},
+		}
+	}
+	return BuildRequestBody(opts, "auth")
+}
