major update

This commit is contained in:
2023-11-05 12:03:25 +01:00
parent 2edd592ef9
commit 6291d5239e
91 changed files with 6667 additions and 1286 deletions

View File

@@ -1,17 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/schema/educations",
"title": "Education diplomat",
"description": "Training follow ",
"type": "object",
"properties":{
"schoolname":{"type":"string"},
"diploma":{"type":"string","enum":["BEPx","CAPy"]},
"jobsector":{"type":"string","enum":["serveur"]},
"dt_start":{"type":"string","format":"date"},
"dt_end":{"type":"string","format":"date"},
"description":{"type":"string"},
"skills":{"type":"array","$ref":"schema/skills.json"}
},
"required":["jobsector","schoolname","diploma","dt_start","dt_end"]
}

View File

@@ -1,20 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/schema/experiences",
"title": "Describe a professionnal experience",
"description": "List of information to describe professional experiences",
"type": "object",
"properties":{
"jobtitle":{"type":"string"},
"contract":{"type":"string","enum":["CDI","CDD","FREE","STAGE","ALTERNANCE"]},
"companyname":{"type":"string"},
"location":{"type":"object","$ref":"https://schema.org/PostalAddress"},
"remotexp":{"type":"string","enum":["onsite","remote","hybrid"]},
"dt_start":{"type":"string","format":"date"},
"dt_end":{"type":"string","format":"date"},
"jobsector":{"type":"string","enum":[]},
"description":{"type":"string"},
"skills":{"type":"array","$ref":"schema/skills.json"}
},
"required":["jobtitle","companyname","contract"]
}

View File

@@ -1,4 +0,0 @@
{
"CDI":{"title":"Contrat à durée indeterninée","autreinfoutile":""},
"CDD":{}
}

View File

@@ -1,3 +0,0 @@
{
"BEPx":{"title":"blabla","description":"blabla"}
}

View File

@@ -1,3 +0,0 @@
{
"serveur":{"title":"Serveur en salle"}
}

View File

@@ -1,30 +0,0 @@
{
"offerA": {
"accessright": {
"person": "O",
"person.alias": "",
"person.owner": "",
"person.accessright": ""
},
"title":"Offre de lancement",
"description":"txt blabla",
"html":"<h1>Offre de lancement</h1> <p>blabla</p>",
"priceHT":"19",
"currency":"euro",
"monthbillfrequency":"1"
},
"offerB": {
"accessright": {
"person": "O",
"person.alias": "",
"person.owner": "",
"person.accessright": ""
},
"title":"Offre de lancement",
"description":"txt blabla",
"html":"<h1>Offre de lancement</h1> <p>blabla</p>",
"priceHT":"49",
"currency":"euro",
"monthbillfrequency":"3"
}
}

View File

@@ -1,30 +0,0 @@
{
"offerA": {
"accessright": {
"person": "O",
"person.alias": "",
"person.owner": "",
"person.accessright": ""
},
"title":"Offre de lancement",
"description":"txt blabla",
"html":"<h1>Offre de lancement</h1> <p>blabla</p>",
"priceHT":"19",
"currency":"euro",
"monthbillfrequency":"1"
},
"offerB": {
"accessright": {
"person": "O",
"person.alias": "",
"person.owner": "",
"person.accessright": ""
},
"title":"Offre de lancement",
"description":"txt blabla",
"html":"<h1>Offre de lancement</h1> <p>blabla</p>",
"priceHT":"49",
"currency":"euro",
"monthbillfrequency":"3"
}
}

View File

@@ -1,5 +0,0 @@
{
"M": { "title": "Monsieur", "description": "" },
"MME": { "title": "Madame", "description": "" },
"OTHER": { "title": "Autre", "edescription": "" }
}

View File

@@ -1,3 +0,0 @@
{
"crit1":{"title":"critere1"}
}

View File

