Filesystem Standard

A decentralized file and folder structure. Store files anywhere -- local disk, IPFS, S3, a WorldAPI hub -- and describe them the same way.

File

{
	$type: 'filesystem',
	$version: 1,
	$kind: 'file',
	$name: 'project-brief.pdf',
	$mime: 'application/pdf',
	$size: 284160,
	$hash: 'sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
	$created: '2026-02-10 09:30:00',
	$modified: '2026-03-15 14:22:10',
	$owner: { $type: 'contact', $name: 'John' },
	$source: 'ipfs://QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG',
	$permissions: {
		$public: false,
		$read: ['team-alpha'],
		$write: ['markus']
	}
}

Folder

{
	$type: 'filesystem',
	$version: 1,
	$kind: 'folder',
	$name: 'Documents',
	$path: '/Documents',
	$created: '2026-01-01 00:00:00',
	$modified: '2026-03-28 18:45:00',
	$owner: { $type: 'contact', $name: 'John' },
	$children: [
		{
			$kind: 'folder',
			$name: 'Projects',
			$path: '/Documents/Projects',
			$count: 12
		},
		{
			$kind: 'file',
			$name: 'notes.txt',
			$mime: 'text/plain',
			$size: 4096,
			$hash: 'sha256:a1b2c3...'
		}
	],
	$permissions: {
		$public: false,
		$read: ['team-alpha'],
		$write: ['markus']
	}
}

Share

A share link -- grants access to a file or folder without requiring authentication.

{
	$type: 'filesystem',
	$version: 1,
	$kind: 'share',
	$target: '/Documents/project-brief.pdf',
	$token: 'abc123xyz',
	$url: 'https://hub.example.com/s/abc123xyz',
	$expires: '2026-04-30 23:59:59',
	$permissions: {
		$read: true,
		$write: false
	},
	$created: '2026-03-29 10:00:00',
	$created_by: { $type: 'contact', $name: 'John' }
}

Object Kinds

$kind Use case
file A single file with content stored elsewhere
folder A directory containing files and subfolders
share A share link granting access to a file or folder

Standard Properties

Property Type Required Description
$type string yes Always 'filesystem'
$version number yes Standard version
$kind string yes file, folder, or share
$name string yes File or folder name
$path string no Full path from root
$mime string yes* MIME type (files only)
$size number no Size in bytes
$hash string no Content hash (algorithm:hex)
$source string no Where the content lives (URL, IPFS CID, S3 URI)
$created string no UTC datetime
$modified string no UTC datetime of last modification
$owner object no Owner (contact object)
$children array no Contents of a folder
$count number no Number of items in folder (when $children omitted)
$permissions object no Access control
$target string yes* Path the share points to (shares only)
$token string yes* Share token (shares only)
$expires string no UTC datetime when share expires

* Required depends on $kind.

Permissions

Property Type Description
$public boolean Accessible to everyone
$read array | boolean Who can read (user/group IDs, or true/false)
$write array | boolean Who can write