A REST API service to query and manage the SAFER-STORAGE backup and storage in space in time dimensions
Project description
uvicorn sysapi.main:app --reload# SAFER-STORAGE System Backend REST API Server
This backend is implemented using FastAPI
Quick start
Install the module on your system sing PyPI:
pip install sysapi
Then start the service using default settings (test on localhost:8000), run the following command:
uvicorn sysapi.main:app --reload
File system organization
(download PDF)
REST Routes
GET routes
Version prefix
All routes start with a /{version}/
prefix, which is currently set to v1
Meta data
These routes are used to retrieve data about users and snapshots
/v1/users
: list user accounts/v1/user/{user}
: getuser
's meta-data/v1/snapshots
: list of all available snapshots/v1/snapshots?user={user}
: list of available snapshots foruser
/v1/snapshot/{@snapshot}
: get@snapshot
meta-data
NB:
users
,snapshots
, androot
are reserved user names to avoid conflicts.- snapshots are always identified using an
@
-prefixed name, eg.@initial
, which also solved ambiguity between snapshot and user routes.
Filesystem navigation in time and space
The general form is as follows:
/v1/{user}/{time-location}/{space-location}
With the following constructs:
{time-location}
is one of:fat/{@sanpshot}
: the state of a single file as captured in snapshot named{snapid}
dat/{@sanpshot}
: the state of a directory as captured in snapshot named{snapid}
fbefore/{@snapshot}
: the state of a file as captured in snapshot immediately preceding the snapshot named{@snapshot}
(if any)dbefore/{@snapshot}
: the state of a directory as captured in snapshot immediately preceding the snapshot named{@snapshot}
(if any)past/{@snapshot}
: merged view of a directory composed of all snapshot(s) preceding, and including, the snapshot named{@snapshot}
.historic/{username}/{path}
: list of snapshots that contain the given file for the given user- The special name
@current
is reserved and used to designate the current state of the filesystem. It is actually a real snapshot, that is created each time an API call requests this time-point.
{space-location}
is of the form:- `` (empty):
user
's homedir content {path}/
: content of the directory designated by the URL-encodedpath
starting from theuser
's homedir{path}/file
: file located in directory designated bypath
- `` (empty):
NB: the root
virtual user is only available to the admin user and his/her home directpry is at the root of the filesystem
Examples:
/v1/joe/at/@current/
:joe
's current homedir/v1/joe/at/@snap-2019-09-18-2230/Photos/Kickoff/people.jpg
:joe
's file namedpeople.jpg
in sub-directoryPhotos/Kickoff
as it was captured by snapshot named@snap-2019-09-18-2230
/v1/root/before/@snap-2019-09-18-2230/users/joe/Photos/
: content of directoryusers/joe/Photos/
for admin user as it was captured by snapshot immediately preceding the snapshot named@snap-2019-09-18-2230
POST routes
-
/v1/users/new
Creates a user with following elements:
- login
- password
-
/v1/copyto/{space-location}
Copies the list of files designated in the body to the space-location designated by the URL: In the body, each file is designated by a triplet:
"path"="path/to/file"
"snapshot"="@snapshot"
from which the file is copied"destructive"=boolean
Returns: The updated content of target directory (space-location
)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.