@@ -0,0 +1,275 @@
{
"100": {
"description": "Continue",
"examples": [
"Continue with the data transfer.",
"You may proceed with the next part of the request.",
"The server is ready for the next step in the request."
]
},
"101": {
"description": "Switching Protocols",
"examples": [
"The server is changing the protocol on the request.",
"The protocol used for this request is being upgraded.",
"Switching to a different communication protocol."
]
},
"200": {
"description": "OK",
"examples": [
"The operation was successful.",
"The request has been successfully completed.",
"Everything is fine, and the request is successful."
]
},
"201": {
"description": "Created",
"examples": [
"A new resource has been successfully created.",
"The request resulted in the creation of a new resource.",
"Your request has led to the creation of a new item."
]
},
"202": {
"description": "Accepted",
"examples": [
"The request has been accepted for processing.",
"Your request has been acknowledged and queued for processing.",
"We've received your request and will take action."
]
},
"204": {
"description": "No Content",
"examples": [
"The request was successful, but there is no response body.",
"Your request was processed, but there's nothing to show in the response.",
"This request did not return any content."
]
},
"206": {
"description": "Partial Content",
"examples": [
"The server is returning part of the requested data.",
"You requested a range of data, and we're sending a portion of it.",
"Here's a partial response to your request."
]
},
"300": {
"description": "Multiple Choices",
"examples": [
"The request has multiple possible responses, and the user or client must choose one.",
"We can fulfill your request in several ways. Please choose one.",
"You have multiple options for the requested resource."
]
},
"301": {
"description": "Moved Permanently",
"examples": [
"The requested resource has permanently moved to a new location.",
"This resource is no longer available here; it's moved to a new address.",
"The URL you're looking for has been permanently redirected."
]
},
"302": {
"description": "Found",
"examples": [
"The requested resource is temporarily located at a different URL.",
"You can find what you're looking for at a different address for now.",
"The resource you want is temporarily located elsewhere."
]
},
"304": {
"description": "Not Modified",
"examples": [
"The requested resource has not been modified since the specified time.",
"Your cached data is still up-to-date; there have been no changes.",
"The server confirms that your data is current."
]
},
"400": {
"description": "Bad Request",
"examples": [
"The request is malformed or invalid.",
"Something is wrong with the request parameters.",
"Your request does not meet the server's requirements."
]
},
"401": {
"description": "Unauthorized",
"examples": [
"Authentication is required, and the user or client failed to provide valid credentials.",
"You must log in or provide valid credentials to access this resource.",
"Access is restricted. Please provide valid authentication."
]
},
"403": {
"description": "Forbidden",
"examples": [
"Access to the requested resource is forbidden.",
"You do not have permission to access this resource.",
"Sorry, but you're not allowed to access this."
]
},
"404": {
"description": "Not Found",
"examples": [
"The requested resource does not exist on the server.",
"The server could not find the page you're looking for.",
"Sorry, but what you're searching for isn't here."
]
},
"405": {
"description": "Method Not Allowed",
"examples": [
"The HTTP method used in the request is not allowed for the requested resource.",
"The server does not support the method you're trying to use.",
"This resource does not allow the requested HTTP method."
]
},
"406": {
"description": "Not Acceptable",
"examples": [
"The requested resource cannot provide a response that is acceptable according to the request's headers.",
"We cannot provide the response you expect based on your request headers.",
"Sorry, but we can't fulfill your request as specified."
]
},
"407": {
"description": "Proxy Authentication Required",
"examples": [
"Authentication is required to access the requested resource via a proxy.",
"To access this resource through a proxy, you must provide valid authentication.",
"Please provide valid credentials for proxy access."
]
},
"408": {
"description": "Request Timeout",
"examples": [
"The server did not receive a complete request within the expected time.",
"Your request took too long to arrive at the server.",
"Sorry, your request has timed out."
]
},
"409": {
"description": "Conflict",
"examples": [
"The request could not be completed due to a conflict with the current state of the target resource.",
"There's a conflict with the current state of the resource; please try again.",
"Sorry, there's a conflict with the requested action."
]
},
"410": {
"description": "Gone",
"examples": [
"The requested resource is no longer available and has been intentionally removed.",
"The resource you're looking for is gone and will not return.",
"This resource has been permanently removed."
]
},
"411": {
"description": "Length Required",
"examples": [
"The server requires a content length to be specified in the request headers.",
"Your request is missing a required content length header.",
"Please include a 'Content-Length' header in your request."
]
},
"412": {
"description": "Precondition Failed",
"examples": [
"A precondition in the request headers was not met.",
"The server expected certain conditions to be met, but they were not.",
"Sorry, the required conditions were not fulfilled."
]
},
"413": {
"description": "Request Entity Too Large",
"examples": [
"The request entity is too large for the server to process.",
"Your request body is too big for us to handle.",
"Please reduce the size of your request entity."
]
},
"414": {
"description": "Request-URI Too Long",
"examples": [
"The URI provided in the request is too long for the server to process.",
"The URL in your request is excessively long; please shorten it.",
"The request URI you provided is too lengthy."
]
},
"415": {
"description": "Unsupported Media Type",
"examples": [
"The server cannot process the request because the media type is not supported.",
"We cannot handle the content type you specified.",
"Sorry, we do not support the requested media type."
]
},
"416": {
"description": "Requested Range Not Satisfiable",
"examples": [
"The requested range cannot be satisfied by the server.",
"We cannot provide the content range you requested.",
"Sorry, but we cannot fulfill the requested content range."
]
},
"417": {
"description": "Expectation Failed",
"examples": [
"The server could not meet the expectations specified in the request's Expect header.",
"We were unable to fulfill the expectations you set in your request headers.",
"Sorry, but we could not meet your expectations."
]
},
"500": {
"description": "Internal Server Error",
"examples": [
"Something went wrong on the server's end.",
"We apologize, but an unexpected error occurred.",
"The server is currently experiencing technical difficulties."
]
},
"501": {
"description": "Not Implemented",
"examples": [
"The server does not support the functionality required to fulfill the request.",
"Sorry, but the requested functionality is not available on this server.",
"We have not implemented the feature you're looking for."
]
},
"502": {
"description": "Bad Gateway",
"examples": [
"The server acting as a gateway or proxy received an invalid response from the upstream server.",
"The gateway or proxy received an unexpected response from the upstream server.",
"Sorry, there's an issue with the gateway or proxy."
]
},
"503": {
"description": "Service Unavailable",
"examples": [
"The server is temporarily unavailable to handle the request.",
"We're currently unavailable due to maintenance; please try again later.",
"Sorry, the service is not available right now."
]
},
"504": {
"description": "Gateway Timeout",
"examples": [
"The server acting as a gateway or proxy did not receive a timely response from the upstream server.",
"We're experiencing a timeout while waiting for the upstream server.",
"Sorry, but there's a timeout issue with the gateway."
]
},
"505": {
"description": "HTTP Version Not Supported",
"examples": [
"The HTTP version used in the request is not supported by the server.",
"Your client is using an unsupported HTTP version; please update.",
"Sorry, but we do not support the HTTP version used in your request."
]
}
}

