diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/CredentialCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/CredentialCreateDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..40e23c1426ca71dd181b95f1161223cc13cbc580
--- /dev/null
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/CredentialCreateDto.java
@@ -0,0 +1,26 @@
+package at.tuwien.api.keycloak;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import lombok.extern.jackson.Jacksonized;
+
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Jacksonized
+@ToString
+public class CredentialCreateDto {
+
+    @NotNull
+    private CredentialTypeDto type;
+
+    @Schema(example = "s3cr3t")
+    private String value;
+
+    @Schema(example = "false")
+    private Boolean temporary;
+
+}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/CredentialTypeDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/CredentialTypeDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..4992f74cf96955ef10117a9de4663144fadb7bcb
--- /dev/null
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/CredentialTypeDto.java
@@ -0,0 +1,22 @@
+package at.tuwien.api.keycloak;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+
+@Getter
+public enum CredentialTypeDto {
+
+    @JsonProperty("password")
+    PASSWORD("password");
+
+    private String name;
+
+    CredentialTypeDto(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return this.name;
+    }
+}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserAttributesCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserAttributesCreateDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..dda69549406200f5407dcb5a53088ef6c93169c4
--- /dev/null
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserAttributesCreateDto.java
@@ -0,0 +1,29 @@
+package at.tuwien.api.keycloak;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import lombok.extern.jackson.Jacksonized;
+
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Jacksonized
+@ToString
+public class UserAttributesCreateDto {
+
+    @NotNull
+    @JsonProperty("theme_dark")
+    @Schema(example = "false")
+    private Boolean themeDark;
+
+    @Schema(example = "https://orcid.org/0000-0002-1825-0097")
+    private String orcid;
+
+    @Schema(example = "Brown University")
+    private String affiliation;
+
+}
diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserCreateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserCreateDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..4569d87d426b983d343df69493fecb9f419286ca
--- /dev/null
+++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/keycloak/UserCreateDto.java
@@ -0,0 +1,46 @@
+package at.tuwien.api.keycloak;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import lombok.extern.jackson.Jacksonized;
+
+import java.util.List;
+
+@Getter
+@Setter
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Jacksonized
+@ToString
+public class UserCreateDto {
+
+    @NotNull
+    @Schema(example = "jcarberry", description = "Only contains lowercase characters")
+    private String username;
+
+    @NotNull
+    @Schema(example = "true")
+    private Boolean enabled;
+
+    @JsonProperty("given_name")
+    @Schema(example = "Josiah")
+    private String firstname;
+
+    @JsonProperty("family_name")
+    @Schema(example = "Carberry")
+    private String lastname;
+
+    @NotNull
+    @Schema(example = "jcarberry@brown.edu")
+    private String email;
+
+    @NotNull
+    private UserAttributesCreateDto attributes;
+
+    @NotNull
+    private List<CredentialCreateDto> credentials;
+
+}