diff --git a/api/pom.xml b/api/pom.xml
index 2dafadb96cf9f6ac99e7a73c3d249e99d3f97e6f..e5680a46ab086a769e01cf863b89a557364aca74 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.indiscale.fdo</groupId>
     <artifactId>fdo-manager-service</artifactId>
-    <version>0.1.0-rc7</version>
+    <version>0.1.0-rc8</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
   <properties>
diff --git a/api/src/main/resources/api.yaml b/api/src/main/resources/api.yaml
index e98a497561574be8bd614601dbd400c0e6e4f9ee..b98db0f4b18413e50823477d0d33e333073ab646 100644
--- a/api/src/main/resources/api.yaml
+++ b/api/src/main/resources/api.yaml
@@ -6,10 +6,10 @@ info:
   contact:
     name: IndiScale GmbH
     email: t.fitschen@indiscale.com
-    url: https://www.indiscale.com
+    url: "https://www.indiscale.com"
 
 servers:
-  - url: http://localhost:8080
+  - url: "http://localhost:8080"
 
 tags:
   - name: Repositories
@@ -203,7 +203,7 @@ paths:
           multipart/form-data:
             schema:
               type: object
-              required: ["repositories", "data", "metadata"]
+              required: ["repositories", "metadata"]
               properties:
                 repositories:
                   $ref: "#/components/schemas/TargetRepositories"
@@ -213,6 +213,13 @@ paths:
                 metadata:
                   type: string
                   format: binary
+                dataUrl:
+                  type: string
+                  format: uri
+                metadataProfile:
+                  type: string
+                fdoType:
+                  type: string
       responses:
         "201":
           description: "The Location header points to the newly created FDO."
@@ -412,6 +419,13 @@ components:
           type: string
         metadataPid:
           type: string
+        fdoType:
+          type: string
+        fdoProfile:
+          type: string
+        attributes:
+          type: object
+          additionalProperties: true
     Info:
       type: object
       properties:
diff --git a/application/pom.xml b/application/pom.xml
index 7be0e8ffcbac58911e40ee981838d204acecc3ce..a0dc68ec6bde21a2252cabe80dbc7d242d212c4f 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -3,7 +3,7 @@
   <parent>
     <groupId>com.indiscale.fdo</groupId>
     <artifactId>fdo-manager-service</artifactId>
-    <version>0.1.0-rc7</version>
+    <version>0.1.0-rc8</version>
     <relativePath>../pom.xml</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
@@ -11,7 +11,7 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.build.outputEncoding>UTF-8</project.build.outputEncoding>
     <sourceDir>${project.basedir}/src/main</sourceDir>
-    <fdo.sdk.version>0.1.0-rc13</fdo.sdk.version>
+    <fdo.sdk.version>0.1.0-rc16</fdo.sdk.version>
   </properties>
   <artifactId>fdo-manager-service.application</artifactId>
   <dependencies>
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
index 4bb36de0aa56eede18dc0a653b8ec54c9fe10073..c2943b358e414dabb39ddfc3a081878f164b2a0c 100644
--- a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
@@ -2,13 +2,20 @@ package com.indiscale.fdo.manager.service.fdo;
 
 import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
 
+import com.google.gson.JsonElement;
 import com.indiscale.fdo.manager.DefaultData;
 import com.indiscale.fdo.manager.DefaultMetadata;
+import com.indiscale.fdo.manager.DefaultMetadataProfile;
+import com.indiscale.fdo.manager.UrlRefData;
+import com.indiscale.fdo.manager.api.Data;
 import com.indiscale.fdo.manager.api.DigitalObject;
 import com.indiscale.fdo.manager.api.FDO;
+import com.indiscale.fdo.manager.api.FdoComponent;
 import com.indiscale.fdo.manager.api.FdoProfile;
+import com.indiscale.fdo.manager.api.FdoType;
 import com.indiscale.fdo.manager.api.InputStreamSource;
 import com.indiscale.fdo.manager.api.Manager;
+import com.indiscale.fdo.manager.api.MetadataProfile;
 import com.indiscale.fdo.manager.api.PidUnresolvableException;
 import com.indiscale.fdo.manager.api.RepositoryConnection;
 import com.indiscale.fdo.manager.api.TokenAuthenticationInfo;
@@ -22,7 +29,10 @@ import com.indiscale.fdo.manager.service.api.operation.FdoApi;
 import jakarta.validation.Valid;
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.MalformedURLException;
 import java.net.URI;