View File

@@ -1,15 +0,0 @@
{
"title": "Une Personne au niveau d'une tribut avec des informations personnelle",
"description": "Un alias peut se stoquer comme un objet Person avec des informations supplémentaire permettant de qualifier son profil",
"properties": {
"alias": {"title":"Une identité numérique d'apxtrib"},
"dt_create": {"title":"Date de creation de cette personne"},
"dt_update": { "title":"Date de derniére mise à jour"},
"dt_lastlogin": { "title":"Date de derniere authentification" },
"dt_close": { "title": "Date de fermeture de compte" },
"recoveryauth":{"title":"Information pour recuperer ses codes d'accès"},
"biography": {"title":"Description courte"},
"imgavatar": {"title":"Url de l'image utilisée comme avatar"},
"accessrights": {"title":"Droits d'accès"}
}
}

View File

@@ -0,0 +1,25 @@
{
"title": "Une Personne au niveau d'une tribut avec des informations personnelle",
"description": "Un alias peut se stoquer comme un objet Person avec des informations supplémentaire permettant de qualifier son profil",
"properties": {
"alias": { "title": "Une identité numérique d'apxtrib" },
"dt_create": { "title": "Date de creation de cette personne" },
"dt_update": { "title": "Date de derniére mise à jour" },
"dt_lastlogin": { "title": "Date de derniere authentification" },
"dt_close": { "title": "Date de fermeture de compte" },
"recoveryauth": {
"title": "Information pour recuperer ses codes d'accès",
"properties": {
"email": { "title": "email de recuperation" },
"alias": {
"title": "Alias qui doit exister comme une Person dans une tribu"
},
"privatekey": { "title": "Private key link to alias" },
"passphrase": { "title": "Passphrase to uncipher privatekey" }
}
},
"biography": { "title": "Description courte" },
"imgavatar": { "title": "Url de l'image utilisée comme avatar" },
"accessrights": { "title": "Droits d'accès" }
}
}

