diff --git a/packages/server/src/api/files.rs b/packages/server/src/api/files.rs
new file mode 100644
index 0000000..277b64a
--- /dev/null
+++ b/packages/server/src/api/files.rs
@@ -0,0 +1,257 @@
+use crate::auth::security::Authenticated;
+use crate::{
+ error::Result,
+ files::{self, repository::PdsRepository},
+ pds::{rpc, space},
+};
+use crate_protocol::{
+ BlobRef, CreateFile, DuplicateFile, FileEntry, FileKind, FileList, FileRecord, RevisionInput,
+ UpdateFile, VersionList,
+};
+use poem_openapi::{
+ OpenApi,
+ param::{Path, Query},
+ payload::Json,
+};
+
+pub struct FilesApi;
+
+#[OpenApi]
+impl FilesApi {
+ #[oai(path = "/api/v1/files", method = "get", operation_id = "listFiles")]
+ async fn list(
+ &self,
+ auth: Authenticated,
+ #[oai(name = "parentId")] parent: Query