+import java.util.HashMap;
+import java.util.Map.Entry;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.CrossOrigin;
@@ -48,8 +58,16 @@ class MetadataWrapper extends DefaultMetadata {
 
   private MultipartFile file;
 
-  public MetadataWrapper(MultipartFile file) {
-    super();
+  private static MetadataProfile createMetadataProfile(String metadataProfile) {
+    if (metadataProfile != null) {
+
+      return new DefaultMetadataProfile(metadataProfile);
+    }
+    return null;
+  }
+
+  public MetadataWrapper(MultipartFile file, String metadataProfile) {
+    super(createMetadataProfile(metadataProfile));
     this.file = file;
   }
 
@@ -82,7 +100,12 @@ public class FDOApiImpl extends BaseController implements FdoApi {
 
   @Override
   public ResponseEntity<Void> createFDO(
-      @Valid TargetRepositories repositories, MultipartFile data, MultipartFile metadata) {
+      @Valid TargetRepositories repositories,
+      MultipartFile metadataFile,
+      MultipartFile dataFile,
+      @Valid URI dataUrl,
+      @Valid String metadataProfile,
+      @Valid String fdoType) {
     try (Manager manager = getManager()) {
       RepositoryConnection repository =
           manager.getRepositoryRegistry().createRepositoryConnection(repositories.getFdo());
@@ -90,9 +113,21 @@ public class FDOApiImpl extends BaseController implements FdoApi {
         repository.setTokenAuthenticationInfo(new TokenAuthenticationInfo(getToken()));
       }
       FdoProfile profile = manager.getDefaultProfile();
+      Data data = null;
+      if (dataFile != null) {
+        data = new DataWrapper(dataFile);
+      } else if (dataUrl != null) {
+        data = new UrlRefData(dataUrl.toURL());
+      } else {
+        throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Missing data component.");
+      }
       FDO fdo =
           manager.createFDO(
-              profile, repository, new DataWrapper(data), new MetadataWrapper(metadata));
+              profile,
+              FdoType.getType(fdoType),
+              repository,
+              data,
+              new MetadataWrapper(metadataFile, metadataProfile));
       getLogger().createFDO(fdo, repository);
 
       // TODO(tf) this is a workaround for the apache proxy
@@ -104,6 +139,8 @@ public class FDOApiImpl extends BaseController implements FdoApi {
       throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Not Found. Unknown repository id.");
     } catch (ValidationException e) {
       throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.getValidationResult().toString());
+    } catch (MalformedURLException e) {
+      throw new ResponseStatusException(HttpStatus.BAD_REQUEST, e.toString());
     }
   }
 
@@ -166,6 +203,22 @@ public class FDOApiImpl extends BaseController implements FdoApi {
       if (fdo.getMetadata() != null) {
         data.setMetadataPid(fdo.getMetadata().getPID());
       }
+      if (fdo.getType() != null) {
+        data.setFdoType(fdo.getType().getPID());
+      }
+      if (fdo.getProfile() != null) {
+        data.setFdoProfile(fdo.getProfile().getPID());
+      }
+    }
+    if (resolved.getAttributes() != null) {
+      data.setAttributes(new HashMap<>());
+      for (Entry<String, JsonElement> s : resolved.getAttributes().entrySet()) {
+        data.getAttributes().put(s.getKey(), s.getValue().getAsString());
+      }
+    }
+    if (resolved.isFdoComponent()) {
+      FdoComponent fdoComponent = resolved.toFdoComponent();
+      if (fdoComponent.getProfile() != null) data.setFdoProfile(fdoComponent.getProfile().getPID());
     }
 
     return new ResolvePID200Response().data(data).links(self);
diff --git a/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java b/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java
index 4a50e6c60f37e6cbb91423c87d65555c5574df26..ac3c3cf2e44e047928912e3e3fe7292b955877cf 100644
--- a/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java
+++ b/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java
@@ -11,6 +11,7 @@ import com.google.gson.JsonObject;
 import com.indiscale.fdo.manager.DefaultRepositoryRegistry;
 import com.indiscale.fdo.manager.api.DigitalObject;
 import com.indiscale.fdo.manager.api.FDO;
+import com.indiscale.fdo.manager.api.FdoComponent;
 import com.indiscale.fdo.manager.api.Manager;
 import com.indiscale.fdo.manager.api.PidUnresolvableException;
 import com.indiscale.fdo.manager.api.RepositoryConnection;
@@ -72,6 +73,16 @@ public class FDOApiTest {
           public FDO toFDO() {
             return null;
           }
+
+          @Override
+          public FdoComponent toFdoComponent() {
+            return null;
+          }
+
+          @Override
+          public boolean isFdoComponent() {
+            return false;
+          }
         };
     DigitalObject mockDO2 =
         new DigitalObject() {
@@ -94,6 +105,16 @@ public class FDOApiTest {
           public FDO toFDO() {
             return null;
           }
+
+          @Override
+          public FdoComponent toFdoComponent() {
+            return null;
+          }
+
+          @Override
+          public boolean isFdoComponent() {
+            return false;
+          }
         };
     // Configure Test returns, commented out returns are there so that each set of returns has same
     // index.
diff --git a/pom.xml b/pom.xml
index e42e62e523a860a6df9b86ba83c595bf7bc48956..0b11c1f209d776bbbc937a051328700d032fb052 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
   <groupId>com.indiscale.fdo</groupId>
   <artifactId>fdo-manager-service</artifactId>
   <packaging>pom</packaging>
-  <version>0.1.0-rc7</version>
+  <version>0.1.0-rc8</version>
   <modules>
     <module>api</module>
     <module>application</module>