View File

@@ -1,10 +0,0 @@
{
"title": "Contiens la cle privée avec un email de recovery",
"description": "Cs trouve au niveau d'une person (sous la responsabilité d'une tribut et permet pour un alias de recevoir par email une clé privée",
"properties":{
"email": { "title":"email de recuperation" },
"alias": {"title": "Alias qui doit exister comme une Person dans une tribu"},
"privatekey": { "title": "Private key link to alias" },
"passphrase": {"title":"Passphrase to uncipher privatekey"}
}
}

View File

@@ -27,8 +27,12 @@
},
"required": ["nationId", "dtcreate","contracts"],
"additionalProperties":false,
"apxprimarykey":["nationId"],
"apxid":"nationId",
"apxuniquekey":["nationId"],
"apxsearchindex": [
{ "key": "nationId", "value": [] }
]
{ "name":"lst_nationId", "keyval": "nationId"}
],
"apxaccessrights":{
"pagan":{"C":[],"R":[]}
}
}

View File

@@ -9,21 +9,37 @@
"title": "Alias's publickey",
"description": "Public key generate with openpgp.js",
"type": "string",
"format": "pgpAE256"
"format": "pgppublickey"
},
"alias": {
"title": "Alias",
"description": "text to remember easiky a public key",
"description": "text to remember easily a public key",
"type": "string",
"minLength": 5,
"minLength": 4,
"pattern": "^[a-z0-9]*$"
},
"dt_delete": {
"title": "Date of death",
"description": "Date of alias delete request, your will will be apply",
"type": "string",
"format": "date-time"
},
"will": {
"title": "Will script after death",
"description": "This will script will be apply on your data 30 days after your death",
"type": "string"
}
},
"required": ["publickey", "alias"],
"apxprimarykey": ["alias"],
"apxsecondarykey": ["publickey"],
"apxsearchindex": [
{ "key": "alias", "val": "publickey" },
{ "key": "publickey", "val": "alias" }
]
"apxid": "alias",
"apxuniquekey": ["publickey"],
"apxidx": [
{ "name": "lst_alias", "keyval": "alias" },
{ "name": "alias", "keyval": "alias" }
],
"apxaccessrights": {
"owner": { "R": [], "D": [] },
"anonymous": { "C": [], "R": ["alias"] },
"pagan": { "R": ["alias", "publickey"] }
}
}

View File

