mod
This commit is contained in:
@@ -2,54 +2,20 @@
|
||||
|
||||
api documentation for routes and middleware has to respect apidoc's rules [https://apidocjs.com/](https://apidocjs.com)
|
||||
|
||||
To update this doc accessible in [https://wal-ants.ndda.fr/cdn/apidoc](https://wal-ants.ndda.fr/cdn/apidoc) :
|
||||
To update this doc accessible in [https://wal-ants.ndda.fr/apidoc](https://wal-ants.ndda.fr/cdn/apidoc) :
|
||||
|
||||
`yarn apidoc`
|
||||
`$ tribe=adminapi yarn apidoc`
|
||||
|
||||
For api tribe's doc accessible in [https://smatchit.io/cdn/apidoc](https://smatchit.io/cdn/apidoc) [:](https://smatchit.io/cdn/apidoc:)
|
||||
For api tribe's doc accessible in [https://admin.smatchit.io/apidoc](https://smatchit.io/cdn/apidoc) [:](https://smatchit.io/cdn/apidoc:)
|
||||
|
||||
`yarn apidoctribename`
|
||||
`$ tribe=smatchit yarn apidoc`
|
||||
|
||||
A special tribe call adminapi is replicated in any towns (node), it works the same than all the other tribe except that all their data are synchronize with a blockchain
|
||||
To get overview check README.md project and the package.json [https://gitea.ndda.fr/apxtri/apxtri](https://gitea.ndda.fr/apxtri/apxtri)
|
||||
|
||||
A special tribe call adminapi in any towns (node), it works the same than all the other tribe except that all their data are synchronize with a blockchain
|
||||
|
||||
Objects manage by adminapi are: pagans (numerique id =alias/public key / private key), notifications (cypher message betxeen alias) , nations (rules apply to all towns belonging to a nations), towns ( a server that host IT ressources disk space, ram, bandwith and rules aplly to all tribe belonging to a town), tribes (( a sharing space to store data as well as api with rules to any person that use it), wwws (web space, dns)
|
||||
|
||||
All others object are managed by spécifics tribe.
|
||||
|
||||
```plaintext
|
||||
/townName_nationName/
|
||||
/conf/nginx/tribename_appname.conf # nginx conf
|
||||
/conf/apidoc # apidoc conf
|
||||
/conf/townconf.json # town settings contain all glabl parameter
|
||||
/tribes/idx/triebid_all.json # A global file {tribename:{conf}
|
||||
/itm/tribename.json # Config file of a tribe
|
||||
/adminapi # Tribes synchronize with all town
|
||||
/apxtri # git yarn/npm project package.json entry point apxtri.js
|
||||
/routes/
|
||||
/models/
|
||||
/middlewares/
|
||||
/logs/nginx # nginx log related to /conf/nginx/apxtri_adminapi.conf
|
||||
/api
|
||||
/objects/objectname/idx/ # list of index to search objectname items
|
||||
/itms/ # 1 json per items name apxid.json where apxid is a unique key
|
||||
/wwws/idx/
|
||||
/itm/
|
||||
appname.json # website appname conf
|
||||
cdn.json
|
||||
/appname/ # website files
|
||||
/cdn/ # cached files to optimize nginx static file delivery
|
||||
|
||||
/schema/conf.json # list of schema and version
|
||||
/objectname.json # schema title and escription are in english
|
||||
/lg/objectname_lg.json # title and description in lg
|
||||
/tribename/ # same than adminapi for a specific trib,
|
||||
# we only have 1 node process that manage 1 town that manage many tribes api
|
||||
```
|
||||
|
||||
API Endpoint url: **/api/{tribename}/{routename}/xxx**
|
||||
|
||||
Domaine name can be a adminapi donaim name aswell any tribe's domain name. Check nginx conf in /conf/nginx
|
||||
|
||||
## Object management (Odmdb)
|
||||
|
||||
An object has a name and is defined by a schema that contain properties key.
|
||||
@@ -57,34 +23,57 @@ An object has a name and is defined by a schema that contain properties key.
|
||||
A propertie has a name and a list of caracteristics (type, pattern,format,...) that have to be validate to be accepted.
|
||||
All properties respect the rules [https://json-schema.org/draft/2020-12/schema,](https://json-schema.org/draft/2020-12/schema,) some extra"format" can be add to mutualise recurrent regex pattern
|
||||
|
||||
To access a schema [https://wall-ants.ndda.fr/nationchains/schema/nations.json](https://wall-ants.ndda.fr/nationchains/schema/nations.json) and language specifique [https//:wall-ants.ndda.fr/nationchains/schema/lg/nations\_fr.json](https//:wall-ants.ndda.fr/nationchains/schema/lg/nations_fr.json)
|
||||
To access a schema [https://wall-ants.ndda.fr/api/adminapi/schema/tribename/schamname.json](https://wall-ants.ndda.fr/nationchains/schema/nations.json) and language is set by the header in xlang
|
||||
|
||||
A checkjson.js is available to manage all specific format [https://wall-ants.ndda.fr/Checkjson.js](https://wall-ants.ndda.fr/Checkjson.js) see **Odmdb - schema Checkjson**
|
||||
|
||||
**Additional properties that not exist in 2020-12/schema :**
|
||||
|
||||
**required**: an array of required properties
|
||||
|
||||
**Additional properties that not exist in 2020-12/schema :**
|
||||
|
||||
**apxid**: the propertie used as an unique id
|
||||
|
||||
**apxuniquekey**: array of unique properties
|
||||
|
||||
**apxidx** : array of index
|
||||
**apxidx** : array of index definition
|
||||
|
||||
**apxaccessrights**: object with key profilname and accessrights on properties {profilname:{C:\[properties array\],R:\[properties array\],U:\[\],D:\[\]}}
|
||||
|
||||
Items of an object are store in files into :
|
||||
|
||||
```plaintext
|
||||
/objectnames/idx/keyval_objkey.json
|
||||
/objectnames/itm/uniqueid.json
|
||||
tribename/objectnames/idx/keyval_objkey.json
|
||||
tribename//objectnames/itm/uniqueid.json
|
||||
```
|
||||
|
||||
## Accessrights:
|
||||
|
||||
An alias is just an identity, to access a tribe, a person must exist with an authenticated alias into /tribes/{tribename}/objects/persons/itm/{alias}.json
|
||||
|
||||
A person has a property profils with a list of profilename, common profiles are : anonymous (no identity) / pagan (an identity) / person (an identity with access right into a tribe) / druid (the administrator of a tribe) / mayor (administrator of a town/server)/ and any profil can be define for a tribe
|
||||
|
||||
Each object has an apxaccessrights that is a list of profil and CRUD access per object key.
|
||||
|
||||
Example: owner on this object cab create delete an item is own, can read a list of propertie and update only some.
|
||||
|
||||
```plaintext
|
||||
"owner": {
|
||||
"C" : [],
|
||||
"D": [],
|
||||
"R": ["alias","owner","profils","firstname","lastname","dt_birth"],
|
||||
"U": ["firstname","lastname","dt_birth"]
|
||||
}
|
||||
```
|
||||
|
||||
## api pre-request
|
||||
|
||||
API Endpoint url: **/api/{tribename}/{routename}/xxx**
|
||||
|
||||
Domaine name can be a adminapi donaim name aswell any tribe's domain name. Check nginx conf in /tribename/nginx
|
||||
|
||||
**Valid header see Middlewares**
|
||||
|
||||
App use openpgp.js lib to sign xdays\_xalias with a privatekey and store it in xhash.
|
||||
App use openpgp.js lib to sign xalias\_xdays (xdays a timestamp integer in miilisecond from Unix Epoch) with a privatekey and store it in xhash.
|
||||
|
||||
/middlewares/isAuthenticated.js check if (xhash) is a valid signature of the public key a xhash is valid for 24 hours
|
||||
|
||||
@@ -108,17 +97,9 @@ C - a json multi answer **{status,multimsg:\[{ref,msg,data}\]}**
|
||||
To show feedback context message in a language lg => get /api/adminapi/objects/tplstrings/{{model}}\_{{lg}}.json
|
||||
This contain a json {msg:"mustache template string to render with data"}
|
||||
|
||||
## Accessrights:
|
||||
|
||||
An alias is just an identity, to access a tribe, a person must exist with an authenticated alias into /tribes/{tribename}/objects/persons/itm/{alias}.json
|
||||
|
||||
A person has a property profils with a list of profilename, common profiles are : anonymous (no identity) / pagan (an identity) / person (an identity with access right into a tribe) / druid (the administrator of a tribe) / mayor (administrator of a town/server)
|
||||
|
||||
Each object has an apxaccessrights that is a list of profil and CRUD access per object key .
|
||||
|
||||
## Add tribe's api:
|
||||
|
||||
Accessible with https://dns/api/tribename/routes
|
||||
Accessible with https://dns/api/tribename/routename/
|
||||
|
||||
```plaintext
|
||||
/tribes/tribename/apxtri/routes
|
||||
|
@@ -52,6 +52,8 @@ const isAuthenticated = async (req, res, next) => {
|
||||
glob.sync(`../../tmp/tokens/*.json`).forEach((f) => {
|
||||
const fsplit = f.split("_");
|
||||
const elapse = tsday - parseInt(fsplit[2]);
|
||||
console.log("##############################")
|
||||
console.log(fsplit,"--",fsplit[2])
|
||||
//24h 86400000 milliseconde 15mn 900000
|
||||
if (elapse && elapse > 86400000) {
|
||||
fs.remove(f);
|
||||
|
Reference in New Issue
Block a user