@@ -33,17 +33,39 @@
"type": "string",
"format": "date-time"
},
"dt_close": {
"dt_delete": {
"title": "Date of leaving tribe",
"description": "Date from when this alias is ban of tribe by druid or want to leave. A pocess of data cleaning has to be run depending of Tribe's rules.",
"type": "string",
"format": "date-time"
"format": "date"
},
"will": {
"title": "Will script after leaving tribe",
"description": "This will script will be apply on your data 30 days after your delete",
"type": "string",
"format": "js"
},
"recoveryauth": {
"title": "Store numeric identity to recover it by email",
"description": "This object store numeric identity alias with an email mainly used at Person level to recover by email a private and passphrase key associate to alias",
"type": "object",
"$ref": "#/definitions/recoveryauth"
"properties": {
"email": {
"type": "string",
"format": "email"
},
"privatekey": {
"type": "string",
"format": "pgpprivatekey"
},
"publickey": {
"type": "string",
"format": "pgppublickey"
},
"passphrase": {
"type": "string"
}
}
},
"firstname": {
"title": "A firstname",
@@ -65,7 +87,7 @@
"title": "Your pronom",
"description": "The way you want people communicate with you",
"type": "string",
"enum": ["M", "MME", "OTHER"]
"enum": ["0", "1", "2"]
},
"emailcom": {
"title": "email use to communicate with you",
@@ -73,55 +95,100 @@
"type": "string",
"format": "email"
},
"hobbies": {
"title": "My hobbies",
"type": "array",
"comment": "from a tree word combinaison /lg/hobbies_xx.json"
},
"biography": {
"title":"Your bio or few words to define yoursel",
"description":"Use this to share your values, this will be public to all of tribe's members and link to your person",
"title": "Your bio or few words to define yourself",
"description": "Use this to share your values, this will be public to all of tribe's members and link to your person",
"type": "string",
"pattern": "^.{O,150}$"
},
"mbti": {
"type": "object"
},
"imgavatar": {
"title":"A picture of your person or personnality",
"description":"This picture will be public to all tribe's member",
"title": "A picture of your person or personnality",
"description": "This picture will be public to all tribe's member",
"type": "url"
},
"accessrights": {
"title": "Accessright per Object or per Object.key belonging to a tribe",
"description": "A Person can create read update delete an object (CRUD), if Own means if owner = alias of user requested some CRUD action to owner then he can act on this object or object.key List of Object with CRUDO value like {Person:'RUDO','Person.recoveryauth':'O',...}. To simplify some profil can be define admin, user, recruiter, seeker, and get a standard accessright object",
"type": "object",
"$ref": "#/definitions/accessright"
"profils": {
"title": "Array of profil",
"description": "List of profil to get accessright on object",
"type": "array"
}
},
"definitions": {
"recoveryauth": {
"type": "object",
"properties": {
"email": { "type": "string", "format": "email" },
"alias": { "type": "string", "format": "Pagan" },
"privatekey": { "type": "string", "format": "eccCorve25519armored" }
}
},
"accessright":{
"type":"object",
"properties":{
"type":"object",
"properties":{
"objkey": {"type":"sring","format":"CRUDO"}
}
}
}
},
"required": ["alias", "accessright"],
"required": ["alias", "profilaccess"],
"additionalProperties": true,
"apxprimarykey": "alias",
"apxunique": [""],
"apxsearchindex": [
"apxid": "alias",
"apxuniquekey": ["alias"],
"apxidx": [
{
"key": "alias",
"value": []
"name": "lst_alias",
"keyval": "alias"
},
{
"key": "recovery.email",
"value": "alias"
"name": "alias",
"keyval": "alias"
},
{
"name": "profils_alias",
"keyval": "profils",
"objkey": "alias"
},
{
"name": "emailcom_alias",
"keyval": "emailcom",
"objkey": "alias"
},
{
"name": "hobbies_alias",
"keyval": "hobbies",
"objkey": "alias"
}
]
],
"apxaccessrights": {
"owner": {
"D": [],
"R": [
"alias",
"dt_create",
"dt_update",
"last_login",
"firstname",
"lastname",
"dt_birth",
"pronom",
"emailcom",
"hobies",
"biography",
"imgavatar",
"profilaccess"
],
"U": [
"firstname",
"lastname",
"dt_birth",
"pronom",
"emailcom",
"hobies",
"biography",
"imgavatar",
"profilaccess"
]
},
"pagan": {
"C": []
},
"mayor": {
"D": [],
"R": ["alias"]
},
"druid": {
"D": [],
"R": ["alias"]
}
}
}

View File

@@ -1,8 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/schema/person",
"title": "Person minimum definition to link a person to a pagan identity",
"description": "A person is a human with a apxtrib identity (Public Private Key. Information stored (not cipher) for a person are only visible from the town's Mayor and the tribe's Druid. You need at least trus the druid that trust the mayor (for sensitive data Mayor and Druid can be the same apx Identity.) Only a pagan that have the privateKey can read cipher data. The purpose of this sschema is to link a person to a tribe and manage basic activities, profil will be a tribe object if need more personnal information",
"type": "object",
"properties": {}
}

View File

@@ -1,56 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "/schema/seeker",
"title": "Data Profil of a person that is in a seek process",
"description": "All those data have to store any useffull logistical data and profil about a seeker (skill, ...) ",
"type": "object",
"properties": {
"offerseeker": { "type": "string", "emum": ["offerA", "offerB"] },
"emailseek": { "type": "string", "format": "email" },
"seeklocation": {
"type": "array",
"items": {
"type": "object",
"$ref": "https://schema.org/PostalAddress"
}
},
"seekcriterias": {
"type": "array",
"items": { "type": "string", "enum": [] }
},
"skills": {
"type": "array",
"items": { "type": "object", "$ref": "schema/skills.json" }
},
"educations": {
"type": "array",
"items": { "type": "object", "$ref": "schema/educations.json" }
},
"experiences": {
"type": "array",
"items": { "type": "object", "$ref": "schema/experiences.json" }
},
"recommandation": {
"type": "array",
"items": { "type": "object", "$ref": "#/definitions/recommandation"}
}
},
"definitions": {
"recommandation": {
"type": "object",
"properties": {
"email": { "type": "string", "format": "email" },
"phone": { "type": "string", "format": "telephone" },
"fisrtname": { "type": "string" },
"lastname": { "type": "string" },
"jobtitle": { "type": "string" },
"description": {
"title": "Area of recomandation",
"description": "Describe why this recommandation is relevant to confirm your skills",
"type": "string"
}
}
}
},
"required": ["offerseeker", "emailseek", "mainlivinglocation", ""]
}

View File

@@ -11,11 +11,16 @@
},
"nationId": {
"type": "string",
"$apxenumkey": "socialworld/objects/nations/searchindex/nations_uuid_uuid.json"
"$apxenumkey": "nationchains/nations/idx/lst_nationd.json"
},
"owner":{
"type": "string",
"$apxenumkey": "nationchains/pagans/idx/lst_alias.json"
},
"mayorId": {
"comment":"todo, to be remove by ower in models",
"type": "string",
"$apxenumkey": "socialworld/objects/nations/searchindex/nations_uuid_uuid.json"
"$apxenumkey": "nationchains/pagans/idx/lst_alias.json"
},
"status": {
"default": "active",
@@ -27,10 +32,16 @@
}
},
"required": ["townId", "status", "nationId", "dns"],
"apxprimarykey": "townId",
"apxsearchindex": [
{ "key": "status", "value": "townId" },
{ "key": "nationId", "value": "townId" },
{ "key": "townId", "value": [] }
]
"apxid":"townId",
"apxuniquekey": ["townId","dns"],
"apxidx": [
{ "name":"lst_townId", "keyval": "townId" },
{ "name":"all_townId", "keyval": "townId" },
{ "name":"dns_townId", "keyval": "dns","objkey":["townId"] },
{ "name":"mayorId_townId", "keyval": "mayorId","objkey":["townId"] }
],
"apxaccessrights":{
"pagan":{"C":[],"R":[]},
"owner":{"D":[], "U":["owner","status"]}
}
}

View File

@@ -11,26 +11,33 @@
},
"townId": {
"type": "string",
"$ref": "nationchains/towns/idx/towns_uuid_uuid.json"
"$apxenumkey": "nationchains/towns/idx/lst_townId.json"
},
"nationId": {
"type": "string",
"$ref": "nationchains/nations/idx/nations_uuid_uuid.json"
"$apxenumkey": "nationchains/nations/idx/lst_nationId.json"
},
"druidId": {
"owner": {
"type": "string",
"$ref": "nationchains/pagans/idx/alias_all.json"
"$apxenumkey": "nationchains/pagans/idx/lst_alias.json"
},
"dns": {
"type": "array",
"items":{"type":"string", "uniqueItems":true}
"items":{"type":"string"}
}
},
"required": ["townId", "status", "nationId", "dns"],
"apxprimarykey": ["tribeId"],
"apxsearchindex": [
{ "key": "status", "value": "tribeId" },
{ "key": "tribeId", "value": [] }
]
"apxid":"tribeId",
"apxuniquekey": ["tribeId"],
"apxidx": [
{ "name":"lst_tribeId", "keyval": "tribeId" },
{ "name":"all_tribeId", "keyval": "tribeId" },
{ "name":"druidId_tribeId", "keyval": "druidId","objkey":["tribeId"] },
{ "name":"dns_tribeId", "keyval": "dns","objkey":["tribeId"] }
],
"apxacceesrights":{
"owner":{"D":[],"U":["owner","dns"]},
"mayor":{"C":[],"R":[]},
"pagan":{"R":[]}
}
}

View File

@@ -1,45 +1,43 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "nationchains/schema/www",
"title": "Town",
"description": "A pace web available for a domaine, with accessright",
"title": "www",
"description": "A space web available for a domaine, with accessright",
"type": "object",
"properties": {
"townId": {
"description": "|Towns|townnamedesc",
"desclong": "|Townss|townnamedesclong",
"info": "|Towns|townnameinfo",
"tribeId": {
"title":"Tribe name",
"description": "A unique string as tribe",
"type": "string",
"pattern":"^[a-z0-9]*$"
},
"nationId": {
"description": "|Towns|nationdesc",
"desclong": "|Townss|nationdesclong",
"website": {
"description": "Folder name into a tribeId/www/",
"title":"web space",
"type": "string",
"$apxenumkey": "socialworld/objects/nations/searchindex/nations_uuid_uuid.json"
},
"status": {
"desc": "|Towns|statusdesc",
"title":"Status",
"description": "Status of website ",
"default": "active",
"type": "string",
"$apxenumkey": "data",
"data": {
"chain": { "desc": "|Towns|statuschain" },
"tochain": { "desc": "|Towns|statustosync" },
"unchain": { "desc": "|Towns|statusunchain" }
}
"enum": ["chain","tochain","unchain"]
},
"url": {
"desc": "|Towns|urldesc",
"title":"url of website",
"description": "Must be set in domaine name to the apxtrib",
"type": "string",
"apxtype":"url"
"format":"url"
}
},
"required": ["townId", "status", "nationId", "url"],
"apxprimarykey": "townId",
"apxsearchindex": [
{ "key": "status", "value": "townId" },
{ "key": "nationId", "value": "townId" },
{ "key": "townId", "value": [] }
]
"required": ["tribeId","website", "status"],
"apxid": "website",
"apxidx": [
{ "name":"lst_website","keyval": "website"}
],
"apxaccessrights":{
"owner":{"D":[],"R":[],"U":[]},
"mayor":{"C":[]},
"person":{"R":[]}
}
}